Продажи и себестоимость (Запрос) из УТ 10.3
Итак, открываем форму списка проектов: в меню «Операции» выбираем пункт «Справочник..», а затем — «(Экстрактор)Проекты».

В открывшейся форме «Проекты» нажимаем кнопку «Создать».

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

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

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

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

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

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

Настроим обработчик формирования очереди для первичной/полной выгрузки данных. Здесь мы будем использовать произвольный обработчик, так как нам нужны периоды как из одного, так и из второго регистра накопления и стандартный обработчик «по периоду», использующий только один регистр здесь нам не подходит. Для того, чтобы настроить произвольный обработчик:
устанавливаем флаг «Обработчик:» (1);
выбираем вид «Обработчик» (2);
создадим обработчик (3): в открывшемся окне (4) нажимаем кнопку «Создать» (5).

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

выбираем только что созданный нами обработчик.

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

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

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

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