Добрый день!
Есть ли у кого-то кусочек кода,
как сделать выборку из справочника "Клиенты"
по дате рождения, полу, дате регистрации и пр.
Для рассылки уведомлений по е-mail ?
Спр. СоздатьОбьект("Справочник.Соирудники;);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 цикл
Если Спр.Пол ="м" тогда
продолдить; //не выбираем мужчин
КонецЕсли;
Если Спр.ДатаРегистрации>(ТекущаяДата()-10) тогда
Продолжить; //пропускаем недавно зарегистрированных (менее 10 дней)
КонецЕсли;
// тут пишем текст что делать для оставшихся сотрудников
КонецЦикла;
МесяцТекущаяДата=ДатаМесяц(ТекущаяДата());
ЧислоТекущаяДата=ДатаЧисло(ТекущаяДата());
ГодТекущаяДата=ДатаГод(ТекущаяДата());
Если (МесяцТекущаяДата=3) или (МесяцТекущаяДата=4) Тогда
Если НомерДняНедели(Дата(ГодТекущаяДата,3,31))=7 тогда
ДатаПерехНаЛетнее=Дата(ГодТекущаяДата,3,31);
Иначе
ДатаПерехНаЛетнее=Дата(ГодТекущаяДата,3,31)-НомерДняНедели(Дата(ГодТекущаяДата,3,31));
КонецЕсли;
Если МесяцТекущаяДата=3 Тогда
Если ЧислоТекущаяДата>20 Тогда
Если ТекущаяДата()>=ДатаПерехНаЛетнее Тогда
Если Константа.ЛетнееВремя =0 Тогда
Константа.ЛетнееВремя =1;
// Сообщить("Змінили константу ЛетнееВремя в Березні !");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если МесяцТекущаяДата=4 Тогда
Если ЧислоТекущаяДата<15 Тогда
Если Константа.ЛетнееВремя =0 Тогда
Константа.ЛетнееВремя =1;
// Сообщить("Змінили константу ЛетнееВремя в Квітні !");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Процедура Сформировать()
ТЗ = СоздатьОбъект ("ТаблицаЗначений");
ТЗ.НоваяКолонка("ФИО","строка");
ТЗ.НоваяКолонка("МобТел","Строка");
ТЗ.НоваяКолонка("Почта","строка");
ТЗ.НоваяКолонка("Просрочка","Дата");
ТЗ.НоваяКолонка("ДР","Дата");
ТЗ.НоваяКолонка("ПолМ","");
ТЗ.НоваяКолонка("ПолЖ","");
Спр = СоздатьОбъект ("Справочник.Клиенты");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если Муж = 1 Тогда
ТЗ.НоваяСтрока();
ТЗ.ПолМ = Спр.Пол.Мужской;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ИначеЕсли Просрочка = 2 Тогда
ТЗ.НоваяСтрока();
ТЗ.Просрочка = СокрЛП(Спр.ДатаУвольнения);
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ИначеЕсли Жен = 3 Тогда
ТЗ.НоваяСтрока();
ТЗ.ПолЖ = Спр.Пол.Женский;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ИначеЕсли ДР = 4 Тогда
ТЗ.ДР = Спр.Дата_рождения;
Если ТЗ.ДР = ТекущаяДата() Тогда
ТЗ.НоваяСтрока();
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТЗ.Сортировать(СокрЛП("ФИО"));
ТЗ.Выгрузить(СписокКлиентов);
КонецПроцедуры
Процедура Сформировать()
//Сбор информации о пользователях
ТЗ = СоздатьОбъект ("ТаблицаЗначений");
ТЗ.НоваяКолонка("ФИО","строка");
ТЗ.НоваяКолонка("МобТел","Строка");
ТЗ.НоваяКолонка("Почта","строка");
ТЗ.НоваяКолонка("Просрочка","Дата");
ТЗ.НоваяКолонка("ДР","Дата");
ТЗ.НоваяКолонка("Пол","");
Спр = СоздатьОбъект ("Справочник.Клиенты");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
ТЗ.НоваяСтрока();
Если Отбор = 1 Тогда //Муж
ТЗ.Пол = Спр.Пол;
Если ТЗ.Пол = Перечисление.Пол.Мужской Тогда
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
КонецЕсли;
ИначеЕсли Отбор = 2 Тогда //Просрочка
Если ТЗ.Просрочка = Спр.ДатаУвольнения Тогда
ТЗ.Пол = Спр.Пол;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
КонецЕсли;
ИначеЕсли Отбор = 3 Тогда //жен
ТЗ.Пол = Спр.Пол;
Если ТЗ.Пол = Перечисление.Пол.Женский Тогда
ТЗ.НоваяСтрока();
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
КонецЕсли;
ИначеЕсли Отбор = 4 Тогда //всем
ТЗ.Пол = Спр.Пол;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
ИначеЕсли Отбор = 5 Тогда //ДР
ДЧТ = ДатаЧисло(ТекущаяДата());
ДМТ = ДатаМесяц(ТекущаяДата());
ДЧС = ДатаЧисло (Спр.Дата_рождения);
ДМС = ДатаМесяц(Спр.Дата_рождения);
Если (ДЧТ = ДЧС)
И (ДМТ = ДМС) тогда
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР= Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
Иначе
Сообщить("сегодня нет именинников");
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТЗ.Сортировать(СокрЛП("ФИО"));
ТЗ.Выгрузить(СписокКлиентов);
КонецПроцедуры // СоставитьСписок
Процедура ПриОткрытии()
Отбор = 1;
КонецПроцедуры // ПриОткрытии
Процедура Сформировать()
//Сбор информации о пользователях
ТЗ = СоздатьОбъект ("ТаблицаЗначений");
ТЗ.НоваяКолонка("ФИО","строка");
ТЗ.НоваяКолонка("МобТел","Строка");
ТЗ.НоваяКолонка("Почта","строка");
ТЗ.НоваяКолонка("Просрочка","Дата");
ТЗ.НоваяКолонка("ДР","Дата");
ТЗ.НоваяКолонка("Пол","");
Спр = СоздатьОбъект ("Справочник.Клиенты");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
ТЗ.НоваяСтрока();
Если Отбор = 1 Тогда //Муж
ТЗ.Пол = Спр.Пол;
Если ТЗ.Пол = Перечисление.Пол.Мужской Тогда
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
ИначеЕсли ТЗ.Пол = Перечисление.Пол.Женский Тогда
ТЗ.УдалитьСтроку();
КонецЕсли;
ИначеЕсли Отбор = 2 Тогда //Просрочка
Если ТЗ.Просрочка = Спр.ДатаУвольнения Тогда
ТЗ.Пол = Спр.Пол;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ИначеЕсли ТЗ.Просрочка <> Спр.ДатаУвольнения тогда
ТЗ.УдалитьСтроку();
КонецЕсли;
ИначеЕсли Отбор = 3 Тогда //жен
ТЗ.Пол = Спр.Пол;
Если ТЗ.Пол = Перечисление.Пол.Женский Тогда
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
ИначеЕсли ТЗ.Пол = Перечисление.Пол.Мужской Тогда
ТЗ.УдалитьСтроку();
КонецЕсли;
ИначеЕсли Отбор = 4 Тогда //всем
ТЗ.Пол = Спр.Пол;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР = Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
ИначеЕсли Отбор = 5 Тогда //ДР
ДЧТ = ДатаЧисло(ТекущаяДата());
ДМТ = ДатаМесяц(ТекущаяДата());
ДЧС = ДатаЧисло (Спр.Дата_рождения);
ДМС = ДатаМесяц(Спр.Дата_рождения);
Если (ДЧТ = ДЧС)
И (ДМТ = ДМС) тогда
ТЗ.Пол = Спр.Пол;
ТЗ.ФИО = СокрЛП(Спр.Фамилия+" "+Спр.Имя+" "+Спр.Отчество);
ТЗ.МобТел = СокрЛП(Спр.Моб_Тел);
ТЗ.Почта = СокрЛП(Спр.ЭлектроннаяПочта);
ТЗ.ДР= Спр.Дата_рождения;
ТЗ.Просрочка = Спр.ДатаУвольнения;
Иначе
ТЗ.УдалитьСтроку();
Сообщить("сегодня нет именинников");
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
ТЗ.Сортировать(СокрЛП("ФИО"));
ТЗ.Выгрузить(СписокКлиентов);
КонецПроцедуры // СоставитьСписок
Процедура СоставитьСписок()
лпТекДата = ТекущаяДата();
лпТекстЗапроса = "
|Клиент = Справочник.Клиенты.ТекущийЭлемент;
|Фамилия = Справочник.Клиенты.Фамилия;
|Имя = Справочник.Клиенты.Имя;
|Отчество = Справочник.Клиенты.Отчество;
|Пол = Справочник.Клиенты.Пол;
|ДР = Справочник.Клиенты.Дата_рождения;
|Почта = Справочник.Клиенты.ЭлектроннаяПочта;
|МобТел = Справочник.Клиенты.Моб_Тел;
|Просрочка = Справочник.Клиенты.ДатаУвольнения;
|Группировка Клиент без групп;";
Если Отбор <> 4 Тогда
Если (Отбор = 1) или (Отбор = 3) Тогда//отбор мужчины/женщины
ВыбПол = ?(Отбор = 1,Перечисление.Пол.Мужской,Перечисление.Пол.Женский)
лпТекстЗапроса = лпТекстЗапроса+РазделительСтрок+"Условие(Пол = ВыбПол);";
КонецЕсли;
Если Отбор = 5 Тогда//Дни рождения
лпДатаМесяц = ДатаМесяц(лпТекДата);
лпДатаПлюсДень = лпТекДата+1;
Если лпДатаМесяц = ДатаМесяц(лпДатаПлюсДень) Тогда
лпТекстЗапроса = лпТекстЗапроса+РазделительСтрок+"Условие(ДР = лпТекДата);";
Иначе
лпТекстЗапроса = лпТекстЗапроса+РазделительСтрок+"Условие((ДР >= лпТекДата) и (ДР < лпДатаПлюсДень));";
КонецЕсли;
КонецЕсли;
Если Отбор = 2 Тогда//НЕ уволенные
лпТекстЗапроса = лпТекстЗапроса+РазделительСтрок+"Условие(Просрочка < лпТекДата);";
КонецЕсли;
КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(лпТекстЗапроса) = 0 Тогда
Предупреждение("Ошибка в запросе !",10);
Возврат;
КонецЕсли;
ТЗ = СоздатьОбъект ("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,1,0);
//Для просмотра результата
ТЗ.ВыбратьСтроку();
КонецПроцедуры // СоставитьСписок