Advertisement
Guest User

Untitled

a guest
Dec 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.06 KB | None | 0 0
  1. ПроверитьПроведениеДокумента(ДанныеИБ,ИспользованиеПКО);
  2.  
  3. // Если мы отправляем части документа как отдельный документ - не дробим дальше
  4.  
  5. Если ТипЗнч(ДанныеИБ) = Тип("Структура") Тогда
  6. Возврат;
  7. КонецЕсли;
  8.  
  9.  
  10. // Готовим данные по ТЧ - будем дробить документ по типам цен
  11. //
  12. ТекстЗапроса = "ВЫБРАТЬ
  13. | УстановкаЦенНоменклатурыТовары.ТипЦен КАК ТипЦен,
  14. | УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
  15. | УстановкаЦенНоменклатурыТовары.ХарактеристикаНоменклатуры КАК Характеристика,
  16. | УстановкаЦенНоменклатурыТовары.Цена КАК Цена,
  17. | 1 КАК КоэффициентУпаковки
  18. |ИЗ
  19. | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
  20. |ГДЕ
  21. | УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка
  22. | И УстановкаЦенНоменклатурыТовары.Цена <> 0
  23. |ИТОГИ ПО
  24. | ТипЦен";
  25.  
  26. Запрос = новый Запрос(ТекстЗапроса);
  27. Запрос.УстановитьПараметр("Ссылка",ДанныеИБ.Ссылка);
  28. РезультатЗапроса = Запрос.Выполнить();
  29. Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  30.  
  31.  
  32.  
  33. // Отключаем отправку целого документа
  34. //
  35. ИспользованиеПКО.УстановкаЦенНоменклатуры_Отправка = Ложь;
  36.  
  37. // Ищем это ПОД чтобы потом отправить документ по кусочкам
  38. //
  39. ПравилоУстановкаЦенОтправка = КомпонентыОбмена.ПравилаОбработкиДанных.Найти("УстановкаЦенНоменклатуры_Отправка", "Имя");
  40.  
  41. Если ПравилоУстановкаЦенОтправка = Неопределено Тогда
  42. Возврат;
  43. КонецЕсли;
  44.  
  45.  
  46.  
  47. // Служебные переменные для составления кусков документа
  48. СчетчикЦены = 0;
  49.  
  50. ШаблонТаблицаТоваров = Новый ТаблицаЗначений;
  51. Для Каждого КолонкаРезультата Из РезультатЗапроса.Колонки Цикл
  52. ШаблонТаблицаТоваров.Колонки.Добавить(КолонкаРезультата.Имя, КолонкаРезультата.ТипЗначения);
  53. КонецЦикла;
  54.  
  55.  
  56. // Обходим по типам цен
  57. //
  58. Пока Выборка.Следующий() Цикл
  59.  
  60. // Собираем шапку куска документа
  61.  
  62. ДанныеИБСтруктура = Новый Структура("Дата, Номер, Ответственный, Комментарий");
  63. ЗаполнитьЗначенияСвойств(ДанныеИБСтруктура, ДанныеИБ);
  64.  
  65. // Типовой код нумерации кусочков документа
  66. //
  67.  
  68. Если Выборка.Количество() = 1 Тогда
  69. ДанныеИБСтруктура.Вставить("Ссылка", ДанныеИБ.Ссылка);
  70. Иначе
  71. НомерБезПрефиксов = ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ДанныеИБ.Номер, Истина, Истина);
  72. СтандартныеПрефиксы = СтрЗаменить(ДанныеИБ.Номер, НомерБезПрефиксов, "");
  73.  
  74. ПрефиксНомера = СтандартныеПрефиксы + СтроковыеФункцииКлиентСервер.ДополнитьСтроку(Строка(СчетчикЦены), 2);
  75. НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеИБ.Номер, Истина, Истина);
  76. Если СтрДлина(ПрефиксНомера + НомерНаПечать) <= 11 Тогда
  77. ДанныеИБСтруктура.Номер = ПрефиксНомера
  78. + СтроковыеФункцииКлиентСервер.ДополнитьСтроку(НомерНаПечать, 11 - СтрДлина(ПрефиксНомера));
  79. КонецЕсли;
  80. КонецЕсли;
  81.  
  82. // Выгружаем цены в документ-кусок
  83. //
  84.  
  85. ВыборкаДетали = Выборка.Выбрать();
  86. ТаблицаТоваров = ШаблонТаблицаТоваров.Скопировать();
  87.  
  88. Пока ВыборкаДетали.Следующий() Цикл
  89. СтрокаТовары = ТаблицаТоваров.Добавить();
  90. ЗаполнитьЗначенияСвойств(СтрокаТовары, ВыборкаДетали);
  91. КонецЦикла;
  92.  
  93. ДанныеИБСтруктура.Вставить("ТипЦен", Выборка.ТипЦен);
  94. ДанныеИБСтруктура.Вставить("Товары", ТаблицаТоваров);
  95.  
  96. // Выгружаем кусок документа как отдельный документ
  97. //
  98.  
  99. ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(КомпонентыОбмена,
  100. ДанныеИБСтруктура,
  101. ПравилоУстановкаЦенОтправка);
  102.  
  103. СчетчикЦены = СчетчикЦены + 1;
  104.  
  105.  
  106. КонецЦикла;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement