Guest User

Untitled

a guest
Dec 2nd, 2016
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 50.45 KB | None | 0 0
  1. Функция СформироватьЗаданиеНаОтборРазмещениеТовара(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, КомплектыПечати = Неопределено) Экспорт
  2.  
  3. УстановитьПривилегированныйРежим(Истина);
  4.  
  5. ТабличныйДокумент = Новый ТабличныйДокумент;
  6. ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_" + ПараметрыПечати.ИмяФормы;
  7. НомерТипаДокумента = 0;
  8.  
  9. Если ТипЗнч(МассивОбъектов) = Тип("Соответствие") Тогда
  10. СтруктураТипов = МассивОбъектов;
  11. Иначе
  12. СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
  13. КонецЕсли;
  14.  
  15. Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл
  16.  
  17. НомерТипаДокумента = НомерТипаДокумента + 1;
  18. Если НомерТипаДокумента > 1 Тогда
  19. ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
  20. КонецЕсли;
  21.  
  22. КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
  23. ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
  24. ВыводитьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры")
  25. И Не(ПараметрыПечати.Свойство("БезДопКолонки"));
  26. ВыводитьПоУчету = ВыводитьУпаковки;
  27. ЗаданиеНаДобор = ПараметрыПечати.ИмяФормы = "ЗаданиеНаДобор";
  28.  
  29. //Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьЗаданияНаОтборРазмещениеТоваров.ПФ_MXL_ЗаданиеНаОтборРазмещениеТовара");
  30. Макет = ПолучитьМакет("ПФ_MXL_ЗаданиеНаОтборРазмещениеТовара1");
  31. ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
  32.  
  33. ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
  34. ОбластьОснование = Макет.ПолучитьОбласть("Основание");
  35. ОбластьЗаданиеНаПеревозку = Макет.ПолучитьОбласть("ЗаданиеНаПеревозку");
  36.  
  37. // Области макета для склада со справочным использованием ячеек, с использованием упаковок, с кодами
  38. ОбластьШапкаТаблицыОснова = Макет.ПолучитьОбласть("ШапкаТаблицыОснова");
  39. ОбластьРабочийУчастокОснова = Макет.ПолучитьОбласть("РабочийУчастокОснова");
  40. ОбластьСтрокаТаблицыОснова = Макет.ПолучитьОбласть("СтрокаТаблицыОснова");
  41. ОбластьПодвалТаблицыОснова = Макет.ПолучитьОбласть("ПодвалТаблицыОснова");
  42.  
  43. ОбластьШапкаТаблицыОснова.Параметры.ИмяКолонкиКодов = КолонкаКодов;
  44.  
  45. // Области макета для склада со справочным использованием ячеек, без использования упаковок, с кодами
  46. ОбластьШапкаТаблицыБезУпаковок = Макет.ПолучитьОбласть("ШапкаТаблицыБезУпаковок");
  47. ОбластьРабочийУчастокБезУпаковок = Макет.ПолучитьОбласть("РабочийУчастокБезУпаковок");
  48. ОбластьСтрокаТаблицыБезУпаковок = Макет.ПолучитьОбласть("СтрокаТаблицыБезУпаковок");
  49. ОбластьПодвалТаблицыБезУпаковок = Макет.ПолучитьОбласть("ПодвалТаблицыБезУпаковок");
  50.  
  51. ОбластьШапкаТаблицыБезУпаковок.Параметры.ИмяКолонкиКодов = КолонкаКодов;
  52.  
  53. // Области макета для склада без справочного использования ячеек, с использованием упаковок, с кодами
  54. ОбластьШапкаТаблицыБезЯчеек = Макет.ПолучитьОбласть("ШапкаТаблицыБезЯчеек");
  55. ОбластьРабочийУчастокБезЯчеек = Макет.ПолучитьОбласть("РабочийУчастокБезЯчеек");
  56. ОбластьСтрокаТаблицыБезЯчеек = Макет.ПолучитьОбласть("СтрокаТаблицыБезЯчеек");
  57. ОбластьПодвалТаблицыБезЯчеек = Макет.ПолучитьОбласть("ПодвалТаблицыБезЯчеек");
  58.  
  59. ОбластьШапкаТаблицыБезЯчеек.Параметры.ИмяКолонкиКодов = КолонкаКодов;
  60.  
  61. // Области макета для склада без справочного использования ячеек, без использования упаковок, с кодами
  62. ОбластьШапкаТаблицыБезЯчеекБезУпаковок = Макет.ПолучитьОбласть("ШапкаТаблицыБезЯчеекБезУпаковок");
  63. ОбластьРабочийУчастокБезЯчеекБезУпаковок = Макет.ПолучитьОбласть("РабочийУчастокБезЯчеекБезУпаковок");
  64. ОбластьСтрокаТаблицыБезЯчеекБезУпаковок = Макет.ПолучитьОбласть("СтрокаТаблицыБезЯчеекБезУпаковок");
  65. ОбластьПодвалТаблицыБезЯчеекБезУпаковок = Макет.ПолучитьОбласть("ПодвалТаблицыБезЯчеекБезУпаковок");
  66.  
  67. ОбластьШапкаТаблицыБезЯчеекБезУпаковок.Параметры.ИмяКолонкиКодов = КолонкаКодов;
  68.  
  69. // Области макета для склада со справочным использованием ячеек, с использованием упаковок, без кодов
  70. ОбластьШапкаТаблицыБезКодов = Макет.ПолучитьОбласть("ШапкаТаблицыБезКодов");
  71. ОбластьРабочийУчастокБезКодов = Макет.ПолучитьОбласть("РабочийУчастокБезКодов");
  72. ОбластьСтрокаТаблицыБезКодов = Макет.ПолучитьОбласть("СтрокаТаблицыБезКодов");
  73. ОбластьПодвалТаблицыБезКодов = Макет.ПолучитьОбласть("ПодвалТаблицыБезКодов");
  74.  
  75. // Области макета для склада со справочным использованием ячеек, без использования упаковок, без кодов
  76. ОбластьШапкаТаблицыБезУпаковокБезКодов = Макет.ПолучитьОбласть("ШапкаТаблицыБезУпаковокБезКодов");
  77. ОбластьРабочийУчастокБезУпаковокБезКодов = Макет.ПолучитьОбласть("РабочийУчастокБезУпаковокБезКодов");
  78. ОбластьСтрокаТаблицыБезУпаковокБезКодов = Макет.ПолучитьОбласть("СтрокаТаблицыБезУпаковокБезКодов");
  79. ОбластьПодвалТаблицыБезУпаковокБезКодов = Макет.ПолучитьОбласть("ПодвалТаблицыБезУпаковокБезКодов");
  80.  
  81. // Области макета для склада без справочного использования ячеек, с использованием упаковок, без кодов
  82. ОбластьШапкаТаблицыБезЯчеекБезКодов = Макет.ПолучитьОбласть("ШапкаТаблицыБезЯчеекБезКодов");
  83. ОбластьРабочийУчастокБезЯчеекБезКодов = Макет.ПолучитьОбласть("РабочийУчастокБезЯчеекБезКодов");
  84. ОбластьСтрокаТаблицыБезЯчеекБезКодов = Макет.ПолучитьОбласть("СтрокаТаблицыБезЯчеекБезКодов");
  85. ОбластьПодвалТаблицыБезЯчеекБезКодов = Макет.ПолучитьОбласть("ПодвалТаблицыБезЯчеекБезКодов");
  86.  
  87. // Области макета для склада без справочного использования ячеек, без использования упаковок, без кодов
  88. ОбластьШапкаТаблицыБезЯчеекБезУпаковокБезКодов = Макет.ПолучитьОбласть("ШапкаТаблицыБезЯчеекБезУпаковокБезКодов");
  89. ОбластьРабочийУчастокБезЯчеекБезУпаковокБезКодов = Макет.ПолучитьОбласть("РабочийУчастокБезЯчеекБезУпаковокБезКодов");
  90. ОбластьСтрокаТаблицыБезЯчеекБезУпаковокБезКодов = Макет.ПолучитьОбласть("СтрокаТаблицыБезЯчеекБезУпаковокБезКодов");
  91. ОбластьПодвалТаблицыБезЯчеекБезУпаковокБезКодов = Макет.ПолучитьОбласть("ПодвалТаблицыБезЯчеекБезУпаковокБезКодов");
  92.  
  93. ОбластьИсполнитель = Макет.ПолучитьОбласть("Исполнитель");
  94.  
  95. ЭтоЗаданиеНаРазмещение = Неопределено;
  96. ПервыйДокумент = Истина;
  97.  
  98. Если ПараметрыПечати.ИмяФормы = "ЗаданиеНаПересчет" Тогда
  99. ОбластьШапкаТаблицыОснова.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(По учету)'");
  100. ОбластьШапкаТаблицыБезКодов.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(По учету)'");
  101. ОбластьШапкаТаблицыБезЯчеек.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(По учету)'");
  102. ОбластьШапкаТаблицыБезЯчеекБезКодов.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(По учету)'");
  103. ОбластьШапкаТаблицыОснова.Параметры.НадписьКоличество = НСтр("ru='(Факт)'");
  104. ОбластьШапкаТаблицыБезКодов.Параметры.НадписьКоличество = НСтр("ru='(Факт)'");
  105. ОбластьШапкаТаблицыБезЯчеек.Параметры.НадписьКоличество = НСтр("ru='(Факт)'");
  106. ОбластьШапкаТаблицыБезЯчеекБезКодов.Параметры.НадписьКоличество = НСтр("ru='(Факт)'");
  107. НазваниеФормы = НСтр("ru = 'Задание на пересчет товаров'");
  108. ИначеЕсли ПараметрыПечати.ИмяФормы = "ЗаданиеНаРазмещение" Тогда
  109. Если СтруктураОбъектов.Ключ = "Документ.РасходныйОрдерНаТовары"
  110. ИЛИ СтруктураОбъектов.Ключ = "Документ.ПорчаТоваров"
  111. ИЛИ СтруктураОбъектов.Ключ = "Документ.ПересортицаТоваров"
  112. ИЛИ СтруктураОбъектов.Ключ = "Документ.СписаниеНедостачТоваров"
  113. ИЛИ СтруктураОбъектов.Ключ = "Документ.ИнвентаризационнаяОпись" Тогда
  114. Для Каждого РасходныйОрдер Из СтруктураОбъектов.Значение Цикл
  115. ТекстСообщения = НСтр("ru = 'Печать задания на размещение для документа ""%Документ%"" не предусмотрена.'");
  116. ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Документ%", РасходныйОрдер);
  117. ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
  118. КонецЦикла;
  119. Продолжить;
  120. КонецЕсли;
  121. ЭтоЗаданиеНаРазмещение = Истина;
  122. НазваниеФормы = НСтр("ru = 'Задание на размещение товаров'");
  123. ОбластьШапкаТаблицыОснова.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  124. ОбластьШапкаТаблицыБезКодов.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  125. ОбластьШапкаТаблицыБезЯчеек.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  126. ОбластьШапкаТаблицыБезЯчеекБезКодов.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  127.  
  128. ИначеЕсли ПараметрыПечати.ИмяФормы = "ЗаданиеНаОтбор" Тогда
  129. ЭтоЗаданиеНаРазмещение = Ложь;
  130. НазваниеФормы = НСтр("ru = 'Задание на отбор товаров'");
  131. ОбластьШапкаТаблицыОснова.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  132. ОбластьШапкаТаблицыБезКодов.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  133. ОбластьШапкаТаблицыБезЯчеек.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  134. ОбластьШапкаТаблицыБезЯчеекБезКодов.Параметры.НадписьКоличествоУпаковки = НСтр("ru='(упаковок)'");
  135. КонецЕсли;
  136.  
  137. Если ЗаданиеНаДобор Тогда
  138. ЭтоЗаданиеНаРазмещение = Ложь;
  139. НазваниеФормы = НСтр("ru = 'Задание на добор товаров'");
  140. ОбластьШапкаТаблицыОснова.Параметры.НадписьКоличество = НСтр("ru='(упаковок)'");
  141. ОбластьШапкаТаблицыБезКодов.Параметры.НадписьКоличество = НСтр("ru='(упаковок)'");
  142. ОбластьШапкаТаблицыБезЯчеек.Параметры.НадписьКоличество = НСтр("ru='(упаковок)'");
  143. ОбластьШапкаТаблицыБезЯчеекБезКодов.Параметры.НадписьКоличество = НСтр("ru='(упаковок)'");
  144. ДанныеДляПечати =
  145. Обработки.ПроверкаКоличестваТоваровВДокументе.ПолучитьДанныеДляПечатнойФормыЗаданиеНаДоборТоваров(ПараметрыПечати,
  146. ПараметрыПечати.Ордер);
  147. Иначе
  148. МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
  149. ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыОтборРазмещениеТоваров(ПараметрыПечати,
  150. СтруктураОбъектов.Значение);
  151. КонецЕсли;
  152.  
  153. ДанныеПоШапке = ДанныеДляПечати.РезультатПоШапке;
  154. ДанныеПоТабличнойЧасти = ДанныеДляПечати.РезультатПоТабличнойЧасти;
  155. ДанныеПоУпаковкам = ДанныеДляПечати.РезультатПоУпаковкам;
  156. ДанныеПоСериям = ДанныеДляПечати.РезультатПоСериям;
  157.  
  158. ДанныеПоРаспоряжениям = Неопределено;
  159. ДанныеДляПечати.Свойство("РезультатПоРаспоряжениям", ДанныеПоРаспоряжениям);
  160.  
  161. ЕстьПолеИспользоватьСерииНоменклатуры = ДанныеПоШапке.Колонки.Найти("ИспользоватьСерииНоменклатуры") <> Неопределено;
  162.  
  163. ВыборкаПоШапке = ДанныеПоШапке.Выбрать();
  164. ВыборкаПоСсылкам = ДанныеПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  165. ВыборкаПоСериям = ДанныеПоСериям.Выбрать();
  166.  
  167. Если ПараметрыПечати.ИмяФормы <> "ЗаданиеНаПересчет" И СтруктураОбъектов.Ключ <> "Документ.ПересчетТоваров" Тогда
  168. ВыборкаПоУпаковкам = ДанныеПоУпаковкам.Выбрать();
  169. КонецЕсли;
  170.  
  171. Если СтруктураОбъектов.Ключ = "Документ.РасходныйОрдерНаТовары" Тогда
  172. ВыборкаПоРаспоряжениям = ДанныеПоРаспоряжениям.Выбрать();
  173. КонецЕсли;
  174.  
  175. ТекущаяСсылка = Неопределено;
  176.  
  177. Пока ВыборкаПоШапке.Следующий() Цикл
  178.  
  179. ТекстСообщения = "";
  180.  
  181. Если Не ЗначениеЗаполнено(ВыборкаПоШапке.СкладПредставление) Тогда
  182. ТекстСообщения = НСтр("ru='Невозможно напечатать %НазваниеФормы% для ""%Документ%"",
  183. |т.к. не заполнено поле ""Склад"".'");
  184.  
  185. ИначеЕсли ВыборкаПоШапке.НарушенаОрдернаяСхема Тогда
  186. ТекстСообщения = НСтр("ru='Невозможно напечатать %НазваниеФормы% для ""%Документ%"",
  187. |т.к. на складе ""%Склад%"" используется ордерная схема, поэтому печать задания должна вестись из ордера.'");
  188.  
  189. ИначеЕсли (ТипЗнч(ВыборкаПоШапке.Ссылка) = Тип("ДокументСсылка.ПриходныйОрдерНаТовары")
  190. ИЛИ ТипЗнч(ВыборкаПоШапке.Ссылка) = Тип("ДокументСсылка.ОрдерНаПеремещениеТоваров")
  191. ИЛИ ТипЗнч(ВыборкаПоШапке.Ссылка) = Тип("ДокументСсылка.РасходныйОрдерНаТовары"))
  192. И ВыборкаПоШапке.ИспользуетсяАдресноеХранение Тогда
  193.  
  194. ТекстСообщения = НСтр("ru='Невозможно напечатать %НазваниеФормы% для ""%Документ%"",
  195. |т.к. для склада (помещения) с ячейками, используемыми для хранения остатков номенклатуры, эта печатная форма не предусмотрена.
  196. |Печать задания на отбор (размещение) возможна из документа ""Отбор (размещение) товаров"".'");
  197.  
  198. ИначеЕсли ТипЗнч(ВыборкаПоШапке.Ссылка) = Тип("ДокументСсылка.ПересчетТоваров")
  199. И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВыборкаПоШапке.Ссылка, "Статус")
  200. = Перечисления.СтатусыПересчетовТоваров.Подготовлено Тогда
  201. ТекстСообщения = НСтр("ru='Невозможно напечатать ""%НазваниеФормы%"" для ""%Документ%"",
  202. |в статусе ""%СтатусПересчета%"".'");
  203. ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СтатусПересчета%", Перечисления.СтатусыПересчетовТоваров.Подготовлено);
  204. ИначеЕсли ТекущаяСсылка <> ВыборкаПоШапке.Ссылка
  205. И НЕ ВыборкаПоСсылкам.НайтиСледующий(Новый Структура("Ссылка", ВыборкаПоШапке.Ссылка)) Тогда
  206. ТекстСообщения = НСтр("ru='Невозможно напечатать ""%НазваниеФормы%"" для ""%Документ%"",
  207. |т.к. в табличной части отсутствует отгружаемая номенклатура с типом ""Товар"".'");
  208. ИначеЕсли ТекущаяСсылка <> ВыборкаПоШапке.Ссылка Тогда
  209. ТекущаяСсылка = ВыборкаПоШапке.Ссылка;
  210. КонецЕсли;
  211.  
  212. Если ЗначениеЗаполнено(ТекстСообщения) Тогда
  213. ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Документ%", ВыборкаПоШапке.СсылкаПредставление);
  214. ТекстСообщения = СтрЗаменить(ТекстСообщения,
  215. "%Склад%",
  216. СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоШапке.СкладПредставление,
  217. ВыборкаПоШапке.ПомещениеПредставление));
  218. ТекстСообщения = СтрЗаменить(ТекстСообщения,"%НазваниеФормы%",НазваниеФормы);
  219. ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
  220. Продолжить;
  221. КонецЕсли;
  222.  
  223. ИспользоватьСерии = Ложь;
  224.  
  225. Если ЕстьПолеИспользоватьСерииНоменклатуры Тогда
  226. ИспользоватьСерии = ВыборкаПоШапке.ИспользоватьСерииНоменклатуры;
  227. КонецЕсли;
  228.  
  229. ИспользуетсяСправочноеХранение = ВыборкаПоШапке.ИспользуетсяСправочноеХранение;
  230.  
  231. ВыборкаПоСкладам = ВыборкаПоСсылкам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  232. Пока ВыборкаПоСкладам.НайтиСледующий(Новый Структура("Склад",ВыборкаПоШапке.Склад)) Цикл
  233. ВыборкаРабочиеУчастки = ВыборкаПоСкладам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  234.  
  235. Если Не ПервыйДокумент Тогда
  236. ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
  237. КонецЕсли;
  238.  
  239. Если ДанныеПоШапке.Колонки.Найти("ВыводитьПоУчету") <> Неопределено И ПараметрыПечати.ИмяФормы = "ЗаданиеНаПересчет" Тогда
  240. ВыводитьПоУчету = ВыборкаПоШапке.ВыводитьПоУчету;
  241. КонецЕсли;
  242.  
  243. Если ВыводитьКоды И ИспользуетсяСправочноеХранение И (ВыводитьУпаковки ИЛИ ВыводитьПоУчету) Тогда
  244. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыОснова;
  245. ОбластьРабочийУчасток = ОбластьРабочийУчастокОснова;
  246. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыОснова;
  247. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыОснова;
  248. ИначеЕсли ВыводитьКоды И ИспользуетсяСправочноеХранение И НЕ (ВыводитьУпаковки И ВыводитьПоУчету) Тогда
  249. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезУпаковок;
  250. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезУпаковок;
  251. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезУпаковок;
  252. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезУпаковок;
  253. ИначеЕсли ВыводитьКоды И НЕ ИспользуетсяСправочноеХранение И (ВыводитьУпаковки ИЛИ ВыводитьПоУчету) Тогда
  254. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезЯчеек;
  255. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезЯчеек;
  256. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезЯчеек;
  257. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезЯчеек;
  258. ИначеЕсли ВыводитьКоды И НЕ ИспользуетсяСправочноеХранение И НЕ (ВыводитьУпаковки И ВыводитьПоУчету) Тогда
  259. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезЯчеекБезУпаковок;
  260. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезЯчеекБезУпаковок;
  261. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезЯчеекБезУпаковок;
  262. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезЯчеекБезУпаковок;
  263. ИначеЕсли НЕ ВыводитьКоды И ИспользуетсяСправочноеХранение И (ВыводитьУпаковки ИЛИ ВыводитьПоУчету) Тогда
  264. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезКодов;
  265. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезКодов;
  266. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезКодов;
  267. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезКодов;
  268. ИначеЕсли НЕ ВыводитьКоды И ИспользуетсяСправочноеХранение И НЕ (ВыводитьУпаковки И ВыводитьПоУчету) Тогда
  269. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезУпаковокБезКодов;
  270. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезУпаковокБезКодов;
  271. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезУпаковокБезКодов;
  272. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезУпаковокБезКодов;
  273. ИначеЕсли НЕ ВыводитьКоды И НЕ ИспользуетсяСправочноеХранение И (ВыводитьУпаковки И ВыводитьПоУчету) Тогда
  274. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезЯчеекБезКодов;
  275. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезЯчеекБезКодов;
  276. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезЯчеекБезКодов;
  277. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезЯчеекБезКодов;
  278. ИначеЕсли НЕ ВыводитьКоды И НЕ ИспользуетсяСправочноеХранение И НЕ (ВыводитьУпаковки И ВыводитьПоУчету) Тогда
  279. ОбластьШапкаТаблицы = ОбластьШапкаТаблицыБезЯчеекБезУпаковокБезКодов;
  280. ОбластьРабочийУчасток = ОбластьРабочийУчастокБезЯчеекБезУпаковокБезКодов;
  281. ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыБезЯчеекБезУпаковокБезКодов;
  282. ОбластьПодвалТаблицы = ОбластьПодвалТаблицыБезЯчеекБезУпаковокБезКодов;
  283. КонецЕсли;
  284.  
  285. ПервыйДокумент = Ложь;
  286. НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
  287. ПредставлениеСклада = СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоШапке.СкладПредставление,
  288. ВыборкаПоШапке.ПомещениеПредставление);
  289.  
  290. РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Представление");
  291. ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоШапке);
  292. РеквизитыДокумента.Представление = ВыборкаПоШапке.СсылкаПредставление;
  293.  
  294. ПредставлениеРаспоряжения = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента,, Истина);
  295.  
  296. ОбластьЗаголовок.Параметры.ТекстЗаголовка = НазваниеФормы;
  297. ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовок, ВыборкаПоШапке.Ссылка);
  298.  
  299. ТабличныйДокумент.Вывести(ОбластьЗаголовок);
  300.  
  301. ОбластьШапка.Параметры.ПредставлениеСклада = ПредставлениеСклада;
  302. ОбластьШапка.Параметры.ПредставлениеРаспоряжения = ПредставлениеРаспоряжения;
  303.  
  304. ТабличныйДокумент.Вывести(ОбластьШапка);
  305.  
  306. Если ТипЗнч(ВыборкаПоШапке.Ссылка) = Тип("ДокументСсылка.РасходныйОрдерНаТовары") Тогда
  307.  
  308. Счетчик = 0;
  309. ПредставлениеОснований = "";
  310. ПервоеРаспоряжение = Истина;
  311. РеквизитыДокумента = Новый Структура("Дата, Номер, Префикс, Представление");
  312.  
  313. Пока ВыборкаПоРаспоряжениям.НайтиСледующий(Новый Структура("Ссылка", ВыборкаПоШапке.Ссылка)) Цикл
  314.  
  315. РеквизитыДокумента.Дата = ВыборкаПоРаспоряжениям.ОснованиеДата;
  316. РеквизитыДокумента.Номер = ВыборкаПоРаспоряжениям.ОснованиеНомер;
  317. РеквизитыДокумента.Префикс = "";
  318. РеквизитыДокумента.Представление = ВыборкаПоРаспоряжениям.ОснованиеПредставление;
  319.  
  320. ПредставлениеОснования = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента);
  321.  
  322. Если Не ПервоеРаспоряжение Тогда
  323. ПредставлениеОснований = ПредставлениеОснований + ", ";
  324. КонецЕсли;
  325.  
  326. ПервоеРаспоряжение = Ложь;
  327.  
  328. ПредставлениеОснований = ПредставлениеОснований + ПредставлениеОснования;
  329.  
  330. Счетчик = Счетчик + 1;
  331.  
  332. КонецЦикла;
  333.  
  334. ЗаголовокОснования = "";
  335. Если Счетчик > 1 Тогда
  336. ЗаголовокОснования = НСтр("ru = 'Основания:'");
  337. Иначе
  338. ЗаголовокОснования = НСтр("ru = 'Основание:'");
  339. КонецЕсли;
  340.  
  341. ОбластьОснование.Параметры.ПредставлениеОснований = ПредставлениеОснований;
  342. ОбластьОснование.Параметры.Основания = ЗаголовокОснования;
  343.  
  344. ТабличныйДокумент.Вывести(ОбластьОснование);
  345.  
  346. Если ВыборкаПоШапке.ОтгрузкаПоЗаданиюНаПеревозку Тогда
  347.  
  348. РеквизитыДокумента.Дата = ВыборкаПоШапке.ЗаданиеНаПеревозкуДата;
  349. РеквизитыДокумента.Номер = ВыборкаПоШапке.ЗаданиеНаПеревозкуНомер;
  350. РеквизитыДокумента.Префикс = "";
  351. РеквизитыДокумента.Представление = ВыборкаПоШапке.ЗаданиеНаПеревозкуПредставление;
  352.  
  353. ОбластьЗаданиеНаПеревозку.Параметры.ЗаданиеНаПеревозкуПредставление =
  354. ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента);
  355. ОбластьЗаданиеНаПеревозку.Параметры.ПорядокДоставки = ВыборкаПоШапке.ПорядокДоставки;
  356.  
  357. ТабличныйДокумент.Вывести(ОбластьЗаданиеНаПеревозку);
  358.  
  359. КонецЕсли;
  360.  
  361. КонецЕсли;
  362.  
  363. Если ПараметрыПечати.ИмяФормы = "ЗаданиеНаПересчет" Тогда
  364. ОбластьИсполнитель.Параметры.ИсполнительПредставление = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ВыборкаПоШапке.ИсполнительПредставление, РеквизитыДокумента.Дата);
  365. ТабличныйДокумент.Вывести(ОбластьИсполнитель);
  366. КонецЕсли;
  367.  
  368. ВыводитьУчастки = Ложь;
  369. ВыводитьУчастки = (ВыборкаПоШапке.ИспользованиеРабочихУчастков = Перечисления.ИспользованиеСкладскихРабочихУчастков.Использовать);
  370.  
  371. ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
  372.  
  373. НомерСтроки = 1;
  374.  
  375. Пока ВыборкаРабочиеУчастки.Следующий() Цикл
  376.  
  377. Если ВыводитьУчастки И ЗначениеЗаполнено(ВыборкаРабочиеУчастки.РабочийУчасток) Тогда
  378. ОбластьРабочийУчасток.Параметры.Заполнить(ВыборкаРабочиеУчастки);
  379. ТабличныйДокумент.Вывести(ОбластьРабочийУчасток);
  380. КонецЕсли;
  381.  
  382. ВыборкаНомерСтроки = ВыборкаРабочиеУчастки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  383.  
  384. Пока ВыборкаНомерСтроки.Следующий() Цикл
  385.  
  386. ВыборкаПоТовару = ВыборкаНомерСтроки.Выбрать();
  387.  
  388. Пока ВыборкаПоТовару.Следующий() Цикл
  389.  
  390. Если ВыборкаПоТовару.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
  391.  
  392. ОбластьСтрокаТаблицы.Параметры.Заполнить(ВыборкаПоТовару);
  393. ОбластьСтрокаТаблицы.Параметры.НомерСтроки = НомерСтроки;
  394. НомерСтроки = НомерСтроки + 1;
  395.  
  396. Если ВыводитьКоды Тогда
  397. ОбластьСтрокаТаблицы.Параметры.Артикул = ВыборкаПоТовару[КолонкаКодов];
  398. КонецЕсли;
  399.  
  400. СтруктураПоиска = Новый Структура("Ссылка, Склад, РабочийУчасток, Номенклатура, Характеристика");
  401. ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаПоТовару);
  402.  
  403. СтрокаСерий = "";
  404. Пока ВыборкаПоСериям.НайтиСледующий(СтруктураПоиска) Цикл
  405. СтрокаСерий = СтрокаСерий + ВыборкаПоСериям.ПредставлениеСерии + ", ";
  406. КонецЦикла;
  407.  
  408. Если СтрДлина(СтрокаСерий) <> 0 Тогда
  409. СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
  410. КонецЕсли;
  411.  
  412. ОбластьСтрокаТаблицы.Параметры.Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
  413. ВыборкаПоТовару.ПредставлениеНоменклатуры,
  414. ВыборкаПоТовару.ПредставлениеХарактеристики,
  415. , // Упаковка
  416. СтрокаСерий);
  417.  
  418. Если ИспользуетсяСправочноеХранение Тогда
  419.  
  420. ВыборкаПоТовару.Сбросить();
  421.  
  422. ДопЯчейки = "";
  423. Пока ВыборкаПоТовару.Следующий() Цикл
  424. ДопЯчейки = ДопЯчейки + ВыборкаПоТовару.ЯчейкаПредставление + Символы.ПС;
  425. КонецЦикла;
  426. ОбластьСтрокаТаблицы.Параметры.ДополнительныеЯчейки = ДопЯчейки;
  427. КонецЕсли;
  428.  
  429. ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
  430.  
  431. Иначе
  432.  
  433. ТекНоменклатура = Неопределено;
  434. ТекХарактеристика = Неопределено;
  435. ТекСерия = Неопределено;
  436. Количество = Неопределено;
  437.  
  438. Если ВыборкаПоТовару.Номенклатура <> ТекНоменклатура
  439. И ВыборкаПоТовару.Характеристика <> ТекХарактеристика
  440. И ВыборкаПоТовару.Серия <> ТекСерия Тогда
  441.  
  442. Количество = ВыборкаПоТовару.Количество;
  443.  
  444. КонецЕсли;
  445.  
  446. ОбластьСтрокаТаблицы.Параметры.Заполнить(ВыборкаПоТовару);
  447. ОбластьСтрокаТаблицы.Параметры.НомерСтроки = НомерСтроки;
  448. НомерСтроки = НомерСтроки + 1;
  449.  
  450. Если ВыводитьКоды Тогда
  451. ОбластьСтрокаТаблицы.Параметры.Артикул = ВыборкаПоТовару[КолонкаКодов];
  452. КонецЕсли;
  453.  
  454. ОбластьСтрокаТаблицы.Параметры.Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
  455. ?(ЗначениеЗаполнено(ВыборкаПоТовару.Номенклатура),
  456. ВыборкаПоТовару.ПредставлениеНоменклатуры,
  457. НСтр("ru = '<пустая ячейка>'")),
  458. ВыборкаПоТовару.ПредставлениеХарактеристики,
  459. , // Упаковка
  460. ВыборкаПоТовару.ПредставлениеСерии);
  461.  
  462. СтрокаКоличестваУпаковок = "";
  463. СтрокаИменованийУпаковок = "";
  464.  
  465. ПредставлениеЕдининицыИзмеренияУпаковки = ВыборкаПоТовару.ПредставлениеБазовойЕдиницыИзмерения;
  466.  
  467. Если ИспользуетсяСправочноеХранение Тогда
  468.  
  469. ДопЯчейки = ВыборкаПоТовару.ЯчейкаПредставление + Символы.ПС;
  470. СтуктураПоискаТовара = Новый Структура;
  471. СтуктураПоискаТовара.Вставить("Номенклатура", ВыборкаПоТовару.Номенклатура);
  472. СтуктураПоискаТовара.Вставить("Характеристика", ВыборкаПоТовару.Характеристика);
  473. СтуктураПоискаТовара.Вставить("Серия", ВыборкаПоТовару.Серия);
  474.  
  475. Пока ВыборкаПоТовару.НайтиСледующий(СтуктураПоискаТовара) Цикл
  476. ДопЯчейки = ДопЯчейки + ВыборкаПоТовару.ЯчейкаПредставление + Символы.ПС;
  477. КонецЦикла;
  478. ОбластьСтрокаТаблицы.Параметры.ДополнительныеЯчейки = ДопЯчейки;
  479. КонецЕсли;
  480.  
  481. Если (ВыводитьУпаковки ИЛИ ВыводитьПоУчету) Тогда
  482. Если ПараметрыПечати.ИмяФормы <> "ЗаданиеНаПересчет" И СтруктураОбъектов.Ключ <> "Документ.ПересчетТоваров" Тогда
  483. СтруктураПоиска = Новый Структура("Ссылка,Склад,РабочийУчасток,НомерСтроки");
  484. ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаПоТовару);
  485. ВыборкаПоУпаковкам.Сбросить();
  486. Пока ВыборкаПоУпаковкам.НайтиСледующий(СтруктураПоиска) Цикл
  487. Если Количество <> Неопределено Тогда
  488. КоличествоВДокумент = Цел(Количество / ВыборкаПоУпаковкам.КоличествоВУпаковке);
  489. Если КоличествоВДокумент > 0 Тогда
  490. СтрокаКоличестваУпаковок = СтрокаКоличестваУпаковок + КоличествоВДокумент + Символы.ПС;
  491. СтрокаИменованийУпаковок = СтрокаИменованийУпаковок
  492. + ВыборкаПоУпаковкам.ПредставлениеЕдининицыИзмеренияУпаковки
  493. + Символы.ПС;
  494. Если Количество = КоличествоВДокумент * ВыборкаПоУпаковкам.КоличествоВУпаковке Тогда
  495. Количество = Неопределено;
  496. Иначе
  497. Количество = Количество - КоличествоВДокумент * ВыборкаПоУпаковкам.КоличествоВУпаковке;
  498. КонецЕсли;
  499. КонецЕсли;
  500. КонецЕсли;
  501. КонецЦикла;
  502.  
  503. Если Количество <> Неопределено Тогда
  504. СтрокаКоличестваУпаковок = СтрокаКоличестваУпаковок + Количество;
  505. СтрокаИменованийУпаковок = СтрокаИменованийУпаковок + ПредставлениеЕдининицыИзмеренияУпаковки;
  506. КонецЕсли;
  507. ОбластьСтрокаТаблицы.Параметры.КоличествоУпаковок = СтрокаКоличестваУпаковок;
  508. ОбластьСтрокаТаблицы.Параметры.ПредставлениеЕдининицыИзмеренияУпаковки = СтрокаИменованийУпаковок;
  509. КонецЕсли;
  510. КонецЕсли;
  511. ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
  512. КонецЕсли;
  513. КонецЦикла;
  514. КонецЦикла;
  515. КонецЦикла;
  516.  
  517. ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);
  518.  
  519. УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
  520. ТабличныйДокумент,
  521. НомерСтрокиНачало,
  522. ОбъектыПечати,
  523. ВыборкаПоШапке.Ссылка);
  524.  
  525. КонецЦикла;
  526. КонецЦикла;
  527.  
  528. ТекстСообщения = "";
  529. Если ВыборкаПоШапке.Количество() = 0 И СтруктураОбъектов.Ключ = "Документ.ВводОстатков" Тогда
  530. Если ПолучитьФункциональнуюОпцию("ИспользоватьМногооборотнуюТару") Тогда
  531. ТекстСообщения = НСтр("ru='Для данного типа операции документа ""Ввод остатков""
  532. |печать ""%НазваниеФормы%"" не требуется.
  533. |Печать возможна только для операций типа ""Собственные товары"", ""Полученные на комиссию товары""
  534. |и ""Принятая от поставщиков возвратная тара""'");
  535. Иначе
  536. ТекстСообщения = НСтр("ru='Для данного типа операции документа ""Ввод остатков""
  537. |печать ""%НазваниеФормы%"" не требуется.
  538. |Печать возможна только для операций типа ""Собственные товары"" и ""Полученные на комиссию товары""'");
  539. КонецЕсли;
  540. ТекстСообщения = СтрЗаменить(ТекстСообщения,"%НазваниеФормы%",НазваниеФормы);
  541. ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Документ%", ВыборкаПоШапке.СсылкаПредставление);
  542. ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
  543. КонецЕсли;
  544.  
  545. КонецЦикла;
  546.  
  547. ТабличныйДокумент.АвтоМасштаб = Истина;
  548.  
  549. Возврат ТабличныйДокумент;
  550.  
  551. КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment