Выручка и себестоимость продаж. Обороты (Запрос) с 2 параметрами сегментирования
Итак, заходим в раздел «Проекты» Экстрактора 1С, нажимаем «Создать».

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

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

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

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

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

Настроим обработчик формирования очереди для первичной/полной выгрузки данных.
активируем переключатель «Обработчик:»;
выбираем вид «Обработчик»;
здесь мы будем использовать собственный обработчик инициализации очереди по месяцу периода и подразделению;

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

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

Переходим к настройке обработчика формирования очереди при изменении объектов:
устанавливаем флаг «Вкл.»;
указываем вид объекта: «РегистрыНакопления»;
указываем имя объекта: «ВыручкаИСебестоимостьПродаж»;
выбираем вид «Обработчик»;
здесь мы будем использовать собственный обработчик регистрации изменений очереди по месяцу периода и подразделению;

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

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

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

В результате получим выгруженные данные в нашей базе данных:

При необходимости, Вы можете настроить расписание выгрузки данных.