Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как ускорить запись в регистр результат запроса?

Как ускорить запись в регистр результат запроса?
Я
   Varyag712
 
20.02.20 - 17:23
Добрый день

У меня 6 млн. строк в результате запроса, нужно их записать в регистр
Подскажите, пожалуйста, как загрузить результат запроса без цикла или ускорить цикл

    Запрос = Новый Запрос;
    Запрос.Текст =
    "выбрать * ИЗ ЯГ_результат";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
        
            НаборЗапись = РегистрыСведений.СтрокиНаОтправкуВСУМА.СоздатьМенеджерЗаписи();
            НаборЗапись.Период = Выборка.Период;
            НаборЗапись.rowId = Выборка.rowId;
            НаборЗапись.svemaMcId = Выборка.svemaMcId;
            НаборЗапись.mcType = Выборка.mcType;
            НаборЗапись.skuCode = Выборка.skuCode;
            НаборЗапись.cntrCode = Выборка.cntrCode;
            НаборЗапись.dcCode = Выборка.dcCode;
            НаборЗапись.dcTransitCode = Выборка.dcTransitCode;
            НаборЗапись.dcTypeName = Выборка.dcTypeName;
            НаборЗапись.mcGeography = Выборка.mcGeography;
            НаборЗапись.isExpansion = Выборка.isExpansion;
            НаборЗапись.branchName = Выборка.branchName;
            НаборЗапись.regionName = Выборка.regionName;
            НаборЗапись.skuClusterId = Выборка.skuClusterId;
            НаборЗапись.echelonId = Выборка.echelonId;
            НаборЗапись.frmtName = Выборка.frmtName;
            НаборЗапись.subFrmtName = Выборка.subFrmtName;
            НаборЗапись.spCode = Выборка.spCode;
            НаборЗапись.discountBeginDt = Выборка.discountBeginDt;
            НаборЗапись.discountEndDt = Выборка.discountEndDt;
            НаборЗапись.beginDt = Выборка.beginDt;
            НаборЗапись.endDt = Выборка.endDt;
            НаборЗапись.skuAnalogCode = Выборка.skuAnalogCode;
            НаборЗапись.classificationCode = Выборка.classificationCode;
            НаборЗапись.regularPriceRub = Выборка.regularPriceRub;
            НаборЗапись.actionPriceRub = Выборка.actionPriceRub;
            НаборЗапись.multiplicityPcs = Выборка.multiplicityPcs;
            НаборЗапись.maxOrderPcs = Выборка.maxOrderPcs;
            НаборЗапись.minPartPcs = Выборка.minPartPcs;
            НаборЗапись.totalDiscountPerc = Выборка.totalDiscountPerc;
            НаборЗапись.planVolumePcs = Выборка.planVolumePcs;
            НаборЗапись.planVolumeRub = Выборка.planVolumeRub;
            НаборЗапись.planSpCnt = Выборка.planSpCnt;
            НаборЗапись.purchaseCnt = Выборка.purchaseCnt;
            НаборЗапись.giftCnt = Выборка.giftCnt;
            НаборЗапись.isBooklet = Выборка.isBooklet;
            НаборЗапись.isShipmentRequired = Выборка.isShipmentRequired;
            НаборЗапись.Пользователь = Пользователи.ТекущийПользователь();
            
            НаборЗапись.Записать(Истина);
КонецЦикла;

Пытался загружать как таблицу, но что-то не получается. Запрос и выгружал, и выбирал

НаборЗапись = РегистрыСведений.СтрокиНаОтправкуВСУМА.СоздатьМенеджерЗаписи();
НаборЗапись.Прочитать();
НаборЗапись.Загрузить(Выборка);
НаборЗапись.Записать(Истина);
 
 
   Fragster
 
1 - 20.02.20 - 17:25
Если пытался набором, то почему в этой попытке создавал менеджер записи, а не набор записей?
   Fragster
 
2 - 20.02.20 - 17:25
ну и аккуратно с отборами и перезаписью
   TopProger
 
3 - 20.02.20 - 17:27
из сп
   TopProger
 
4 - 20.02.20 - 17:27
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Загрузить (Load)
Синтаксис:

Загрузить(<ТаблицаЗначений>)
Параметры:

<ТаблицаЗначений> (обязательный)

Тип: ТаблицаЗначений.
Таблица значений, по которой производится заполнение набора записей.
Описание:

Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются. Заполняются значения доступных для записи свойств записей регистра сведений, имена которых совпали c именами колонок таблицы значений.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

Рег = РегистрыСведений.КурсыВалют;
НаборКурсов = Рег.СоздатьНаборЗаписей();
Таб = Новый ТаблицаЗначений;
// формирование таблицы значений


// ...


НаборКурсов.Загрузить(Таб);
   АнализДанных
 
5 - 20.02.20 - 18:33
+ к (4) проверить, возможно есть какие-нибудь обработчики "Перед\ПриЗаписи" регистра или подписки на события, если есть, то сделать проверку на "ОбменДанными.Загрузка", если ИСТИНА - пропускать выполнение. В твоей процедуре тоже добавить строку
НаборКурсов.ОбменДанными.Загрузка = Истина;
   АнализДанных
 
6 - 20.02.20 - 18:35
(0) Если я не ошибаюсь, то при использовании "менеджера записи" запись происходит 2 раза (один раз очистка старых записей, второй раз запись новых), а при использовании набора только 1 раз.
   VladZ
 
7 - 20.02.20 - 18:50
(0) "6 млн. строк" - это уже уровень серьезной базы данных. 1С - это программа для ведения учета, а не для хранения 6ти миллионов записей.

Храни данные во внешней БД. И будет все летать.
   ДенисЧ
 
8 - 20.02.20 - 18:52
(6) Jib,ftimcz
   Sasha_H
 
9 - 20.02.20 - 19:02
ну во-первых делать запись в транзакции было бы не плохо.
Во-вторых отключить все возможные маневры проверок. Обмен.Данными.Загрузка = истина;
   Sasha_H
 
10 - 20.02.20 - 19:04
размер пакета транзакции тут уже эксперементальным путем. во-вторых попробуй распаралелить запись в регистр по измерениям и записуй их разными пакетами!
   Sasha_H
 
11 - 20.02.20 - 19:05
на основе своих данных у тебя есть измерения вот сложи эти измерения в разные пакеты и создавай фоновые задания. примерно если у тебя 24 ядерный процик то не более 20 фонов пробуй распаралелить запись. только внимательно с блокировками!
   Sasha_H
 
12 - 20.02.20 - 19:07
ну и запрос первый написать сразу с учетом того по-возможности чтобы его результат выводил пакетник сразу нескольких наборов, чтобы не бегать по циклу и не пересобирать. То есть результат должен быть проиндексирован
   VS-1976
 
13 - 20.02.20 - 19:30
И самое главное отключи всё индексы таблицы куда грузить. После загрузки включишь. Можно сделать через ADO.
   Sasha_H
 
14 - 20.02.20 - 19:43
(13) ну если он рубанет индексы то процедура Набора.Отбор.Установить() будет жутко висеть!
   Sasha_H
 
15 - 20.02.20 - 19:44
там же кластерный индекс
   Sasha_H
 
16 - 20.02.20 - 19:45
где-то посмотри в инете на инфостарте натыкался как сделать не простой инсерт , а BULK INSERT
   Sasha_H
 
17 - 20.02.20 - 19:46
   Varyag712
 
18 - 20.02.20 - 19:50
Компания крупная, очередь задач тоже. Ситуация такая, что направление ИТ очень очень медленные и почти все доработки делаю сам от бизнеса. Внешние базы, изменение метаданных - не вариант

Таб = Новый ТаблицаЗначений;
// формирование таблицы значений


// ...
Формирование таблицы из результата запроса, тоже циклом ... ?

Все почитаю, попробую. Будут еще мысли, пишите
Ниже вся процедура, может найдете что-то интересное для себя или какую-то оптимизацию для меня, но запрос отрабатывает быстро, за него не переживаю

