15.05.2022 Владимир Быков 19627
ДобавитькДате запрос в 1С

Содержание:

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С.

    

Специалист компании «Кодерлайн»

Владимир Быков

Наши проекты

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП (USB)

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетная ведомость;
- Администрирование MS SQL Server;
- Сжати...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-процессов Анализ деятельности в разрезе проектов Планирование проектов У...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

- Взаиморасчеты с поставщиками
- Учет прихода ТМЦ
- Взаиморасчеты с покупателями
- Учет продаж ТМЦ
- Управление складскими ...

ООО «Фипар»
ООО «Фипар»

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автоматизировали блоки: продажи, закупки, производство, складская и т...

ООО "РУКАРД-АУРА"
ООО "РУКАРД-АУРА"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Комплексная автоматизация

- Налоговый учет;...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Кадровый учет;
- Расчет зарплаты;
- Регламентированная отчетность;
- Анализ кадрового состава;
- Учет рабочего времени; ...

Автоматизация производственного планирования нефтесервисной компании на базе 1С:ЕРП 2.0
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Блок планирования проектов (процессы объемно-календарного планирования производства)...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– Логистика адресного склада;
– Управление отношениями с пост...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Управление складскими запасами ...

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складскими запасами;
- Оформление заказов покупателей;
- Планирование продаж;
- Взаиморасчеты с покупателями;
-...

ООО "АСК ИНЖИНИРИНГ"
ООО "АСК ИНЖИНИРИНГ"

Отрасль:
Машиностроение, приборостроение

Внедренное типовое решение:
1С:Документооборот ПРОФ

Делопроизводство
Учет и хранение документов
Ведение номенклатуры дел
Учет и контроль исполнения поручений
Учет договоров...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение