Программный код регламентного задания: ТекстОшибки = ""; Отказ = Ложь; ОбработкаПоставщик = Обработки.КР_Out2D.Создать(); ГруппаПоставщик = Справочники.Номенклатура.НайтиПоКоду("УТ000005058"); Если ГруппаПоставщик = Неопределено Тогда ТекстОшибки = "Не найдена группа номенклатуры Поставщик с кодом ""УТ000005058"""; Отказ = Истина; Иначе ОбработкаПоставщик.НомГруппа = Справочники.Номенклатура.НайтиПоКоду("УТ000005058"); КонецЕсли; ПутьВыгрузки = Константы.КР_ПапкаВыгрузкиПоставщик.Получить(); Если Не ЗначениеЗаполнено(ПутьВыгрузки) Тогда ТекстОшибки = ТекстОшибки + Символы.ПС + "Заполнен путь выгрузки в константе ""КР_ПапкаВыгрузкиПоставщик"""; Отказ = Истина; КонецЕсли; Если Отказ Тогда ЗаписатьФайлОшибок(ТекстОшибки); Возврат; КонецЕсли; ОбработкаПоставщик.КонПериода = КонецДня(ТекущаяДата()) - 24*3600; ОбработкаПоставщик.НачПериода = НачалоДня(ОбработкаПоставщик.КонПериода - 45 * 24 * 3600); ОбработкаПоставщик.Заполнитьdelivery(); ОбработкаПоставщик.Заполнитьstocks(); ОбработкаПоставщик.Заполнитьclients(); ОбработкаПоставщик.Заполнитьttoptions(); ОбработкаПоставщик.Заполнитьta(); ОбработкаПоставщик.Заполнитьreceive(); ОбработкаПоставщик.Заполнитьcancellations(); ОбработкаПоставщик.Заполнитьsku(); ОбработкаПоставщик.ВыгрузитьВCSV(ПутьВыгрузки); ЗапуститьПриложение(ПутьВыгрузки + "SendFile.bat"); Программный код обработки "Обработки.КР_Out2D": //1. Таблица оборота продукции delivery.csv Процедура Заполнитьdelivery() Экспорт ПоставщикТрейд = Справочники.Контрагенты.НайтиПоКоду("П00001026"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""П00001026"" - Поставщик Трейд"); Возврат; КонецЕсли; КонтрагентБаза3 = Справочники.Контрагенты.НайтиПоКоду("ИП0001460"); Если КонтрагентБаза3 = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""ИП0001460"" - База №3"); Возврат; КонецЕсли; ОрганизацияИПИванов = Справочники.Организации.НайтиПоКоду("ИП0000006"); Если ОрганизацияИПИванов = Неопределено Тогда Сообщить("Не найдена организация с кодом ""ИП0000006"" - ИП Иванов"); Возврат; КонецЕсли; ОрганизацияБаза3 = Справочники.Организации.НайтиПоКоду("КТ0000005"); Если ОрганизацияБаза3 = Неопределено Тогда Сообщить("Не найдена организация с кодом ""КТ0000005"" - База №3"); Возврат; КонецЕсли; МассивОрганизаций = Новый Массив; МассивОрганизаций.Добавить(ОрганизацияИПИванов); МассивОрганизаций.Добавить(ОрганизацияБаза3); Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | МАКСИМУМ(ЗакупкиОбороты.Регистратор) КАК Регистратор, | ЗакупкиОбороты.Номенклатура, | ЗакупкиОбороты.ХарактеристикаНоменклатуры |ПОМЕСТИТЬ ПоследниеПартии |ИЗ | РегистрНакопления.Закупки.Обороты( | , | , | Регистратор, | Номенклатура В | (ВЫБРАТЬ | ПродажиОбороты.Номенклатура | ИЗ | РегистрНакопления.Продажи.Обороты(&Начпериода, &Конпериода, Авто, Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Организация В (&СписокОрганизаций) | И Контрагент <> &КонтрагентБаза3) КАК ПродажиОбороты)) КАК ЗакупкиОбороты | |СГРУППИРОВАТЬ ПО | ЗакупкиОбороты.Номенклатура, | ЗакупкиОбороты.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗакупкиОбороты.Номенклатура, | ВЫБОР | КОГДА ЗакупкиОбороты.КоличествоОборот = 0 | ТОГДА 0 | ИНАЧЕ ЗакупкиОбороты.СтоимостьОборот / ЗакупкиОбороты.КоличествоОборот | КОНЕЦ КАК ЦенаЗакупочная |ПОМЕСТИТЬ ЗакупочныеЦены |ИЗ | ПоследниеПартии КАК ПоследниеПартии | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты( | , | , | Регистратор, | Номенклатура В | (ВЫБРАТЬ | ПродажиОбороты.Номенклатура | ИЗ | РегистрНакопления.Продажи.Обороты(&Начпериода, &Конпериода, Авто, Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Организация В (&СписокОрганизаций) | И Контрагент <> &КонтрагентБаза3) КАК ПродажиОбороты)) КАК ЗакупкиОбороты | ПО ПоследниеПартии.Регистратор = ЗакупкиОбороты.Регистратор | И ПоследниеПартии.Номенклатура = ЗакупкиОбороты.Номенклатура | И ПоследниеПартии.ХарактеристикаНоменклатуры = ЗакупкиОбороты.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ПоследниеПартии |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КР_ТорговыеАгенты.ТорговыйАгент, | КР_ТорговыеАгенты.КодТорговогоАгента, | КР_ТорговыеАгенты.ИмяТорговогоАгента, | КР_ТорговыеАгенты.ВыгружатьВПоставщик, | КР_ТорговыеАгенты.ОсновнойТорговыйАгент |ПОМЕСТИТЬ ТаблицаОсновнойТорговыйАгент |ИЗ | РегистрСведений.КР_ТорговыеАгенты КАК КР_ТорговыеАгенты |ГДЕ | КР_ТорговыеАгенты.ОсновнойТорговыйАгент |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(375) КАК idДистрибьютора, | ВЫБОР | КОГДА ПродажиОбороты.ДокументПродажи ССЫЛКА Документ.ОтчетОРозничныхПродажах | ТОГДА &кэш | ИНАЧЕ ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА ПродажиОбороты.ДокументПродажи.Грузополучатель.Код | ИНАЧЕ ПродажиОбороты.Контрагент.Код | КОНЕЦ | КОНЕЦ КАК КодКлиентаERP, | ПродажиОбороты.Регистратор.Дата КАК ДатаДоставки, | ""01.01.0001"" КАК Дата, | ПродажиОбороты.Номенклатура.Код КАК КодПродуктаДистрибьютора, | СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество, | ПродажиОбороты.СтоимостьОборот КАК СуммаОтгрузки, | ВЫРАЗИТЬ(ПродажиОбороты.КоличествоОборот * ЗакупочныеЦены.ЦенаЗакупочная КАК ЧИСЛО(15, 2)) КАК СуммаВЗакупочныхЦенах, | ЕСТЬNULL(КР_ТорговыеАгенты.КодТорговогоАгента, ТаблицаОсновнойТорговыйАгент.КодТорговогоАгента) КАК КодТА, | ПродажиОбороты.Регистратор.Номер КАК НомерРасходнойНакладной |ИЗ | РегистрНакопления.Продажи.Обороты( | &Начпериода, | &Конпериода, | Авто, | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Организация В (&СписокОрганизаций) | И Контрагент <> &КонтрагентБаза3) КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ ЗакупочныеЦены КАК ЗакупочныеЦены | ПО ПродажиОбороты.Номенклатура = ЗакупочныеЦены.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КР_ТорговыеАгенты КАК КР_ТорговыеАгенты | ПО ПродажиОбороты.Контрагент.ЭксклюзивныйТорговыйПредставитель = КР_ТорговыеАгенты.ТорговыйАгент | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОсновнойТорговыйАгент КАК ТаблицаОсновнойТорговыйАгент | ПО (ИСТИНА) | |СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПродажиОбороты.ДокументПродажи ССЫЛКА Документ.ОтчетОРозничныхПродажах | ТОГДА &кэш | ИНАЧЕ ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА ПродажиОбороты.ДокументПродажи.Грузополучатель.Код | ИНАЧЕ ПродажиОбороты.Контрагент.Код | КОНЕЦ | КОНЕЦ, | ПродажиОбороты.Номенклатура.Код, | ПродажиОбороты.Регистратор.Номер, | ПродажиОбороты.СтоимостьОборот, | ВЫРАЗИТЬ(ПродажиОбороты.КоличествоОборот * ЗакупочныеЦены.ЦенаЗакупочная КАК ЧИСЛО(15, 2)), | ПродажиОбороты.Регистратор.Дата, | ЕСТЬNULL(КР_ТорговыеАгенты.КодТорговогоАгента, ТаблицаОсновнойТорговыйАгент.КодТорговогоАгента) | |УПОРЯДОЧИТЬ ПО | ДатаДоставки, | КодПродуктаДистрибьютора"; Запрос.Текст = ТекстЗапроса; Если НомГруппа.Пустая() Тогда Возврат; КонецЕсли; Запрос.УстановитьПараметр("Начпериода", НачПериода); Запрос.УстановитьПараметр("Конпериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка()); Запрос.УстановитьПараметр("кэш", "ИП0002372"); Запрос.УстановитьПараметр("КонтрагентБаза3", КонтрагентБаза3); Запрос.УстановитьПараметр("СписокОрганизаций", МассивОрганизаций); ТЗ3 = Запрос.Выполнить().Выгрузить(); Для Каждого Стр Из ТЗ3 Цикл Стр.КодКлиентаERP = СокрЛП(стр.КодКлиентаERP); Стр.Дата = Формат(Стр.ДатаДоставки, "ДЛФ=Д"); Стр.Количество = СтрЗаменить(Стр.Количество," ",""); КонецЦикла; ТЗ3.Колонки.Удалить("ДатаДоставки"); delivery.Загрузить(ТЗ3); КонецПроцедуры //2. Таблица остатков продукции stocks.csv Процедура Заполнитьstocks() Экспорт ПоставщикТрейд = Справочники.Контрагенты.НайтиПоКоду("П00001026"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""П00001026"" - Поставщик Трейд"); Возврат; КонецЕсли; СкладБаза3 = Справочники.Склады.НайтиПоКоду("КТ0000001"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден склад с кодом ""КТ0000001"" - Склад База №3"); Возврат; КонецЕсли; СкладИванов1 = Справочники.Склады.НайтиПоКоду("ИП0000001"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""ИП0000001"" - Склад Иванов 1"); Возврат; КонецЕсли; СкладИванов2 = Справочники.Склады.НайтиПоКоду("КТ0000003"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""КТ0000003"" - Склад Иванов 2"); Возврат; КонецЕсли; СкладЛиквидация = Справочники.Склады.НайтиПоКоду("КТ0000005"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""КТ0000005"" - Склад Ликвидация"); Возврат; КонецЕсли; МассивСкладов = Новый Массив; МассивСкладов.Добавить(СкладБаза3); МассивСкладов.Добавить(СкладИванов1); МассивСкладов.Добавить(СкладИванов2); МассивСкладов.Добавить(СкладЛиквидация); Запрос = Новый Запрос; МВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МВТ; ТекстЗапроса = "ВЫБРАТЬ | МАКСИМУМ(ЗакупкиОбороты.Регистратор) КАК Регистратор, | ЗакупкиОбороты.Номенклатура, | ЗакупкиОбороты.ХарактеристикаНоменклатуры |ПОМЕСТИТЬ ПоследниеПартии |ИЗ | РегистрНакопления.Закупки.Обороты( | , | , | Регистратор, | Контрагент = &ПоставщикПоставщик | И Номенклатура В | (ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОстаткиИОбороты)) КАК ЗакупкиОбороты | |СГРУППИРОВАТЬ ПО | ЗакупкиОбороты.Номенклатура, | ЗакупкиОбороты.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗакупкиОбороты.Номенклатура, | ВЫБОР | КОГДА ЗакупкиОбороты.КоличествоОборот = 0 | ТОГДА 0 | ИНАЧЕ ЗакупкиОбороты.СтоимостьОборот / ЗакупкиОбороты.КоличествоОборот | КОНЕЦ КАК ЦенаЗакупочная |ПОМЕСТИТЬ ЗакупочныеЦены |ИЗ | ПоследниеПартии КАК ПоследниеПартии | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты( | , | , | Регистратор, | Контрагент = &ПоставщикПоставщик | И Номенклатура В | (ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОстаткиИОбороты)) КАК ЗакупкиОбороты | ПО ПоследниеПартии.Регистратор = ЗакупкиОбороты.Регистратор | И ПоследниеПартии.Номенклатура = ЗакупкиОбороты.Номенклатура | И ПоследниеПартии.ХарактеристикаНоменклатуры = ЗакупкиОбороты.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ПоследниеПартии |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СписокДат.Период |ПОМЕСТИТЬ Даты45 |ИЗ | &СписокДат КАК СписокДат |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | 375 КАК КодДистрибьютора, | Даты45.Период КАК Период, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК КодПродукта, | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = &НачалоПериода | ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток | ИНАЧЕ ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.Период <= Даты45.Период | ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ) КАК Остаток, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура |ПОМЕСТИТЬ ОстаткиПоДатам |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | &НачалоПериода, | &КонецПериода, | День, | , | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОстаткиИОбороты, | Даты45 КАК Даты45 | |СГРУППИРОВАТЬ ПО | Даты45.Период, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОстаткиПоДатам.КодДистрибьютора КАК idДистрибьютора, | ОстаткиПоДатам.Период КАК Период, | ""01.01.0001"" КАК Дата, | ОстаткиПоДатам.КодПродукта КАК КодПродуктаДистрибьютора, | ОстаткиПоДатам.Остаток КАК Количество, | ВЫРАЗИТЬ(ОстаткиПоДатам.Остаток * ЗакупочныеЦены.ЦенаЗакупочная КАК ЧИСЛО(15, 2)) КАК СуммаВЗакупочныхЦенах |ИЗ | ОстаткиПоДатам КАК ОстаткиПоДатам | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗакупочныеЦены КАК ЗакупочныеЦены | ПО ОстаткиПоДатам.Номенклатура = ЗакупочныеЦены.Номенклатура | |УПОРЯДОЧИТЬ ПО | Период, | КодПродуктаДистрибьютора"; Запрос.Текст = ТекстЗапроса; ТаблицаДат = Новый ТаблицаЗначений; ТаблицаДат.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата")); Период = НачалоДня(КонПериода); Пока Период >= НачПериода Цикл НоваяСтрока = ТаблицаДат.Добавить(); НоваяСтрока.Период = Период; Период = Период - 24 * 3600; КонецЦикла; Запрос.УстановитьПараметр("СписокДат", ТаблицаДат); Если НомГруппа.Пустая() Тогда Сообщить("Не заполнена группа номенклатуры. Выполнение обработки прервано"); Возврат; КонецЕсли; Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачПериода)); Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Запрос.УстановитьПараметр("ПоставщикПоставщик", ПоставщикТрейд); Запрос.УстановитьПараметр("СписокСкладов", МассивСкладов); ТЗ4 = Запрос.Выполнить().Выгрузить(); Для Каждого Стр Из ТЗ4 Цикл Стр.КодПродуктаДистрибьютора = СокрЛП(стр.КодПродуктаДистрибьютора); Стр.Дата = Формат(Стр.Период, "ДЛФ=Д"); КонецЦикла; ТЗ4.Колонки.Удалить("Период"); stocks.Загрузить(ТЗ4); КонецПроцедуры //3. Таблица торговых точек (clients.csv) Процедура Заполнитьclients() Экспорт ПоставщикТрейд = Справочники.Контрагенты.НайтиПоКоду("П00001026"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""П00001026"" - Поставщик Трейд"); Возврат; КонецЕсли; КонтрагентБаза3 = Справочники.Контрагенты.НайтиПоКоду("ИП0001460"); Если КонтрагентБаза3 = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""ИП0001460"" - База №3"); Возврат; КонецЕсли; ОрганизацияИПИванов = Справочники.Организации.НайтиПоКоду("ИП0000006"); Если ОрганизацияИПИванов = Неопределено Тогда Сообщить("Не найдена организация с кодом ""ИП0000006"" - ИП Иванов"); Возврат; КонецЕсли; ОрганизацияБаза3 = Справочники.Организации.НайтиПоКоду("КТ0000005"); Если ОрганизацияБаза3 = Неопределено Тогда Сообщить("Не найдена организация с кодом ""КТ0000005"" - База №3"); Возврат; КонецЕсли; МассивОрганизаций = Новый Массив; МассивОрганизаций.Добавить(ОрганизацияИПИванов); МассивОрганизаций.Добавить(ОрганизацияБаза3); Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Объект.НаименованиеПолное, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление |ПОМЕСТИТЬ Адреса |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Тип = &Тип | И КонтактнаяИнформация.Вид = &Вид |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | 375 КАК idДистрибьютора, | ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА ПродажиОбороты.ДокументПродажи.Грузополучатель.Код | ИНАЧЕ ПродажиОбороты.Контрагент.Код | КОНЕЦ КАК КодКлиентаERP, | ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА (ВЫРАЗИТЬ(ПродажиОбороты.Контрагент.НаименованиеПолное КАК СТРОКА(100))) + ""-"" + ПродажиОбороты.ДокументПродажи.Грузополучатель.Наименование | ИНАЧЕ ВЫРАЗИТЬ(ПродажиОбороты.Контрагент.НаименованиеПолное КАК СТРОКА(100)) | КОНЕЦ КАК НазваниеКлиента, | ВЫРАЗИТЬ(Адреса.Представление КАК СТРОКА(150)) КАК АдресКлиента |ИЗ | РегистрНакопления.Продажи.Обороты( | &Начпериода, | &Конпериода, | , | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг | И Организация В (&СписокОрганизаций) | И Контрагент <> &КонтрагентБаза3) КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ Адреса КАК Адреса | ПО ПродажиОбороты.Контрагент = Адреса.Объект | |СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА ПродажиОбороты.ДокументПродажи.Грузополучатель.Код | ИНАЧЕ ПродажиОбороты.Контрагент.Код | КОНЕЦ, | ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА (ВЫРАЗИТЬ(ПродажиОбороты.Контрагент.НаименованиеПолное КАК СТРОКА(100))) + ""-"" + ПродажиОбороты.ДокументПродажи.Грузополучатель.Наименование | ИНАЧЕ ВЫРАЗИТЬ(ПродажиОбороты.Контрагент.НаименованиеПолное КАК СТРОКА(100)) | КОНЕЦ, | ВЫРАЗИТЬ(Адреса.Представление КАК СТРОКА(150))"; Запрос.Текст = ТекстЗапроса; Если НомГруппа.Пустая() Тогда Возврат; КонецЕсли; Запрос.УстановитьПараметр("Начпериода", НачПериода); Запрос.УстановитьПараметр("Конпериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес); Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента); Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка()); Запрос.УстановитьПараметр("КонтрагентБаза3", КонтрагентБаза3); Запрос.УстановитьПараметр("СписокОрганизаций", МассивОрганизаций); Выборка = Запрос.Выполнить().Выбрать(); clients.Очистить(); Пока Выборка.Следующий() Цикл НоваяСтрока = clients.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); КонецЦикла; КонецПроцедуры //4. Таблица свойств торговых точек ttoptions.csv Процедура Заполнитьttoptions() Экспорт ПоставщикТрейд = Справочники.Контрагенты.НайтиПоКоду("П00001026"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""П00001026"" - Поставщик Трейд"); Возврат; КонецЕсли; КонтрагентБаза3 = Справочники.Контрагенты.НайтиПоКоду("ИП0001460"); Если КонтрагентБаза3 = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""ИП0001460"" - База №3"); Возврат; КонецЕсли; ОрганизацияИПИванов = Справочники.Организации.НайтиПоКоду("ИП0000006"); Если ОрганизацияИПИванов = Неопределено Тогда Сообщить("Не найдена организация с кодом ""ИП0000006"" - ИП Иванов"); Возврат; КонецЕсли; ОрганизацияБаза3 = Справочники.Организации.НайтиПоКоду("КТ0000005"); Если ОрганизацияБаза3 = Неопределено Тогда Сообщить("Не найдена организация с кодом ""КТ0000005"" - База №3"); Возврат; КонецЕсли; МассивОрганизаций = Новый Массив; МассивОрганизаций.Добавить(ОрганизацияИПИванов); МассивОрганизаций.Добавить(ОрганизацияБаза3); Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | 375 КАК idДистрибьютора, | ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА ПродажиОбороты.ДокументПродажи.Грузополучатель.Код | ИНАЧЕ ПродажиОбороты.Контрагент.Код | КОНЕЦ КАК КодКлиентаERP, | """" КАК НазваниеСетиУДистрибьютора, | ПродажиОбороты.Контрагент.КаналТорговойТочки.НомерКаналаТТ КАК КаналТТУДистрибьютора, | ПродажиОбороты.Контрагент.ИНН КАК КодИНН |ИЗ | РегистрНакопления.Продажи.Обороты( | &Начпериода, | &Конпериода, | , | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг | И Организация В (&СписокОрганизаций) | И Контрагент <> &КонтрагентБаза3) КАК ПродажиОбороты | |СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПродажиОбороты.Контрагент <> ПродажиОбороты.ДокументПродажи.Грузополучатель | И ПродажиОбороты.ДокументПродажи.Грузополучатель <> &ПустойКонтрагент | ТОГДА ПродажиОбороты.ДокументПродажи.Грузополучатель.Код | ИНАЧЕ ПродажиОбороты.Контрагент.Код | КОНЕЦ, | ПродажиОбороты.Контрагент.ИНН, | ПродажиОбороты.Контрагент.КаналТорговойТочки.НомерКаналаТТ"; Запрос.Текст = ТекстЗапроса; Если НомГруппа.Пустая() Тогда Возврат; КонецЕсли; Запрос.УстановитьПараметр("Начпериода", НачПериода); Запрос.УстановитьПараметр("Конпериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка()); Запрос.УстановитьПараметр("КонтрагентБаза3", КонтрагентБаза3); Запрос.УстановитьПараметр("СписокОрганизаций", МассивОрганизаций); Выборка = Запрос.Выполнить().Выбрать(); ttoptions.Очистить(); Пока Выборка.Следующий() Цикл НоваяСтрока = ttoptions.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); КонецЦикла; КонецПроцедуры //5. Таблица торговых агентов ta.csv Процедура Заполнитьta() Экспорт Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | МАКСИМУМ(375) КАК КодДистрибьютора, | КР_ТорговыеАгенты.КодТорговогоАгента, | КР_ТорговыеАгенты.ИмяТорговогоАгента |ИЗ | РегистрСведений.КР_ТорговыеАгенты КАК КР_ТорговыеАгенты |ГДЕ | КР_ТорговыеАгенты.ВыгружатьВПоставщик | |СГРУППИРОВАТЬ ПО | КР_ТорговыеАгенты.КодТорговогоАгента, | КР_ТорговыеАгенты.ИмяТорговогоАгента"; Запрос.Текст = ТекстЗапроса; Если НомГруппа.Пустая() Тогда Возврат; КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); ta.Очистить(); Пока Выборка.Следующий() Цикл НовСтр = ta.Добавить(); НовСтр.idДистрибьютора = "375"; НовСтр.КодТА = Выборка.КодТорговогоАгента; НовСтр.ИмяТА = Выборка.ИмяТорговогоАгента; КонецЦикла; КонецПроцедуры //6. Таблица приходов к дистрибьютору (receive.csv) Процедура Заполнитьreceive() Экспорт ПоставщикТрейд = Справочники.Контрагенты.НайтиПоКоду("П00001026"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""П00001026"" - Поставщик Трейд"); Возврат; КонецЕсли; ОрганизацияИПИванов = Справочники.Организации.НайтиПоКоду("ИП0000006"); Если ОрганизацияИПИванов = Неопределено Тогда Сообщить("Не найдена организация с кодом ""ИП0000006"" - ИП Иванов"); Возврат; КонецЕсли; ОрганизацияБаза3 = Справочники.Организации.НайтиПоКоду("КТ0000005"); Если ОрганизацияБаза3 = Неопределено Тогда Сообщить("Не найдена организация с кодом ""КТ0000005"" - База №3"); Возврат; КонецЕсли; МассивОрганизаций = Новый Массив; МассивОрганизаций.Добавить(ОрганизацияИПИванов); МассивОрганизаций.Добавить(ОрганизацияБаза3); Запрос = Новый Запрос; ТекстЗапроса ="ВЫБРАТЬ | СписокДат.Период |ПОМЕСТИТЬ Даты45 |ИЗ | &СписокДат КАК СписокДат |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗакупкиОбороты.ПериодДень КАК ДатаОборота, | МАКСИМУМ(ИСТИНА) КАК БлокироватьНулевыеЗаписи |ПОМЕСТИТЬ ДатыВыводаНенулевыхСтрок |ИЗ | РегистрНакопления.Закупки.Обороты( | &НачалоПериода, | &ОкончаниеПериода, | Авто, | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Контрагент = &ПоставщикПоставщик | И Организация В (&СписокОрганизаций)) КАК ЗакупкиОбороты | |СГРУППИРОВАТЬ ПО | ЗакупкиОбороты.ПериодДень |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | 375 КАК idДистрибьютора, | Даты45.Период КАК Период, | ""01.01.0001"" КАК Дата, | ЗакупкиОбороты.Номенклатура.Код КАК КодПродуктаДистрибьютора, | СУММА(ВЫБОР | КОГДА ЗакупкиОбороты.ПериодДень = Даты45.Период | ТОГДА ЗакупкиОбороты.КоличествоОборот | ИНАЧЕ 0 | КОНЕЦ) КАК Количество, | СУММА(ВЫБОР | КОГДА ЗакупкиОбороты.ПериодДень = Даты45.Период | ТОГДА ЗакупкиОбороты.СтоимостьОборот | ИНАЧЕ 0 | КОНЕЦ) КАК СуммаВЗакупочныхЦенах, | ВЫБОР | КОГДА ЗакупкиОбороты.ПериодДень = Даты45.Период | ТОГДА ЗакупкиОбороты.Регистратор.НомерВходящегоДокумента | ИНАЧЕ """" | КОНЕЦ КАК НомерНакладной |ИЗ | РегистрНакопления.Закупки.Обороты( | &НачалоПериода, | &ОкончаниеПериода, | Авто, | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Контрагент = &ПоставщикПоставщик | И Организация В (&СписокОрганизаций)) КАК ЗакупкиОбороты | ПОЛНОЕ СОЕДИНЕНИЕ Даты45 КАК Даты45 | ЛЕВОЕ СОЕДИНЕНИЕ ДатыВыводаНенулевыхСтрок КАК ДатыВыводаНенулевыхСтрок | ПО Даты45.Период = ДатыВыводаНенулевыхСтрок.ДатаОборота | ПО (ИСТИНА) |ГДЕ | (ДатыВыводаНенулевыхСтрок.БлокироватьНулевыеЗаписи = ИСТИНА | И ВЫБОР | КОГДА ЗакупкиОбороты.ПериодДень = Даты45.Период | ТОГДА ЗакупкиОбороты.КоличествоОборот | ИНАЧЕ 0 | КОНЕЦ > 0 | ИЛИ ЕСТЬNULL(ДатыВыводаНенулевыхСтрок.БлокироватьНулевыеЗаписи, ЛОЖЬ) <> ИСТИНА) | |СГРУППИРОВАТЬ ПО | Даты45.Период, | ЗакупкиОбороты.Номенклатура.Код, | ЗакупкиОбороты.Регистратор.Дата, | ВЫБОР | КОГДА ЗакупкиОбороты.ПериодДень = Даты45.Период | ТОГДА ЗакупкиОбороты.Регистратор.НомерВходящегоДокумента | ИНАЧЕ """" | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | Период, | КодПродуктаДистрибьютора"; Запрос.Текст = ТекстЗапроса; Если НомГруппа.Пустая() Тогда Возврат; КонецЕсли; ТаблицаДат = Новый ТаблицаЗначений; ТаблицаДат.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата")); Период = НачалоДня(КонПериода); Пока Период >= НачПериода Цикл НоваяСтрока = ТаблицаДат.Добавить(); НоваяСтрока.Период = Период; Период = Период - 24 * 3600; КонецЦикла; Запрос.УстановитьПараметр("СписокДат", ТаблицаДат); Запрос.УстановитьПараметр("НачалоПериода", НачПериода); Запрос.УстановитьПараметр("ОкончаниеПериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Запрос.УстановитьПараметр("ПоставщикПоставщик", ПоставщикТрейд); Запрос.УстановитьПараметр("СписокОрганизаций", МассивОрганизаций); ТЗЗакупки = Запрос.Выполнить().Выгрузить(); Для Каждого Стр Из ТЗЗакупки Цикл Стр.КодПродуктаДистрибьютора = СокрЛП(стр.КодПродуктаДистрибьютора); Если Не ЗначениеЗаполнено(Стр.КодПродуктаДистрибьютора) Тогда Стр.КодПродуктаДистрибьютора = "УТ000005102";//код первой номенклатуры в папке Поставщик КонецЕсли; Стр.Дата = Формат(Стр.Период, "ДЛФ=Д"); Стр.Количество = СтрЗаменить(Стр.Количество," ",""); КонецЦикла; ТЗЗакупки.Колонки.Удалить("Период"); receive.Загрузить(ТЗЗакупки); КонецПроцедуры //7. Таблица с другими движениями продукции (cancellations.csv) Процедура Заполнитьcancellations() Экспорт ПоставщикТрейд = Справочники.Контрагенты.НайтиПоКоду("П00001026"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""П00001026"" - Поставщик Трейд"); Возврат; КонецЕсли; СкладБаза3 = Справочники.Склады.НайтиПоКоду("КТ0000001"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден склад с кодом ""КТ0000001"" - Склад База №3"); Возврат; КонецЕсли; СкладИванов1 = Справочники.Склады.НайтиПоКоду("ИП0000001"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""ИП0000001"" - Склад Иванов 1"); Возврат; КонецЕсли; СкладИванов2 = Справочники.Склады.НайтиПоКоду("КТ0000003"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""КТ0000003"" - Склад Иванов 2"); Возврат; КонецЕсли; СкладЛиквидация = Справочники.Склады.НайтиПоКоду("КТ0000005"); Если ПоставщикТрейд = Неопределено Тогда Сообщить("Не найден контрагент с кодом ""КТ0000005"" - Склад Ликвидация"); Возврат; КонецЕсли; МассивСкладов = Новый Массив; МассивСкладов.Добавить(СкладБаза3); МассивСкладов.Добавить(СкладИванов1); МассивСкладов.Добавить(СкладИванов2); МассивСкладов.Добавить(СкладЛиквидация); Запрос = Новый Запрос; МВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МВТ; ТекстЗапроса = "ВЫБРАТЬ | МАКСИМУМ(ЗакупкиОбороты.Регистратор) КАК Регистратор, | ЗакупкиОбороты.Номенклатура, | ЗакупкиОбороты.ХарактеристикаНоменклатуры |ПОМЕСТИТЬ ПоследниеПартии |ИЗ | РегистрНакопления.Закупки.Обороты( | , | , | Регистратор, | Контрагент = &ПоставщикПоставщик | И Номенклатура В | (ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, День, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОстаткиИОбороты)) КАК ЗакупкиОбороты | |СГРУППИРОВАТЬ ПО | ЗакупкиОбороты.Номенклатура, | ЗакупкиОбороты.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗакупкиОбороты.Номенклатура, | ВЫБОР | КОГДА ЗакупкиОбороты.КоличествоОборот = 0 | ТОГДА 0 | ИНАЧЕ ЗакупкиОбороты.СтоимостьОборот / ЗакупкиОбороты.КоличествоОборот | КОНЕЦ КАК ЦенаЗакупочная |ПОМЕСТИТЬ ЗакупочныеЦены |ИЗ | ПоследниеПартии КАК ПоследниеПартии | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты( | , | , | Регистратор, | Контрагент = &ПоставщикПоставщик | И Номенклатура В | (ВЫБРАТЬ | ТоварыНаСкладахОбороты.Номенклатура | ИЗ | РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &ОкончаниеПериода, Регистратор, Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОбороты | ГДЕ | НЕ(ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровПоставщику | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя) | И ТоварыНаСкладахОбороты.Склад В (&СписокСкладов))) КАК ЗакупкиОбороты | ПО ПоследниеПартии.Регистратор = ЗакупкиОбороты.Регистратор | И ПоследниеПартии.Номенклатура = ЗакупкиОбороты.Номенклатура | И ПоследниеПартии.ХарактеристикаНоменклатуры = ЗакупкиОбороты.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ПоследниеПартии |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СписокДат.Период |ПОМЕСТИТЬ Даты45 |ИЗ | &СписокДат КАК СписокДат |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | 375 КАК КодДистрибьютора, | ТоварыНаСкладахОбороты.Номенклатура.Код КАК КодПродукта, | ТоварыНаСкладахОбороты.Номенклатура, | ТоварыНаСкладахОбороты.КоличествоОборот КАК Количество, | ТоварыНаСкладахОбороты.ПериодДень, | ТоварыНаСкладахОбороты.Регистратор.Номер КАК НомерДокумента |ПОМЕСТИТЬ ОстаткиПоДатам |ИЗ | РегистрНакопления.ТоварыНаСкладах.Обороты( | &НачалоПериода, | &ОкончаниеПериода, | Авто, | Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры) | И Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОбороты |ГДЕ | НЕ(ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровПоставщику | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ЧекККМ) | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОбороты.Номенклатура.Код, | ТоварыНаСкладахОбороты.Номенклатура, | ТоварыНаСкладахОбороты.КоличествоОборот, | ТоварыНаСкладахОбороты.ПериодДень, | ТоварыНаСкладахОбороты.Регистратор.Номер |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОстаткиПоДатам.КодДистрибьютора, | ОстаткиПоДатам.КодПродукта, | ОстаткиПоДатам.Номенклатура, | ОстаткиПоДатам.ПериодДень, | ВЫБОР | КОГДА ОстаткиПоДатам.ПериодДень = Даты45.Период | ТОГДА ОстаткиПоДатам.НомерДокумента | ИНАЧЕ 0 | КОНЕЦ КАК НомерДокумента, | Даты45.Период, | ВЫБОР | КОГДА ОстаткиПоДатам.ПериодДень = Даты45.Период | ТОГДА ОстаткиПоДатам.Количество | ИНАЧЕ 0 | КОНЕЦ КАК Количество |ПОМЕСТИТЬ ОборотыЗаКаждыйДень |ИЗ | ОстаткиПоДатам КАК ОстаткиПоДатам, | Даты45 КАК Даты45 | |СГРУППИРОВАТЬ ПО | Даты45.Период, | ОстаткиПоДатам.Номенклатура, | ОстаткиПоДатам.ПериодДень, | ОстаткиПоДатам.КодПродукта, | ОстаткиПоДатам.КодДистрибьютора, | ОстаткиПоДатам.Количество, | ВЫБОР | КОГДА ОстаткиПоДатам.ПериодДень = Даты45.Период | ТОГДА ОстаткиПоДатам.НомерДокумента | ИНАЧЕ 0 | КОНЕЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОборотыЗаКаждыйДень.КодДистрибьютора КАК idДистрибьютора, | ОборотыЗаКаждыйДень.Период КАК Период, | ""01.01.0001"" КАК Дата, | ОборотыЗаКаждыйДень.КодПродукта КАК КодПродуктаДистрибьютора, | ОборотыЗаКаждыйДень.Количество, | ВЫРАЗИТЬ(ОборотыЗаКаждыйДень.Количество * ЗакупочныеЦены.ЦенаЗакупочная КАК ЧИСЛО(15, 2)) КАК СуммаВЗакупочныхЦенах, | ОборотыЗаКаждыйДень.НомерДокумента, | ""1. Инвентаризация"" КАК НомерПартии |ИЗ | ОборотыЗаКаждыйДень КАК ОборотыЗаКаждыйДень | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗакупочныеЦены КАК ЗакупочныеЦены | ПО ОборотыЗаКаждыйДень.Номенклатура = ЗакупочныеЦены.Номенклатура | |УПОРЯДОЧИТЬ ПО | Период, | КодПродуктаДистрибьютора"; Запрос.Текст = ТекстЗапроса; ТаблицаДат = Новый ТаблицаЗначений; ТаблицаДат.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата")); Период = НачалоДня(КонПериода); Пока Период >= НачПериода Цикл НоваяСтрока = ТаблицаДат.Добавить(); НоваяСтрока.Период = Период; Период = Период - 24 * 3600; КонецЦикла; Запрос.УстановитьПараметр("СписокДат", ТаблицаДат); Если НомГруппа.Пустая() Тогда Сообщить("Не заполнена группа номенклатуры. Выполнение обработки прервано"); Возврат; КонецЕсли; Запрос.УстановитьПараметр("НачалоПериода", НачПериода); Запрос.УстановитьПараметр("ОкончаниеПериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Запрос.УстановитьПараметр("ПоставщикПоставщик", ПоставщикТрейд); Запрос.УстановитьПараметр("СписокСкладов", МассивСкладов); ТЗЗакупки = Запрос.Выполнить().Выгрузить(); Для Каждого Стр Из ТЗЗакупки Цикл Если Не ЗначениеЗаполнено(Стр.КодПродуктаДистрибьютора) Тогда Стр.КодПродуктаДистрибьютора = "УТ000005102";//код первой номенклатуры в папке Поставщик КонецЕсли; Стр.Дата = Формат(Стр.Период, "ДЛФ=Д"); Если ЗначениеЗаполнено(Стр.Количество) Тогда Стр.Количество = СтрЗаменить(Стр.Количество," ",""); Иначе Стр.Количество = 0; КонецЕсли; КонецЦикла; Если ТЗЗакупки.Количество() = 0 Тогда Для Сч = 0 по 44 Цикл НоваяСтрока = ТЗЗакупки.Добавить(); НоваяСтрока.idДистрибьютора = "375"; НоваяСтрока.КодПродуктаДистрибьютора = "УТ000005102";//код первой номенклатуры в папке Поставщик НоваяСтрока.Количество = 0; НоваяСтрока.СуммаВЗакупочныхЦенах = 0; НоваяСтрока.НомерДокумента = ""; НоваяСтрока.Дата = Формат(НачалоДня(КонПериода) - (44 - сч) * 24 * 3600, "ДЛФ=Д"); НоваяСтрока.НомерПартии = "1. Инвентаризация"; КонецЦикла; КонецЕсли; ТЗЗакупки.Колонки.Удалить("Период"); cancellations.Загрузить(ТЗЗакупки); КонецПроцедуры //8. Таблица продуктов дистрибутора sku.csv Процедура Заполнитьsku() Экспорт Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | 375 КАК idДистрибьютора, | Номенклатура.Код КАК КодПродуктаДистрибьютора, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК СТРОКА(100)) КАК НазваниеПродукта, | ЕСТЬNULL(ШК.Штрихкод, """") КАК ШтрихкодПродукта, | Номенклатура.Артикул КАК КодПродуктаПроизводителя, | ВЫБОР | КОГДА Номенклатура.ЕдиницаХраненияОстатков.Наименование = ""шт"" | ТОГДА 1 | ИНАЧЕ ВЫБОР | КОГДА Номенклатура.ЕдиницаХраненияОстатков.Наименование = ""кг"" | ТОГДА 3 | ИНАЧЕ 2 | КОНЕЦ | КОНЕЦ КАК IDЕденицыИзмеренияПродукта |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод, | Штрихкоды.Владелец КАК Владелец | ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды | ГДЕ | Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура | | СГРУППИРОВАТЬ ПО | Штрихкоды.Владелец) КАК ШК | ПО Номенклатура.Ссылка = ШК.Владелец |ГДЕ | НЕ Номенклатура.ЭтоГруппа | И Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)"; Запрос.Текст = ТекстЗапроса; Если НомГруппа.Пустая() Тогда Возврат; КонецЕсли; Запрос.УстановитьПараметр("ГруппаНоменклатуры", НомГруппа); Выборка = Запрос.Выполнить().Выбрать(); sku.Очистить(); Пока Выборка.Следующий() Цикл НоваяСтрока = sku.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); КонецЦикла; КонецПроцедуры Функция СоздатьДанныеCSV(ИмяТЗ, разделитель) Экспорт Текст=""; Если ИмяТЗ = "delivery" тогда Текст = "id дистрибьютора;Код клиента ERP;Дата;Код продукта дистрибьютора;Количество;Сумма отгрузки;Сумма в закупочных ценах;Код ТА;Номер расходной накладной;Номер заказа 2R"; ТаблицаЗначений = ЭтотОбъект["delivery"].Выгрузить(, "idДистрибьютора, КодКлиентаERP, Дата, КодПродуктаДистрибьютора, Количество, СуммаОтгрузки, СуммаВЗакупочныхЦенах, КодТА, НомерРасходнойНакладной, НомерЗаказа2R"); ИначеЕсли ИмяТЗ = "stocks" тогда Текст = "id дистрибьютора;Дата;Код продукта дистрибьютора;Количество;Сумма в закупочных ценах;Код склада"; ТаблицаЗначений = ЭтотОбъект["stocks"].Выгрузить(, "idДистрибьютора, Дата,КодПродуктаДистрибьютора, Количество, СуммаВЗакупочныхЦенах, КодСклада"); ИначеЕсли ИмяТЗ = "clients" тогда Текст = "id дистрибьютора;Код клиента ERP;Название клиента;Адрес клиента"; ТаблицаЗначений = ЭтотОбъект["clients"].Выгрузить(, "idДистрибьютора,КодКлиентаERP,НазваниеКлиента,АдресКлиента"); ИначеЕсли ИмяТЗ = "ttoptions" тогда Текст = "id дистрибьютора;Код клиента ERP;Название сети у дистрибьютора;Канал ТТ у дистрибьютора;Код ИНН"; ТаблицаЗначений = ЭтотОбъект["ttoptions"].Выгрузить(, "idДистрибьютора,КодКлиентаERP,НазваниеСетиУДистрибьютора,КаналТТУДистрибьютора,КодИНН"); ИначеЕсли ИмяТЗ = "ta" тогда Текст = "id дистрибьютора;Код ТА;Имя ТА"; ТаблицаЗначений = ЭтотОбъект["ta"].Выгрузить(, "idДистрибьютора,КодТА,ИмяТА"); ИначеЕсли ИмяТЗ = "receive" тогда Текст = "id дистрибьютора;Дата;Код продукта дистрибьютора;Количество;Сумма в закупочных ценах;Номер накладной"; ТаблицаЗначений = ЭтотОбъект["receive"].Выгрузить(, "idДистрибьютора,Дата,КодПродуктаДистрибьютора,Количество,СуммаВЗакупочныхЦенах,НомерНакладной"); ИначеЕсли ИмяТЗ = "cancellations" тогда Текст = "id дистрибьютора;Дата;Код продукта дистрибьютора;Количество;Сумма в закупочных ценах;Номер документа;Номер партии"; ТаблицаЗначений = ЭтотОбъект["cancellations"].Выгрузить(, "idДистрибьютора,Дата,КодПродуктаДистрибьютора,Количество,СуммаВЗакупочныхЦенах,НомерДокумента,НомерПартии"); ИначеЕсли ИмяТЗ = "sku" тогда Текст = "id дистрибьютора;Код продукта дистрибьютора;Название продукта;Штрихкод продукта;Код продукта производителя;ID единицы измерения продукта"; ТаблицаЗначений = ЭтотОбъект["sku"].Выгрузить(, "idДистрибьютора,КодПродуктаДистрибьютора,НазваниеПродукта,ШтрихкодПродукта,КодПродуктаПроизводителя,IDЕденицыИзмеренияПродукта"); КонецЕсли; текст = текст + Символы.ПС; колвоКолонок = ТаблицаЗначений.Колонки.Количество(); для каждого запись из ТаблицаЗначений Цикл индекс = 0; Для Каждого колонка Из ТаблицаЗначений.Колонки Цикл Если индекс + 1 = колвоКолонок Тогда текст = текст + СокрЛП(запись[индекс]); Иначе текст = текст + СокрЛП(запись[индекс])+разделитель; КонецЕсли; индекс = индекс + 1; КонецЦикла; текст = текст + Символы.ПС; КонецЦикла; Если ИмяТЗ = "clients" тогда ДатаЗаписи = ТекущаяДата(); РСНабор = РегистрыСведений.КР_ЛогВыгрузкиФайлаClients.СоздатьНаборЗаписей(); РСНабор.Отбор.Дата.Установить(ДатаЗаписи); НоваяЗапись = РСНабор.Добавить(); НоваяЗапись.Дата = ДатаЗаписи; НоваяЗапись.ТекстФайла = текст; РСНабор.Записать(); КонецЕсли; Возврат текст; КонецФункции // Процедура ЗаписатьCSV(текст,имяФайла)Экспорт кодировка = КодировкаТекста.ANSI; текст = СтрЗаменить(текст," ",""); ТекстовыйФайлЗапись = Новый ЗаписьТекста(имяФайла,Кодировка); ТекстовыйФайлЗапись.ЗаписатьСтроку(СокрЛП(текст)); ТекстовыйФайлЗапись.Закрыть(); КонецПроцедуры // ЗаписатьCSV() Функция ВыгрузитьВCSV(имяФайлаCSV)Экспорт разделитель = ";"; текст = СоздатьДанныеCSV("sku",разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\sku.csv"); текст = СоздатьДанныеCSV("clients", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\clients.csv"); текст = СоздатьДанныеCSV("ta", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\ta.csv"); текст = СоздатьДанныеCSV("delivery", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\delivery.csv"); текст = СоздатьДанныеCSV("stocks", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\stocks.csv"); текст = СоздатьДанныеCSV("ttoptions", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\ttoptions.csv"); текст = СоздатьДанныеCSV("receive", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\receive.csv"); текст = СоздатьДанныеCSV("cancellations", разделитель); ЗаписатьCSV(текст,имяФайлаCSV+"\cancellations.csv"); //Сообщить("Данные выгружены!", СтатусСообщения.Информация); КонецФункции