Произвольный обработчик инициализации очереди

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

Данный обработчик инициализации очереди будет написан так, чтобы в очереди были только те сочетания сегментов, данные по которым есть в базе. Если данных нет, то и сегментов в очереди быть не должно.

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

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

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

Текст запроса для копирования:
ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.ЗаказКлиента КАК ЗаказКлиента, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер КАК Партнер, ВыручкаИСебестоимостьПродажОбороты.Партия КАК Партия, ВыручкаИСебестоимостьПродажОбороты.Склад КАК Склад, ВыручкаИСебестоимостьПродажОбороты.Договор КАК Договор, ВыручкаИСебестоимостьПродажОбороты.Менеджер КАК Менеджер, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Организация КАК Организация, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика, ВыручкаИСебестоимостьПродажОбороты.Период КАК Период, ВыручкаИСебестоимостьПродажОбороты.Регистратор КАК Регистратор, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК Выручка, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиБезНДСОборот КАК ВыручкаБезНДС, ВыручкаИСебестоимостьПродажОбороты.СтоимостьОборот КАК Себестоимость, ВыручкаИСебестоимостьПродажОбороты.СтоимостьБезНДСОборот КАК СебестоимостьБезНДС, ВыручкаИСебестоимостьПродажОбороты.ДопРасходыОборот КАК ДопРасходы, ВыручкаИСебестоимостьПродажОбороты.ДопРасходыБезНДСОборот КАК ДопРасходыБезНДС, ВыручкаИСебестоимостьПродажОбороты.ТрудозатратыОборот КАК Трудозатраты, ВыручкаИСебестоимостьПродажОбороты.РасходыНаПродажуСНДСОборот КАК РасходыНаПродажуСНДС ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(НАЧАЛОПЕРИОДА(&ПарамДата, МЕСЯЦ), КОНЕЦПЕРИОДА(&ПарамДата, МЕСЯЦ), Регистратор, Склад=&ПарамСклад) КАК ВыручкаИСебестоимостьПродажОбороты

Обратите внимание, в данном запросе мы разбили выгрузку по 2 параметрам: Период и Склад.

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

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

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

Затем задаем наименование проекту в соответствующем поле и перейдем к настройке строки проекта.

Настроим обработчик формирования очереди для первичной/полной выгрузки данных.

  • активируем переключатель «Обработчик:»;

  • выбираем вид «Обработчик»;

  • здесь мы будем использовать собственный обработчик инициализации очереди по месяцу периода и подразделению;

    • в открывшемся окне:

      • задаем наименование обработчику в соответствующем поле;

      • в поле «Алгоритм» добавляем текст обработчика, предложенный ниже

      Листинг обработчика:
      //!!! ================!!!Полный список содержащихся свойств параметров можно посмотреть отладчиком. //просто вызовите из обработчика свою собственную экспортную серверную процедуру с параметрами: //(Проект,СтрокаПроекта,Объект,Очередь,Параметры,ТекстОшибки) //-----------------------------ПАРАМЕТРЫ-------------------------------------------------------------------------------- // параметры процедуры мы можем задать просто напрямую в обработчике, как этот ИмяПараметраПериод = "ПарамДата"; //как в запросе источнике ИмяПараметраСклад = "ПарамСклад"; //как в запросе источнике //или как это значение: его мы задали в настройках параметров обработчика, поэтому просто получаем его оттуда ДатаНачалаВыгрузки = Параметры.Получить("Дата начала выгрузки"); //а это значение параметра мы вычислим исходя из заполненности данного параметра в настройках параметров обработчика //если там не заполнено - то заполним здесь текущей датой ДатаОкончанияВыгрузки=Параметры.Получить("Дата окончания выгрузки"); Если НЕ ЗначениеЗаполнено(ДатаОкончанияВыгрузки) Тогда ДатаОкончанияВыгрузки = КонецМесяца(ТекущаяДата()); КонецЕсли; //---------------------------------------------------------------------------------------------------------------------- Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | НачалоПериода(ВыручкаИСебестоимостьПродаж.Период,МЕСЯЦ) КАК НачалоПериода, | ВыручкаИСебестоимостьПродаж.Склад КАК Склад |ИЗ | РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж |ГДЕ | ВыручкаИСебестоимостьПродаж.Период МЕЖДУ &ДатаНачалаВыгрузки И &ДатаОкончанияВыгрузки | |СГРУППИРОВАТЬ ПО | НачалоПериода(ВыручкаИСебестоимостьПродаж.Период,МЕСЯЦ), | ВыручкаИСебестоимостьПродаж.Склад"; Запрос.УстановитьПараметр("ДатаНачалаВыгрузки",ДатаНачалаВыгрузки); Запрос.УстановитьПараметр("ДатаОкончанияВыгрузки",ДатаОкончанияВыгрузки); Выборка = Запрос.Выполнить().Выбрать(); ФорматнаяСтрока = "ДФ='yyyyMM'"; //форматная строка для сегментированияпо месяцам Пока Выборка.Следующий() Цикл НачалоПериода = Выборка.НачалоПериода; Склад = Выборка.Склад; //функция преобразуем дату к формату нужного представления в зависимости от используемой периодичности. У нас это месяц НачалоПериодаЧисло = Экс_ClickHouse.ПреобразоватьДатуВЧисло(НачалоПериода, "МЕСЯЦ"); //Создадим запись в очереди ЭлементОчереди = Очередь.Добавить(); //заполним параметры записи ЭлементОчереди.Параметры = Новый Структура(ИмяПараметраПериод + ", " + ИмяПараметраСклад, НачалоПериода, Склад); //заполним партицию ЭлементОчереди.Партиция = Новый Массив; ЭлементОчереди.Партиция.Добавить(НачалоПериодаЧисло); ЭлементОчереди.Партиция.Добавить(Склад); КонецЦикла;
      • в поле «Параметры» добавляем параметры «Дата начала выгрузки» и «Дата окончания выгрузки» с типом «Дата», которые используются в обработчике;

      • нажимаем «Записать и закрыть».

  • при необходимости, Вы можете указать значения для параметров.

Нажимаем «Применить и закрыть».

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