Содержание:
1. Описание функции языка запроса ДобавитьКДате
2. Работа с функцией языка запроса ДобавитьКДате в Конструкторе запросов 1С 8.3
1. Описание функции языка запроса ДобавитьКДате
ДобавитьКДате
ДобавитьКДате(DATEADD) - Функция предназначена для прибавления к дате некоторой величины.
Описание функции.
Параметры
<Дата> - тип Дата, выражение (функции и параметры языка запросов)
ДАТАВРЕМЯ
· ДАТАВРЕМЯ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>) – функция языка запросов.
Функция языка запросов ДатаВремя
· &ДатаВремя – параметр языка запросов.
Параметр языка запросов ДатаВремя
· <Тип> - строка без кавычек. Варианты: Секунда, Минута, Час, День, Неделя, Месяц, Квартал, Год, Декада, Полугодие.
ДабавитьКДатеДатаВремя
<Количество> - тип Число, может быть число, выражение (функция языка запросов).
2. Работа с функцией языка запроса ДобавитьКДате в Конструкторе запросов 1С 8.3
Попрактиковаться можно с помощью управляемой консоли запросов.
Управляемая консоль запросов
После того как открыли консоль запросов в 1С 8.3 «Предприятие» в «пользовательском режиме». В той части окна консоли запросов, где пишется текст запроса вызвать конструктор запросов (позволяет сделать контекстное меню). Все функции языка запросов находятся в правой части окна. Находим в иерархическом древовидном списке функцию ДОБАВИТЬКДАТЕ и переносим её с помощью мыши в поле, где пишем код.
Теперь можно выбрать какую-нибудь таблицу (например, справочник), вывести поле (обязательно, хотя бы одно). Потом создать своё поле с функцией ДОБАВИТЬКДАТЕ, для быстроты можно на закладке «Дополнительно» установить выборку записей «Первые» с значением 1. Проверить результат.
Задание. В торговой компании сотрудникам возраст, которых достиг 30 лет начисляются бонусы на дисконтную карту. А также сотрудникам, которые отработали в компании 5 лет также начисляются бонусы на дисконтную карту т.к. статистика показала, что 60% сотрудников меняют место работы срок стажа которых, не превышает 5 лет. Таким образом компания решила поощрить сотрудников за постоянство. Появилась необходимость определить возраст сотрудников и их стаж работы.
Для этого потребуется создать обработку и написать код. Для примера использовано прикладное решение 1С Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.15.96), демоверсия. Ниже написан основной код отчета.
&НаСервере
Процедура СформироватьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Сотрудники.Ссылка КАК Сотрудник
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ПометкаУдаления = ЛОЖЬ"
;
ВсеСотрудники= Запрос.Выполнить().Выгрузить();
// Получить кадровые данные
КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ВсеСотрудники.ВыгрузитьКолонку("Сотрудник"),
"Организация,ФизическоеЛицо,ДатаУвольнения,ДатаПриема", УстановитьДемоДату);
КадровыеДанные.Колонки.Добавить("ДатаРождения", Новый ОписаниеТипов("Дата"));
Для Каждого СтрокаКадровыеДанныеИзКадровыеДанныеЦикл
СтрокаКадровыеДанные.ДатаРождения= СтрокаКадровыеДанные.ФизическоеЛицо.ДатаРождения;
КонецЦикла;
Результат.Очистить();
ОтчетОбъект= РеквизитФормыВЗначение("Объект");
Макет = ОтчетОбъект.ПолучитьМакет("Макет");
ОбластьШапка= Макет.ПолучитьОбласть("Шапка");
Результат.Вывести(ОбластьШапка);
ОбластьСтрока= Макет.ПолучитьОбласть("Строка");
ДемонстрационныйЗапрос= Новый Запрос;
ДемонстрационныйЗапрос.Текст="ВЫБРАТЬ
| КадровыеДанные.Организация КАК Организация,
| КадровыеДанные.ФизическоеЛицо КАК ФизическоеЛицо,
| КадровыеДанные.ДатаУвольнения КАК ДатаУвольнения,
| КадровыеДанные.ДатаПриема КАК ДатаПриема,
| КадровыеДанные.ДатаРождения КАК ДатаРождения,
| ДОБАВИТЬКДАТЕ(КадровыеДанные.ДатаРождения, ГОД, 30) КАК ВозрастСотрудника,
| ДОБАВИТЬКДАТЕ(КадровыеДанные.ДатаПриема, ГОД, 5) КАК СтажРаботы
|ПОМЕСТИТЬ ВТКадровыеДанные
|ИЗ
| &КадровыеДанные КАК КадровыеДанные
|ГДЕ
| КадровыеДанные.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТКадровыеДанные.Организация КАК Организация,
| ВТКадровыеДанные.ФизическоеЛицо КАК ФизическоеЛицо,
| ВТКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения,
| ВТКадровыеДанные.ДатаПриема КАК ДатаПриема,
| ВТКадровыеДанные.ДатаРождения КАК ДатаРождения,
| ВТКадровыеДанные.ВозрастСотрудника КАК ВозрастСотрудника,
| ВТКадровыеДанные.СтажРаботы КАК СтажРаботы
|ИЗ
| ВТКадровыеДанные КАК ВТКадровыеДанные";
ДемонстрационныйЗапрос.УстановитьПараметр("КадровыеДанные",КадровыеДанные);
ДемонстрационныйЗапрос.УстановитьПараметр("ТекущаяДата",УстановитьДемоДату);
РезультатДемоЗапроса=ДемонстрационныйЗапрос.Выполнить().Выбрать();
Пока РезультатДемоЗапроса.Следующий()Цикл
Исполнилось30Лет = Истина;
Отработал5Лет = Истина;
// Отметить сотрудников, которым не исполнилось 30 лет
Если НачалоМесяца(УстановитьДемоДату)<>
НачалоМесяца(РезультатДемоЗапроса.ВозрастСотрудника) Тогда
Исполнилось30Лет = Ложь;
КонецЕсли;
// Отметить сотрудников, которые не отработали 5 лет или
// отработали более и уже получили бонусы
Если Год(УстановитьДемоДату) <>Год(РезультатДемоЗапроса.СтажРаботы) Тогда
Отработал5Лет = Ложь;
КонецЕсли;
// Исключить из отчета сотрудников, которым не исполнилось 30 лет
// Исключить из отчета сотрудников, которые не отработали 5 лет или
// отработали более и уже получили бонусы
Если Не Исполнилось30Лет И Не Отработал5Лет Тогда
Продолжить;
КонецЕсли;
ОбластьСтрока.Параметры.ФИО=РезультатДемоЗапроса.ФизическоеЛицо;
ОбластьСтрока.Параметры.БонусЗаСтаж =Отработал5Лет;
ОбластьСтрока.Параметры.БонусЗаВозраст =Исполнилось30Лет;
Результат.Вывести(ОбластьСтрока);
КонецЦикла;
КонецПроцедуры
После создания интерфейса, написания кода, получается результат.
Результат написания кода в 1С Зарплата и управление персоналом КОРП
В написании отчета использовалась функция ДобавитькДатев запросе (см. в конструкторе запроса 1С 8.3 ЗУП).
ИспользованиеДобавитьКДате в запросе 1С
Система, выполнив запрос, обходит выборку, где проверяет условия стажа работы и возраста сотрудников. Данный пример приведен для представления, как можно использовать данную функцию ДобавитьКДате в запросе в 1С.
Специалист компании «Кодерлайн»
Владимир Быков