&НаСервере
Процедура ЗагрузитьВСУМАНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТипМаркетинговойАктивности.Ссылка КАК ВидАкции,
    |    ВЫБОР
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Обложка""
    |            ТОГДА 0
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Ключевое промо""
    |            ТОГДА 1
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Распродажа выводимых ТП""
    |            ТОГДА 2
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Хаммеры""
    |            ТОГДА 3
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Сезонный каталог Хаммер""
    |            ТОГДА 4
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Лояльность Хаммер""
    |            ТОГДА 5
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Снижение цены""
    |            ТОГДА 6
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Сезонный каталог Снижение""
    |            ТОГДА 7
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Лояльность Снижение цены""
    |            ТОГДА 8
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Хит Магнит""
    |            ТОГДА 9
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Кассовый модуль""
    |            ТОГДА 10
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Сезонный каталог Кассовый модуль""
    |            ТОГДА 11
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Лояльность Кассовый модуль""
    |            ТОГДА 12
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Купи на кассе""
    |            ТОГДА 13
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Лояльность""
    |            ТОГДА 14
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Сезонный каталог Без активности""
    |            ТОГДА 15
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Быстрая птица""
    |            ТОГДА 16
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Выгодные недели""
    |            ТОГДА 17
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Сезонный каталог""
    |            ТОГДА 18
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Сезонный каталог Имидж""
    |            ТОГДА 19
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Купон""
    |            ТОГДА 20
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог РЦ""
    |            ТОГДА 21
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог РЦ (аванс)""
    |            ТОГДА 22
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог РЦ Имидж""
    |            ТОГДА 23
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог РЦ Имидж (аванс)""
    |            ТОГДА 24
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог""
    |            ТОГДА 25
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог (аванс)""
    |            ТОГДА 26
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог Имидж""
    |            ТОГДА 27
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Каталог Имидж (аванс)""
    |            ТОГДА 28
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Алкогольный каталог""
    |            ТОГДА 29
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Алкогольный каталог (аванс)""
    |            ТОГДА 30
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Без активности""
    |            ТОГДА 31
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП""
    |            ТОГДА 32
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП (аванс)""
    |            ТОГДА 33
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП (накладная)""
    |            ТОГДА 34
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП (скидка)""
    |            ТОГДА 35
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ЗО""
    |            ТОГДА 36
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ЗО (аванс)""
    |            ТОГДА 37
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ЗО (накладная)""
    |            ТОГДА 38
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ЗО (скидка)""
    |            ТОГДА 39
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП не начислять""
    |            ТОГДА 40
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ХО""
    |            ТОГДА 41
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ХО (аванс)""
    |            ТОГДА 42
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ХО (накладная)""
    |            ТОГДА 43
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""ДМП ХО (скидка)""
    |            ТОГДА 44
    |        КОГДА ТипМаркетинговойАктивности.Наименование = ""Товар недели""
    |            ТОГДА 45
    |        ИНАЧЕ 99
    |    КОНЕЦ КАК Приоритет
    |ПОМЕСТИТЬ ЯГ_Приоритеты
    |ИЗ
    |    Справочник.ТипМаркетинговойАктивности КАК ТипМаркетинговойАктивности
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(МАКСИМУМ(ЗаявкаПоставщика.Дата), ДЕНЬ) КАК LASTDATE
    |ПОМЕСТИТЬ ЯГ_LASTDATE
    |ИЗ
    |    Документ.ЗаявкаПоставщика КАК ЗаявкаПоставщика
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    МестаХранения.Ссылка КАК ОсновнойРЦ,
    |    МестаХранения.Код КАК Код
    |ПОМЕСТИТЬ ЯГ_РЦ
    |ИЗ
    |    Справочник.МестаХранения КАК МестаХранения
    |ГДЕ
    |    МестаХранения.Наименование = ""Сектора""
    |    И МестаХранения.Код <> ""560000""
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |    МестаХранения.Ссылка,
    |    МестаХранения.Код
    |ИЗ
    |    Справочник.МестаХранения КАК МестаХранения
    |ГДЕ
    |    МестаХранения.Наименование = ""Сеть РЦ""
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ТипМатрицы.Ссылка КАК Ссылка,
    |    ТипМатрицы.Код КАК Код,
    |    ТипМатрицы.Наименование КАК Наименование
    |ПОМЕСТИТЬ ЯГ_Матрицы
    |ИЗ
    |    Справочник.ТипМатрицы КАК ТипМатрицы
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    География.Ссылка КАК Ссылка,
    |    География.Код КАК Код,
    |    География.Наименование КАК Наименование,
    |    Матрицы.Ссылка КАК Матрица,
    |    РЦ.ОсновнойРЦ КАК ОсновнойРЦ,
    |    Матрицы.Ссылка КАК Ссылка1,
    |    Матрицы.Код КАК Код1,
    |    Матрицы.Наименование КАК Наименование1,
    |    РЦ.ОсновнойРЦ КАК ОсновнойРЦ1,
    |    РЦ.Код КАК Код2
    |ПОМЕСТИТЬ ЯГ_ГеографияСсылки
    |ИЗ
    |    Справочник.ГеографияПроведенияАкции КАК География
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_Матрицы КАК Матрицы
    |        ПО (География.Наименование ПОДОБНО ""%"" + Матрицы.Наименование + ВЫБОР
    |                КОГДА Матрицы.Наименование = ""Целевая география ГМ РЦ""
    |                    ТОГДА """"
    |                ИНАЧЕ ""%""
    |            КОНЕЦ)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_РЦ КАК РЦ
    |        ПО (География.Наименование ПОДОБНО ""%"" + РЦ.ОсновнойРЦ.Родитель.Наименование + ""%""
    |                ИЛИ География.Наименование = ""РЦ""
    |                    И РЦ.Код = ""0000000005"")
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ ПЕРВЫЕ 20
    |    ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) КАК ПериодПроведенияАкцииС,
    |    ЕСТЬNULL(ДлительностьАкций.РоднойПериодПо, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииПо) КАК ПериодПроведенияАкцииПо,
    |    ЗаявкаПоставщикаСодержание.КлючСтроки КАК КлючСтроки,
    |    ЗаявкаПоставщикаСодержание.Ссылка КАК Ссылка,
    |    ВЫБОР
    |        КОГДА ЗаявкаПоставщикаСодержание.НТЗПодтвержденный = ИСТИНА
    |                ИЛИ ЗаявкаПоставщикаСодержание.РазмерКаталога.Наименование ПОДОБНО ""Обложка%""
    |            ТОГДА ""Обложка""
    |        КОГДА ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""Ключевое промо Кассовый модуль""
    |                ИЛИ ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""Сезонный каталог Ключевое промо""
    |            ТОГДА ""Ключевое промо""
    |        КОГДА ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""ДМП Вложение в препак""
    |            ТОГДА ""Хаммеры""
    |        КОГДА ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""Лояльность""
    |                ИЛИ ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""Лояльность Сезонный каталог""
    |            ТОГДА ""Хаммеры""
    |        ИНАЧЕ ЗаявкаПоставщикаСодержание.ВидАкции
    |    КОНЕЦ КАК ВидАкции,
    |    ЗаявкаПоставщикаСодержание.Формат КАК Формат,
    |    ЗаявкаПоставщикаСодержание.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |    ЗаявкаПоставщикаСодержание.КонтрагентСклада КАК КонтрагентСклада,
    |    ЗаявкаПоставщикаСодержание.Номенклатура КАК Номенклатура,
    |    ЗаявкаПоставщикаСодержание.ГеографияПредставленностиТовара КАК ГеографияПредставленностиТовара,
    |    ЗаявкаПоставщикаСодержание.Кластер КАК Кластер,
    |    ЗаявкаПоставщикаСодержание.ПериодОтгрузокС КАК ПериодОтгрузокС,
    |    ЗаявкаПоставщикаСодержание.ПериодОтгрузокПо КАК ПериодОтгрузокПо,
    |    ЗаявкаПоставщикаСодержание.РегулярнаяЦена КАК РегулярнаяЦена,
    |    ЗаявкаПоставщикаСодержание.РекомендуемаяЦена КАК РекомендуемаяЦена,
    |    ЗаявкаПоставщикаСодержание.Номенклатура.ЕдиницаИзмеренияМинимальнойПартииТовара КАК НоменклатураЕдиницаИзмеренияМинимальнойПартииТовара,
    |    ЗаявкаПоставщикаСодержание.Скидка3 КАК Скидка3,
    |    ЗаявкаПоставщикаСодержание.ПлановыйОбъемКоличество КАК ПлановыйОбъемКоличество,
    |    ЗаявкаПоставщикаСодержание.ПлановыйОбъемСтоимость КАК ПлановыйОбъемСтоимость,
    |    ЗаявкаПоставщикаСодержание.КоличествоТорговыхТочекСПромо КАК КоличествоТорговыхТочекСПромо,
    |    ВЫБОР
    |        КОГДА ЗаявкаПоставщикаСодержание.ТипАкции = ЗНАЧЕНИЕ(Перечисление.ТипАкции.Коэффициентная)
    |            ТОГДА ""к""
    |        ИНАЧЕ ""о""
    |    КОНЕЦ КАК ТипАкции,
    |    ВЫБОР
    |        КОГДА РазмерыКаталогов.Наименование ЕСТЬ НЕ NULL 
    |            ТОГДА ""Да""
    |        ИНАЧЕ ""Нет""
    |    КОНЕЦ КАК ПечатьВКаталоге,
    |    ЗаявкаПоставщикаСодержание.АкционнаяПозицияОтсутствуетВРегулярномАссортименте КАК Инаут,
    |    ЗаявкаПоставщикаСодержание.СкидкаВСчетеВНакладной КАК СкидкаВСчетеВНакладной,
    |    ЗаявкаПоставщикаСодержание.СкидкаЗаСчетомПоИтогамЗакупок КАК СкидкаЗаСчетомПоИтогамЗакупок,
    |    ЗаявкаПоставщикаСодержание.ВходнаяЦенаСУчётомСкидкиСНДС КАК ВходнаяЦенаСУчётомСкидкиСНДС,
    |    ВЫБОР
    |        КОГДА (ЗаявкаПоставщикаСодержание.НТЗПодтвержденный = ИСТИНА
    |                ИЛИ ЗаявкаПоставщикаСодержание.РазмерКаталога.Наименование ПОДОБНО ""Обложка%"")
    |                И ЗаявкаПоставщикаСодержание.ВидАкции.Каталог = ИСТИНА
    |            ТОГДА 20.5
    |        КОГДА ЗаявкаПоставщикаСодержание.НТЗПодтвержденный = ИСТИНА
    |                ИЛИ ЗаявкаПоставщикаСодержание.РазмерКаталога.Наименование ПОДОБНО ""Обложка%""
    |            ТОГДА 0
    |        КОГДА ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""ДМП Вложение в препак""
    |            ТОГДА 3.5
    |        КОГДА ЗаявкаПоставщикаСодержание.ВидАкции.Наименование = ""Лояльность""
    |            ТОГДА 3.6
    |        ИНАЧЕ Приоритеты.Приоритет
    |    КОНЕЦ КАК Приоритет,
    |    СтатусыСтрокЗаявокПоставщикаСрезПоследних.СтатусСогласованияСДЗ КАК СтатусСогласованияСДЗ,
    |    ГеоСсылки.Матрица КАК Матрица,
    |    ГеоСсылки.ОсновнойРЦ КАК ОсновнойРЦ
    |ПОМЕСТИТЬ ЯГ_Заявки
    |ИЗ
    |    Документ.ЗаявкаПоставщика.Содержание КАК ЗаявкаПоставщикаСодержание
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыСтрокЗаявокПоставщика.СрезПоследних КАК СтатусыСтрокЗаявокПоставщикаСрезПоследних
    |        ПО ЗаявкаПоставщикаСодержание.КлючСтроки = СтатусыСтрокЗаявокПоставщикаСрезПоследних.КлючСтроки
    |            И ЗаявкаПоставщикаСодержание.Ссылка = СтатусыСтрокЗаявокПоставщикаСрезПоследних.ЗаявкаПоставщика
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДлительностьАкций КАК ДлительностьАкций
    |        ПО (ДлительностьАкций.КлючСтроки = ЗаявкаПоставщикаСодержание.КлючСтроки)
    |            И (ДлительностьАкций.Документ = ЗаявкаПоставщикаСодержание.Ссылка)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РазмерыКаталогов КАК РазмерыКаталогов
    |        ПО ЗаявкаПоставщикаСодержание.РазмерКаталога = РазмерыКаталогов.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_Приоритеты КАК Приоритеты
    |        ПО ЗаявкаПоставщикаСодержание.ВидАкции = Приоритеты.ВидАкции
    |        внутреннее соединение РегистрСведений.ВыгруженныеСтрокиВСУМА КАК СтатусыСУМА
    |        По ЗаявкаПоставщикаСодержание.КлючСтроки = СтатусыСУМА.КлючСтроки
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_ГеографияСсылки КАК ГеоСсылки
    |        ПО (ГеоСсылки.Ссылка = ЗаявкаПоставщикаСодержание.ГеографияПроведенияАкции)
    |ГДЕ
    |    (СтатусыСтрокЗаявокПоставщикаСрезПоследних.СтатусСогласованияСДМ В (ЗНАЧЕНИЕ(Перечисление.СтатусыСтрокЗаявокПоставщика.Согласовано), ЗНАЧЕНИЕ(Перечисление.СтатусыСтрокЗаявокПоставщика.СогласованоСИзменениями), ЗНАЧЕНИЕ(Перечисление.СтатусыСтрокЗаявокПоставщика.ПустаяСсылка))
    |            ИЛИ СтатусыСтрокЗаявокПоставщикаСрезПоследних.СтатусСогласованияСДМ ЕСТЬ NULL)
    |    И ЗаявкаПоставщикаСодержание.Ссылка.НаКорректировке = ЛОЖЬ
    |    И ЗаявкаПоставщикаСодержание.Ссылка.ПометкаУдаления = ЛОЖЬ
    |    И НЕ ЗаявкаПоставщикаСодержание.Ссылка.Автор.Наименование В (""Горовой Ярослав Юрьевич"", ""Воеводин Егор Андреевич"", ""Савицкая Екатерина Юрьевна"", ""Мощенко Антон Сергеевич"", ""Тарасов Александр Владимирович"", ""Смирнова Евгения Станиславовна"", ""Лавренко Кристина Сергеевна"", ""Широкова Яна Рифатовна"", ""Логинов Денис Александрович"", ""Васюк Ксения Петровна"", ""Горохов Станислав Николаевич"", ""Бирюкова Александра Александровна"")
    |    И ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) >= &Дата1
    |    И ЕСТЬNULL(ДлительностьАкций.РоднойПериодПо, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииПо) <= &Дата2
    |    И ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) = &Дата1
    |    И ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)
    |    И НЕ ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)
    |    И ЗаявкаПоставщикаСодержание.Формат В(&Формат)
    |    И ЗаявкаПоставщикаСодержание.Ссылка В(&АкцияСсылка)
    |    И ЗаявкаПоставщикаСодержание.Номенклатура В(&Номенклатура)
    |    И ЗаявкаПоставщикаСодержание.ВидАкции В(&ВидАкции)
    |    И ЗаявкаПоставщикаСодержание.КлючСтроки В(&КлючСтроки)
    |    И ЗаявкаПоставщикаСодержание.ВидАкции.НаименованиеДляСУМА <> ""НЕТ""
    |    И (ЗаявкаПоставщикаСодержание.Формат.Наименование <> ""МК""
    |            ИЛИ ЗаявкаПоставщикаСодержание.Формат.Наименование = ""МК""
    |                И ЗаявкаПоставщикаСодержание.АкционнаяПозицияОтсутствуетВРегулярномАссортименте = ИСТИНА)
    |    И ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5
    |                ТОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование
    |            КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 4
    |                ТОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.Родитель.Родитель.Родитель.Наименование
    |            КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 3
    |                ТОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.Родитель.Родитель.Наименование
    |            КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 2
    |                ТОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.Родитель.Наименование
    |            КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 1
    |                ТОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.Наименование
    |            ИНАЧЕ ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.Наименование
    |        КОНЕЦ В (""Кулинария"", ""Мясо"", ""Птица"", ""Яичные товары"")
    |    И ДлительностьАкций.РоднойПериодС = ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ЯГ_Заявки.Номенклатура КАК Номенклатура,
    |    ЯГ_Заявки.Формат КАК Формат
    |ПОМЕСТИТЬ ЯГ_УниТПФ
    |ИЗ
    |    ЯГ_Заявки КАК ЯГ_Заявки
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    Таблица1.Номенклатура КАК Номенклатура,
    |    Таблица1.Формат КАК Формат,
    |    Таблица1.РЦ КАК РЦ,
    |    МАКСИМУМ(Таблица1.КоличествоТТ) КАК СредниеПродажи,
    |    МАКСИМУМ(Таблица1.КоличествоТТнаРЦ) КАК КоличествоЧеков,
    |    МАКСИМУМ(Таблица1.Присутствие) КАК Присутствие
    |ПОМЕСТИТЬ ЯГ_Ассортимент
    |ИЗ
    |    (ВЫБРАТЬ
    |        УдалитьСредниеПродажиНа1000чеков.Номенклатура КАК Номенклатура,
    |        УдалитьСредниеПродажиНа1000чеков.Формат КАК Формат,
    |        УдалитьСредниеПродажиНа1000чеков.МестоХранения.Наименование КАК РЦ,
    |        ВЫРАЗИТЬ(СУММА(УдалитьСредниеПродажиНа1000чеков.СредниеПродажи) КАК ЧИСЛО(10, 0)) КАК КоличествоТТ,
    |        ВЫРАЗИТЬ(СУММА(УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков) КАК ЧИСЛО(10, 0)) КАК КоличествоТТнаРЦ,
    |        ВЫРАЗИТЬ(СРЕДНЕЕ(ВЫБОР
    |                    КОГДА УдалитьСредниеПродажиНа1000чеков.СредниеПродажи / ВЫБОР
    |                            КОГДА УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков = 0
    |                                    ИЛИ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков ЕСТЬ NULL
    |                                ТОГДА 1
    |                            ИНАЧЕ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков
    |                        КОНЕЦ > 1
    |                        ТОГДА 1
    |                    ИНАЧЕ УдалитьСредниеПродажиНа1000чеков.СредниеПродажи / ВЫБОР
    |                            КОГДА УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков = 0
    |                                    ИЛИ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков ЕСТЬ NULL
    |                                ТОГДА 1
    |                            ИНАЧЕ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков
    |                        КОНЕЦ
    |                КОНЕЦ) КАК ЧИСЛО(10, 2)) КАК Присутствие
    |    ИЗ
    |        РегистрСведений.УдалитьСредниеПродажиНа1000чеков КАК УдалитьСредниеПродажиНа1000чеков
    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЯГ_УниТПФ КАК ЯГ_Заявки
    |            ПО УдалитьСредниеПродажиНа1000чеков.Номенклатура = ЯГ_Заявки.Номенклатура
    |                И УдалитьСредниеПродажиНа1000чеков.Формат = ЯГ_Заявки.Формат
    |    
    |    СГРУППИРОВАТЬ ПО
    |        УдалитьСредниеПродажиНа1000чеков.Номенклатура,
    |        УдалитьСредниеПродажиНа1000чеков.Формат,
    |        УдалитьСредниеПродажиНа1000чеков.МестоХранения,
    |        УдалитьСредниеПродажиНа1000чеков.МестоХранения.Наименование
    |    
    |    ОБЪЕДИНИТЬ
    |    
    |    ВЫБРАТЬ
    |        УдалитьСредниеПродажиНа1000чеков.Номенклатура,
    |        УдалитьСредниеПродажиНа1000чеков.Формат,
    |        ""РЦ Иваново"",
    |        ВЫРАЗИТЬ(СУММА(УдалитьСредниеПродажиНа1000чеков.СредниеПродажи) КАК ЧИСЛО(10, 0)),
    |        ВЫРАЗИТЬ(СУММА(УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков) КАК ЧИСЛО(10, 0)),
    |        ВЫРАЗИТЬ(СРЕДНЕЕ(ВЫБОР
    |                    КОГДА УдалитьСредниеПродажиНа1000чеков.СредниеПродажи / ВЫБОР
    |                            КОГДА УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков = 0
    |                                    ИЛИ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков ЕСТЬ NULL
    |                                ТОГДА 1
    |                            ИНАЧЕ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков
    |                        КОНЕЦ > 1
    |                        ТОГДА 1
    |                    ИНАЧЕ УдалитьСредниеПродажиНа1000чеков.СредниеПродажи / ВЫБОР
    |                            КОГДА УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков = 0
    |                                    ИЛИ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков ЕСТЬ NULL
    |                                ТОГДА 1
    |                            ИНАЧЕ УдалитьСредниеПродажиНа1000чеков.КоличествоЧеков
    |                        КОНЕЦ
    |                КОНЕЦ) КАК ЧИСЛО(10, 2))
    |    ИЗ
    |        РегистрСведений.УдалитьСредниеПродажиНа1000чеков КАК УдалитьСредниеПродажиНа1000чеков
    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЯГ_УниТПФ КАК ЯГ_Заявки
    |            ПО УдалитьСредниеПродажиНа1000чеков.Номенклатура = ЯГ_Заявки.Номенклатура
    |                И УдалитьСредниеПродажиНа1000чеков.Формат = ЯГ_Заявки.Формат
    |    ГДЕ
    |        УдалитьСредниеПродажиНа1000чеков.МестоХранения.Наименование = ""РЦ Ярославль""
    |    
    |    СГРУППИРОВАТЬ ПО
    |        УдалитьСредниеПродажиНа1000чеков.Номенклатура,
    |        УдалитьСредниеПродажиНа1000чеков.Формат,
    |        УдалитьСредниеПродажиНа1000чеков.МестоХранения) КАК Таблица1
    |
    |СГРУППИРОВАТЬ ПО
    |    Таблица1.Номенклатура,
    |    Таблица1.Формат,
    |    Таблица1.РЦ
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    Т1.ПериодПроведенияАкцииС КАК ПериодПроведенияАкцииС,
    |    Т1.ПериодПроведенияАкцииПо КАК ПериодПроведенияАкцииПо,
    |    Т1.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |    КОЛИЧЕСТВО(Т1.КонтрагентСклада) КАК КонтрагентСклада,
    |    Т1.Номенклатура КАК Номенклатура
    |ПОМЕСТИТЬ ЯГ_Ошибки2КАнаРЦ
    |ИЗ
    |    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |        ЯГ_Заявки.ПериодПроведенияАкцииС КАК ПериодПроведенияАкцииС,
    |        ЯГ_Заявки.ПериодПроведенияАкцииПо КАК ПериодПроведенияАкцииПо,
    |        ЯГ_Заявки.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |        ЯГ_Заявки.КонтрагентСклада КАК КонтрагентСклада,
    |        ЯГ_Заявки.Номенклатура КАК Номенклатура
    |    ИЗ
    |        ЯГ_Заявки КАК ЯГ_Заявки
    |    ГДЕ
    |        ЯГ_Заявки.ГеографияПроведенияАкции.ФорматГеографииАкции <> ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Филиал)) КАК Т1
    |
    |СГРУППИРОВАТЬ ПО
    |    Т1.ПериодПроведенияАкцииС,
    |    Т1.ПериодПроведенияАкцииПо,
    |    Т1.ГеографияПроведенияАкции,
    |    Т1.Номенклатура
    |
    |ИМЕЮЩИЕ
    |    КОЛИЧЕСТВО(Т1.КонтрагентСклада) > 1
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    Т1.ПериодПроведенияАкцииС КАК ПериодПроведенияАкцииС,
    |    Т1.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |    Т1.Формат КАК Формат,
    |    КОЛИЧЕСТВО(Т1.ВидАкции) КАК ВидАкции,
    |    Т1.КонтрагентСклада КАК КонтрагентСклада,
    |    Т1.Номенклатура КАК Номенклатура,
    |    Т1.КлючСтроки КАК КлючСтроки
    |ПОМЕСТИТЬ ЯГ_Ошибки2Вида
    |ИЗ
    |    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |        ЯГ_Заявки.ПериодПроведенияАкцииС КАК ПериодПроведенияАкцииС,
    |        ЯГ_Заявки.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |        ЯГ_Заявки.Формат КАК Формат,
    |        ЯГ_Заявки.ВидАкции КАК ВидАкции,
    |        ЯГ_Заявки.КонтрагентСклада КАК КонтрагентСклада,
    |        ЯГ_Заявки.Номенклатура КАК Номенклатура,
    |        ЯГ_Заявки.КлючСтроки КАК КлючСтроки
    |    ИЗ
    |        ЯГ_Заявки КАК ЯГ_Заявки
    |    ГДЕ
    |        ЯГ_Заявки.ВидАкции.ВидМаркетинговойАкции <> ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)) КАК Т1
    |
    |СГРУППИРОВАТЬ ПО
    |    Т1.ПериодПроведенияАкцииС,
    |    Т1.ГеографияПроведенияАкции,
    |    Т1.Формат,
    |    Т1.КонтрагентСклада,
    |    Т1.Номенклатура,
    |    Т1.КлючСтроки
    |
    |ИМЕЮЩИЕ
    |    КОЛИЧЕСТВО(Т1.ВидАкции) > 1
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ЯГ_Заявки.КлючСтроки КАК КлючСтроки
    |ПОМЕСТИТЬ ЯГ_ОшибкиПриоритета
    |ИЗ
    |    ЯГ_Заявки КАК ЯГ_Заявки
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |            ЯГ_Заявки.Формат КАК Формат,
    |            ЯГ_Заявки.Номенклатура КАК Номенклатура,
    |            ЯГ_Заявки.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |            ЯГ_Заявки.Приоритет КАК Приоритет
    |        ИЗ
    |            ЯГ_Заявки КАК ЯГ_Заявки) КАК ЯГ_Заявки2
    |        ПО ЯГ_Заявки.Формат = ЯГ_Заявки2.Формат
    |            И ЯГ_Заявки.Номенклатура = ЯГ_Заявки2.Номенклатура
    |            И (ЯГ_Заявки.ГеографияПроведенияАкции.Наименование ПОДОБНО ""%"" + ЯГ_Заявки2.ГеографияПроведенияАкции.Наименование + ""%""
    |                ИЛИ ЯГ_Заявки2.ГеографияПроведенияАкции.Наименование ПОДОБНО ""%"" + ЯГ_Заявки.ГеографияПроведенияАкции.Наименование + ""%""
    |                ИЛИ ЯГ_Заявки.ГеографияПроведенияАкции.ФорматГеографииАкции = ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Филиал)
    |                    И ЯГ_Заявки2.ГеографияПроведенияАкции.ФорматГеографииАкции = ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Прямые)
    |                ИЛИ ЯГ_Заявки.ГеографияПроведенияАкции.ФорматГеографииАкции = ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Прямые)
    |                    И ЯГ_Заявки2.ГеографияПроведенияАкции.ФорматГеографииАкции = ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Филиал)
    |                ИЛИ ЯГ_Заявки.ГеографияПроведенияАкции.Наименование = ""По АП ДМП"")
    |            И ЯГ_Заявки.Приоритет > ЯГ_Заявки2.Приоритет
    |ГДЕ
    |    ЯГ_Заявки2.Приоритет ЕСТЬ НЕ NULL 
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ЯГ_Заявки.Номенклатура КАК Номенклатура,
    |    ЯГ_Заявки.КонтрагентСклада КАК КонтрагентСклада,
    |    ЯГ_Заявки.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |    ЯГ_Заявки.ГеографияПредставленностиТовара КАК ГеографияПредставленностиТовара,
    |    ЯГ_Заявки.ПериодПроведенияАкцииС КАК ПериодПроведенияАкцииС,
    |    ЯГ_Заявки.ПериодПроведенияАкцииПо КАК ПериодПроведенияАкцииПо,
    |    ЯГ_Заявки.Формат КАК Формат,
    |    ЯГ_Заявки.КлючСтроки КАК КлючСтроки,
    |    ЯГ_Заявки.Скидка3 КАК Скидка3,
    |    ЯГ_Заявки.ПлановыйОбъемКоличество КАК ПлановыйОбъемКоличество,
    |    ЯГ_Заявки.ПлановыйОбъемСтоимость КАК ПлановыйОбъемСтоимость,
    |    ЯГ_Заявки.КоличествоТорговыхТочекСПромо КАК КоличествоТорговыхТочекСПромо,
    |    ЯГ_Заявки.ПериодОтгрузокС КАК ПериодОтгрузокС,
    |    ЯГ_Заявки.ПериодОтгрузокПо КАК ПериодОтгрузокПо,
    |    ЯГ_Заявки.ПечатьВКаталоге КАК ПечатьВКаталоге,
    |    ЯГ_Заявки.РекомендуемаяЦена КАК РекомендуемаяЦена,
    |    ЯГ_Заявки.ВидАкции КАК ВидАкции,
    |    ЯГ_Заявки.РегулярнаяЦена КАК РегулярнаяЦена,
    |    ВЫБОР
    |        КОГДА ОшибкиПриоритета.КлючСтроки ЕСТЬ НЕ NULL 
    |            ТОГДА ""Загружена более приоритетная акция""
    |        КОГДА ЯГ_Заявки.ВидАкции.ДМП = ЛОЖЬ
    |                И ЯГ_Заявки.ВидАкции.Каталог = ЛОЖЬ
    |                И ЯГ_Заявки.РекомендуемаяЦена = 0
    |            ТОГДА ""Не введене акционная цена на полку""
    |        КОГДА ЯГ_Заявки.ГеографияПредставленностиТовара = ЗНАЧЕНИЕ(Перечисление.ГеографияПредставленностиТовара.Да)
    |                И ЯГ_Заявки.ГеографияПроведенияАкции.ФорматГеографииАкции В (ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Филиал), ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Прямые))
    |            ТОГДА ""Поле [Признак расширения] может принимать значение только 'Нет' для Сети МП""
    |        КОГДА ЯГ_Заявки.ПериодОтгрузокС > ДАТАВРЕМЯ(1, 1, 1)
    |                И РАЗНОСТЬДАТ(ЯГ_Заявки.ПериодПроведенияАкцииС, ЯГ_Заявки.ПериодОтгрузокС, ДЕНЬ) < -60
    |            ТОГДА ""Между началом периода отгрузок и периода проведения акции должно быть не более 60 дней""
    |        КОГДА ЯГ_Заявки.ПериодОтгрузокПо > ДАТАВРЕМЯ(1, 1, 1)
    |                И ЯГ_LASTDATE.LASTDATE > ЯГ_Заявки.ПериодОтгрузокПо
    |            ТОГДА ""Период отгрузки заканчивается раньше даты выгрузки отчета""
    |        КОГДА КАнаРЦ.КонтрагентСклада ЕСТЬ НЕ NULL 
    |            ТОГДА ""Поле [Код КА] должен быть одинаковым для связки РЦ-ТП""
    |        КОГДА Ошибки2Вида.КлючСтроки ЕСТЬ НЕ NULL 
    |            ТОГДА ""Задвойка по ТП-Формат-География-ВидАкции""
    |        КОГДА ЯГ_Заявки.СтатусСогласованияСДЗ <> ЗНАЧЕНИЕ(Перечисление.СтатусыСтрокЗаявокПоставщика.Согласовано)
    |                И (ЯГ_Заявки.Инаут = ""Да""
    |                    ИЛИ ЯГ_Заявки.Инаут = ИСТИНА)
    |            ТОГДА ""Не согласованный Инаут/Расширение""
    |        КОГДА ЯГ_Заявки.ГеографияПредставленностиТовара = ЗНАЧЕНИЕ(Перечисление.ГеографияПредставленностиТовара.Целевая)
    |                И ЯГ_Заявки.Матрица ЕСТЬ NULL
    |            ТОГДА ""Некорректно внесена целевая география""
    |        ИНАЧЕ """"
    |    КОНЕЦ КАК error_name
    |ПОМЕСТИТЬ ЯГ_ОшибкиСтроки
    |ИЗ
    |    ЯГ_Заявки КАК ЯГ_Заявки
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_LASTDATE КАК ЯГ_LASTDATE
    |        ПО (1 = 1)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_Ошибки2КАнаРЦ КАК КАнаРЦ
    |        ПО (КАнаРЦ.ПериодПроведенияАкцииС = ЯГ_Заявки.ПериодПроведенияАкцииС)
    |            И (КАнаРЦ.ПериодПроведенияАкцииПо = ЯГ_Заявки.ПериодПроведенияАкцииПо)
    |            И (КАнаРЦ.ГеографияПроведенияАкции = ЯГ_Заявки.ГеографияПроведенияАкции)
    |            И (КАнаРЦ.Номенклатура = ЯГ_Заявки.Номенклатура)
    |            И (КАнаРЦ.КонтрагентСклада > 1)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_Ошибки2Вида КАК Ошибки2Вида
    |        ПО (Ошибки2Вида.КлючСтроки = ЯГ_Заявки.КлючСтроки)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ЯГ_ОшибкиПриоритета КАК ОшибкиПриоритета
    |        ПО (ОшибкиПриоритета.КлючСтроки = ЯГ_Заявки.КлючСтроки)
    |ГДЕ
    |    ВЫБОР
    |            КОГДА ОшибкиПриоритета.КлючСтроки ЕСТЬ НЕ NULL 
    |                ТОГДА ""Загружена более приоритетная акция""
    |            КОГДА ЯГ_Заявки.ВидАкции.ДМП = ЛОЖЬ
    |                    И ЯГ_Заявки.ВидАкции.Каталог = ЛОЖЬ
    |                    И ЯГ_Заявки.РекомендуемаяЦена = 0
    |                ТОГДА ""Не введене акционная цена на полку""
    |            КОГДА ЯГ_Заявки.ГеографияПредставленностиТовара = ЗНАЧЕНИЕ(Перечисление.ГеографияПредставленностиТовара.Да)
    |                    И ЯГ_Заявки.ГеографияПроведенияАкции.ФорматГеографииАкции В (ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Филиал), ЗНАЧЕНИЕ(Перечисление.ФорматГеографииАкции.Прямые))
    |                ТОГДА ""Поле [Признак расширения] может принимать значение только 'Нет' для Сети МП""
    |            КОГДА ЯГ_Заявки.ПериодОтгрузокС > ДАТАВРЕМЯ(1, 1, 1)
    |                    И РАЗНОСТЬДАТ(ЯГ_Заявки.ПериодПроведенияАкцииС, ЯГ_Заявки.ПериодОтгрузокС, ДЕНЬ) < -60
    |                ТОГДА ""Между началом периода отгрузок и периода проведения акции должно быть не более 60 дней""
    |            КОГДА ЯГ_Заявки.ПериодОтгрузокПо > ДАТАВРЕМЯ(1, 1, 1)
    |                    И ЯГ_LASTDATE.LASTDATE > ЯГ_Заявки.ПериодОтгрузокПо
    |                ТОГДА ""Период отгрузки заканчивается раньше даты выгрузки отчета""
    |            КОГДА КАнаРЦ.КонтрагентСклада ЕСТЬ НЕ NULL 
    |                ТОГДА ""Поле [Код КА] должен быть одинаковым для связки РЦ-ТП""
    |            КОГДА Ошибки2Вида.КлючСтроки ЕСТЬ НЕ NULL 
    |                ТОГДА ""Задвойка по ТП-Формат-География-ВидАкции""
    |            КОГДА ЯГ_Заявки.СтатусСогласованияСДЗ <> ЗНАЧЕНИЕ(Перечисление.СтатусыСтрокЗаявокПоставщика.Согласовано)
    |                    И (ЯГ_Заявки.Инаут = ""Да""
    |                        ИЛИ ЯГ_Заявки.Инаут = ИСТИНА)
    |                ТОГДА ""Не согласованный Инаут/Расширение""
    |            ИНАЧЕ """"
    |        КОНЕЦ <> """"
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ЯГ_Заявки.ПериодПроведенияАкцииС КАК ПериодПроведенияАкцииС,
    |    ЯГ_Заявки.ПериодПроведенияАкцииПо КАК ПериодПроведенияАкцииПо,
    |    ЯГ_Заявки.КлючСтроки КАК КлючСтроки,
    |    ЯГ_Заявки.Ссылка КАК Ссылка,
    |    ЯГ_Заявки.ВидАкции КАК ВидАкции,
    |    ЯГ_Заявки.Формат КАК Формат,
    |    ЯГ_Заявки.ГеографияПроведенияАкции КАК ГеографияПроведенияАкции,
    |    ЯГ_Заявки.КонтрагентСклада КАК КонтрагентСклада,
    |    ЯГ_Заявки.Номенклатура КАК Номенклатура,
    |    ЯГ_Заявки.ГеографияПредставленностиТовара КАК ГеографияПредставленностиТовара,
    |    ЯГ_Заявки.Кластер КАК Кластер,
    |    ЯГ_Заявки.ПериодОтгрузокС КАК ПериодОтгрузокС,
    |    ЯГ_Заявки.ПериодОтгрузокПо КАК ПериодОтгрузокПо,
    |    ЯГ_Заявки.РегулярнаяЦена КАК РегулярнаяЦена,
    |    ЯГ_Заявки.РекомендуемаяЦена КАК РекомендуемаяЦена,
    |    ЯГ_Заявки.НоменклатураЕдиницаИзмеренияМинимальнойПартииТовара КАК НоменклатураЕдиницаИзмеренияМинимальнойПартииТовара,
    |    ЯГ_Заявки.Скидка3 КАК Скидка3,
    |    ЯГ_Заявки.ПлановыйОбъемКоличество КАК ПлановыйОбъемКоличество,
    |    ЯГ_Заявки.ПлановыйОбъемСтоимость КАК ПлановыйОбъемСтоимость,
    |    ЯГ_Заявки.КоличествоТорговыхТочекСПромо КАК КоличествоТорговыхТочекСПромо,
    |    ЯГ_Заявки.ТипАкции КАК ТипАкции,
    |    ЯГ_Заявки.ПечатьВКаталоге КАК ПечатьВКаталоге,
    |    ЯГ_Заявки.Инаут КАК Инаут,
    |    ЯГ_Заявки.СкидкаВСчетеВНакладной КАК СкидкаВСчетеВНакладной,
    |    ЯГ_Заявки.СкидкаЗаСчетомПоИтогамЗакупок КАК СкидкаЗаСчетомПоИтогамЗакупок,
    |    ЯГ_Заявки.ВходнаяЦенаСУчётом
   Sasha_H
 
19 - 20.02.20 - 19:53
мать моя женщина ))) я в о...уе
   Varyag712
 
20 - 20.02.20 - 19:54
код не поместился, ладно, забейте)
   Varyag712
 
21 - 20.02.20 - 19:56
Таб = Новый ТаблицаЗначений;
// формирование таблицы значен


// ...
Формирование таблицы из результата запроса, тоже циклом ... ?

Нельзя так ? 
    Выборка = Запрос.Выполнить().Выбрать();
    ДатаЦикла1 = ТекущаяДата();
        
            НаборЗапись = РегистрыСведений.СтрокиНаОтправкуВСУМА.СоздатьНаборЗаписей();
            НаборЗапись.Загрузить(Выборка) ;
   VS-1976
 
22 - 20.02.20 - 20:00
(14) а кто говорит про отключение перед выборкой и кто говорит что инсерты через набор записей, средствами 1с, а не дао к примеру
   VS-1976
 
23 - 20.02.20 - 20:02
(22) или адо
   Сисой
 
24 - 20.02.20 - 20:09
Записывать порциями через набор записей в привелегированном режиме, открывая и закрывая транзакции (можно даже параллельно по непересекающимся измерениям).
   vde69
 
25 - 20.02.20 - 20:10
(0)

у тебя есть 2 проблемы
1. не хватка памяти для такой большой записи
2. слишком долгая транзакция

вообще подобные задачи в 1с решаются регламентыми заданиями (например такое есть в документообороте), там сервер относительно не большими порциями долбит не останавливаясь на перекуры...

ну или думай как изменить структуру хранения данных, что-бы было проще, например можно в справочник добавить поле "приоритет" и не делать бешеный кейс по названию а сразу получить готовое поле....
   Сисой
 
26 - 20.02.20 - 20:12
(+24) И проверить, что регистр не входит в планы обмена. Иначе труба.
   rsv
 
27 - 20.02.20 - 21:12
(0) да никак .... нет там DMl. Максимум  набор.загрузить( запрос.выполнить.выгрузить) и...ждать
   rsv
 
28 - 20.02.20 - 21:16
(0) Если это регистр сведений - проинсертите скулем и забудьте
   Ёпрст
 
29 - 20.02.20 - 23:03
(18)  Чем провинились вот эти товарищи:

""Горовой Ярослав Юрьевич"", ""Воеводин Егор Андреевич"", ""Савицкая Екатерина Юрьевна"", ""Мощенко Антон Сергеевич"", ""Тарасов Александр Владимирович"", ""Смирнова Евгения Станиславовна"", ""Лавренко Кристина Сергеевна"", ""Широкова Яна Рифатовна"", ""Логинов Денис Александрович"", ""Васюк Ксения Петровна"", ""Горохов Станислав Николаевич"", ""Бирюкова Александра Александровна"")


Что вы их в текст запроса запихали ?
   Ёпрст
 
30 - 20.02.20 - 23:04
Они ведь и огорчится могут
 
 
   palsergeich
 
31 - 20.02.20 - 23:21
(29) Назначение на должность финализируется заключением в анналы кода!
Идеально я щитаю
   palsergeich
 
32 - 20.02.20 - 23:23
Данный образец достоен внесения в палату мер и весов
   palsergeich
 
33 - 20.02.20 - 23:27
Бл% запрос в (18) просто идеален.
Надо его сохранить, распечатать, и давать на собеседованиях как вопрос найдите что тут не так.
Кто найдет все ошибки - я тому уступлю свое место.
Я 10 минут его читал и постоянно что то новое находил.
   xXeNoNx
 
34 - 20.02.20 - 23:31
(0) фу мля..

А разработчик этой хероборы кто?
Аналитику учета, например, по номенклатуре придумали неудачники
   palsergeich
 
35 - 20.02.20 - 23:35
По 0 надо писать менеджер очереди или отучить типовой от работы в модели сервиса.
В принципе если все сделать нормально то запишется за пару минут
Но ИМХО проще bulk insert прям в скуль сделать
   xXeNoNx
 
36 - 20.02.20 - 23:42
Ниасилил (18)
   catena
 
37 - 21.02.20 - 07:26
(33)А это не шутка, я так делаю :) У меня есть несколько эталонных кусков кода, которые я прошу прочекать на собеседованиях
   VladZ
 
38 - 21.02.20 - 08:04
(18) узнаю этот стиль. Называется "Чукотская песня".
   Varyag712
 
39 - 21.02.20 - 09:11
Да, есть много неоптимального, так как не могу создавать/изменять  метаданные!
Но с запросом проблем не, он отрабатывает за пару минут , а потом циклом записывать результат, 300-400 тыс в час - для меня это медленно !!!
Потом будет еще ряд манипуляций
1. Нужно сохранить у меня нумерацию строк, которые появляются запросом и завтра будут другие данные и другая нумерация.
Нумерация мне нужна, чтобы потом из внешней системы запросить результат по номерам.
2. Нагеренить insert-ы во внешнюю БД
3. Запустить процедуру 
4. Забрать номер задания
через сутки забрать результат обработки по каждому номеру п.1

Еще раз, прошу, не обращайте внимание на запрос, его скорость и потребление ресурсов устраивает, оставил только последнюю таблицу.
Передача во вне по скорости тоже устраивает, сейчас проблема, которую надо мне решить это загрузка в регистр 6 млн строк. Остальное буду допиливать в экспуатации

&НаСервере
Процедура ЗагрузитьВСУМАНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    &ТекущаяДата КАК Период,
    |    АВТОНОМЕРЗАПИСИ() КАК rowId,
    |    ЯГ_ВсеГеографии.svemaMcId КАК svemaMcId,
    |    ЯГ_ВсеГеографии.mcType КАК mcType,
    |    ЯГ_ВсеГеографии.skuCode КАК skuCode,
    |    ЯГ_ВсеГеографии.cntrCode КАК cntrCode,
    |    ЯГ_ВсеГеографии.dcCode КАК dcCode,
    |    ЯГ_ВсеГеографии.dcTransitCode КАК dcTransitCode,
    |    ЯГ_ВсеГеографии.dcTypeName КАК dcTypeName,
    |    ЯГ_ВсеГеографии.mcGeography КАК mcGeography,
    |    ЯГ_ВсеГеографии.isExpansion КАК isExpansion,
    |    ЯГ_ВсеГеографии.branchName КАК branchName,
    |    ЯГ_ВсеГеографии.regionName КАК regionName,
    |    ЯГ_ВсеГеографии.skuClusterId КАК skuClusterId,
    |    ЯГ_ВсеГеографии.echelonId КАК echelonId,
    |    ЯГ_ВсеГеографии.frmtName КАК frmtName,
    |    ЯГ_ВсеГеографии.subFrmtName КАК subFrmtName,
    |    ЯГ_ВсеГеографии.spCode КАК spCode,
    |    ЯГ_ВсеГеографии.discountBeginDt КАК discountBeginDt,
    |    ЯГ_ВсеГеографии.discountEndDt КАК discountEndDt,
    |    ЯГ_ВсеГеографии.beginDt КАК beginDt,
    |    ЯГ_ВсеГеографии.endDt КАК endDt,
    |    ЯГ_ВсеГеографии.skuAnalogCode КАК skuAnalogCode,
    |    ЯГ_ВсеГеографии.classificationCode КАК classificationCode,
    |    ЯГ_ВсеГеографии.regularPriceRub КАК regularPriceRub,
    |    ЯГ_ВсеГеографии.actionPriceRub КАК actionPriceRub,
    |    ЯГ_ВсеГеографии.multiplicityPcs КАК multiplicityPcs,
    |    ЯГ_ВсеГеографии.maxOrderPcs КАК maxOrderPcs,
    |    ЯГ_ВсеГеографии.minPartPcs КАК minPartPcs,
    |    ЯГ_ВсеГеографии.totalDiscountPerc КАК totalDiscountPerc,
    |    ЯГ_ВсеГеографии.planVolumePcs КАК planVolumePcs,
    |    ЯГ_ВсеГеографии.planVolumeRub КАК planVolumeRub,
    |    ЯГ_ВсеГеографии.planSpCnt КАК planSpCnt,
    |    ЯГ_ВсеГеографии.purchaseCnt КАК purchaseCnt,
    |    ЯГ_ВсеГеографии.giftCnt КАК giftCnt,
    |    ЯГ_ВсеГеографии.isBooklet КАК isBooklet,
    |    ЯГ_ВсеГеографии.isShipmentRequired КАК isShipmentRequired,
    |    ЯГ_ВсеГеографии.Пользователь КАК Пользователь,
    |    ЯГ_ВсеГеографии.registerId КАК registerId
    |ПОМЕСТИТЬ ЯГ_результат
    |ИЗ
    |    ЯГ_ВсеГеографии КАК ЯГ_ВсеГеографии; выбрать * ИЗ ЯГ_результат";

    //куски кода , которые изменяются от выбора параметров на форме

    Если ЭтаФорма.Точный = Истина Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) >= &Дата1","");
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодПо, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииПо) <= &Дата2","");
    Иначе
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) = &Дата1","");
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодПо, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииПо) = &Дата2","");
    КонецЕсли;

    Если ЭтаФорма.ЦеновоеПромо = Истина Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
    ИначеЕсли ЭтаФорма.НеценовоеПромо = Истина Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И НЕ ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
    Иначе
            Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
            Запрос.Текст = СтрЗаменить(Запрос.Текст,"И НЕ ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
        КонецЕсли;
        
    Если ЭтаФорма.КороткаяСхема = Ложь Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5","И НЕ ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5");
    КонецЕсли;

    Если ЭтаФорма.ДозаливкаКлючей = Ложь Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"внутреннее соединение РегистрСведений.ВыгруженныеСтрокиВСУМА КАК СтатусыСУМА","");
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"По ЗаявкаПоставщикаСодержание.КлючСтроки = СтатусыСУМА.КлючСтроки","");
    КонецЕсли;
    
    УдалитьФормат = ЭтаФорма.Формат.Количество();
    УдалитьЗаявка = ЭтаФорма.НомераЗаявок.Количество();
    УдалитьТП = ЭтаФорма.НаборПозиций.Количество();
    УдалитьВидАкции = ЭтаФорма.ВидАкции.Количество();
    УдалитьКС = ЭтаФорма.КороткаяСхема;
    УдалитьКлючи = ЭтаФорма.ПоКлючам;
    
    Если УдалитьФормат = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.Формат В(&Формат)","");
    КонецЕсли;
    Если УдалитьЗаявка = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.Ссылка В(&АкцияСсылка)","");
    КонецЕсли;
    Если УдалитьТП = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.Номенклатура В(&Номенклатура)","");
    КонецЕсли;
    Если УдалитьВидАкции = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ВидАкции В(&ВидАкции)","");
    КонецЕсли;
    
    Если УдалитьКС = Ложь Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ГеографияПроведенияАкции.Наименование = ""Прямые""","");
    КонецЕсли;
    
    Если УдалитьКлючи = Ложь Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.КлючСтроки В(&КлючСтроки)","");
    КонецЕсли;
    
    Если ЭтаФорма.КороткаяСхема = Ложь Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5","И НЕ ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5");
    КонецЕсли;

    
    Запрос.УстановитьПараметр("Дата1", ЭтаФорма.ПериодАкцииС);
    Запрос.УстановитьПараметр("Дата2", ЭтаФорма.ПериодАкцииПо);
    Запрос.УстановитьПараметр("Формат", ЭтаФорма.Формат);
    Запрос.УстановитьПараметр("АкцияСсылка", ЭтаФорма.НомераЗаявок);
    Запрос.УстановитьПараметр("Номенклатура", ЭтаФорма.НаборПозиций);
    Запрос.УстановитьПараметр("ВидАкции", ЭтаФорма.ВидАкции);
    Запрос.УстановитьПараметр("КлючСтроки", ЭтаФорма.КлючиСтрок);
    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
    
    ДатаЗапроса = ТекущаяДата();
    
    Выборка = Запрос.Выполнить().Выбрать();
    ДатаЦикла1 = ТекущаяДата();
    Пока Выборка.Следующий() Цикл
        
            НаборЗапись = РегистрыСведений.СтрокиНаОтправкуВСУМА.СоздатьМенеджерЗаписи();
            НаборЗапись.Период = Выборка.Период;
            НаборЗапись.rowId = Выборка.rowId;
            НаборЗапись.svemaMcId = Выборка.svemaMcId;
            НаборЗапись.mcType = Выборка.mcType;
            НаборЗапись.skuCode = Выборка.skuCode;
            НаборЗапись.cntrCode = Выборка.cntrCode;
            НаборЗапись.dcCode = Выборка.dcCode;
            НаборЗапись.dcTransitCode = Выборка.dcTransitCode;
            НаборЗапись.dcTypeName = Выборка.dcTypeName;
            НаборЗапись.mcGeography = Выборка.mcGeography;
            НаборЗапись.isExpansion = Выборка.isExpansion;
            НаборЗапись.branchName = Выборка.branchName;
            НаборЗапись.regionName = Выборка.regionName;
            НаборЗапись.skuClusterId = Выборка.skuClusterId;
            НаборЗапись.echelonId = Выборка.echelonId;
            НаборЗапись.frmtName = Выборка.frmtName;
            НаборЗапись.subFrmtName = Выборка.subFrmtName;
            НаборЗапись.spCode = Выборка.spCode;
            НаборЗапись.discountBeginDt = Выборка.discountBeginDt;
            НаборЗапись.discountEndDt = Выборка.discountEndDt;
            НаборЗапись.beginDt = Выборка.beginDt;
            НаборЗапись.endDt = Выборка.endDt;
            НаборЗапись.skuAnalogCode = Выборка.skuAnalogCode;
            НаборЗапись.classificationCode = Выборка.classificationCode;
            НаборЗапись.regularPriceRub = Выборка.regularPriceRub;
            НаборЗапись.actionPriceRub = Выборка.actionPriceRub;
            НаборЗапись.multiplicityPcs = Выборка.multiplicityPcs;
            НаборЗапись.maxOrderPcs = Выборка.maxOrderPcs;
            НаборЗапись.minPartPcs = Выборка.minPartPcs;
            НаборЗапись.totalDiscountPerc = Выборка.totalDiscountPerc;
            НаборЗапись.planVolumePcs = Выборка.planVolumePcs;
            НаборЗапись.planVolumeRub = Выборка.planVolumeRub;
            НаборЗапись.planSpCnt = Выборка.planSpCnt;
            НаборЗапись.purchaseCnt = Выборка.purchaseCnt;
            НаборЗапись.giftCnt = Выборка.giftCnt;
            НаборЗапись.isBooklet = Выборка.isBooklet;
            НаборЗапись.isShipmentRequired = Выборка.isShipmentRequired;
            НаборЗапись.Пользователь = Пользователи.ТекущийПользователь();
            
            НаборЗапись.Записать(Истина);
        КонецЦикла;
        ДатаЦикла2 = ТекущаяДата();
            
    //Сообщить("Готово " + Символы.ПС + "Старт запроса: " + ДатаЗапроса + Символы.ПС + "Старт Цикла: " + ДатаЦикла1 + Символы.ПС + "Конец цикла:"  + ДатаЦикла2);

    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ * ИЗ СтрокиНаОтправкуВСУМА";

    Выборка = Запрос.Выполнить().Выбрать();
    
    Connection  = Новый COMОбъект("ADODB.Connection");
    Command  = Новый COMОбъект("ADODB.Command");
    RecordSet  = Новый COMОбъект("ADODB.RecordSet");
    Connection.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=AZRC; Persist Security Info=True;";
    
    Connection.CommandTimeout = 0;
    Command.CommandTimeout = 0;
    Connection.Open();
    Command.ActiveConnection   = Connection;
    CommandText = "";
    
        Command.CommandText = "exec TEMP.svema.prcMarketCampaignTemplate;";
        Command.Execute();
        Command.CommandText = "";

        ДатаЗаливки = ТекущаяДата();
        СтрокаЗапроса="";
        Строка = 1;
        
        isexecuted = False;
        
        Пока Выборка.Следующий() Цикл
        
            СтараяЗапись = РегистрыСведений.ВходныеЦеныАкций.СоздатьНаборЗаписей();
            СтараяЗапись.Отбор.КлючСтроки.Установить(Выборка.svemaMcId);
            СтараяЗапись.Отбор.ГеографияЦены.Установить(Справочники.МестаХранения.НайтиПоКоду(Выборка.dcCode));
            СтараяЗапись.Записать();
            
            НоваяЗапись = РегистрыСведений.ВходныеЦеныАкций.СоздатьМенеджерЗаписи();
            НоваяЗапись.КлючСтроки = Выборка.svemaMcId;
            НоваяЗапись.ГеографияЦены = Справочники.МестаХранения.НайтиПоКоду(Выборка.dcCode);
            НоваяЗапись.ВходнаяЦена = Строка;
            НоваяЗапись.ДатаПоследнегоРасчета = ДатаЗаливки;
            
            НоваяЗапись.Записать(Ложь);
        
        Филиал = "";
    Если Выборка.branchName = "" Тогда Филиал = " null, " Иначе Филиал = " '" + Выборка.branchName + "', " 
    КонецЕсли;
    
        РЦ = "";
    Если Выборка.dcCode = "" Тогда РЦ = " null, " Иначе РЦ = " '" + Выборка.dcCode + "', " 
    КонецЕсли;
    
        ТТ = "";
    Если Выборка.spCode = "" Тогда ТТ = " null, " Иначе ТТ = " '" + Выборка.spCode + "', " 
    КонецЕсли;
            
        ДатаСкидкиС = "";
    Если Выборка.discountBeginDt = "" Тогда ДатаСкидкиС = " null, " Иначе ДатаСкидкиС = " '" + Формат(Выборка.discountBeginDt,"ДФ=""гггг-ММ-дд""") + "', "
    КонецЕсли;

        ДатаСкидкиПо = "";
    Если Выборка.discountEndDt = "" Тогда ДатаСкидкиПо = " null, " Иначе ДатаСкидкиПо = " '" + Формат(Выборка.discountEndDt,"ДФ=""гггг-ММ-дд""") + "', " 
    КонецЕсли;
    
        Расширение = "" ;
    Если Выборка.isExpansion = "" ИЛИ  Выборка.isExpansion = "Нет" ИЛИ  Выборка.isExpansion = Перечисления.ГеографияПредставленностиТовара.Нет ИЛИ Выборка.isExpansion = null Тогда Расширение = "0," Иначе Расширение = "1," 
    КонецЕсли;
    
        ОбщаяСкидка = "" ;
    Если Выборка.totalDiscountPerc = "" ИЛИ Выборка.totalDiscountPerc = null ИЛИ Выборка.totalDiscountPerc = 0 Тогда ОбщаяСкидка = "0," Иначе ОбщаяСкидка = " " + СтрЗаменить(Формат(Выборка.totalDiscountPerc, "ЧДЦ=2; ЧГ=0"),",",".") + ", "
    КонецЕсли;
    
        ОбъемШт = ""      ;
    Если Выборка.planVolumePcs = "" ИЛИ Выборка.planVolumePcs = null ИЛИ Выборка.planVolumePcs = 0 Тогда ОбъемШт = "0," Иначе ОбъемШт = " " + СтрЗаменить(Формат(Выборка.planVolumePcs, "ЧДЦ=2; ЧГ=0"),",",".") + ", "
    КонецЕсли;
    
        ОбъемРуб = ""      ;
    Если Выборка.planVolumeRub = "" ИЛИ Выборка.planVolumeRub = null ИЛИ Выборка.planVolumeRub = 0 Тогда ОбъемРуб = "0," Иначе ОбъемРуб = "0,"//+ СтрЗаменить(Формат(Выборка.planVolumeRub, "ЧДЦ=2; ЧГ=0"),",",".") + ", "

    КонецЕсли;
        
        КолВоТТ = "";
    Если Выборка.planSpCnt = "" ИЛИ Выборка.planSpCnt = null ИЛИ Выборка.planSpCnt = 0 Тогда КолВоТТ = "0," Иначе КолВоТТ = " " + СтрЗаменить(Формат(Выборка.planSpCnt, "ЧДЦ=2; ЧГ=0"),",",".") + ", "
    КонецЕсли;

        ВКаталог = "";
    Если Выборка.isBooklet = "" ИЛИ  Выборка.isBooklet = "Нет" ИЛИ Выборка.isBooklet = null Тогда ВКаталог = "0," Иначе ВКаталог = "1," 
    КонецЕсли;
    
        ТипВыборки = "";
    Если Выборка.isShipmentRequired = "" ИЛИ  Выборка.isShipmentRequired = "Нет" ИЛИ Выборка.isShipmentRequired = null Тогда ТипВыборки = "0" Иначе ТипВыборки = "1" 
    КонецЕсли;
    
        АкцЦена = "";
    Если Выборка.actionPriceRub = "" ИЛИ Выборка.actionPriceRub = null ИЛИ Выборка.actionPriceRub = 0 Тогда АкцЦена = "0," Иначе АкцЦена = " " + СтрЗаменить(Формат(Выборка.actionPriceRub, "ЧДЦ=2; ЧГ=0"),",",".") + ", "
    КонецЕсли;
    
        РегЦена = "";
    Если Выборка.regularPriceRub = "" ИЛИ Выборка.regularPriceRub = null ИЛИ Выборка.regularPriceRub = 0 Тогда РегЦена = "0," Иначе РегЦена = " " + СтрЗаменить(Формат(Выборка.regularPriceRub, "ЧДЦ=2; ЧГ=0"),",",".") + ", "
    КонецЕсли;
    

        СтрокаЗапроса = " " + Формат(Строка, "ЧДЦ=0; ЧГ=0") + ", "+
        " '" + Выборка.svemaMcId + "', "+
        " '" + Выборка.classificationCode + "', "+
        " '" + Выборка.skuCode + "', "+
        " '" + Выборка.cntrCode + "', "+
            РЦ  +
                " null, "+//dcTransitCode

                " null, "+//dcTypeName

        " '" + Выборка.mcGeography + "', "+
            Расширение +
            Филиал  +
                " null, "+//regionName

        " " + Выборка.skuClusterId + ", "+
                " null, "+// echelonId

        " '" + Выборка.frmtName + "', "+
                " null, "+//subFrmtName

            ТТ  +
            ДатаСкидкиС +
            ДатаСкидкиПо +
        " '" + Формат(Выборка.beginDt,"ДФ=""гггг-ММ-дд""") + "', "+
        " '" + Формат(Выборка.endDt,"ДФ=""гггг-ММ-дд""") + "', "+
                " null, "+//skuAnalogCode

        " '" + Выборка.mcType + "', "+
            РегЦена +
            АкцЦена + 
        " '" + СтрЗаменить(Формат(Выборка.multiplicityPcs, "ЧДЦ=2; ЧГ=0"),",",".") + "', "+
                " null, "//maxOrderPcs

        " " + СтрЗаменить(Формат(Выборка.minPartPcs, "ЧДЦ=2; ЧГ=0"),",",".") + ", "+
            ОбщаяСкидка +
            ОбъемШт +
            ОбъемРуб +
            КолВоТТ +
                " null, "//purchaseCnt

                " null, "//giftCnt

            ВКаталог +
            ТипВыборки + ",null";

            Command.CommandText = Command.CommandText + "insert into temp.[svema].[tMarketCampaignTemplate] values(" + СтрокаЗапроса + ");";

            isexecuted = False;
            Если 
                СтрДлина(Command.CommandText) >= 250000 Тогда
                Command.Execute();
                Command.CommandText = "";
                isexecuted = True;
            КонецЕсли;
        
            Строка = Строка + 1;
        КонецЦикла ;

    Если Не isexecuted Then 
        Command.Execute();
        isexecuted = True;
    КонецЕсли;

    
        Command.CommandType = 1;
        RecordSet.Open("DECLARE @registerId int; EXEC @registerId = MASM.masm.prcMarketCampaignTemplate; select @registerId as registerId;",Connection);
        
        Пока не RecordSet.EOF Цикл
            
            НоваяЗапись = РегистрыСведений.ПотокиИнтеграции.СоздатьМенеджерЗаписи();
            НоваяЗапись.Период = ДатаЗаливки;
            НоваяЗапись.ПравилоИнтеграции = Справочники.ПравилаИнтеграции.НайтиПоНаименованию("Загрузка из СУМА");
            НоваяЗапись.КоличествоЗагруженныхСтрок = СтрЗаменить(Формат(RecordSet.fields("registerId").Value, "ЧДЦ=0; ЧГ=0"),",",".");
            НоваяЗапись.Записать(Ложь);
            
            //RecordSet.Open("SELECT * FROM MASM.source.vMarketCampaignTemplateValidationResult WHERE registerId = " + RecordSet.fields("registerId").Value,Connection);

            //RecordSet.Open("SELECT * FROM MASM.source.vMarketCampaignTemplateExpandResult WHERE registerId = " + RecordSet.fields("registerId").Value,Connection);

            
            RecordSet.MoveNext();
        КонецЦикла;
        RecordSet.Close();

    //КонецЦикла;

    
    Connection.Close();
    
    ОтправитьПочтовоеСообщение()
    
КонецПроцедуры
   Varyag712
 
40 - 21.02.20 - 09:20
убрал манипуляции с регистром ВходныеЦеныАкций (старая реалузация)
еще раз, все устраивает и запрос, и выгрузка во вне, как ускорить запись результата запроса в 6 млн в регистр


&НаСервере
Процедура ЗагрузитьВСУМАНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    &ТекущаяДата КАК Период,
    |    АВТОНОМЕРЗАПИСИ() КАК rowId,
    |    ЯГ_ВсеГеографии.svemaMcId КАК svemaMcId,
    |    ЯГ_ВсеГеографии.mcType КАК mcType,
    |    ЯГ_ВсеГеографии.skuCode КАК skuCode,
    |    ЯГ_ВсеГеографии.cntrCode КАК cntrCode,
    |    ЯГ_ВсеГеографии.dcCode КАК dcCode,
    |    ЯГ_ВсеГеографии.dcTransitCode КАК dcTransitCode,
    |    ЯГ_ВсеГеографии.dcTypeName КАК dcTypeName,
    |    ЯГ_ВсеГеографии.mcGeography КАК mcGeography,
    |    ЯГ_ВсеГеографии.isExpansion КАК isExpansion,
    |    ЯГ_ВсеГеографии.branchName КАК branchName,
    |    ЯГ_ВсеГеографии.regionName КАК regionName,
    |    ЯГ_ВсеГеографии.skuClusterId КАК skuClusterId,
    |    ЯГ_ВсеГеографии.echelonId КАК echelonId,
    |    ЯГ_ВсеГеографии.frmtName КАК frmtName,
    |    ЯГ_ВсеГеографии.subFrmtName КАК subFrmtName,
    |    ЯГ_ВсеГеографии.spCode КАК spCode,
    |    ЯГ_ВсеГеографии.discountBeginDt КАК discountBeginDt,
    |    ЯГ_ВсеГеографии.discountEndDt КАК discountEndDt,
    |    ЯГ_ВсеГеографии.beginDt КАК beginDt,
    |    ЯГ_ВсеГеографии.endDt КАК endDt,
    |    ЯГ_ВсеГеографии.skuAnalogCode КАК skuAnalogCode,
    |    ЯГ_ВсеГеографии.classificationCode КАК classificationCode,
    |    ЯГ_ВсеГеографии.regularPriceRub КАК regularPriceRub,
    |    ЯГ_ВсеГеографии.actionPriceRub КАК actionPriceRub,
    |    ЯГ_ВсеГеографии.multiplicityPcs КАК multiplicityPcs,
    |    ЯГ_ВсеГеографии.maxOrderPcs КАК maxOrderPcs,
    |    ЯГ_ВсеГеографии.minPartPcs КАК minPartPcs,
    |    ЯГ_ВсеГеографии.totalDiscountPerc КАК totalDiscountPerc,
    |    ЯГ_ВсеГеографии.planVolumePcs КАК planVolumePcs,
    |    ЯГ_ВсеГеографии.planVolumeRub КАК planVolumeRub,
    |    ЯГ_ВсеГеографии.planSpCnt КАК planSpCnt,
    |    ЯГ_ВсеГеографии.purchaseCnt КАК purchaseCnt,
    |    ЯГ_ВсеГеографии.giftCnt КАК giftCnt,
    |    ЯГ_ВсеГеографии.isBooklet КАК isBooklet,
    |    ЯГ_ВсеГеографии.isShipmentRequired КАК isShipmentRequired,
    |    ЯГ_ВсеГеографии.Пользователь КАК Пользователь,
    |    ЯГ_ВсеГеографии.registerId КАК registerId
    |ПОМЕСТИТЬ ЯГ_результат
    |ИЗ
    |    ЯГ_ВсеГеографии КАК ЯГ_ВсеГеографии; выбрать * ИЗ ЯГ_результат";

    //куски кода , которые изменяются от выбора параметров на форме

    Если ЭтаФорма.Точный = Истина Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) >= &Дата1","");
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодПо, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииПо) <= &Дата2","");
    Иначе
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодС, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииС) = &Дата1","");
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЕСТЬNULL(ДлительностьАкций.РоднойПериодПо, ЗаявкаПоставщикаСодержание.ПериодПроведенияАкцииПо) = &Дата2","");
    КонецЕсли;

    Если ЭтаФорма.ЦеновоеПромо = Истина Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
    ИначеЕсли ЭтаФорма.НеценовоеПромо = Истина Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И НЕ ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
    Иначе
            Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
            Запрос.Текст = СтрЗаменить(Запрос.Текст,"И НЕ ЗаявкаПоставщикаСодержание.ВидАкции.ВидМаркетинговойАкции = ЗНАЧЕНИЕ(Перечисление.ВидыМаркетинговыхАкций.Прочее)","");
        КонецЕсли;
        
    Если ЭтаФорма.КороткаяСхема = Ложь Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5","И НЕ ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5");
    КонецЕсли;

    Если ЭтаФорма.ДозаливкаКлючей = Ложь Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"внутреннее соединение РегистрСведений.ВыгруженныеСтрокиВСУМА КАК СтатусыСУМА","");
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"По ЗаявкаПоставщикаСодержание.КлючСтроки = СтатусыСУМА.КлючСтроки","");
    КонецЕсли;
    
    УдалитьФормат = ЭтаФорма.Формат.Количество();
    УдалитьЗаявка = ЭтаФорма.НомераЗаявок.Количество();
    УдалитьТП = ЭтаФорма.НаборПозиций.Количество();
    УдалитьВидАкции = ЭтаФорма.ВидАкции.Количество();
    УдалитьКС = ЭтаФорма.КороткаяСхема;
    УдалитьКлючи = ЭтаФорма.ПоКлючам;
    
    Если УдалитьФормат = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.Формат В(&Формат)","");
    КонецЕсли;
    Если УдалитьЗаявка = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.Ссылка В(&АкцияСсылка)","");
    КонецЕсли;
    Если УдалитьТП = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.Номенклатура В(&Номенклатура)","");
    КонецЕсли;
    Если УдалитьВидАкции = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ВидАкции В(&ВидАкции)","");
    КонецЕсли;
    
    Если УдалитьКС = Ложь Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.ГеографияПроведенияАкции.Наименование = ""Прямые""","");
    КонецЕсли;
    
    Если УдалитьКлючи = Ложь Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ЗаявкаПоставщикаСодержание.КлючСтроки В(&КлючСтроки)","");
    КонецЕсли;
    
    Если ЭтаФорма.КороткаяСхема = Ложь Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5","И НЕ ВЫБОР КОГДА ЗаявкаПоставщикаСодержание.Номенклатура.Родитель.УровеньТоварнойГруппы = 5");
    КонецЕсли;

    
    Запрос.УстановитьПараметр("Дата1", ЭтаФорма.ПериодАкцииС);
    Запрос.УстановитьПараметр("Дата2", ЭтаФорма.ПериодАкцииПо);
    Запрос.УстановитьПараметр("Формат", ЭтаФорма.Формат);
    Запрос.УстановитьПараметр("АкцияСсылка", ЭтаФорма.НомераЗаявок);
    Запрос.УстановитьПараметр("Номенклатура", ЭтаФорма.НаборПозиций);
    Запрос.УстановитьПараметр("ВидАкции", ЭтаФорма.ВидАкции);
    Запрос.УстановитьПараметр("КлючСтроки", ЭтаФорма.КлючиСтрок);
    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
    
    ДатаЗапроса = ТекущаяДата();
    
    Выборка = Запрос.Выполнить().Выбрать();
    ДатаЦикла1 = ТекущаяДата();
    Пока Выборка.Следующий() Цикл
        
            НаборЗапись = РегистрыСведений.СтрокиНаОтправкуВСУМА.СоздатьМенеджерЗаписи();
            НаборЗапись.Период = Выборка.Период;
            НаборЗапись.rowId = Выборка.rowId;
            НаборЗапись.svemaMcId = Выборка.svemaMcId;
            НаборЗапись.mcType = Выборка.mcType;
            НаборЗапись.skuCode = Выборка.skuCode;
            НаборЗапись.cntrCode = Выборка.cntrCode;
            НаборЗапись.dcCode = Выборка.dcCode;
            НаборЗапись.dcTransitCode = Выборка.dcTransitCode;
            НаборЗапись.dcTypeName = Выборка.dcTypeName;
            НаборЗапись.mcGeography = Выборка.mcGeography;
            НаборЗапись.isExpansion = Выборка.isExpansion;
            НаборЗапись.branchName = Выборка.branchName;
            НаборЗапись.regionName = Выборка.regionName;
            НаборЗапись.skuClusterId = Выборка.skuClusterId;
            НаборЗапись.echelonId = Выборка.echelonId;
            НаборЗапись.frmtName = Выборка.frmtName;
            НаборЗапись.subFrmtName = Выборка.subFrmtName;
            НаборЗапись.spCode = Выборка.spCode;
            НаборЗапись.discountBeginDt = Выборка.discountBeginDt;
            НаборЗапись.discountEndDt = Выборка.discountEndDt;
            НаборЗапись.beginDt = Выборка.beginDt;
            НаборЗапись.endDt = Выборка.endDt;
            НаборЗапись.skuAnalogCode = Выборка.skuAnalogCode;
            НаборЗапись.classificationCode = Выборка.classificationCode;
            НаборЗапись.regularPriceRub = Выборка.regularPriceRub;
            НаборЗапись.actionPriceRub = Выборка.actionPriceRub;
            НаборЗапись.multiplicityPcs = Выборка.multiplicityPcs;
            НаборЗапись.maxOrderPcs = Выборка.maxOrderPcs;
            НаборЗапись.minPartPcs = Выборка.minPartPcs;
            НаборЗапись.totalDiscountPerc = Выборка.totalDiscountPerc;
            НаборЗапись.planVolumePcs = Выборка.planVolumePcs;
            НаборЗапись.planVolumeRub = Выборка.planVolumeRub;
            НаборЗапись.planSpCnt = Выборка.planSpCnt;
            НаборЗапись.purchaseCnt = Выборка.purchaseCnt;
            НаборЗапись.giftCnt = Выборка.giftCnt;
            НаборЗапись.isBooklet = Выборка.isBooklet;
            НаборЗапись.isShipmentRequired = Выборка.isShipmentRequired;
            НаборЗапись.Пользователь = Пользователи.ТекущийПользователь();
            
            НаборЗапись.Записать(Истина);
        КонецЦикла;
        ДатаЦикла2 = ТекущаяДата();
            
    //Сообщить("Готово " + Символы.ПС + "Старт запроса: " + ДатаЗапроса + Символы.ПС + "Старт Цикла: " + ДатаЦикла1 + Символы.ПС + "Конец цикла:"  + ДатаЦикла2);

    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ * ИЗ СтрокиНаОтправкуВСУМА";

    Выборка = Запрос.Выполнить().Выбрать();
    
    Connection  = Новый COMОбъект("ADODB.Connection");
    Command  = Новый COMОбъект("ADODB.Command");
    RecordSet  = Новый COMОбъект("ADODB.RecordSet");
    Connection.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=AZRC; Persist Security Info=True;";
    
    Connection.CommandTimeout = 0;
    Command.CommandTimeout = 0;
    Connection.Open();
    Command.ActiveConnection   = Connection;
    CommandText = "";
    
        Command.CommandText = "exec TEMP.svema.prcMarketCampaignTemplate;";
        Command.Execute();
        Command.CommandText = "";

        ДатаЗаливки = ТекущаяДата();
        СтрокаЗапроса="";
        Строка = 1;
        
        isexecuted = False;
        
        Пока Выборка.Следующий() Цикл
        
        СтрокаЗапроса = " " + Формат(Строка, "ЧДЦ=0; ЧГ=0") + ", "+
        " '" + Выборка.svemaMcId + "', "+
        " '" + Выборка.classificationCode + "', "+
        " '" + Выборка.skuCode + "', "+
        " '" + Выборка.cntrCode + "', "+
        " '" + Выборка.dcCode  + "', "+
                " null, "+//dcTransitCode

                " null, "+//dcTypeName

        " '" + Выборка.mcGeography + "', "+
        " '" + Выборка.isExpansion + "', "+
        " '" + Выборка.branchName + "', "+
                " null, "+//regionName

        " " + Выборка.skuClusterId + ", "+
                " null, "+// echelonId

        " '" + Выборка.frmtName + "', "+
                " null, "+//subFrmtName

        " '" + Выборка.spCode  + "', "+
        " '" + Выборка.discountBeginDt + "', "+
        " '" + Выборка.discountEndDt + "', "+
        " '" + Формат(Выборка.beginDt,"ДФ=""гггг-ММ-дд""") + "', "+
        " '" + Формат(Выборка.endDt,"ДФ=""гггг-ММ-дд""") + "', "+
                " null, "+//skuAnalogCode

        " '" + Выборка.mcType + "', "+
        " '" + Выборка.regularPriceRub + "', "+
        " '" + Выборка.actionPriceRub + "', "+
        " '" + СтрЗаменить(Формат(Выборка.multiplicityPcs, "ЧДЦ=2; ЧГ=0"),",",".") + "', "+
                " null, "//maxOrderPcs

        " " + СтрЗаменить(Формат(Выборка.minPartPcs, "ЧДЦ=2; ЧГ=0"),",",".") + ", "+
        " " + Выборка.totalDiscountPerc +  ", "+
        " " + ОбъемШт + ", "+
        " " + Выборка.planVolumeRub + ", "+
        " " + Выборка.planSpCnt  + ", "+
                " null, "//purchaseCnt

                " null, "//giftCnt

        " " + Выборка.isBooklet + ", "+
        " " + Выборка.isShipmentRequired + ",null";

            Command.CommandText = Command.CommandText + "insert into temp.[svema].[tMarketCampaignTemplate] values(" + СтрокаЗапроса + ");";

            isexecuted = False;
            Если 
                СтрДлина(Command.CommandText) >= 250000 Тогда
                Command.Execute();
                Command.CommandText = "";
                isexecuted = True;
            КонецЕсли;
        
            Строка = Строка + 1;
        КонецЦикла ;

    Если Не isexecuted Then 
        Command.Execute();
        isexecuted = True;
    КонецЕсли;

    
        Command.CommandType = 1;
        RecordSet.Open("DECLARE @registerId int; EXEC @registerId = MASM.masm.prcMarketCampaignTemplate; select @registerId as registerId;",Connection);
        
        Пока не RecordSet.EOF Цикл
            
            НоваяЗапись = РегистрыСведений.ПотокиИнтеграции.СоздатьМенеджерЗаписи();
            НоваяЗапись.Период = ДатаЗаливки;
            НоваяЗапись.ПравилоИнтеграции = Справочники.ПравилаИнтеграции.НайтиПоНаименованию("Загрузка из СУМА");
            НоваяЗапись.КоличествоЗагруженныхСтрок = СтрЗаменить(Формат(RecordSet.fields("registerId").Value, "ЧДЦ=0; ЧГ=0"),",",".");
            НоваяЗапись.Записать(Ложь);
            
            //RecordSet.Open("SELECT * FROM MASM.source.vMarketCampaignTemplateValidationResult WHERE registerId = " + RecordSet.fields("registerId").Value,Connection);

            //RecordSet.Open("SELECT * FROM MASM.source.vMarketCampaignTemplateExpandResult WHERE registerId = " + RecordSet.fields("registerId").Value,Connection);

            
            RecordSet.MoveNext();
        КонецЦикла;
        RecordSet.Close();

    //КонецЦикла;

    
    Connection.Close();
    
    ОтправитьПочтовоеСообщение()
    
