Производственный календарь (Запрос)

В данном примере продемонстрирована настройка проекта для выгрузки регистра сведений «Данные производственного календаря» с помощью Экстрактора 1С. В качестве источника данных мы будем использовать «Запрос».

В конфигурациях 1С «Управление торговлей 11», «Комплексная автоматизация 2» и «ERP 2» есть специализированный регистр сведений «Данные производственного календаря». Такая выгрузка производственного календаря удобна, например, для расчетов остатков или количества рабочих дней.

Итак, заходим в раздел «Проекты» Экстрактора 1С, нажимаем «Создать».

Выбираем тип источника данных «Запрос».

В открывшемся окне задаем наименование и добавляем текст запроса (Вы можете использовать предоставленный в данной статье текст запроса, составить свой на языке программирования 1С или воспользоваться конструктором запроса по кнопке «Конструктор…», как это сделать смотрите в статье).

Текст запроса:
ВЫБРАТЬ ДанныеПроизводственногоКалендаря.Дата КАК Data, ДанныеПроизводственногоКалендаря.ВидДня КАК TypeDay, ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь КАК Calendar, ВЫБОР КОГДА ДанныеПроизводственногоКалендаря.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК WorkDay, НАЧАЛОПЕРИОДА(КОНЕЦПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ), ДЕНЬ) КАК MonthEnd, НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ) КАК MonthStart, ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК CurrentDay, ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ) = НАЧАЛОПЕРИОДА(&ТекущаяДата, МЕСЯЦ) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК CurrentMonth, ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ) = НАЧАЛОПЕРИОДА(&ТекущаяДата, МЕСЯЦ) И НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, ДЕНЬ) <= НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК CurrentMonthForCurrentDay, ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, ГОД) = НАЧАЛОПЕРИОДА(&ТекущаяДата, ГОД) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК CurrentYear, ГОД(ДанныеПроизводственногоКалендаря.Дата) КАК Year, МЕСЯЦ(ДанныеПроизводственногоКалендаря.Дата) КАК Month, КВАРТАЛ(ДанныеПроизводственногоКалендаря.Дата) КАК Quarter, ДЕНЬ(ДанныеПроизводственногоКалендаря.Дата) КАК Day, ДЕНЬНЕДЕЛИ(ДанныеПроизводственногоКалендаря.Дата) КАК DayOfWeek, РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ), КОНЕЦПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ), ДЕНЬ) + 1 КАК DaysInMonth ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря

На этапе настройки набора данных оставляем все без изменений.

Пропускаем этап настройки вычисляемых полей.

Затем выбираем подключение и создаем таблицу-приемник (6 и 7 этапы инструкции по созданию проекта). На этапе сопоставления полей проверяем установленный флаг для сегмента.

Этап расширенных настроек пропускаем и завершаем настройку проекта.

Затем задаем наименование проекту в соответствующем поле. Остается только выполнить выгрузку: нажимаем поочередно кнопки «Записать», «Сформировать очередь» и «Выполнить проект».


После выгрузки данных в базу-приемник, вы получите подобную таблицу с такими полями: