Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ПроверитьПроведениеДокумента(ДанныеИБ,ИспользованиеПКО);
- // Если мы отправляем части документа как отдельный документ - не дробим дальше
- Если ТипЗнч(ДанныеИБ) = Тип("Структура") Тогда
- Возврат;
- КонецЕсли;
- // Готовим данные по ТЧ - будем дробить документ по типам цен
- //
- ТекстЗапроса = "ВЫБРАТЬ
- | УстановкаЦенНоменклатурыТовары.ТипЦен КАК ТипЦен,
- | УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
- | УстановкаЦенНоменклатурыТовары.ХарактеристикаНоменклатуры КАК Характеристика,
- | УстановкаЦенНоменклатурыТовары.Цена КАК Цена,
- | 1 КАК КоэффициентУпаковки
- |ИЗ
- | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
- |ГДЕ
- | УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка
- | И УстановкаЦенНоменклатурыТовары.Цена <> 0
- |ИТОГИ ПО
- | ТипЦен";
- Запрос = новый Запрос(ТекстЗапроса);
- Запрос.УстановитьПараметр("Ссылка",ДанныеИБ.Ссылка);
- РезультатЗапроса = Запрос.Выполнить();
- Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- // Отключаем отправку целого документа
- //
- ИспользованиеПКО.УстановкаЦенНоменклатуры_Отправка = Ложь;
- // Ищем это ПОД чтобы потом отправить документ по кусочкам
- //
- ПравилоУстановкаЦенОтправка = КомпонентыОбмена.ПравилаОбработкиДанных.Найти("УстановкаЦенНоменклатуры_Отправка", "Имя");
- Если ПравилоУстановкаЦенОтправка = Неопределено Тогда
- Возврат;
- КонецЕсли;
- // Служебные переменные для составления кусков документа
- СчетчикЦены = 0;
- ШаблонТаблицаТоваров = Новый ТаблицаЗначений;
- Для Каждого КолонкаРезультата Из РезультатЗапроса.Колонки Цикл
- ШаблонТаблицаТоваров.Колонки.Добавить(КолонкаРезультата.Имя, КолонкаРезультата.ТипЗначения);
- КонецЦикла;
- // Обходим по типам цен
- //
- Пока Выборка.Следующий() Цикл
- // Собираем шапку куска документа
- ДанныеИБСтруктура = Новый Структура("Дата, Номер, Ответственный, Комментарий");
- ЗаполнитьЗначенияСвойств(ДанныеИБСтруктура, ДанныеИБ);
- // Типовой код нумерации кусочков документа
- //
- Если Выборка.Количество() = 1 Тогда
- ДанныеИБСтруктура.Вставить("Ссылка", ДанныеИБ.Ссылка);
- Иначе
- НомерБезПрефиксов = ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ДанныеИБ.Номер, Истина, Истина);
- СтандартныеПрефиксы = СтрЗаменить(ДанныеИБ.Номер, НомерБезПрефиксов, "");
- ПрефиксНомера = СтандартныеПрефиксы + СтроковыеФункцииКлиентСервер.ДополнитьСтроку(Строка(СчетчикЦены), 2);
- НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеИБ.Номер, Истина, Истина);
- Если СтрДлина(ПрефиксНомера + НомерНаПечать) <= 11 Тогда
- ДанныеИБСтруктура.Номер = ПрефиксНомера
- + СтроковыеФункцииКлиентСервер.ДополнитьСтроку(НомерНаПечать, 11 - СтрДлина(ПрефиксНомера));
- КонецЕсли;
- КонецЕсли;
- // Выгружаем цены в документ-кусок
- //
- ВыборкаДетали = Выборка.Выбрать();
- ТаблицаТоваров = ШаблонТаблицаТоваров.Скопировать();
- Пока ВыборкаДетали.Следующий() Цикл
- СтрокаТовары = ТаблицаТоваров.Добавить();
- ЗаполнитьЗначенияСвойств(СтрокаТовары, ВыборкаДетали);
- КонецЦикла;
- ДанныеИБСтруктура.Вставить("ТипЦен", Выборка.ТипЦен);
- ДанныеИБСтруктура.Вставить("Товары", ТаблицаТоваров);
- // Выгружаем кусок документа как отдельный документ
- //
- ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(КомпонентыОбмена,
- ДанныеИБСтруктура,
- ПравилоУстановкаЦенОтправка);
- СчетчикЦены = СчетчикЦены + 1;
- КонецЦикла;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement