Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 23:31

Сравнить даты

Автор TataRus, 13 апр 2022, 12:57

0 Пользователей и 1 гость просматривают эту тему.

TataRus

Добрый день!
Никак не могу додуматься как вытащить из справочника всех детей сотрудников у кого день рождения через +- неделю, если убираю из формата год, потом преобразую в число, ерунда получается. Если через ТЗ делать, то как прийти к одинаковому типу значений? Подскажите, пожалуйста, как лучше сделать, может я вовсе не туда думаю?)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДетиСотрудников.Владелец КАК Сотрудник,
| ДетиСотрудников.Ссылка КАК Ребенок,
| ДетиСотрудников.ДатаРождения КАК ДатаРождения
|ИЗ
| Справочник.ДетиСотрудников КАК ДетиСотрудников
|
|СГРУППИРОВАТЬ ПО
| ДетиСотрудников.Владелец,
| ДетиСотрудников.Ссылка,
| ДетиСотрудников.ДатаРождения
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

ТекДата = НачалоДня(ТекущаяДата());
ТекДатаПлюсНеделя = Формат(ТекДата + 604800, "ДФ = ddMM");
ТекДатаМинусНеделя = Формат(ТекДата - 604800, "ДФ = ddMM");

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ДатаРождения = Формат(ВыборкаДетальныеЗаписи.ДатаРождения, "ДФ = ddMM");

Если Объект.Праздник = Перечисления.ВидыПраздников.ДеньРождения тогда

Если ДатаРождения <= ТекДатаПлюсНеделя и ДатаРождения >= ТекДатаМинусНеделя тогда 

         НовСтр = Объект.ПодаркиДетямСотрудников.Добавить();
         НовСтр.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
         НовСтр.Ребенок = ВыборкаДетальныеЗаписи.Ребенок;                                 

КонецЕсли;
КонецЕсли;
КонецЦикла

TataRus


Сделала так

ТекДата = НачалоДня(ТекущаяДата());
ТекДатаПлюсНеделя = Число(Формат(ТекДата + 604800, "ДФ = MMdd"));
ТекДатаМинусНеделя = Число(Формат(ТекДата - 604800, "ДФ = MMdd"));




Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ДатаРождения = Число(Формат(ВыборкаДетальныеЗаписи.ДатаРождения, "ДФ = MMdd"));

Если Объект.Праздник = Перечисления.ВидыПраздников.ДеньРождения тогда

Если ДатаРождения <= ТекДатаПлюсНеделя и ДатаРождения >= ТекДатаМинусНеделя тогда 

         НовСтр = Объект.ПодаркиДетямСотрудников.Добавить();
         НовСтр.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
         НовСтр.Ребенок = ВыборкаДетальныеЗаписи.Ребенок;     

Теги: #1С БП 3.0 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск