Хочу сделать так, чтобы при запуске 1с появлялось сообщение "у человека Х через У дней день рождения".
Вот код, где создаются два массива, в один из них загоняются даты рождений, в другой имена
Функция ПолучитьСписокИменинников () Экспорт
ТД_День= День(ТекущаяДата());
ТД_Месяц= Месяц(ТекущаяДата());
Выборка = Справочники.Ученики.Выбрать( ,, ,"ДатаРождения");
//Создание пустого массив
Массив_Имя= Новый Массив();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
ДР_День= День(Выборка.ДатаРождения);
ДР_Месяц= Месяц(Выборка.ДатаРождения);
Если ТД_Месяц= ДР_Месяц И ТД_День <= ДР_День
Тогда
Массив_Имя.Добавить(Выборка.Наименование);
//Массив_Имя.Добавить(Выборка.ДатаРождения);
КонецЕсли;
КонецЦикла;
Возврат Массив_Имя;
КонецФункции
Функция ПолучитьДатыДР() Экспорт
ТД_День= День(ТекущаяДата());
ТД_Месяц= Месяц(ТекущаяДата());
Выборка= Справочники.Ученики.Выбрать();
Массив_ДатаРождения= Новый Массив();
Пока Выборка.Следующий() = Истина Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
ДР_День= День(Выборка.ДатаРождения);
ДР_Месяц= Месяц(Выборка.ДатаРождения);
Если ТД_Месяц= ДР_Месяц И ТД_День <= ДР_День
Тогда
Массив_ДатаРождения.Добавить(Выборка.ДатаРождения);
КонецЕсли;
КонецЦикла;
Возврат Массив_ДатаРождения;
КонецФункции
После того, в модуле сеанса я пару циклов делаю, где в теле цикла выводится сообщение об именинах. Проблема в том, что я не знаю, как связать в одном СообщениеПользователю и дату рождения и имя. Намекните, плз, в какую сторону хотя бы думать.
Процедура ПриНачалеРаботыСистемы()
СписокИменинников = ОбщиеМеханизмы.ПолучитьСписокИменинников();
ДатыИменин= ОбщиеМеханизмы.ПолучитьДатыДР();
Для каждого Элемент из СписокИменинников Цикл
Сообщение= Новый СообщениеПользователю ;
Сообщение.Текст= Строка(Элемент) + " родился";
Сообщение.Сообщить();
Сообщени
КонецЦикла;
Для каждого Элемент2 Из ДатыИменин Цикл
//Сообщение= Новый СообщениеПользователю;
Сообщение.Текст= "Дата Рождения - " + День(Элемент2) + "-го" + ". Осталось " + (День(Элемент2) - День(ТекущаяДата()) )+ " дней.";
Сообщение.Сообщить();
КонецЦикла;
КонецПроцедуры
Я пытался один массив сделать, и его как-то мудро циклом обходить, но получилось не особо. Вот примерно так:
//Для каждого Элемент Из СписокИменинников Цикл
// Если ТипЗнч(Элемент)= Тип("Строка")Тогда
// Часть2= Элемент;
//
// Иначе
// Часть1=Элемент;
//
// КонецЕсли;
// Если ТипЗнч(Часть2)= Тип("Строка") И ТипЗнч(Часть1)= Тип("Дата") Тогда
// Сообщить(Часть2 + " родился " + День(Часть1) +"."+ Месяц(Часть1)+"." + " Осталось " + Строка((День(Часть1) - День(ТекущаяДата()))) + " дней");
// Иначе
// Продолжить;
// КонецЕсли;
//КонецЦикла;