КонецПроцедуры
   ДенисЧ
 
41 - 21.02.20 - 09:21
(40) А тебе обязательно его в РС пихать? Почему не хранить во внешней бд и цепляться через ВИД?
   Varyag712
 
42 - 21.02.20 - 09:24
1с не моя, внешняя база Provider=SQLOLEDB.1;Data Source=AZRC; не моя , у меня нет прав на изменения чего либо.
Из внешних БД, которые мне доступны, это Access на своей машине. Придумал только через регистр, подумаю про Access, но мне кажется это не вариант
   ДенисЧ
 
43 - 21.02.20 - 09:26
(42) Локальный MSSQL Express поставить - религия не позволяет?
   Borteg
 
44 - 21.02.20 - 09:30
(39) 400 тыс в час это какието проблемы на стороне и железа могут, слишком медленно.
А так надо писать  в нескольких потоках, в транзакции по 50000 записей, если есть возможность отключить итоги. 400к записей пишутся пару минут,не больше.
   rsv
 
45 - 21.02.20 - 09:30
(40) добро пожаловать  в мир big data на ...1с
   Borteg
 
46 - 21.02.20 - 09:31
(40) начни с транзакций, пиши в одной транзакции по 50000-100000 элементов
   Varyag712
 
47 - 21.02.20 - 09:39
>>Локальный MSSQL Express поставить - религия не позволяет?
Установить что-то себе на комп тоже не могу, нет прав администратора
Если разные транзакции, то могут задвоятся АВТОНОМЕРЗАПИСИ() КАК rowId или нет? Можете пример показать? Спасибо
   xxTANATORxx
 
48 - 21.02.20 - 10:31
мы такое количество писали параллельно в десяток поток. 1С спокойно пишет наборы РС по 50 тысяч строк с приемлемой скоростью
   Ёпрст
 
49 - 21.02.20 - 11:10
(47) беги оттуда
   Varyag712
 
50 - 21.02.20 - 12:41
Вот так сделал, стало намного быстрее

...
            НаборЗапись.isShipmentRequired = Выборка.isShipmentRequired;
            НаборЗапись.Пользователь = Пользователи.ТекущийПользователь();
            
            НаборЗапись.Записать(Истина);
            
            isexecuted = False;
            Если 
                Выборка.rowId % 50000 = 0 Тогда
                ЗафиксироватьТранзакцию();
                isexecuted = True;
            КонецЕсли;
        
        КонецЦикла ;

        Если Не isexecuted Then 
        ЗафиксироватьТранзакцию();
        isexecuted = True;
        КонецЕсли ;
   Said_We
 
51 - 21.02.20 - 12:54
(42) "Придумал только через регистр" - а откуда РС взялся если прав менять структуру нет?
   Said_We
 
52 - 21.02.20 - 12:59
(0) 6 000 000 записей средствами 1С ты быстрее не запишешь. Пиши напрямую в БД на SQL сервере. Писать будет раз в 100 быстрее.
1С на сколько я помню, не важно чем пишешь набором или по одной записи, фактическая запись в БД осуществляется по одной записи. Это типа совместимости с файловой версией. Давно не смотрел, но сомневаюсь, что что-то поменялось.
   Varyag712
 
53 - 21.02.20 - 13:07
(51) использую старые, неиспользуемые регистры, нецелевое использование все дела...
Раньше хранил во входных ценах все это безобразие, новый регистр СтрокиНаОтправкуВСУМА создан для целевого решения, которое будет через года, я делаю типа прототип/временное решение
   Said_We
 
54 - 21.02.20 - 13:38
(53) Дочитай до конца (52). Средствами 1С, скорее всего существенного ускорения не будет.
У нас была как-то была ситуация установки значения в новое поле в существующий регистр. Средствами 1С более 3 часов. Напрямую 3 сек.
   unenu
 
55 - 21.02.20 - 13:46
посмотрел листинги запорсов и теперь понимаю, что значит "рука бойца колоть устала"
   catena
 
56 - 21.02.20 - 13:51
(55)Ну, я так поняла, ТС все-таки бизнес, а не разраб. При чем, без доступа к изменению метаданных.
   Varyag712
 
57 - 21.02.20 - 13:54
(56) да и нет доступа к серверу SQL
   Затейник
 
58 - 21.02.20 - 14:05
(57) Ну так напишите письмо и пусть дадут доступ. В целях производственной необходимости, прошу предоставить доступ....


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.