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