|
ВПФ работает через форму, но не работает при загрузке в конфу | ☑ | ||
---|---|---|---|---|
0
Max57
15.11.23
✎
10:28
|
Всем привет. Делаю сортировку в печатной форме УПД в КА 2.5.
При работе через форму все работает, а если загрузить в конфигурацию появляется такая ошибка: "В обработчике печати не был сформирован табличный документ для: УПДВнешний {ОбщийМодуль.УправлениеПечатью.Модуль(1728)}:ВызватьИсключение(ТекстСообщенияОбОшибке); {ОбщаяФорма.ПечатьДокументов.Форма(530)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику( {ОбщаяФорма.ПечатьДокументов.Форма(49)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(236)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма); {ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(143)}:ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(32)}:УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма); {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(491)}:МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы( {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(269)}:ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}:МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}:ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения); {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(257)}:ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды); {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(35)}:ПродолжитьВыполнениеКоманды(ПараметрыВыполнения); {Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(8943)}:ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);" Подскажите, пожалуйста, в чем ошибка и как её исправить? В процедуре печать? Код прикладываю: // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ Функция СведенияОВнешнейОбработке() экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "УПД_ССортировкой"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Эту ВПФ мы сделали для того что бы посмотреть возможности БСП "); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "УПД (с сортировкой как в распоряжении)", "УПДВнешний", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; //**********************************************************************************************************8 КонецФункции // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ // Формирует структуру с параметрами регистрации регистрации обработки в информационной базе // // Параметры: // ОбъектыНазначенияФормы - Массив - Массив строк имен объектов метаданных в формате: // <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]. // или строка с именем объекта метаданных // НаименованиеОбработки - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию. // Необязательно, по умолчанию синоним или представление объекта // Информация - строка - Краткая информация или описание обработки. // Необязательно, по умолчанию комментарий объекта // Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу. // // // Возвращаемое значение: // Структура // Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0") Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда ОбъектНазначенияФормы = ОбъектыНазначенияФормы; ОбъектыНазначенияФормы = Новый Массив; ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы); КонецЕсли; ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы); Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление(); КонецЕсли; ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки); Если Не ЗначениеЗаполнено(Информация) Тогда Информация = ЭтотОбъект.Метаданные().Комментарий; КонецЕсли; ПараметрыРегистрации.Вставить("Информация", Информация); ПараметрыРегистрации.Вставить("Версия", Версия); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; //Представление команды в пользовательском интерфейсе Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя //Уникальный идентификатор команды или имя макета печати Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы //Способ вызова команды: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода" // "ОткрытиеФормы" - открывает основную форму обработки // "ВызовКлиентскогоМетода" - вызов процедуры Печать(), определённой в модуле формы обработки // "ВызовСерверногоМетода" - вызов процедуры Печать(), определённой в модуле объекта обработки Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода //Показывать оповещение. //Если Истина, требуется показать оповещение при начале и при завершении работы обработки. //Имеет смысл только при запуске обработки без открытия формы Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); //Дополнительный модификатор команды. //Используется для дополнительных обработок печатных форм на основе табличных макетов. //Для таких команд должен содержать строку ПечатьMXL Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыПечати = Новый Структура(); // это мы добавили сами для процедуры СформироватьПечатнуюФормуЗаказаКлиента() ПараметрыПечати.Вставить("ПечатьВВалюте",ложь); /////////// Если ТипЗнч(МассивОбъектов) = Тип("СписокЗначений") Тогда МассивОбъектов = МассивОбъектов.ВыгрузитьЗначения(); КонецЕсли; //Смотрим, что содержится в первом элементе массива МассивОбъектовНазначения //Если это структура, значит есть дополнительные параметры, почти как в прежних конфигурациях Если ТипЗнч(МассивОбъектов[0]) = Тип("Структура") Тогда ДополнительныеПараметры = МассивОбъектов[0]; Если ДополнительныеПараметры.Свойство("ПечатьВВалюте") Тогда ПечатьВВалюте = ДополнительныеПараметры.ПечатьВВалюте; КонецЕсли; //А теперь структуру из массива объектов можно удалить, больше она там не нужна МассивОбъектов.Удалить(0); КонецЕсли; СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов); ////////// ////////////////// //МассивОбъектов2 = Новый Массив(); //Для Каждого ЭлементСписка Из МассивОбъектов Цикл // МассивОбъектов2.Добавить(ЭлементСписка.Значение.Ссылка); //КонецЦикла; // //СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов2);; //////////////////////////// УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "РеализацияТоваровУслуг", НСтр("ru = 'УПД с транспортными расходами'"), СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); КонецПроцедуры #Область Печать_УПД // Функция формирует печатную форму Счета-фактуры // Функция ПолучитьДанныеДляПечатнойФормыСчетФактура(ПараметрыПечати, МассивОбъектов) Экспорт УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапросаТаблицаОснований(); МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", Константы.ВалютаУправленческогоУчета.Получить()); Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); РезультатПакета = Запрос.ВыполнитьПакет(); МассивШапокОснований = РезультатПакета[3].Выгрузить().ВыгрузитьКолонку("ДокументОснование"); МассивОснований = РезультатПакета[1].Выгрузить().ВыгрузитьКолонку("ДокументОснование"); Если МассивОснований.Количество() = 0 Тогда Возврат Неопределено; КонецЕсли; // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС Контракт = Неопределено; ЕстьЭлектронноеАктирование = Ложь; Для Каждого Основание Из МассивОснований Цикл Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Основание, "Договор") И ТипЗнч(Основание.Договор) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда Организация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание.Договор, "Организация"); ПараметрыОтправкиВЕИС = ЭлектронноеАктированиеЕИСУТ.ПараметрыОтправкиВЕИС( Организация, Основание.Договор); ЕстьЭлектронноеАктирование = ПараметрыОтправкиВЕИС.ВозможнаОтправка И ЭлектронноеАктированиеЕИСУТ.ДокументОтправляетсяВЕИС(Основание); Контракт = ПараметрыОтправкиВЕИС.Контракт; КонецЕсли; КонецЦикла; // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС ПоместитьВременнуюТаблицуШапокОснований(МенеджерВременныхТаблиц, МассивШапокОснований); ПоместитьВременнуюТаблицуДанныхОснований(МенеджерВременныхТаблиц, МассивОснований); ПоместитьВременнуюТаблицуПокупатели(МенеджерВременныхТаблиц, МассивОбъектов); // Передается Ссылка вместо Организации, чтобы не брать ответственных по умолчанию из организации. // Такие ответственные будут взяты из торгового документа-основания. ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов( МассивОбъектов, МенеджерВременныхТаблиц, "Ссылка", , "ОтветственныеЛицаСФ"); МассивАналитикУчетаПоПартнерам = Новый Массив; // В подчиненном узле нет всех данных для определения авансов, поэтому заполняем только если главный узел: ЗаполнятьПлатежноРасчетныеДокументы = ПланыОбмена.ГлавныйУзел() = Неопределено; Если ЗаполнятьПлатежноРасчетныеДокументы Тогда ПоместитьВременнуюТаблицуЗаполненияПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц); МассивАналитикУчетаПоПартнерамПлатежноРасчетныхДокументов = АналитикиУчетаПоПартнерамДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивАналитикУчетаПоПартнерам, МассивАналитикУчетаПоПартнерамПлатежноРасчетныхДокументов); ОкончаниеПериодаРасчета = КонецРасчетаДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц); КонецЕсли; // Актуализировать расчеты для получения сумм по товарам документа-основания Если Не ПараметрыПечати.ПечатьВВалюте Тогда Если ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") Тогда Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ДанныеДокументов.Ссылка КАК Ссылка |ИЗ | ТаблицаШапокДокументов КАК ДанныеДокументов |ГДЕ | ДанныеДокументов.Валюта <> ДанныеДокументов.Организация.ВалютаРегламентированногоУчета | ИЛИ ДанныеДокументов.Валюта <> &ВалютаУправленческогоУчета"; МассивДокументов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); РегистрыСведений.СуммыДокументовВВалютахУчета.РассчитатьСуммыДокументовВВалютахУчета(МассивДокументов); Иначе Запрос.Текст = " |ВЫБРАТЬ РАЗЛИЧНЫЕ | РасчетыСКлиентами.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам |ИЗ | РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | ТаблицаШапокДокументов КАК ДанныеДокументов | ПО | РасчетыСКлиентами.Регистратор = ДанныеДокументов.Ссылка | |ГДЕ | ДанныеДокументов.Валюта <> ДанныеДокументов.Организация.ВалютаРегламентированногоУчета | И РасчетыСКлиентами.Активность |"; ТаблицаАналитик = Запрос.Выполнить().Выгрузить(); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивАналитикУчетаПоПартнерам, ТаблицаАналитик.ВыгрузитьКолонку("АналитикаУчетаПоПартнерам"), Истина); ОкончаниеПериодаРасчета = КонецМесяца(ВзаиморасчетыСервер.ПолучитьМаксимальнуюДатуВКоллекцииДокументов(МенеджерВременныхТаблиц)) + 1; КонецЕсли; КонецЕсли; Если (ЗаполнятьПлатежноРасчетныеДокументы ИЛИ Не ПараметрыПечати.ПечатьВВалюте) И МассивАналитикУчетаПоПартнерам.Количество() > 0 Тогда Если Не ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") Тогда АналитикиРасчета = РаспределениеВзаиморасчетовВызовСервера.АналитикиРасчета(); АналитикиРасчета.АналитикиУчетаПоПартнерам = МассивАналитикУчетаПоПартнерам; Попытка РаспределениеВзаиморасчетовВызовСервера.РаспределитьВсеРасчетыСКлиентами(ОкончаниеПериодаРасчета, АналитикиРасчета); Исключение ТекстСообщения = НСтр("ru = 'Печатная форма сформирована по неактуальным данным. |Необходимо актуализировать взаиморасчеты вручную и переформировать печатную форму.'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); КонецПопытки; Иначе Если Константы.РаспределятьФактическиеРасчетыФоновымЗаданием.Получить() Тогда ТекстСообщения = НСтр("ru = 'Печатная форма сформирована по неактуальным данным.'") + Символы.ПС; ТекстСообщения = ТекстСообщения + ВзаиморасчетыСервер.ТекстПредупрежденияЗагрузкаДокументовВзаиморасчетов(); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); КонецЕсли; КонецЕсли; КонецЕсли; Если ЗаполнятьПлатежноРасчетныеДокументы Тогда ПлатежноРасчетныеДокументы = ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов( МенеджерВременныхТаблиц, МассивАналитикУчетаПоПартнерамПлатежноРасчетныхДокументов); Иначе Запрос.Текст = "ВЫБРАТЬ | NULL КАК Ссылка, | NULL КАК СтрокаПлатежноРасчетныеДокументы |ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы"; Запрос.Выполнить(); КонецЕсли; ПараметрыПечати.Вставить("ВыводитьНаборы", Ложь); СформироватьВременнуюТаблицуТоваровДляПечати(МенеджерВременныхТаблиц, МассивОснований, ПараметрыПечати); ПечататьСчетаФактурыПолученные = ПараметрыПечати.Свойство("МассивСчетФактураПолученный"); Если ПечататьСчетаФактурыПолученные Тогда Запрос.УстановитьПараметр("МассивСчетФактураПолученный", ПараметрыПечати.МассивСчетФактураПолученный); КонецЕсли; ЗаполнитьДанныеШтрихкодовДляУКДДо = Ложь; Если ПараметрыПечати.Свойство("ЗаполнитьДанныеШтрихкодовДляУКДДо") И ПараметрыПечати.ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда ЗаполнитьДанныеШтрихкодовДляУКДДо = Истина; КонецЕсли; Запрос.УстановитьПараметр("ПредставлениеСчетФактура", НСтр("ru = 'счет-фактура'")); Запрос.УстановитьПараметр("ПредставлениеСчетФактураПосредника", НСтр("ru = 'счет-фактура посредника'")); Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить()); МассивОперацийПередачаНаКомиссию = Новый Массив; МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту); МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию); МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию); Запрос.УстановитьПараметр("ХозяйственныеОперацииПередачаНаКомиссию", МассивОперацийПередачаНаКомиссию); Запрос.УстановитьПараметр("ВыводитьОсновнойУПД", Не (ПараметрыПечати.Свойство("НеВыводитьОсновнойУПД") И ПараметрыПечати.НеВыводитьОсновнойУПД)); Запрос.УстановитьПараметр("ДатаОтраженияВозвратовКорректировочнымиСФ", УчетНДСУП.НастройкиУчета().ДатаОтраженияВозвратовКорректировочнымиСФ); СформироватьВтСчетаФактурыПолученные(МенеджерВременныхТаблиц, ПараметрыПечати); СформироватьВТПорядковыеНомераТаблицыТоваровИПредставления5а(МенеджерВременныхТаблиц, ПараметрыПечати); СформироватьПредставлениеВыставленКомиссионеру(МенеджерВременныхТаблиц); Запрос.УстановитьПараметр("МассивОснований", МассивОснований); Запрос.Текст = ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(ПараметрыПечати) + ТекстЗапросаИсходныхДокументовДляПечатиСчетаФактуры() + ТекстЗапросаДанныхТабличнойЧастиДляПечатиСчетаФактуры(ПараметрыПечати) + ТекстЗапросаДанныхМаркировки(ЗаполнитьДанныеШтрихкодовДляУКДДо) + ТекстЗапросаДанныхПоПеревыставленномуСчетуФактуре() + ТекстЗапросаДанныхПрослеживаемость() + ТекстЗапросаДанныхПрослеживаемыеКомплектующие(); // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС Если ЕстьЭлектронноеАктирование Тогда Запрос.Текст = Запрос.Текст + ЭлектронноеАктированиеЕИСУТ.ТекстЗапросаДанныеДляПечатиСчетовФактур("МассивОснований"); Запрос.УстановитьПараметр("ГосударственныйКонтрактЕИС", Контракт); Если ТипЗнч(МассивОснований[0]) = Тип("ДокументСсылка.СчетФактураВыданный") Или ТипЗнч(МассивОснований[0]) = Тип("ДокументСсылка.СчетФактураВыданныйАванс") Тогда Запрос.УстановитьПараметр("ЭтапИсполненияКонтрактаЕИС", МассивОснований[0].ДокументОснование.ЭтапГосконтрактаЕИС); Иначе Запрос.УстановитьПараметр("ЭтапИсполненияКонтрактаЕИС", МассивОснований[0].ЭтапГосконтрактаЕИС); КонецЕсли; КонецЕсли; // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС МассивРезультатов = Запрос.ВыполнитьПакет(); КоличествоРезультатов = МассивРезультатов.Количество(); // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС Если ЕстьЭлектронноеАктирование Тогда КоличествоРезультатов = КоличествоРезультатов - 5; КонецЕсли; // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС Если ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда РезультатПоКонтрагентам = МассивРезультатов[КоличествоРезультатов - 10]; РезультатПоШапке = МассивРезультатов[КоличествоРезультатов - 9]; РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 8]; РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 7]; МаркировкаДо = МассивРезультатов[КоличествоРезультатов - 5].Выгрузить(); МаркировкаДо = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(МаркировкаДо); Если МаркировкаДо.Количество() = 0 Тогда // Коды переданы через документ прямого обмена. Маркировка = МаркировкаДо.СкопироватьКолонки(); Иначе Маркировка = МассивРезультатов[КоличествоРезультатов - 6].Выгрузить(); Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка); КонецЕсли; РезультатПоПоставщикам = МассивРезультатов[КоличествоРезультатов - 4]; Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2]; ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных( МассивРезультатов[КоличествоРезультатов - 1]); СтруктураДанныхДляПечати = Новый Структура; СтруктураДанныхДляПечати.Вставить("РезультатПоШапке" , РезультатПоШапке); СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти" , РезультатПоТабличнойЧасти); СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным" , РезультатПоИсходнымДанным); СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам" , РезультатПоКонтрагентам); СтруктураДанныхДляПечати.Вставить("Маркировка" , Маркировка); СтруктураДанныхДляПечати.Вставить("МаркировкаДо" , МаркировкаДо); СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам" , РезультатПоПоставщикам); СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина); СтруктураДанныхДляПечати.Вставить("Прослеживаемость" , Прослеживаемость); СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие" , ПрослеживаемыеКомплектующие); Иначе РезультатПоКонтрагентам = МассивРезультатов[КоличествоРезультатов - 9]; РезультатПоШапке = МассивРезультатов[КоличествоРезультатов - 8]; РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 7]; РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 6]; Маркировка = МассивРезультатов[КоличествоРезультатов - 5].Выгрузить(); Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка); РезультатПоПоставщикам = МассивРезультатов[КоличествоРезультатов - 4]; Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2]; ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных( МассивРезультатов[КоличествоРезультатов - 1]); СтруктураДанныхДляПечати = Новый Структура; СтруктураДанныхДляПечати.Вставить("РезультатПоШапке" , РезультатПоШапке); СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти" , РезультатПоТабличнойЧасти); СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным" , РезультатПоИсходнымДанным); СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам" , РезультатПоКонтрагентам); СтруктураДанныхДляПечати.Вставить("Маркировка" , Маркировка); СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам" , РезультатПоПоставщикам); СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина); СтруктураДанныхДляПечати.Вставить("Прослеживаемость" , Прослеживаемость); СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие" , ПрослеживаемыеКомплектующие); КонецЕсли; Если ЗаполнятьПлатежноРасчетныеДокументы Тогда СтруктураДанныхДляПечати.Вставить("ПлатежноРасчетныеДокументы", ПлатежноРасчетныеДокументы); КонецЕсли; // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС Если ЕстьЭлектронноеАктирование Тогда ЭлектронноеАктированиеЕИСУТ.ПоместитьРезультатВыполненияЗапросаВДанныеДляПечати( МассивРезультатов, СтруктураДанныхДляПечати, КоличествоРезультатов); КонецЕсли; // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС Возврат СтруктураДанныхДляПечати; КонецФункции Функция ПолучитьДанныеДляПечатнойФормыУПД(Знач ПараметрыПечати, МассивОбъектов) Экспорт ПараметрыПечати.Вставить("ДополнитьДаннымиУПД", Истина); ПараметрыПечати.Вставить("ПечатьВВалюте", Ложь); Возврат ПолучитьДанныеДляПечатнойФормыСчетФактура(ПараметрыПечати, МассивОбъектов); КонецФункции Функция СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати = Неопределено) Экспорт УстановитьПривилегированныйРежим(Истина); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УПД"; СтруктураТиповНаПечать = Новый Структура; МассивСчетФактураВыданный = Новый Массив; // Массив из ДокументСсылка МассивСчетФактураКомиссионеру = Новый Массив; // Массив из ДокументСсылка МассивСчетФактураПолученный = Новый Массив; ОснованияНаРеализацию = Новый Массив; ОснованияКомиссионеру = Новый Массив; ОснованияСчетФактураПолученный = Новый Массив; ДокументыБезВыданногоСчетаФактуры = Новый Массив; // Массив из ДокументСсылка ДокументыБезСчетаФактурыКомиссионеру = Новый Массив; ДокументыБезПолученногоСчетаФактуры = Новый Массив; // Массив из ДокументСсылка ОснованияОтчетовНаЗакупкуТовары = Новый Массив; Если ПараметрыПечати = Неопределено Тогда ПараметрыПечати = Новый Структура; КонецЕсли; Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл ИмяОбъекта = Сред(СтруктураОбъектов.Ключ, 10); Если ИмяОбъекта = "ОтчетКомитентуОСписании" Или ИмяОбъекта = "ОтчетКомиссионераОСписании" Тогда Продолжить; КонецЕсли; Если ИмяОбъекта = "СчетФактураВыданный" Тогда ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСчетФактураВыданный, СтруктураОбъектов.Значение); ИначеЕсли ИмяОбъекта = "СчетФактураКомиссионеру" Тогда ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСчетФактураКомиссионеру, СтруктураОбъектов.Значение); ИначеЕсли ИмяОбъекта = "ОтчетКомиссионера" Тогда ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОснованияКомиссионеру, СтруктураОбъектов.Значение); ИначеЕсли ИмяОбъекта = "ОтчетКомитентуОЗакупках" И Не ПараметрыПечати = Неопределено И ПараметрыПечати.Свойство("ВыводитьТовары") И ПараметрыПечати.ВыводитьТовары Тогда ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОснованияОтчетовНаЗакупкуТовары, СтруктураОбъектов.Значение); ИначеЕсли ИмяОбъекта = "ОтчетКомитенту" И Не ПараметрыПечати = Неопределено И ПараметрыПечати.Свойство("ВыводитьТовары") И ПараметрыПечати.ВыводитьТовары Тогда ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ДокументыБезВыданногоСчетаФактуры, СтруктураОбъектов.Значение); Иначе ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОснованияНаРеализацию, СтруктураОбъектов.Значение); КонецЕсли; Если ПараметрыПечати.Свойство("ДополнитьПолученнымиСчетамиФактуры") И ПараметрыПечати.ДополнитьПолученнымиСчетамиФактуры Тогда ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОснованияСчетФактураПолученный, СтруктураОбъектов.Значение); КонецЕсли; КонецЦикла; Если ОснованияНаРеализацию.Количество() > 0 Тогда РезультатАнализа = Документы.СчетФактураВыданный.ПолучитьСчетаФактурыНаПечать(ОснованияНаРеализацию); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСчетФактураВыданный, РезультатАнализа.СчетаФактурыНаПечать, Истина); Для Каждого СтрокаТаблицыОшибок Из РезультатАнализа.ТаблицаОшибок Цикл Если СтрокаТаблицыОшибок.НеВыставленСчетФактура Тогда ДокументыБезВыданногоСчетаФактуры.Добавить(СтрокаТаблицыОшибок.ДокументОснование); КонецЕсли; КонецЦикла; КонецЕсли; Если ОснованияОтчетовНаЗакупкуТовары.Количество() > 0 Тогда РезультатАнализа = Документы.СчетФактураВыданный.ПолучитьСчетаФактурыНаПечать(ОснованияОтчетовНаЗакупкуТовары,,,Истина); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСчетФактураВыданный, РезультатАнализа.СчетаФактурыНаПечать, Истина); Для Каждого СтрокаТаблицыОшибок Из РезультатАнализа.ТаблицаОшибок Цикл Если СтрокаТаблицыОшибок.НеВыставленСчетФактура Тогда ДокументыБезВыданногоСчетаФактуры.Добавить(СтрокаТаблицыОшибок.ДокументОснование); КонецЕсли; КонецЦикла; КонецЕсли; Если ОснованияКомиссионеру.Количество() > 0 Тогда РезультатАнализа = Документы.СчетФактураКомиссионеру.ПолучитьСчетаФактурыНаПечать(ОснованияКомиссионеру); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСчетФактураКомиссионеру, РезультатАнализа.СчетаФактурыНаПечать, Истина); Для Каждого СтрокаТаблицыОшибок Из РезультатАнализа.ТаблицаОшибок Цикл Если СтрокаТаблицыОшибок.НеВыставленСчетФактура Тогда ДокументыБезВыданногоСчетаФактуры.Добавить(СтрокаТаблицыОшибок.ДокументОснование); КонецЕсли; КонецЦикла; КонецЕсли; Если ОснованияСчетФактураПолученный.Количество() > 0 Тогда РезультатАнализа = Документы.СчетФактураПолученный.ПолучитьСчетаФактурыНаПечать(ОснованияСчетФактураПолученный); ПараметрыПечати.Вставить("МассивСчетФактураПолученный", РезультатАнализа.СчетаФактурыНаПечать); Для Каждого СтрокаТаблицыОшибок Из РезультатАнализа.ТаблицаОшибок Цикл Если СтрокаТаблицыОшибок.НеВыставленСчетФактура Тогда ДокументыБезПолученногоСчетаФактуры.Добавить(СтрокаТаблицыОшибок.ДокументОснование); КонецЕсли; КонецЦикла; КонецЕсли; Если МассивСчетФактураВыданный.Количество() > 0 Тогда СтруктураТиповНаПечать.Вставить("СчетФактураВыданный", МассивСчетФактураВыданный); КонецЕсли; Если МассивСчетФактураКомиссионеру.Количество() > 0 Тогда СтруктураТиповНаПечать.Вставить("СчетФактураКомиссионеру", МассивСчетФактураКомиссионеру); КонецЕсли; Для Каждого Документ Из ДокументыБезВыданногоСчетаФактуры Цикл ИмяОбъекта = Документ.Метаданные().Имя; Если СтруктураТиповНаПечать.Свойство(ИмяОбъекта) Тогда МассивДокументовДляСтруктуры = СтруктураТиповНаПечать[ИмяОбъекта]; // Массив из ДокументСсылка МассивДокументовДляСтруктуры.Добавить(Документ); Иначе МассивДокументовТипа = Новый Массив; МассивДокументовТипа.Добавить(Документ); СтруктураТиповНаПечать.Вставить(ИмяОбъекта, МассивДокументовТипа); КонецЕсли; КонецЦикла; НомерТипаДокумента = 0; Для Каждого СтруктураОбъектов Из СтруктураТиповНаПечать Цикл НомерТипаДокумента = НомерТипаДокумента + 1; Если НомерТипаДокумента > 1 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(СтруктураОбъектов.Ключ); Если МенеджерОбъекта = Неопределено Тогда МенеджерОбъекта = Документы[СтруктураОбъектов.Ключ]; КонецЕсли; ПараметрыПечати.Вставить("НеВыводитьУПДПосредника", Истина); //ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыУПД(ПараметрыПечати, СтруктураОбъектов.Значение); ДанныеДляПечати = ПолучитьДанныеДляПечатнойФормыУПД(ПараметрыПечати, СтруктураОбъектов.Значение); Если ДанныеДляПечати <> Неопределено Тогда ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати); КонецЕсли; КонецЦикла; СтруктураТиповНаПечать.Очистить(); Для Каждого Документ Из ДокументыБезПолученногоСчетаФактуры Цикл ИмяОбъекта = Документ.Метаданные().Имя; Если СтруктураТиповНаПечать.Свойство(ИмяОбъекта) Тогда МассивДокументовДляСтруктуры = СтруктураТиповНаПечать[ИмяОбъекта]; // Массив из ДокументСсылка МассивДокументовДляСтруктуры.Добавить(Документ); Иначе МассивДокументовТипа = Новый Массив; МассивДокументовТипа.Добавить(Документ); СтруктураТиповНаПечать.Вставить(ИмяОбъекта, МассивДокументовТипа); КонецЕсли; КонецЦикла; Для Каждого СтруктураОбъектов Из СтруктураТиповНаПечать Цикл ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(СтруктураОбъектов.Ключ); Если МенеджерОбъекта = Неопределено Тогда МенеджерОбъекта = Документы[СтруктураОбъектов.Ключ]; КонецЕсли; ПараметрыПечати.Вставить("НеВыводитьУПДПосредника", Ложь); ПараметрыПечати.Вставить("НеВыводитьОсновнойУПД", Истина); ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыУПД(ПараметрыПечати, СтруктураОбъектов.Значение); ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Процедура ЗаполнитьРеквизитыШапкиУПД(ДанныеПечати, СведенияОПоставщике, ДанныеКонтрагентов, ОбластьМакета, ДанныеПоставщиков, ОпцииПечати) СведенияОГрузоотправителе = СведенияОГрузоотправителе(ДанныеПечати); ВыводитьДанныеПоставщика = Не (ДанныеПечати.СтатусУПД = 2 И ДанныеПечати.ЭтоПередачаНаКомиссию); ВыводитьДанныеПокупателя = Не (ДанныеПечати.СтатусУПД = 2 И ДанныеПечати.ЭтоПередачаНаКомиссию); ОбластьМакета.Параметры.Заполнить(ДанныеПечати); ПараметрыШапки = Новый Структура; Если ОпцииПечати.НомерСформированВСчетеФактуре Тогда ПараметрыШапки.Вставить("Номер", ДанныеПечати.Номер); Иначе ПараметрыШапки.Вставить("Номер", НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения)); КонецЕсли; ПараметрыШапки.Вставить("Дата", Формат(ДанныеПечати.Дата, "ДЛФ=ДД")); ПараметрыШапки.Вставить("НомерИсправления", ?(ДанныеПечати.Исправление, ДанныеПечати.НомерИсправления, "--")); ПараметрыШапки.Вставить("ДатаИсправления", ?(ДанныеПечати.Исправление, Формат(ДанныеПечати.ДатаИсправления, "ДЛФ=ДД"), "--")); // Выводим данные о поставщике. Если ДанныеПоставщиков = Неопределено Тогда ПредставлениеПоставщика = "--"; ПредставлениеАдресПоставщика = "--"; ПредставлениеИННПоставщика = "--"; Если ВыводитьДанныеПоставщика Тогда ПредставлениеПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), СведенияОПоставщике.ПолноеНаименование); ПредставлениеАдресПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес")); ПредставлениеИННПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1%2'"), ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН", Ложь), ?(Не ПустаяСтрока(ДанныеПечати.КПППоставщика), "/" + ДанныеПечати.КПППоставщика, "")); КонецЕсли; // Выводим данные грузоотправителя. ТекстГрузоотправителя = ""; Если ДанныеПечати.ТолькоУслуги ИЛИ ДанныеПечати.Грузоотправитель = Неопределено Тогда ТекстГрузоотправителя = "--"; ИначеЕсли ВыводитьДанныеПоставщика И (ДанныеПечати.Организация = ДанныеПечати.Грузоотправитель ИЛИ ТипЗнч(ДанныеПечати.Грузоотправитель) = Тип("СправочникСсылка.РегистрацииВНалоговомОргане") И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеПечати.Организация, "КПП") = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеПечати.Грузоотправитель, "КПП")) Тогда ТекстГрузоотправителя = НСтр("ru='он же'", Метаданные.Языки.Русский.КодЯзыка); Иначе ТекстГрузоотправителя = ФормированиеПечатныхФорм.ОписаниеОрганизации( СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес"); КонецЕсли; ПредставлениеГрузоотправителя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ТекстГрузоотправителя); Иначе ПредставлениеПоставщика = ""; ПредставлениеАдресПоставщика = ""; ПредставлениеИННПоставщика = ""; ПредставлениеГрузоотправителя = ""; ЕстьГрузоотправитель = НЕ ДанныеПечати.ТолькоУслуги; ТаблицаПоставщиков = ТаблицаПоставщиковСчетаФактуры(ДанныеПечати, ДанныеПоставщиков); Для Каждого СтрокаТаблицы Из ТаблицаПоставщиков Цикл Если ВыводитьДанныеПоставщика Тогда СведенияОПоставщикеВрем = СтрокаТаблицы.СведенияОПоставщике; ПредставлениеПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеПоставщика, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщикеВрем, "ПолноеНаименование", Ложь)); ПредставлениеАдресПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеАдресПоставщика, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщикеВрем, "ЮридическийАдрес", Ложь)); ПредставлениеИННПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2%3'"), ПредставлениеИННПоставщика, СтрокаТаблицы.ИНН, ?(Не ПустаяСтрока(СтрокаТаблицы.КПП), "/" + СтрокаТаблицы.КПП, "")); КонецЕсли; Если ЕстьГрузоотправитель Тогда СведенияОГрузоотправителе = СтрокаТаблицы.СведенияОГрузоотправителе; ПредставлениеГрузоотправителя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеГрузоотправителя, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес", Ложь)); КонецЕсли; КонецЦикла; ПредставлениеПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ВыводитьДанныеПоставщика, Сред(ПредставлениеПоставщика, 3), "--")); ПредставлениеАдресПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ВыводитьДанныеПоставщика, Сред(ПредставлениеАдресПоставщика, 3), "--")); ПредставлениеИННПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ВыводитьДанныеПоставщика, Сред(ПредставлениеИННПоставщика, 3), "--")); ПредставлениеГрузоотправителя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ЕстьГрузоотправитель, Сред(ПредставлениеГрузоотправителя, 3), "--")); КонецЕсли; ПараметрыШапки.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика); ПараметрыШапки.Вставить("АдресПоставщика", ПредставлениеАдресПоставщика); ПараметрыШапки.Вставить("ИННПоставщика", ПредставлениеИННПоставщика); ПараметрыШапки.Вставить("ПредставлениеГрузоотправителя", ПредставлениеГрузоотправителя); // Выводим данные грузополучателя и покупателя. ТекстГрузополучателя = "--"; ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ТекстГрузополучателя); СтрокаПоДокументу = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ПустаяСтрока(ДанныеПечати.СтрокаПоДокументу), НСтр("ru='-- от --'", Метаданные.Языки.Русский.КодЯзыка), ДанныеПечати.СтрокаПоДокументу)); ПараметрыШапки.Вставить("ПоДокументу", СтрокаПоДокументу); ЕстьГрузополучатель = Не ДанныеПечати.ТолькоУслуги; ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов); ПредставлениеПокупателя = ""; ПредставлениеАдресаПокупателя = ""; ПредставлениеИННПокупателя = ""; ПредставлениеГрузополучателя = ""; Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл Если ВыводитьДанныеПокупателя Тогда СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе; ПредставлениеПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеПокупателя, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь)); ПредставлениеАдресаПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеАдресаПокупателя, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес", Ложь)); ПредставлениеИННПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2%3'"), ПредставлениеИННПокупателя, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь), ?(Не ПустаяСтрока(СтрокаТаблицы.КПП), "/" + СтрокаТаблицы.КПП, "")); КонецЕсли; Если ЕстьГрузополучатель Тогда СведенияОГрузополучателе = СтрокаТаблицы.СведенияОГрузополучателе; ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеГрузополучателя, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес", Ложь)); КонецЕсли; КонецЦикла; ПредставлениеПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ВыводитьДанныеПокупателя, Сред(ПредставлениеПокупателя, 3), "--")); ПредставлениеАдресаПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ВыводитьДанныеПокупателя, Сред(ПредставлениеАдресаПокупателя, 3), "--")); ПредставлениеИННПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ВыводитьДанныеПокупателя, Сред(ПредставлениеИННПокупателя, 3), "--")); ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), ?(ЕстьГрузополучатель, Сред(ПредставлениеГрузополучателя, 3), "--")); ПараметрыШапки.Вставить("ПредставлениеПокупателя", ПредставлениеПокупателя); ПараметрыШапки.Вставить("АдресПокупателя", ПредставлениеАдресаПокупателя); ПараметрыШапки.Вставить("ИННПокупателя", ПредставлениеИННПокупателя); ПараметрыШапки.Вставить("ПредставлениеГрузополучателя", ПредставлениеГрузополучателя); ПараметрыШапки.Вставить("Валюта", НСтр("ru='Российский рубль, 643'", Метаданные.Языки.Русский.КодЯзыка)); СтруктураПараметровИдентификаторГосКонтракта = Новый Структура("ИдентификаторГосКонтракта"); ЗаполнитьЗначенияСвойств(СтруктураПараметровИдентификаторГосКонтракта, ДанныеПечати); Если ДействуетПостановление981(ДанныеПечати.Дата,ДанныеПечати.ДатаИсправления) Тогда ПредставлениеИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), СокрЛП(СтруктураПараметровИдентификаторГосКонтракта.ИдентификаторГосКонтракта)); Иначе ПредставлениеИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1'"), СокрЛП(СтруктураПараметровИдентификаторГосКонтракта.ИдентификаторГосКонтракта)); КонецЕсли; ПараметрыШапки.Вставить("ИдентификаторГосКонтракта", ПредставлениеИдентификаторГосКонтракта); ОбластьМакета.Параметры.Заполнить(ПараметрыШапки); КонецПроцедуры Процедура ЗаполнитьРеквизитыПодвалаУПД(ОбластьПодвала, ДанныеПечати, СведенияОбОрганизации, ДанныеКонтрагентов) ОбластьПодвала.Параметры.Заполнить(ДанныеПечати); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ФИОРуководителя", ДанныеПечати.Руководитель); Если СведенияОбОрганизации.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда СтруктураПараметров.Вставить("ФИОРуководителяОрганизации", ДанныеПечати.Руководитель); СтруктураПараметров.Вставить("ФИОГлавногоБухгалтера", ДанныеПечати.ГлавныйБухгалтер); Иначе СтруктураПараметров.Вставить("ФИОПБОЮЛ", ДанныеПечати.Руководитель); СтруктураПараметров.Вставить("Свидетельство", СведенияОбОрганизации.Свидетельство); КонецЕсли; СтруктураПараметров.Вставить("ФИОКладовщика", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Кладовщик, ДанныеПечати.Дата)); СтруктураПараметров.Вставить("ДолжностьКладовщика", ДанныеПечати.ДолжностьКладовщика); ПолнаяДатаДокумента = СтрЗаменить(Формат(ДанныеПечати.Дата, "ДЛФ=DD"),НСтр("ru = 'г.'", Метаданные.Языки.Русский.КодЯзыка),""); ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента); ПозицияРазделителя = СтрНайти(ПолнаяДатаДокумента, " "); ПредставлениеДаты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='""%1"" %2года'", Метаданные.Языки.Русский.КодЯзыка), Лев(ПолнаяДатаДокумента, ПозицияРазделителя -1), Прав(ПолнаяДатаДокумента, ДлинаСтроки - ПозицияРазделителя)); СтруктураПараметров.Вставить("ДатаДокумента", ПредставлениеДаты); ИННПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН,", Ложь); Если ЗначениеЗаполнено(ДанныеПечати.КПППоставщика) Тогда ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН/КПП %2/%3'", Метаданные.Языки.Русский.КодЯзыка), СведенияОбОрганизации.ПолноеНаименование, ИННПоставщика, ДанныеПечати.КПППоставщика); ИначеЕсли ЗначениеЗаполнено(ИННПоставщика) Тогда ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН %2'", Метаданные.Языки.Русский.КодЯзыка), СведенияОбОрганизации.ПолноеНаименование, ИННПоставщика); Иначе ПредставлениеОрганизации = СведенияОбОрганизации.ПолноеНаименование; КонецЕсли; СтруктураПараметров.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации); ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов); ПредставлениеКонтрагента = ""; Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе; ПолноеНаименование = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь); ИННПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь); Если Не ПустаяСтрока(СтрокаТаблицы.КПП) Тогда ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2, ИНН/КПП %3/%4'", Метаданные.Языки.Русский.КодЯзыка), ПредставлениеКонтрагента, ПолноеНаименование, ИННПокупателя, СтрокаТаблицы.КПП); ИначеЕсли ЗначениеЗаполнено(ИННПокупателя) Тогда ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2, ИНН %3'", Метаданные.Языки.Русский.КодЯзыка), ПредставлениеКонтрагента, ПолноеНаименование, ИННПокупателя); Иначе ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеКонтрагента, ПолноеНаименование); КонецЕсли; КонецЦикла; СтруктураПараметров.Вставить("ПредставлениеКонтрагента", Сред(ПредставлениеКонтрагента, 3)); Если ЗначениеЗаполнено(ДанныеПечати.ДоверенностьНомер) И ЗначениеЗаполнено(ДанныеПечати.ДоверенностьДата) И (ЗначениеЗаполнено(ДанныеПечати.ДоверенностьВыдана) Или ЗначениеЗаполнено(ДанныеПечати.ДоверенностьЛицо)) Тогда ТекстОснования = СокрЛП(ДанныеПечати.Основание) + "; " + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'по доверенности №%1 от %2, выданной %3 %4'", Метаданные.Языки.Русский.КодЯзыка), ДанныеПечати.ДоверенностьНомер, Формат(ДанныеПечати.ДоверенностьДата, "ДЛФ=DD"), ДанныеПечати.ДоверенностьВыдана, ДанныеПечати.ДоверенностьЛицо); СтруктураПараметров.Вставить("Основание", ТекстОснования); КонецЕсли; ОбластьПодвала.Параметры.Заполнить(СтруктураПараметров); КонецПроцедуры Процедура ЗаполнитьРеквизитыПодвалаУПД2_5(ОбластьПодвала, ОбластьПодвалаНакладной, ДанныеПечати, СведенияОбОрганизации, ДанныеКонтрагентов) ОбластьПодвалаНакладной.Параметры.Заполнить(ДанныеПечати); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ФИООтветственного", ДанныеПечати.Руководитель); Если СведенияОбОрганизации.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда СтруктураПараметров.Вставить("ФИОРуководителя", ДанныеПечати.Руководитель); СтруктураПараметров.Вставить("ФИОГлавногоБухгалтера", ДанныеПечати.ГлавныйБухгалтер); Иначе СтруктураПараметров.Вставить("ФИОПБОЮЛ", ДанныеПечати.Руководитель); СтруктураПараметров.Вставить("Свидетельство", СведенияОбОрганизации.Свидетельство); КонецЕсли; ОбластьПодвала.Параметры.Заполнить(СтруктураПараметров); СтруктураПараметров.Вставить("ФИОКладовщика", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Кладовщик, ДанныеПечати.Дата)); СтруктураПараметров.Вставить("ДолжностьКладовщика", ДанныеПечати.ДолжностьКладовщика); СтруктураПараметров.Вставить("ДолжностьОтветственного", ДанныеПечати.ДолжностьРуководителя); ПолнаяДатаДокумента = СтрЗаменить(Формат(ДанныеПечати.Дата, "ДЛФ=DD"),НСтр("ru = 'г.'", Метаданные.Языки.Русский.КодЯзыка),""); ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента); ПозицияРазделителя = СтрНайти(ПолнаяДатаДокумента, " "); ПредставлениеДаты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='""%1"" %2года'", Метаданные.Языки.Русский.КодЯзыка), Лев(ПолнаяДатаДокумента, ПозицияРазделителя -1), Прав(ПолнаяДатаДокумента, ДлинаСтроки - ПозицияРазделителя)); СтруктураПараметров.Вставить("ДатаОтгрузкиПередачи", ПредставлениеДаты); ИННПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН,", Ложь); Если ЗначениеЗаполнено(ДанныеПечати.КПППоставщика) Тогда ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН/КПП %2/%3'", Метаданные.Языки.Русский.КодЯзыка), СведенияОбОрганизации.ПолноеНаименование, ИННПоставщика, ДанныеПечати.КПППоставщика); ИначеЕсли ЗначениеЗаполнено(ИННПоставщика) Тогда ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН %2'", Метаданные.Языки.Русский.КодЯзыка), СведенияОбОрганизации.ПолноеНаименование, ИННПоставщика); Иначе ПредставлениеОрганизации = СведенияОбОрганизации.ПолноеНаименование; КонецЕсли; СтруктураПараметров.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации); ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов); ПредставлениеКонтрагента = ""; Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе; ПолноеНаименование = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь); ИННПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь); Если Не ПустаяСтрока(СтрокаТаблицы.КПП) Тогда ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2, ИНН/КПП %3/%4'", Метаданные.Языки.Русский.КодЯзыка), ПредставлениеКонтрагента, ПолноеНаименование, ИННПокупателя, СтрокаТаблицы.КПП); ИначеЕсли ЗначениеЗаполнено(ИННПокупателя) Тогда ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2, ИНН %3'", Метаданные.Языки.Русский.КодЯзыка), ПредставлениеКонтрагента, ПолноеНаименование, ИННПокупателя); Иначе ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1; %2'"), ПредставлениеКонтрагента, ПолноеНаименование); КонецЕсли; КонецЦикла; СтруктураПараметров.Вставить("ПредставлениеКонтрагента", Сред(ПредставлениеКонтрагента, 3)); Если ЗначениеЗаполнено(ДанныеПечати.ДоверенностьНомер) И ЗначениеЗаполнено(ДанныеПечати.ДоверенностьДата) И (ЗначениеЗаполнено(ДанныеПечати.ДоверенностьВыдана) Или ЗначениеЗаполнено(ДанныеПечати.ДоверенностьЛицо)) Тогда ТекстОснования = СокрЛП(ДанныеПечати.Основание) + "; " + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'по доверенности №%1 от %2, выданной %3 %4'", Метаданные.Языки.Русский.КодЯзыка), ДанныеПечати.ДоверенностьНомер, Формат(ДанныеПечати.ДоверенностьДата, "ДЛФ=DD"), ДанныеПечати.ДоверенностьВыдана, ДанныеПечати.ДоверенностьЛицо); СтруктураПараметров.Вставить("Основание", ТекстОснования); КонецЕсли; ОбластьПодвалаНакладной.Параметры.Заполнить(СтруктураПараметров); КонецПроцедуры // Параметры: // ТабличныйДокумент - ТабличныйДокумент // ДанныеДляПечати - Структура: // * РезультатПоШапке - РезультатЗапроса // * РезультатПоТабличнойЧасти - РезультатЗапроса // * РезультатПоКонтрагентам - РезультатЗапроса // * РезультатПоИсходнымДанным - РезультатЗапроса // * РезультатПоПоставщикам - РезультатЗапроса // ОбъектыПечати - СписокЗначений - список объектов печати // Процедура ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати) Экспорт ВыводитьСерии = Константы.ВыводитьСерииВПечатныхФормах.Получить() И ДанныеДляПечати.РезультатПоТабличнойЧасти.Колонки.Найти("СерияНаименование") <> Неопределено; ИспользоватьПечатныеФормыСФ2_5 = Ложь; МакетУПД = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент"); МакетУПД_625 = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент_625"); МакетУПД_981 = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент981"); МакетУПД_534 = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент534_ru"); МакетУПД_534_2_5 = УправлениеПечатью.МакетПечатнойФормы( "ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент534"); МакетУПД_534Прослеж_2_5 = УправлениеПечатью.МакетПечатнойФормы( "ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент534Прослеж"); ОпцииПечати = Новый Структура; ОпцииПечати.Вставить("НомерСформированВСчетеФактуре", ДанныеДляПечати.Свойство("НомерСформированВСчетеФактуре")); ОпцииПечати.Вставить("ИспользоватьПечатныеФормыСФ2_5", ИспользоватьПечатныеФормыСФ2_5); ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать(); ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Если ДанныеДляПечати.Свойство("РезультатПоКонтрагентам") Тогда ВыборкаКонтрагентов = ДанныеДляПечати.РезультатПоКонтрагентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Иначе ВыборкаКонтрагентов = Неопределено; КонецЕсли; Если ДанныеДляПечати.Свойство("РезультатПоИсходнымДанным") Тогда ВыборкаОснований = ДанныеДляПечати.РезультатПоИсходнымДанным.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Иначе ВыборкаОснований = Неопределено; КонецЕсли; ПрослеживаемыеОС = Неопределено; ПрослеживаемыеКомплектующие = Неопределено; ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Ложь; Если ДанныеДляПечати.Свойство("Прослеживаемость") Тогда ПрослеживаемыеОС = ДанныеДляПечати.Прослеживаемость.Выгрузить(); Если ПрослеживаемыеОС.Количество() > 0 Тогда ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Истина; Иначе ПрослеживаемыеОС = Неопределено; КонецЕсли; КонецЕсли; Если ДанныеДляПечати.Свойство("ПрослеживаемыеКомплектующие") Тогда ПрослеживаемыеКомплектующие = ДанныеДляПечати.ПрослеживаемыеКомплектующие; Если ПрослеживаемыеКомплектующие.Количество() > 0 Тогда ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Истина; Иначе ПрослеживаемыеКомплектующие = Неопределено; КонецЕсли; КонецЕсли; ЕстьПостановление534 = ЛОЖЬ; ЕстьПостановление981 = ЛОЖЬ; ЕстьПостановление1137_625 = ЛОЖЬ; ЕстьПостановление1137 = ЛОЖЬ; ПервыйДокумент = Истина; Пока ДанныеПечати.Следующий() Цикл Если ДанныеПечати.СтатусУПД = 2 И ЗначениеЗаполнено(ДанныеПечати.НалогообложениеНДС) И ДанныеПечати.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС И НЕ ДанныеПечати.ЭтоПередачаНаКомиссию И ДанныеПечати.ТребуетсяНаличиеСФ Тогда Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Для документа %1 не введен %2'"), ДанныеПечати.Ссылка, ДанныеПечати.ПредставлениеДокумента); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( Текст, ДанныеПечати.Ссылка, , "ТекстСчетФактура"); Продолжить; КонецЕсли; Если ДействуетПостановление534(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда ИспользоватьПечатныеФормыСФ2_5 = ПолучитьФункциональнуюОпцию("ИспользоватьПечатныеФормыСФ2_5"); Если ИспользоватьПечатныеФормыСФ2_5 Тогда ОпцииПечати.ИспользоватьПечатныеФормыСФ2_5 = ИспользоватьПечатныеФормыСФ2_5; Макет = ?(ЗначениеЗаполнено(ДанныеПечати.ЕстьПрослеживаемыеТовары) И ДанныеПечати.ЕстьПрослеживаемыеТовары Или ЕстьПрослеживаемыеТоварыВТабличнойЧасти, МакетУПД_534Прослеж_2_5, МакетУПД_534_2_5); Иначе Макет = МакетУПД_534; КонецЕсли; ЕстьПостановление534 = Истина; ИначеЕсли ДействуетПостановление981(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда Макет = МакетУПД_981; ЕстьПостановление981 = Истина; ИначеЕсли ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда Макет = МакетУПД_625; ЕстьПостановление1137_625 = Истина; Иначе Макет = МакетУПД; ЕстьПостановление1137 = Истина; КонецЕсли; Макет.КодЯзыка = Метаданные.Языки.Русский.КодЯзыка; Если ЕстьПостановление1137_625 И ЕстьПостановление1137 Тогда Текст = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов, |сформированных до и после начала применения постановления Правительства РФ №625 от 25 мая 2017 г.'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( Текст, ДанныеПечати.Ссылка); ТабличныйДокумент.Очистить(); Прервать; КонецЕсли; Если (ЕстьПостановление1137_625 ИЛИ ЕстьПостановление1137) И ЕстьПостановление981 Тогда Текст = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов, |сформированных до и после начала применения постановления Правительства РФ №981 от 19 августа 2017 г.'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( Текст, ДанныеПечати.Ссылка); ТабличныйДокумент.Очистить(); Прервать; ИначеЕсли (ЕстьПостановление1137_625 Или ЕстьПостановление1137 Или ЕстьПостановление981) И ЕстьПостановление534 Тогда ТекстСообщения = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов, |сформированных до и после начала применения постановления Правительства РФ №534 от 2 апреля 2021 г.'"); ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ДанныеПечати.Ссылка); ТабличныйДокумент.Очистить(); Прервать; КонецЕсли; Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; Если ДанныеДляПечати.Свойство("РезультатПоПоставщикам") И ДанныеПечати.ПеревыставленныйСчетФактура Тогда ВыборкаПоставщиков = ДанныеДляПечати.РезультатПоПоставщикам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); КонецЕсли; // Выводим общие реквизиты шапки СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьШапка, ДанныеПечати.Ссылка); ЗаполнитьРеквизитыШапкиУПД(ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов, ОбластьШапка, ВыборкаПоставщиков, ОпцииПечати); НомерСтраницы = 1; // Инициализация итогов в документе Если ИспользоватьПечатныеФормыСФ2_5 Тогда ИтоговыеСуммы = СтруктураИтоговыеСуммы2_5(); Иначе ИтоговыеСуммы = СтруктураИтоговыеСуммы(); КонецЕсли; // Создаем массив для проверки вывода МассивВыводимыхОбластей = Новый Массив; // Выводим многострочную часть документа ОбластьСтрокаСтандарт = Макет.ПолучитьОбласть("Строка"); ОбластьИтого = Макет.ПолучитьОбласть("Итого"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); Если ИспользоватьПечатныеФормыСФ2_5 Тогда ОбластьПодвалНакладной = Макет.ПолучитьОбласть("ПодвалНакладной"); КонецЕсли; Если ИспользоватьПечатныеФормыСФ2_5 Тогда ЗаполнитьРеквизитыПодвалаУПД2_5(ОбластьПодвал, ОбластьПодвалНакладной, ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов); Иначе ЗаполнитьРеквизитыПодвалаУПД(ОбластьПодвал, ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов); КонецЕсли; Если ДанныеДляПечати.РезультатПоШапке.Колонки.Найти("ВыводитьКодНоменклатуры") <> Неопределено Тогда ВыводитьКодНоменклатуры = ДанныеПечати.ВыводитьКодНоменклатуры; Иначе ВыводитьКодНоменклатуры = Истина; КонецЕсли; СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска); ИспользоватьНаборы = Ложь; Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда ИспользоватьНаборы = Истина; Если ИспользоватьПечатныеФормыСФ2_5 Тогда ОбластьСтрокаНабор = Макет.ПолучитьОбласть("Строка"); ОбластьСтрокаКомплектующие = Макет.ПолучитьОбласть("Строка"); Иначе ОбластьСтрокаНабор = Макет.ПолучитьОбласть("СтрокаНабор"); ОбластьСтрокаКомплектующие = Макет.ПолучитьОбласть("СтрокаКомплектующие"); КонецЕсли; КонецЕсли; ВыводитьКодыТНВЭД = ВыводитьКодыТНВЭД(ДанныеПечати, ЕстьПостановление981 Или ЕстьПостановление534); ОперацияОблагаетсяНДСУПокупателя = Ложь; Если ДанныеПечати.СтатусУПД = 1 И ДанныеПечати.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя Тогда ОперацияОблагаетсяНДСУПокупателя = Истина; КонецЕсли; СтрокаТовары = ВыборкаПоДокументам.Выбрать(); КоличествоСтрок = 0; Пока СтрокаТовары.Следующий() Цикл Если Не НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда КоличествоСтрок = КоличествоСтрок + 1; КонецЕсли; КонецЦикла; СтрокаТовары.Сбросить(); Если ЕстьПостановление534 Тогда Если ИспользоватьПечатныеФормыСФ2_5 Тогда ОбластьШапка.Параметры.ДокументыОбОтгрузке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '№ п/п %1 № %2 от %3'"), ?(КоличествоСтрок = 1, "1" , "1-" + Формат(КоличествоСтрок, "ЧГ=0")), ОбластьШапка.Параметры.Номер, ОбластьШапка.Параметры.Дата); Иначе ОбластьШапка.Параметры.ПоДокументуОтгрузки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '№ п/п %1 № %2 от %3'"), ?(КоличествоСтрок = 1, "1" , "1-" + Формат(КоличествоСтрок, "ЧГ=0")), ОбластьШапка.Параметры.Номер, ОбластьШапка.Параметры.Дата); КонецЕсли; КонецЕсли; ТабличныйДокумент.Вывести(ОбластьШапка); // Выводим заголовок таблицы ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ТабличныйДокумент.Вывести(ЗаголовокТаблицы); ТолькоСтавкаБезНДС = Истина; НомерСтроки = 0; Пока СтрокаТовары.Следующий() Цикл Если ПрослеживаемыеОС <> Неопределено Тогда ПрослеживаемыеТоварыСтрокаТовары = ПрослеживаемыеОС.НайтиСтроки(Новый Структура("НомерСтрокиСФ", СтрокаТовары.НомерСтроки)); ИначеЕсли ПрослеживаемыеКомплектующие <> Неопределено Тогда ПрослеживаемыеТоварыСтрокаТовары = ПрослеживаемыеКомплектующие.НайтиСтроки(Новый Структура("НомерГТД", СтрокаТовары.НомерГТД)); Иначе ПрослеживаемыеТоварыСтрокаТовары = Неопределено; КонецЕсли; Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ОтчетКомиссионера") ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда Если СтрокаТовары.Покупатель <> ДанныеПечати.Покупатель И СтрокаТовары.Покупатель <> НЕОПРЕДЕЛЕНО Тогда Продолжить; КонецЕсли; КонецЕсли; Если СтрокаТовары.Количество = 0 И СтрокаТовары.СуммаСНДС = 0 Тогда Продолжить; КонецЕсли; Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда ОбластьСтрока = ОбластьСтрокаНабор; ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда ОбластьСтрока = ОбластьСтрокаКомплектующие; Иначе ОбластьСтрока = ОбластьСтрокаСтандарт; КонецЕсли; ПараметрыПечати = Новый Структура("Корректировочный,СчетФактураНаАванс", Ложь, Ложь); Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда Если ИспользоватьПечатныеФормыСФ2_5 Тогда ЗаполнитьРеквизитыСтрокиТовара2_5(СтрокаТовары, ПрослеживаемыеТоварыСтрокаТовары, ОбластьСтрока, Неопределено, ПараметрыПечати, , ВыводитьКодыТНВЭД, ВыводитьСерии); Иначе ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьСтрока, Неопределено, , ВыводитьКодыТНВЭД, ВыводитьСерии); КонецЕсли; Иначе НомерСтроки = НомерСтроки + 1; Если ИспользоватьПечатныеФормыСФ2_5 Тогда ЗаполнитьРеквизитыСтрокиТовара2_5(СтрокаТовары, ПрослеживаемыеТоварыСтрокаТовары, ОбластьСтрока, НомерСтроки, ПараметрыПечати, , ВыводитьКодыТНВЭД, ВыводитьСерии); Иначе ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьСтрока, НомерСтроки, , ВыводитьКодыТНВЭД, ВыводитьСерии); КонецЕсли; ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьСтрока); КонецЕсли; СтруктураПараметров = Новый Структура; Если ОперацияОблагаетсяНДСУПокупателя Тогда СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='НДС исчисляется налоговым агентом'", Метаданные.Языки.Русский.КодЯзыка)); Если ИспользоватьПечатныеФормыСФ2_5 Тогда СтруктураПараметров.Вставить("Всего", "--"); Иначе СтруктураПараметров.Вставить("СуммаСНДС", "--"); КонецЕсли; ТолькоСтавкаБезНДС = Ложь; ИначеЕсли СтрокаТовары.СтавкаНДС = Справочники.СтавкиНДС.БезНДС Тогда СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='без НДС'", Метаданные.Языки.Русский.КодЯзыка)); СтруктураПараметров.Вставить("СуммаНДС", НСтр("ru='без НДС'", Метаданные.Языки.Русский.КодЯзыка)); ИначеЕсли СтрокаТовары.СтавкаНДС = УчетНДСЛокализация.СтавкаНДСПоПеречислению(Перечисления.СтавкиНДС.НДС0) Тогда СтруктураПараметров.Вставить("СуммаНДС", 0); ТолькоСтавкаБезНДС = Ложь; Иначе ТолькоСтавкаБезНДС = Ложь; КонецЕсли; Если Не НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда Если ИспользоватьПечатныеФормыСФ2_5 Тогда СтруктураПараметров.Вставить("Акциз", НСтр("ru='без |акциза'", Метаданные.Языки.Русский.КодЯзыка)); Иначе СтруктураПараметров.Вставить("Акциз", НСтр("ru='без акциза'", Метаданные.Языки.Русский.КодЯзыка)); КонецЕсли; КонецЕсли; ОбластьСтрока.Параметры.Заполнить(СтруктураПараметров); МассивВыводимыхОбластей.Очистить(); МассивВыводимыхОбластей.Добавить(ОбластьСтрока); Если НомерСтроки = КоличествоСтрок Тогда МассивВыводимыхОбластей.Добавить(ОбластьИтого); МассивВыводимыхОбластей.Добавить(ОбластьПодвал); Если ИспользоватьПечатныеФормыСФ2_5 Тогда МассивВыводимыхОбластей.Добавить(ОбластьПодвалНакладной); КонецЕсли; КонецЕсли; Если НомерСтроки <> 1 И НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда НомерСтраницы = НомерСтраницы + 1; ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ОбластьНумерацияЛистов = Макет.ПолучитьОбласть("НумерацияЛистов"); Если ОпцииПечати.НомерСформированВСчетеФактуре Тогда ОбластьНумерацияЛистов.Параметры.Номер = ДанныеПечати.Номер; Иначе ОбластьНумерацияЛистов.Параметры.Номер = НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения); КонецЕсли; Если ИспользоватьПечатныеФормыСФ2_5 Тогда ОбластьНумерацияЛистов.Параметры.НомерЛиста = НомерСтраницы; Иначе ОбластьНумерацияЛистов.Параметры.НомерСтраницы = НомерСтраницы; ОбластьНумерацияЛистов.Параметры.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=ДД; ДП=--"); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьНумерацияЛистов); ТабличныйДокумент.Вывести(ЗаголовокТаблицы); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьСтрока); Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда Если ИспользоватьПечатныеФормыСФ2_5 Тогда РассчитатьИтоговыеСуммы2_5(ИтоговыеСуммы, СтрокаТовары, ПрослеживаемыеТоварыСтрокаТовары); Иначе РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары); КонецЕсли; КонецЕсли; КонецЦикла; // Выводим итоги по документу ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки, ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеПечати.Организация)); Если ТолькоСтавкаБезНДС Тогда ИтоговыеСуммы.ИтогоСуммаНДС = НСтр("ru='без НДС'", Метаданные.Языки.Русский.КодЯзыка); КонецЕсли; Если ОперацияОблагаетсяНДСУПокупателя Тогда Если ИспользоватьПечатныеФормыСФ2_5 Тогда ИтоговыеСуммы.Вставить("ИтогоВсего", "--"); ИтоговыеСуммы.Вставить("ИтогоВсегоНаСтранице", "--"); Иначе ИтоговыеСуммы.Вставить("ИтогоСуммаСНДС", "--"); ИтоговыеСуммы.Вставить("ИтогоСуммаСНДСНаСтранице", "--"); КонецЕсли; КонецЕсли; ОбластьИтого.Параметры.Заполнить(ИтоговыеСуммы); ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьИтого); ТабличныйДокумент.Вывести(ОбластьИтого); // Если строка таблицы одна, то проверим поместится ли все на одной странице Если КоличествоСтрок = 1 Тогда МассивВыводимыхОбластей = Новый Массив; МассивВыводимыхОбластей.Добавить(ОбластьПодвал); Если ИспользоватьПечатныеФормыСФ2_5 Тогда МассивВыводимыхОбластей.Добавить(ОбластьПодвалНакладной); КонецЕсли; Если Не ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда НомерСтраницы = НомерСтраницы + 1; КонецЕсли; КонецЕсли; КоличествоСтраниц = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Документ составлен на %1 %2'", Метаданные.Языки.Русский.КодЯзыка), НомерСтраницы, ОбщегоНазначенияУТКлиентСервер.ФормаМножественногоЧисла( НСтр("ru = 'листе'", Метаданные.Языки.Русский.КодЯзыка), НСтр("ru = 'листах'", Метаданные.Языки.Русский.КодЯзыка), НСтр("ru = 'листах'", Метаданные.Языки.Русский.КодЯзыка), НомерСтраницы)); Если ИспользоватьПечатныеФормыСФ2_5 Тогда СтруктураПараметров = Новый Структура("КоличествоЛистов", КоличествоСтраниц); Иначе СтруктураПараметров = Новый Структура("КоличествоСтраниц", КоличествоСтраниц); КонецЕсли; ОбластьПодвал.Параметры.Заполнить(СтруктураПараметров); Если ИспользоватьПечатныеФормыСФ2_5 Тогда УдалитьВсеОбластиФаксимиле(ОбластьПодвал); УдалитьВсеОбластиФаксимиле(ОбластьПодвалНакладной); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьПодвал); Если ИспользоватьПечатныеФормыСФ2_5 Тогда ТабличныйДокумент.Вывести(ОбластьПодвалНакладной); КонецЕсли; УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка); ТЗ = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить(); ////Макс КонецЦикла; КонецПроцедуры #КонецОбласти Процедура УдалитьВсеОбластиФаксимиле(ОбластьМакета) МассивИменПоказателей = МассивИменПоказателейФаксимиле(); Для Каждого ЗначениеПоказателя Из МассивИменПоказателей Цикл ОчиститьОбластьФаксимиле(ОбластьМакета, ЗначениеПоказателя); КонецЦикла; КонецПроцедуры Процедура ОчиститьОбластьФаксимиле(ОбластьМакета, ИмяОбласти) ОбластьФаксимиле = ОбластьМакета.Области.Найти(ИмяОбласти); Если ОбластьФаксимиле <> Неопределено Тогда ОбластьМакета.Рисунки.Удалить(ОбластьФаксимиле.Имя); КонецЕсли; КонецПроцедуры Функция МассивИменПоказателейФаксимиле() МассивИменПоказателей = Новый Массив; МассивИменПоказателей.Добавить("ФаксимилеПечать"); МассивИменПоказателей.Добавить("ФаксимилеПечатьПредприниматель"); МассивИменПоказателей.Добавить("ФаксимилеРуководитель"); МассивИменПоказателей.Добавить("ФаксимилеРуководительНакладная"); МассивИменПоказателей.Добавить("ФаксимилеПредприниматель"); МассивИменПоказателей.Добавить("ФаксимилеГлавныйБухгалтер"); МассивИменПоказателей.Добавить("ФаксимилеОтветственныйЗаОформление"); МассивИменПоказателей.Добавить("ФаксимилеИсполнитель"); МассивИменПоказателей.Добавить("ФаксимилеИсполнительНакладнаяУслуги"); МассивИменПоказателей.Добавить("ФаксимилеИсполнительНакладнаяМатериалы"); МассивИменПоказателей.Добавить("ФаксимилеКладовщик"); МассивИменПоказателей.Добавить("ФаксимилеДоверенноеЛицо"); Возврат МассивИменПоказателей; КонецФункции Процедура ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, ВсегоНомеров, ВалютаРегламентированногоУчета) ИтоговыеСуммы.Вставить("КоличествоПорядковыхНомеровЗаписейПрописью", ЧислоПрописью(ВсегоНомеров, ,",,,,,,,,0")); Если ИтоговыеСуммы.Свойство("ИтогоВсего") Тогда ИтоговыеСуммы.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(ИтоговыеСуммы.ИтогоВсего, ВалютаРегламентированногоУчета)); Иначе ИтоговыеСуммы.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(ИтоговыеСуммы.ИтогоСуммаСНДС, ВалютаРегламентированногоУчета)); КонецЕсли; КонецПроцедуры Процедура РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары) СтруктураСуммПоСтроке = СтруктураРесурсовДляИтогов(); ЗаполнитьЗначенияСвойств(СтруктураСуммПоСтроке, СтрокаТовары); ОкруглитьДоЦелого(СтруктураСуммПоСтроке.КоличествоМест); Для Каждого Элемент Из СтруктураСуммПоСтроке Цикл Если ЗначениеЗаполнено(Элемент.Значение) Тогда ИтоговыеСуммы["Итого"+Элемент.Ключ+"НаСтранице"] = ИтоговыеСуммы["Итого"+Элемент.Ключ+"НаСтранице"] + Элемент.Значение; ИтоговыеСуммы["Итого"+Элемент.Ключ] = ИтоговыеСуммы["Итого"+Элемент.Ключ] + Элемент.Значение; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура РассчитатьИтоговыеСуммы2_5(ИтоговыеСуммы, СтрокаТовары, ПрослеживаемыеТовары = Неопределено) СтруктураСуммПоСтроке = СтруктураИтоговыеСуммы2_5(); ЗаполнитьЗначенияСвойств(СтруктураСуммПоСтроке, СтрокаТовары); СтруктураСуммПоСтроке.ИтогоСтоимость = СтрокаТовары.СуммаБезНДС; СтруктураСуммПоСтроке.ИтогоСуммаНДС = СтрокаТовары.СуммаНДС; СтруктураСуммПоСтроке.ИтогоВсего = СтрокаТовары.СуммаСНДС; ОкруглитьДоЦелого(СтруктураСуммПоСтроке.КоличествоМест); Для Каждого Элемент Из СтруктураСуммПоСтроке Цикл Если ЗначениеЗаполнено(Элемент.Значение) Тогда Если Элемент.Ключ = "КоличествоПрослежУвеличение" Тогда Если ПрослеживаемыеТовары <> Неопределено И ПрослеживаемыеТовары.Количество() > 0 Тогда Для Каждого СтрокаПрослеживаемость Из ПрослеживаемыеТовары Цикл ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] + Элемент.Значение * СтрокаПрослеживаемость.Количество; КонецЦикла; Иначе ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] + Элемент.Значение; КонецЕсли; ИначеЕсли Элемент.Ключ = "КоличествоПрослежУменьшение" Тогда Если ПрослеживаемыеТовары <> Неопределено И ПрослеживаемыеТовары.Количество() > 0 Тогда Для Каждого СтрокаПрослеживаемость Из ПрослеживаемыеТовары Цикл ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] + Элемент.Значение * СтрокаПрослеживаемость.Количество; КонецЦикла; Иначе ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] + Элемент.Значение; КонецЕсли; Иначе ИтоговыеСуммы[Элемент.Ключ] = ИтоговыеСуммы[Элемент.Ключ] + Элемент.Значение; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ОкруглитьДоЦелого(ОкругляемоеЧисло) Если ЗначениеЗаполнено(ОкругляемоеЧисло) Тогда Если ОкругляемоеЧисло <> Цел(ОкругляемоеЧисло) Тогда ОкругляемоеЧисло = Цел(ОкругляемоеЧисло) + 1; КонецЕсли; КонецЕсли; КонецПроцедуры Функция СтруктураРесурсовДляИтогов() Структура = Новый Структура; Структура.Вставить("СуммаБезНДС", 0); Структура.Вставить("СуммаНДС", 0); Структура.Вставить("СуммаСНДС", 0); Структура.Вставить("Количество", 0); Структура.Вставить("КоличествоМест", 0); Структура.Вставить("КоличествоПринято", 0); Структура.Вставить("МассаБрутто", 0); Структура.Вставить("МассаНетто", 0); Структура.Вставить("Сумма", 0); Структура.Вставить("РазницаБезНДСУвеличение", 0); Структура.Вставить("РазницаБезНДСУменьшение", 0); Структура.Вставить("РазницаНДСУвеличение", 0); Структура.Вставить("РазницаНДСУменьшение", 0); Структура.Вставить("РазницаСНДСУвеличение", 0); Структура.Вставить("РазницаСНДСУменьшение", 0); Возврат Структура; КонецФункции Процедура ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьМакета) Для Сч = 0 По ОбластьМакета.Параметры.Количество() - 1 Цикл ТекПараметр = ОбластьМакета.Параметры.Получить(Сч); Если НЕ ЗначениеЗаполнено(ТекПараметр) Тогда ОбластьМакета.Параметры.Установить(Сч, "--"); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, НомерСтроки, ВыводитьКодНоменклатуры = Истина, ВыводитьКодТНВД = Неопределено, ВыводитьСерии = Ложь, СчетФактураНаАванс = Ложь) ИспользоватьНаборы = ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТовары, "ЭтоНабор"); ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы); ОбластьМакета.Параметры.Заполнить(СтрокаТовары); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("КоличествоМест", 0); СтруктураПараметров.Вставить("КоличествоВОдномМесте", 0); СтруктураПараметров.Вставить("НоменклатураКод", ""); СтруктураПараметров.Вставить("КодТНВЭД", "--"); ЗаполнитьЗначенияСвойств(СтруктураПараметров, СтрокаТовары); ОкруглитьДоЦелого(СтруктураПараметров.КоличествоМест); СтруктураПараметров.Вставить("НомерСтроки", НомерСтроки); Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СтрокаТовары, "НомерГТД") И ЗначениеЗаполнено(СтрокаТовары.НомерГТД) Тогда ПредставлениеНомераГТД = Строка(СтрокаТовары.НомерГТД); ПозицияПодстроки = СтрНайти(ПредставлениеНомераГТД, НСтр("ru = 'и еще'")); Если ПозицияПодстроки > 0 Тогда КоличествоСимволов = СтрДлина(ПредставлениеНомераГТД); ИтоговоеКоличествоСимволов = КоличествоСимволов - (КоличествоСимволов - ПозицияПодстроки + 2); ШаблонПредставдения = " "; ПредставлениеНомераГТД = СокрЛП(Лев(ПредставлениеНомераГТД, ИтоговоеКоличествоСимволов)); ПредставлениеНомераГТД = ПредставлениеНомераГТД + Лев(ШаблонПредставдения, 30 - СтрДлина(ПредставлениеНомераГТД)); СтруктураПараметров.Вставить("НомерГТД", ПредставлениеНомераГТД); КонецЕсли; КонецЕсли; ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати(); ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара; ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); Если ВыводитьКодТНВД <> Неопределено Тогда ДополнительныеПараметрыПолученияНаименованияДляПечати.КодТНВЭД = ?(НЕ ВыводитьКодТНВД.ВыводитьВКолонке И ВыводитьКодТНВД.ВыводитьВСтроке, СтрокаТовары.КодТНВЭД, ""); Если НЕ ВыводитьКодТНВД.ВыводитьВКолонке Тогда СтруктураПараметров.КодТНВЭД = "--"; КонецЕсли; КонецЕсли; СерияНаименование = Неопределено; Если ВыводитьСерии Тогда СерияНаименование = СтрокаТовары.СерияНаименование; КонецЕсли; ПредставлениеНоменклатуры = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати( Строка(СтрокаТовары.НоменклатураНаименование), СтрокаТовары.ХарактеристикаНаименование, , СерияНаименование, ДополнительныеПараметрыПолученияНаименованияДляПечати) + ПрефиксИПостфикс.Постфикс; СтруктураПараметров.Вставить("ПредставлениеНоменклатуры", ПредставлениеНоменклатуры); Если Не ВыводитьКодНоменклатуры Тогда СтруктураПараметров.НоменклатураКод = ""; КонецЕсли; ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); Если ИспользоватьНаборы И СтрокаТовары.ЭтоКомплектующие И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие И (СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям ИЛИ СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам) Тогда // Область должна остаться незаполненной ОбластьМакета.Параметры.Заполнить(НаборыСервер.ПустыеДанные()); ИначеЕсли ИспользоватьНаборы И СтрокаТовары.ЭтоНабор И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие И (СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих ИЛИ СчетФактураНаАванс) Тогда // Область должна остаться незаполненной ОбластьМакета.Параметры.Заполнить(НаборыСервер.ПустыеДанные()); КонецЕсли; КонецПроцедуры Процедура ЗаполнитьРеквизитыСтрокиТовара2_5(СтрокаТовары, ПрослеживаемыеТовары, ОбластьМакета, НомерСтроки, ПараметрыПечати, ВыводитьКодНоменклатуры = Истина, ВыводитьКодТНВД = Неопределено, ВыводитьСерии = Ложь) ИспользоватьНаборы = ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТовары, "ЭтоНабор"); ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы); ОбластьМакета.Параметры.Заполнить(СтрокаТовары); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("КоличествоМест", 0); СтруктураПараметров.Вставить("КоличествоВОдномМесте", 0); СтруктураПараметров.Вставить("ТоварКод", ""); СтруктураПараметров.Вставить("ТоварКодТНВЭД", "--"); ЗаполнитьЗначенияСвойств(СтруктураПараметров, СтрокаТовары); ЕстьКодТНВЭД = ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТовары, "КодТНВЭД"); Если Не ПараметрыПечати.СчетФактураНаАванс Тогда СтруктураПараметров.Вставить("ТоварКод", СтрокаТовары.НоменклатураКод); Если ЕстьКодТНВЭД Тогда СтруктураПараметров.Вставить("ТоварКодТНВЭД", СтрокаТовары.КодТНВЭД); КонецЕсли; КонецЕсли; ОкруглитьДоЦелого(СтруктураПараметров.КоличествоМест); СтруктураПараметров.Вставить("НомерСтроки", НомерСтроки); СтруктураПараметров.Вставить("НомерСтрокиУКД", НомерСтроки); ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати(); ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара; ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); Если ВыводитьКодТНВД <> Неопределено Тогда ДополнительныеПараметрыПолученияНаименованияДляПечати.КодТНВЭД = ?(НЕ ВыводитьКодТНВД.ВыводитьВКолонке И ВыводитьКодТНВД.ВыводитьВСтроке, СтрокаТовары.КодТНВЭД, ""); Если НЕ ВыводитьКодТНВД.ВыводитьВКолонке Тогда СтруктураПараметров.ТоварКодТНВЭД = "--"; КонецЕсли; КонецЕсли; СерияНаименование = Неопределено; Если ВыводитьСерии Тогда СерияНаименование = СтрокаТовары.СерияНаименование; КонецЕсли; ПредставлениеНоменклатуры = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати( Строка(СтрокаТовары.НоменклатураНаименование), СтрокаТовары.ХарактеристикаНаименование, , СерияНаименование, ДополнительныеПараметрыПолученияНаименованияДляПечати) + ПрефиксИПостфикс.Постфикс; Если ПараметрыПечати.Корректировочный Тогда СтруктураПараметров.Вставить("СтрокаДо", "А (до изменения)"); СтруктураПараметров.Вставить("СтрокаПосле", "Б (после изменения)"); СтруктураПараметров.Вставить("СтрокаУвеличение", "В (увеличение)"); СтруктураПараметров.Вставить("СтрокаУменьшение", "Г (уменьшение)"); Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТовары, "НомерСтрокиИсходногоСФ") Тогда СтруктураПараметров.Вставить("НомерСтроки", СтрокаТовары.НомерСтрокиИсходногоСФ); Иначе СтруктураПараметров.Вставить("НомерСтроки", СтрокаТовары.НомерСтроки); КонецЕсли; СтруктураПараметров.Вставить("ТоварКодТНВЭДДоИзменения", СтрокаТовары.КодТНВЭД); СтруктураПараметров.Вставить("НаименованиеНоменклатуры", ПредставлениеНоменклатуры); СтруктураПараметров.Вставить("НаименованиеЕдиницыИзмерения", СтрокаТовары.ЕдиницаИзмеренияНаименование); СтруктураПараметров.Вставить("КоличествоДоИзменения", СтрокаТовары.КоличествоДо); СтруктураПараметров.Вставить("КоличествоПослеИзменения", СтрокаТовары.Количество); СтруктураПараметров.Вставить("ЦенаДоИзменения", СтрокаТовары.ЦенаДо); СтруктураПараметров.Вставить("ЦенаПослеИзменения", СтрокаТовары.Цена); СтруктураПараметров.Вставить("СтоимостьБезНДСДоИзменения", СтрокаТовары.СуммаБезНДСДо); СтруктураПараметров.Вставить("СтоимостьБезНДСПослеИзменения", СтрокаТовары.СуммаБезНДС); СтруктураПараметров.Вставить("СтавкаНДСДоИзменения", СтрокаТовары.СтавкаНДС); СтруктураПараметров.Вставить("СтавкаНДСПослеИзменения", СтрокаТовары.СтавкаНДС); СтруктураПараметров.Вставить("СуммаНДСДоИзменения", СтрокаТовары.СуммаНДСДо); СтруктураПараметров.Вставить("СуммаНДСПослеИзменения", СтрокаТовары.СуммаНДС); СтруктураПараметров.Вставить("СтоимостьСНДСДоИзменения", СтрокаТовары.СуммаСНДСДо); СтруктураПараметров.Вставить("СтоимостьСНДСПослеИзменения", СтрокаТовары.СуммаСНДС); СтруктураПараметров.Вставить("СтранаПроисхожденияКодДо", СтрокаТовары.СтранаПроисхожденияКод); СтруктураПараметров.Вставить("СтранаПроисхожденияКодПосле", СтрокаТовары.СтранаПроисхожденияКод); СтруктураПараметров.Вставить("ПредставлениеСтраныДо", СтрокаТовары.СтранаПроисхождения); СтруктураПараметров.Вставить("ПредставлениеСтраныПосле", СтрокаТовары.СтранаПроисхождения); СтруктураПараметров.Вставить("ПредставлениеГТДДо", СтрокаТовары.НомерГТД); СтруктураПараметров.Вставить("ПредставлениеГТДПосле", СтрокаТовары.НомерГТД); Если ПрослеживаемыеТовары <> Неопределено И ПрослеживаемыеТовары.Количество() > 0 Тогда РНПТ = ""; ЕдиницаИзмеренияПрослежКод = ""; ЕдиницаИзмеренияПрослеж = ""; КоличествоПоРНПТДо = ""; КоличествоПоРНПТ = ""; КоличествоПрослежУвеличение = 0; КоличествоПрослежУменьшение = 0; Для Каждого СтрокаПрослеживаемость Из ПрослеживаемыеТовары Цикл РНПТ = РНПТ + СтрокаПрослеживаемость.НомерТовара + Символы.ПС; ЕдиницаИзмеренияПрослежКод = ЕдиницаИзмеренияПрослежКод + СтрокаПрослеживаемость.ЕдиницаИзмеренияКод + Символы.ПС; ЕдиницаИзмеренияПрослеж = ЕдиницаИзмеренияПрослеж + СтрокаПрослеживаемость.ЕдиницаИзмеренияНаименование + Символы.ПС; КоличествоПоРНПТДо = КоличествоПоРНПТДо + СтрокаПрослеживаемость.Количество * СтрокаТовары.КоличествоПоРНПТДо + Символы.ПС; КоличествоПоРНПТ = КоличествоПоРНПТ + СтрокаПрослеживаемость.Количество * СтрокаТовары.КоличествоПоРНПТ + Символы.ПС; КоличествоПрослежУвеличение = КоличествоПрослежУвеличение + СтрокаПрослеживаемость.Количество * СтрокаТовары.КоличествоПрослежУвеличение; КоличествоПрослежУменьшение = КоличествоПрослежУменьшение + СтрокаПрослеживаемость.Количество * СтрокаТовары.КоличествоПрослежУменьшение; КонецЦикла; СтруктураПараметров.Вставить("ПредставлениеГТДДо", РНПТ); СтруктураПараметров.Вставить("ПредставлениеГТДПосле", РНПТ); СтруктураПараметров.Вставить("КоличествоПрослежДо", КоличествоПоРНПТДо); СтруктураПараметров.Вставить("КоличествоПрослежПосле", КоличествоПоРНПТ); СтруктураПараметров.Вставить("КоличествоПрослежУвеличение", КоличествоПрослежУвеличение); СтруктураПараметров.Вставить("КоличествоПрослежУменьшение", КоличествоПрослежУменьшение); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКодДо", ЕдиницаИзмеренияПрослежКод); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежДо", ЕдиницаИзмеренияПрослеж); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКодПосле", ЕдиницаИзмеренияПрослежКод); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежПосле", ЕдиницаИзмеренияПрослеж); ИначеЕсли ПараметрыПечати.ЕстьПрослеживаемыеТовары Тогда СтруктураПараметров.Вставить("КоличествоПрослежДо", СтрокаТовары.КоличествоПоРНПТДо); СтруктураПараметров.Вставить("КоличествоПрослежПосле", СтрокаТовары.КоличествоПоРНПТ); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКодДо", СтрокаТовары.ЕдиницаИзмеренияТНВЭДКод); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежДо", СтрокаТовары.ЕдиницаИзмеренияТНВЭДНаименование); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКодПосле", СтрокаТовары.ЕдиницаИзмеренияТНВЭДКод); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежПосле", СтрокаТовары.ЕдиницаИзмеренияТНВЭДНаименование); Иначе СтруктураПараметров.Вставить("КоличествоПрослежДо", ""); СтруктураПараметров.Вставить("КоличествоПрослежПосле", ""); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКодДо", ""); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежДо", ""); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКодПосле", ""); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежПосле", ""); КонецЕсли; Иначе СтруктураПараметров.Вставить("ТоварНаименование", ПредставлениеНоменклатуры); Если Не ПараметрыПечати.СчетФактураНаАванс Тогда СтруктураПараметров.Вставить("ЕдиницаИзмерения", СтрокаТовары.ЕдиницаИзмеренияНаименование); КонецЕсли; СтруктураПараметров.Вставить("Стоимость", СтрокаТовары.СуммаБезНДС); СтруктураПараметров.Вставить("Всего", СтрокаТовары.СуммаСНДС); СтруктураПараметров.Вставить("ПредставлениеСтраны", СтрокаТовары.СтранаПроисхождения); СтруктураПараметров.Вставить("ПредставлениеГТД", СтрокаТовары.НомерГТД); Если ПрослеживаемыеТовары <> Неопределено И ПрослеживаемыеТовары.Количество() > 0 Тогда РНПТ = ""; ЕдиницаИзмеренияПрослежКод = ""; ЕдиницаИзмеренияПрослеж = ""; КоличествоПоРНПТ = ""; Для Каждого СтрокаПрослеживаемость Из ПрослеживаемыеТовары Цикл РНПТ = РНПТ + СтрокаПрослеживаемость.НомерТовара + Символы.ПС; ЕдиницаИзмеренияПрослежКод = ЕдиницаИзмеренияПрослежКод + СтрокаПрослеживаемость.ЕдиницаИзмеренияКод + Символы.ПС; ЕдиницаИзмеренияПрослеж = ЕдиницаИзмеренияПрослеж + СтрокаПрослеживаемость.ЕдиницаИзмеренияНаименование + Символы.ПС; Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаПрослеживаемость, "НомерСтрокиСФ") Тогда КоличествоПоРНПТ = КоличествоПоРНПТ + СтрокаПрослеживаемость.Количество + Символы.ПС; Иначе КоличествоПоРНПТ = КоличествоПоРНПТ + СтрокаПрослеживаемость.Количество * СтрокаТовары.КоличествоПоРНПТ + Символы.ПС; КонецЕсли; КонецЦикла; СтруктураПараметров.Вставить("ПредставлениеГТД", РНПТ); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКод", ЕдиницаИзмеренияПрослежКод); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослеж", ЕдиницаИзмеренияПрослеж); СтруктураПараметров.Вставить("КоличествоПрослеж", КоличествоПоРНПТ); ИначеЕсли СтрокаТовары.КоличествоПоРНПТ <> 0 Тогда СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКод", СтрокаТовары.ЕдиницаИзмеренияТНВЭДКод); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослеж", СтрокаТовары.ЕдиницаИзмеренияТНВЭДНаименование); СтруктураПараметров.Вставить("КоличествоПрослеж", СтрокаТовары.КоличествоПоРНПТ); Иначе СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослежКод", ""); СтруктураПараметров.Вставить("ЕдиницаИзмеренияПрослеж", ""); СтруктураПараметров.Вставить("КоличествоПрослеж", ""); КонецЕсли; КонецЕсли; Если ПараметрыПечати.СчетФактураНаАванс Тогда СтруктураПараметров.Вставить("СтавкаНДСДоИзменения", СтрокаТовары.СтавкаНДСДо); КонецЕсли; Если Не ВыводитьКодНоменклатуры Тогда СтруктураПараметров.ТоварКод = ""; КонецЕсли; ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); Если ИспользоватьНаборы И СтрокаТовары.ЭтоКомплектующие И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие И (СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям ИЛИ СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам) Тогда // Область должна остаться незаполненной ОбластьМакета.Параметры.Заполнить(НаборыСервер.ПустыеДанные()); ИначеЕсли ИспользоватьНаборы И СтрокаТовары.ЭтоНабор И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие И (СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих ИЛИ ПараметрыПечати.СчетФактураНаАванс) Тогда // Область должна остаться незаполненной ОбластьМакета.Параметры.Заполнить(НаборыСервер.ПустыеДанные()); КонецЕсли; Если ИспользоватьНаборы И (СтрокаТовары.ЭтоКомплектующие ИЛИ СтрокаТовары.ЭтоНабор) И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие Тогда ОбластьМакета.Область().ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии, 0); ОбластьМакета.Область().ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии, 0); КонецЕсли; КонецПроцедуры Функция ВыводитьКодыТНВЭД(ДанныеПечати, ДействуетПостановление981) ПараметрыВывода = Новый Структура("ВыводитьВСтроке, ВыводитьВКолонке"); ПараметрыВывода.ВыводитьВСтроке = ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.СчетФактураВыданный") И УчетНДСРФ.СтранаЯвляетсяЧленомТаможенногоСоюза(ДанныеПечати.СтранаРегистрации, ДанныеПечати.Дата) И ДанныеПечати.Дата >= УчетНДСУП.НастройкиУчета().ДатаРазделенияЭкспорта; ПараметрыВывода.ВыводитьВКолонке = ПараметрыВывода.ВыводитьВСтроке И ДействуетПостановление981; Возврат ПараметрыВывода КонецФункции Функция СтруктураИтоговыеСуммы() Структура = Новый Структура; СтруктураРесурсовДляИтогов = СтруктураРесурсовДляИтогов(); Для Каждого Элемент Из СтруктураРесурсовДляИтогов Цикл Структура.Вставить("Итого"+Элемент.Ключ+"НаСтранице", 0); Структура.Вставить("Итого"+Элемент.Ключ, 0); КонецЦикла; Возврат Структура; КонецФункции Функция СтруктураИтоговыеСуммы2_5() Структура = Новый Структура; Структура.Вставить("ИтогоСтоимость", 0); Структура.Вставить("ИтогоСуммаНДС", 0); Структура.Вставить("ИтогоВсего", 0); Структура.Вставить("Количество", 0); Структура.Вставить("КоличествоМест", 0); Структура.Вставить("КоличествоПринято", 0); Структура.Вставить("МассаБрутто", 0); Структура.Вставить("МассаНетто", 0); Структура.Вставить("Сумма", 0); Структура.Вставить("РазницаБезНДСУвеличение", 0); Структура.Вставить("РазницаБезНДСУменьшение", 0); Структура.Вставить("РазницаНДСУвеличение", 0); Структура.Вставить("РазницаНДСУменьшение", 0); Структура.Вставить("РазницаСНДСУвеличение", 0); Структура.Вставить("РазницаСНДСУменьшение", 0); Структура.Вставить("КоличествоПрослежУвеличение", 0); Структура.Вставить("КоличествоПрослежУменьшение", 0); Структура.Вставить("КоличествоПрослежУвеличениеВсего", 0); Структура.Вставить("КоличествоПрослежУменьшениеВсего", 0); Возврат Структура; КонецФункции Функция ВедетсяУчетНДСПоФЗ56(ДатаДокумента, ДатаИсправления) НачалоПримененияФЗ56 = '20170701'; Дата = ?(ЗначениеЗаполнено(ДатаИсправления),ДатаИсправления,ДатаДокумента); Если Дата < НачалоПримененияФЗ56 Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции Функция ДействуетПостановление981(ДатаДокумента, ДатаИсправления) НачалоПрименения = '20171001'; Дата = ?(ЗначениеЗаполнено(ДатаИсправления),ДатаИсправления,ДатаДокумента); Если Дата < НачалоПрименения Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции Функция ДействуетПостановление534(ДатаДокумента, ДатаИсправления) Возврат ?(ЗначениеЗаполнено(ДатаИсправления), ДатаИсправления, ДатаДокумента) >= '20210701'; КонецФункции Функция ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов) ТаблицаКонтрагентов = Новый ТаблицаЗначений; ТаблицаКонтрагентов.Колонки.Добавить("СведенияОПокупателе"); ТаблицаКонтрагентов.Колонки.Добавить("СведенияОГрузополучателе"); ТаблицаКонтрагентов.Колонки.Добавить("КПП"); ТаблицаКонтрагентов.Колонки.Добавить("ИНН"); Если ДанныеКонтрагентов <> Неопределено Тогда СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); ДанныеКонтрагентов.НайтиСледующий(СтруктураПоиска); ВыборкаКонтрагентов = ДанныеКонтрагентов.Выбрать(); Если ВыборкаКонтрагентов.Количество() Тогда Пока ВыборкаКонтрагентов.Следующий() Цикл ДобавитьДанныеКонтрагентовВТаблицу(ТаблицаКонтрагентов, ДанныеПечати.Дата, ВыборкаКонтрагентов); КонецЦикла; Иначе ДобавитьДанныеКонтрагентовВТаблицу(ТаблицаКонтрагентов, ДанныеПечати.Дата, ДанныеПечати); КонецЕсли; Иначе ДобавитьДанныеКонтрагентовВТаблицу(ТаблицаКонтрагентов, ДанныеПечати.Дата, ДанныеПечати); КонецЕсли; Возврат ТаблицаКонтрагентов; КонецФункции Процедура ДобавитьДанныеКонтрагентовВТаблицу(ТаблицаКонтрагентов, Дата, ДанныеКонтрагента) СтрокаКонтрагента = ТаблицаКонтрагентов.Добавить(); СтрокаКонтрагента.СведенияОПокупателе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице( ДанныеКонтрагента.Контрагент, Дата); СтрокаКонтрагента.СведенияОГрузополучателе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице( ДанныеКонтрагента.Грузополучатель, Дата); Если ПустаяСтрока(ДанныеКонтрагента.КПППокупателя) Тогда СтрокаКонтрагента.КПП = СтрокаКонтрагента.СведенияОПокупателе.КПП Иначе СтрокаКонтрагента.КПП = ДанныеКонтрагента.КПППокупателя; КонецЕсли; СтрокаКонтрагента.ИНН = ДанныеКонтрагента.ИННПокупателя; КонецПроцедуры Функция ТаблицаПоставщиковСчетаФактуры(ДанныеПечати, ДанныеПоставщиков) ТаблицаПоставщиков = Новый ТаблицаЗначений; ТаблицаПоставщиков.Колонки.Добавить("СведенияОПоставщике"); ТаблицаПоставщиков.Колонки.Добавить("СведенияОГрузоотправителе"); ТаблицаПоставщиков.Колонки.Добавить("КПП"); ТаблицаПоставщиков.Колонки.Добавить("ИНН"); Если ДанныеПоставщиков <> Неопределено Тогда СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); ДанныеПоставщиков.НайтиСледующий(СтруктураПоиска); ВыборкаПоставщиков = ДанныеПоставщиков.Выбрать(); Пока ВыборкаПоставщиков.Следующий() Цикл СтрокаПоставщика = ТаблицаПоставщиков.Добавить(); СтрокаПоставщика.СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице( ВыборкаПоставщиков.Поставщик, ДанныеПечати.Дата); СтрокаПоставщика.СведенияОГрузоотправителе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице( ВыборкаПоставщиков.Поставщик, ДанныеПечати.Дата); Если ПустаяСтрока(ВыборкаПоставщиков.КПППоставщика) Тогда СтрокаПоставщика.КПП = СтрокаПоставщика.СведенияОПоставщике.КПП; Иначе СтрокаПоставщика.КПП = ВыборкаПоставщиков.КПППоставщика; КонецЕсли; Если ПустаяСтрока(ВыборкаПоставщиков.ИННПоставщика) Тогда СтрокаПоставщика.ИНН = СтрокаПоставщика.СведенияОПоставщике.ИНН; Иначе СтрокаПоставщика.ИНН = ВыборкаПоставщиков.ИННПоставщика; КонецЕсли; КонецЦикла; Иначе СтрокаПоставщика = ТаблицаПоставщиков.Добавить(); СтрокаПоставщика.СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице( ДанныеПечати.Организация, ДанныеПечати.Дата); СтрокаПоставщика.СведенияОГрузоотправителе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице( ДанныеПечати.Организация, ДанныеПечати.Дата); КонецЕсли; Возврат ТаблицаПоставщиков; КонецФункции Функция НомерСчетаФактурыНаПечать(Номер, ИндексПодразделения, УдалитьПользовательскийПрефикс = Ложь) НомерНаПечать = ""; Если Номер <> Неопределено Тогда НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер, Ложь, УдалитьПользовательскийПрефикс); ПозицияРазделителя = СтрНайти(НомерНаПечать, "-"); Префикс = Лев(НомерНаПечать, ПозицияРазделителя); НомерБезПрефикса = Сред(НомерНаПечать, ПозицияРазделителя + 1); Если Лев(НомерБезПрефикса, 1) = "И" Тогда НомерНаПечать = Префикс + Сред(НомерБезПрефикса, 2); КонецЕсли; Если ЗначениеЗаполнено(ИндексПодразделения) Тогда НомерНаПечать = НомерНаПечать + "/" + ИндексПодразделения; КонецЕсли; КонецЕсли; Возврат НомерНаПечать; КонецФункции Функция СведенияОГрузоотправителе(ДанныеПечати) Если ТипЗнч(ДанныеПечати.Грузоотправитель) = Тип("СправочникСсылка.РегистрацииВНалоговомОргане") Тогда СведенияОГрузоотправителе = Справочники.РегистрацииВНалоговомОргане.СведенияОПодразделении(ДанныеПечати.Грузоотправитель, ДанныеПечати.Дата); Иначе СведенияОГрузоотправителе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Грузоотправитель, ДанныеПечати.Дата); КонецЕсли; Возврат СведенияОГрузоотправителе; КонецФункции Функция ТекстЗапросаТаблицаОснований() Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаОснований.Ссылка КАК Ссылка, | ВЫБОР | КОГДА НЕ ТаблицаОснований.Ссылка.Корректировочный | И НЕ ТаблицаОснований.Ссылка.Исправление | ТОГДА ТаблицаОснований.ДокументОснование | ИНАЧЕ ТаблицаОснований.Ссылка | КОНЕЦ КАК ДокументОснование, | ТаблицаОснований.Ссылка.Корректировочный КАК Корректировочный, | ТаблицаОснований.Ссылка.Дата КАК Дата, | ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный, | ТаблицаОснований.Ссылка.РеализацияЧерезКомиссионера КАК РеализацияЧерезКомиссионера |ПОМЕСТИТЬ СчетаФактурыОснования |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований |ГДЕ | ТаблицаОснований.Ссылка В(&МассивОбъектов) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | СчетаФактурыОснования.ДокументОснование КАК ДокументОснование |ИЗ | СчетаФактурыОснования КАК СчетаФактурыОснования |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаОснований.Ссылка КАК Ссылка, | ТаблицаОснований.ДокументОснование КАК ДокументОснование, | ТаблицаОснований.Ссылка.Корректировочный КАК Корректировочный, | ТаблицаОснований.Ссылка.Дата КАК Дата, | ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный |ПОМЕСТИТЬ СчетаФактурыОснования_Шапка |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований |ГДЕ | ТаблицаОснований.Ссылка В(&МассивОбъектов) | И (НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровОтКлиента | И НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровМеждуОрганизациями | ИЛИ НЕ ТаблицаОснований.Ссылка.Корректировочный) | И (НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках | ИЛИ НЕ ТаблицаОснований.Ссылка.Перевыставленный) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаОснований.Ссылка, | ЕСТЬNULL(СчетФактураВыданныйДокументыОснования.ДокументОснование, ТаблицаОснований.Ссылка), | ТаблицаОснований.Ссылка.Корректировочный, | ТаблицаОснований.Ссылка.Дата, | ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары | ПО ТаблицаОснований.Ссылка = ТаблицаТовары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования | ПО (ТаблицаТовары.ИсходныйСчетФактура = СчетФактураВыданныйДокументыОснования.Ссылка) |ГДЕ | ТаблицаОснований.Ссылка В(&МассивОбъектов) | И (ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровОтКлиента | ИЛИ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровМеждуОрганизациями) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаОснований.Ссылка, | ТаблицаОснований.ДокументОснование КАК ДокументОснование, | ТаблицаОснований.Ссылка.Корректировочный, | ТаблицаОснований.Ссылка.Дата, | ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ТаблицаТоварыСчетаФактуры | ПО ТаблицаОснований.Ссылка = ТаблицаТоварыСчетаФактуры.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетКомитентуОЗакупках.Товары КАК ТаблицаТоваровОтчета | ПО (ТаблицаТоваровОтчета.Ссылка = ТаблицаОснований.ДокументОснование | И ТаблицаТоваровОтчета.СчетФактураПолученный = ТаблицаТоварыСчетаФактуры.СчетФактураПолученныйОтПродавца) |ГДЕ | ТаблицаОснований.Ссылка В(&МассивОбъектов) | И (ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках | И ТаблицаОснований.Ссылка.Перевыставленный) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | СчетаФактурыОснования_Шапка.ДокументОснование КАК ДокументОснование |ИЗ | СчетаФактурыОснования_Шапка КАК СчетаФактурыОснования_Шапка"; КонецФункции Функция ТекстЗапросаДанныхТабличнойЧастиДляПечатиСчетаФактуры(ПараметрыПечати) ПечататьСчетаФактурыПолученные = ПараметрыПечати.Свойство("МассивСчетФактураПолученный"); ТекстЗапроса = "ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | ВЫБОР КОГДА СчетаФактурыОснования.РеализацияЧерезКомиссионера | ТОГДА СчетаФактурыОснования.ДокументОснование | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК ДокументОснование, | АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиСФ КАК НомерСтроки, | АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | ТаблицаДокумента.Номенклатура КАК Номенклатура, | ВЫБОР | КОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель.Родитель.Родитель.Сортировка ТОГДА ТаблицаДокумента.Номенклатура.Родитель | ИНАЧЕ NULL | КОНЕЦ КАК ГР1, | ВЫБОР | КОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель.Родитель.Родитель.Сортировка ТОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель | ИНАЧЕ NULL | КОНЕЦ КАК ГР2, | ВЫБОР | КОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель.Родитель.Родитель.Сортировка ТОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель.Родитель | ИНАЧЕ NULL | КОНЕЦ КАК ГР3, | ВЫБОР | КОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель.Родитель.Родитель.Сортировка ТОГДА ТаблицаДокумента.Номенклатура.Родитель.Родитель.Родитель.Родитель | ИНАЧЕ NULL | КОНЕЦ КАК ГР4, | ТаблицаДокумента.НоменклатураНаименование КАК НоменклатураНаименование, | ТаблицаДокумента.НоменклатураКод КАК НоменклатураКод, | ТаблицаДокумента.КодТНВЭД КАК КодТНВЭД, | ТаблицаДокумента.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ДанныеЕдиницыИзмерения.Представление КАК ЕдиницаИзмеренияНаименование, | ДанныеЕдиницыИзмерения.Код КАК ЕдиницаИзмеренияКод, | ТаблицаДокумента.Упаковка КАК Упаковка, | ТаблицаДокумента.Номенклатура.ЕдиницаИзмеренияТНВЭД КАК ЕдиницаИзмеренияТНВЭД, | ТаблицаДокумента.Номенклатура.ЕдиницаИзмеренияТНВЭД.Представление КАК ЕдиницаИзмеренияТНВЭДНаименование, | ТаблицаДокумента.Номенклатура.ЕдиницаИзмеренияТНВЭД.Код КАК ЕдиницаИзмеренияТНВЭДКод, | ТаблицаДокумента.Характеристика КАК Характеристика, | ТаблицаДокумента.НоменклатураПартнера КАК НоменклатураПартнера, | ЕСТЬNULL(ДанныеХарактеристики.НаименованиеПолное, """") КАК ХарактеристикаНаименование, | ТаблицаДокумента.Серия.Наименование КАК СерияНаименование, | ТаблицаДокумента.НомерГТД КАК НомерГТДСсылка, | ЕСТЬNULL(ТаблицаДокумента.НомерГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО) КАК ТипНомераГТД, | ВЫБОР | КОГДА ТаблицаДокумента.НомерГТД.РегистрационныйНомер = """" | ТОГДА ТаблицаДокумента.НомерГТД | ИНАЧЕ ТаблицаДокумента.НомерГТД.РегистрационныйНомер | КОНЕЦ КАК НомерГТД, | ДанныеСтраныПросхождения.Ссылка КАК СтранаПроисхождения, | ДанныеСтраныПросхождения.Код КАК СтранаПроисхожденияКод, | СУММА(ТаблицаДокумента.Количество) КАК Количество, | СУММА(ТаблицаДокумента.КоличествоПоРНПТ) КАК КоличествоПоРНПТ, | ВЫБОР КОГДА СУММА(ТаблицаДокумента.Количество) = 0 И ТаблицаДокумента.Цена = 0 | ТОГДА ТаблицаДокумента.ЦенаДо | ИНАЧЕ ТаблицаДокумента.Цена | КОНЕЦ КАК Цена, | СУММА(ТаблицаДокумента.СуммаБезНДС) КАК СуммаБезНДС, | СУММА(ТаблицаДокумента.СуммаНДС) КАК СуммаНДС, | СУММА(ТаблицаДокумента.СуммаБезНДС | + ТаблицаДокумента.СуммаНДС) КАК СуммаСНДС, | ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС, | | СУММА(ТаблицаДокумента.КоличествоДо) КАК КоличествоДо, | СУММА(ТаблицаДокумента.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо, | СУММА(ТаблицаДокумента.КоличествоПоРНПТУвеличение) КАК КоличествоПрослежУвеличение, | СУММА(ТаблицаДокумента.КоличествоПоРНПТУменьшение) КАК КоличествоПрослежУменьшение, | ТаблицаДокумента.ЦенаДо КАК ЦенаДо, | СУММА(ТаблицаДокумента.СуммаБезНДСДо) КАК СуммаБезНДСДо, | СУММА(ТаблицаДокумента.РазницаБезНДСУвеличение) КАК РазницаБезНДСУвеличение, | СУММА(ТаблицаДокумента.РазницаБезНДСУменьшение) КАК РазницаБезНДСУменьшение, | СУММА(ТаблицаДокумента.СуммаНДСДо) КАК СуммаНДСДо, | СУММА(ТаблицаДокумента.РазницаНДСУвеличение) КАК РазницаНДСУвеличение, | СУММА(ТаблицаДокумента.РазницаНДСУменьшение) КАК РазницаНДСУменьшение, | СУММА(ТаблицаДокумента.СуммаБезНДСДо | + ТаблицаДокумента.СуммаНДСДо) КАК СуммаСНДСДо, | СУММА(ТаблицаДокумента.РазницаСНДСУвеличение) КАК РазницаСНДСУвеличение, | СУММА(ТаблицаДокумента.РазницаСНДСУменьшение) КАК РазницаСНДСУменьшение, | | //ДанныеНаборов | | ЛОЖЬ КАК ЭтоВозвратнаяТара | |ИЗ | ТаблицаТоваровДокументов КАК ТаблицаДокумента | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования | ПО (ВЫБОР | КОГДА СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках | ТОГДА СчетаФактурыОснования.Ссылка = ТаблицаДокумента.СсылкаСФ | КОГДА СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомиссионера | ТОГДА СчетаФактурыОснования.ДокументОснование = ТаблицаДокумента.Ссылка | И (ТаблицаДокумента.Покупатель, ТаблицаДокумента.НомерСчетаФактуры) В | (ВЫБРАТЬ СчетаФактурыПокупатели.Покупатель, | СчетаФактурыПокупатели.НомерСчетаФактуры | ИЗ СчетаФактурыПокупатели КАК СчетаФактурыПокупатели | ГДЕ | СчетаФактурыПокупатели.Ссылка = СчетаФактурыОснования.Ссылка) | ИНАЧЕ СчетаФактурыОснования.ДокументОснование = ТаблицаДокумента.Ссылка | КОНЕЦ) | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеЕдиницыИзмерения | ПО ТаблицаДокумента.ЕдиницаИзмерения = ДанныеЕдиницыИзмерения.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ДанныеХарактеристики | ПО ТаблицаДокумента.Характеристика = ДанныеХарактеристики.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК ДанныеСтраныПросхождения | ПО ТаблицаДокумента.НомерГТД.СтранаПроисхождения = ДанныеСтраныПросхождения.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиТаблицыТоваровСНомерамиСтрок КАК АналитикиТаблицыТоваровСНомерамиСтрок | ПО АналитикиТаблицыТоваровСНомерамиСтрок.СчетФактура = СчетаФактурыОснования.Ссылка | И АналитикиТаблицыТоваровСНомерамиСтрок.ДокументОснование = СчетаФактурыОснования.ДокументОснование | И АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиИсходногоСФ = ТаблицаДокумента.НомерСтрокиИсходногоСФ | И АналитикиТаблицыТоваровСНомерамиСтрок.Номенклатура = ТаблицаДокумента.Номенклатура | И АналитикиТаблицыТоваровСНомерамиСтрок.НоменклатураНаименование = ТаблицаДокумента.НоменклатураНаименование | И АналитикиТаблицыТоваровСНомерамиСтрок.КодТНВЭД = ТаблицаДокумента.КодТНВЭД | И АналитикиТаблицыТоваровСНомерамиСтрок.Характеристика = ТаблицаДокумента.Характеристика | И АналитикиТаблицыТоваровСНомерамиСтрок.Серия = ТаблицаДокумента.Серия | И АналитикиТаблицыТоваровСНомерамиСтрок.НомерГТД = ТаблицаДокумента.НомерГТД | И АналитикиТаблицыТоваровСНомерамиСтрок.Цена = ТаблицаДокумента.Цена | И АналитикиТаблицыТоваровСНомерамиСтрок.СтавкаНДС = ТаблицаДокумента.СтавкаНДС | И АналитикиТаблицыТоваровСНомерамиСтрок.ЦенаДо = ТаблицаДокумента.ЦенаДо | //СоединениеНаборов |ГДЕ | НЕ ТаблицаДокумента.ЭтоВозвратнаяТара | |СГРУППИРОВАТЬ ПО | СчетаФактурыОснования.Ссылка, | ВЫБОР КОГДА СчетаФактурыОснования.РеализацияЧерезКомиссионера | ТОГДА СчетаФактурыОснования.ДокументОснование | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ, | АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиСФ, | АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиИсходногоСФ, | ТаблицаДокумента.Номенклатура, | ТаблицаДокумента.НоменклатураНаименование, | ТаблицаДокумента.НоменклатураКод, | ТаблицаДокумента.КодТНВЭД, | ТаблицаДокумента.ЕдиницаИзмерения, | ТаблицаДокумента.Номенклатура.ЕдиницаИзмеренияТНВЭД, | ТаблицаДокумента.Номенклатура.ЕдиницаИзмеренияТНВЭД.Представление, | ТаблицаДокумента.Номенклатура.ЕдиницаИзмеренияТНВЭД.Код, | ДанныеЕдиницыИзмерения.Представление, | ДанныеЕдиницыИзмерения.Код, | ТаблицаДокумента.Упаковка, | ТаблицаДокумента.Характеристика, | ТаблицаДокумента.НоменклатураПартнера, | ДанныеХарактеристики.НаименованиеПолное, | ТаблицаДокумента.Серия.Наименование, | ТаблицаДокумента.НомерГТД, | ЕСТЬNULL(ТаблицаДокумента.НомерГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО), | ВЫБОР | КОГДА ТаблицаДокумента.НомерГТД.РегистрационныйНомер = """" | ТОГДА ТаблицаДокумента.НомерГТД | ИНАЧЕ ТаблицаДокумента.НомерГТД.РегистрационныйНомер | КОНЕЦ, | ДанныеСтраныПросхождения.Ссылка, | ТаблицаДокумента.Цена, | ТаблицаДокумента.ЦенаДо, | ТаблицаДокумента.НомерГТД, | ЕСТЬNULL(ТаблицаДокумента.НомерГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО), | //ГруппировкаНаборов | ТаблицаДокумента.СтавкаНДС"; Если ПараметрыПечати.ВыводитьНаборы Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНаборов", "МИНИМУМ(ТаблицаДокумента.НомерСтрокиНаборы) КАК НомерСтрокиНаборы, | ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | ТаблицаДокумента.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | ТаблицаДокумента.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора, | ТаблицаДокумента.ЭтоКомплектующие КАК ЭтоКомплектующие, | ТаблицаДокумента.ЭтоНабор КАК ЭтоНабор, | ТаблицаДокумента.ПолныйНабор КАК ПолныйНабор,"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ГруппировкаНаборов", "ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах, | ТаблицаДокумента.ВариантРасчетаЦеныНабора, | ТаблицаДокумента.НоменклатураНабора, | ТаблицаДокумента.ХарактеристикаНабора, | ТаблицаДокумента.ЭтоКомплектующие, | ТаблицаДокумента.ЭтоНабор, | ТаблицаДокумента.ПолныйНабор,"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//СоединениеНаборов", "И АналитикиТаблицыТоваровСНомерамиСтрок.ВариантПредставленияНабораВПечатныхФормах = ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах | И АналитикиТаблицыТоваровСНомерамиСтрок.ВариантРасчетаЦеныНабора = ТаблицаДокумента.ВариантРасчетаЦеныНабора | И АналитикиТаблицыТоваровСНомерамиСтрок.НоменклатураНабора = ТаблицаДокумента.НоменклатураНабора | И АналитикиТаблицыТоваровСНомерамиСтрок.ХарактеристикаНабора = ТаблицаДокумента.ХарактеристикаНабора | И АналитикиТаблицыТоваровСНомерамиСтрок.ЭтоКомплектующие = ТаблицаДокумента.ЭтоКомплектующие | И АналитикиТаблицыТоваровСНомерамиСтрок.ЭтоНабор = ТаблицаДокумента.ЭтоНабор | И АналитикиТаблицыТоваровСНомерамиСтрок.ПолныйНабор = ТаблицаДокумента.ПолныйНабор"); КонецЕсли; Если ПечататьСчетаФактурыПолученные Тогда ТекстЗапроса = ТекстЗапроса + " | |ОБЪЕДИНИТЬ ВСЕ |" + СтрЗаменить(ТекстЗапроса, "СчетаФактурыОснования", "СчетаФактурыПолученныеОснования"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "СчетаФактурыПолученныеОснования.РеализацияЧерезКомиссионера", "ЛОЖЬ"); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " | |УПОРЯДОЧИТЬ ПО |ГР4, |ГР3, |ГР2, |ГР1, |Номенклатура, |Ссылка, | ДокументОснование, | //ПорядокНаборов | НомерСтроки |ИТОГИ ПО | Ссылка |;"; Если ПараметрыПечати.ВыводитьНаборы Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПорядокНаборов", "НомерСтрокиНаборы, | НоменклатураНабора, | ХарактеристикаНабора, | ЭтоНабор УБЫВ,"); КонецЕсли; Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаДанныхПрослеживаемыеКомплектующие() ТекстЗапроса = " |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаДокумента.НомерГТД КАК НомерГТД, | Комплектующие.НомерРНПТ КАК НомерРНПТ, | ВЫБОР | КОГДА Комплектующие.НомерРНПТ.РегистрационныйНомер = """" | ТОГДА Комплектующие.НомерРНПТ | ИНАЧЕ Комплектующие.НомерРНПТ.РегистрационныйНомер | КОНЕЦ КАК НомерТовара, | Комплектующие.КоличествоПоРНПТ КАК Количество, | Комплектующие.ЕдиницаИзмеренияТНВЭД КАК ЕдиницаИзмерения, | Комплектующие.ЕдиницаИзмеренияТНВЭД.Код КАК ЕдиницаИзмеренияКод, | Комплектующие.ЕдиницаИзмеренияТНВЭД.Представление КАК ЕдиницаИзмеренияНаименование |ИЗ | ТаблицаТоваров КАК ТаблицаДокумента | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НомераГТД.ПрослеживаемыеКомплектующие КАК Комплектующие | ПО ТаблицаДокумента.НомерГТД = Комплектующие.Ссылка"; Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаДанныхПоПеревыставленномуСчетуФактуре() ТекстЗапроса = " | |; | |//////////////////////////////////////////////////////////////////////////// | |ВЫБРАТЬ РАЗЛИЧНЫЕ | СчетаФактурыОснования.Ссылка КАК Ссылка, | ДанныеДокумента.СчетФактураПолученныйОтПродавца.Контрагент КАК Поставщик, | ДанныеДокумента.СчетФактураПолученныйОтПродавца.ИННКонтрагента КАК ИННПоставщика, | ДанныеДокумента.СчетФактураПолученныйОтПродавца.КППКонтрагента КАК КПППоставщика |ИЗ | СчетаФактурыОснованияПервые КАК СчетаФактурыОснования | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ДанныеДокумента | ПО СчетаФактурыОснования.Ссылка = ДанныеДокумента.Ссылка | ГДЕ | ДанныеДокумента.Ссылка.Перевыставленный |УПОРЯДОЧИТЬ ПО | Ссылка |ИТОГИ ПО | Ссылка |//////////////////////////////////////////////////////////////////////////// |"; Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаДанныхПрослеживаемость() ТекстЗапроса = РеализацияУслугПрочихАктивовЛокализация.ТекстЗапросаДанныхПрослеживаемость(); Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаИсходныхДокументовДляПечатиСчетаФактуры() ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СчетаФактурыОснования.Ссылка КАК Ссылка, | ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура, ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)) КАК ИсходныйДокумент, | ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """") КАК НомерСчетаФактуры, | ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата) КАК ДатаСчетаФактуры, | ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """") КАК НомерИсправленияСчетаФактуры, | ВЫБОР | КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление | ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1)) | ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1) | КОНЕЦ КАК ДатаИсправленияСчетаФактуры |ИЗ | СчетаФактурыОснования КАК СчетаФактурыОснования | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураТовары | ПО СчетаФактурыОснования.Ссылка = СчетФактураТовары.Ссылка | |УПОРЯДОЧИТЬ ПО | Ссылка, | ИсходныйДокумент |ИТОГИ ПО | Ссылка |; |//////////////////////////////////////////////////////////////////////////// |"; Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаДанныхМаркировки(ЗаполнитьДанныеШтрихкодовДляУКДДо = Ложь) ТекстЗапроса = "ВЫБРАТЬ | ТаблицаШтрихкодыУпаковок.ШтрихкодУпаковки КАК Штрихкод, | СчетаФактурыОснования.Ссылка КАК Ссылка |ИЗ | ШтрихкодыУпаковок КАК ТаблицаШтрихкодыУпаковок | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования | ПО СчетаФактурыОснования.ДокументОснование = ТаблицаШтрихкодыУпаковок.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровИСМП КАК ДокументыПрямогоОбмена | ПО СчетаФактурыОснования.ДокументОснование = ДокументыПрямогоОбмена.ДокументОснование | И НЕ ДокументыПрямогоОбмена.ПометкаУдаления |ГДЕ | ДокументыПрямогоОбмена.Ссылка ЕСТЬ NULL | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | ТаблицаШтрихкодыУпаковок.ШтрихкодУпаковки КАК Штрихкод, | ТаблицаШтрихкодыУпаковок.Ссылка КАК Ссылка |ИЗ | ШтрихкодыУпаковок КАК ТаблицаШтрихкодыУпаковок | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования | ПО СчетаФактурыОснования.Ссылка = ТаблицаШтрихкодыУпаковок.Ссылка | |ГДЕ | СчетаФактурыОснования.Корректировочный"; Если ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда ТекстЗапроса = ТекстЗапроса + " |; |//////////////////////////////////////////////////////////////////////////// | |ВЫБРАТЬ | ТаблицаШтрихкодыУпаковокДо.ШтрихкодУпаковки КАК Штрихкод, | ТаблицаШтрихкодыУпаковокДо.Ссылка КАК Ссылка |ИЗ | ШтрихкодыУпаковокДо КАК ТаблицаШтрихкодыУпаковокДо | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования | ПО СчетаФактурыОснования.Ссылка = ТаблицаШтрихкодыУпаковокДо.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровИСМП КАК ДокументыПрямогоОбмена | ПО ТаблицаШтрихкодыУпаковокДо.ДокументРеализации = ДокументыПрямогоОбмена.ДокументОснование | И НЕ ДокументыПрямогоОбмена.ПометкаУдаления | |ГДЕ | ДокументыПрямогоОбмена.Ссылка ЕСТЬ NULL | И СчетаФактурыОснования.Корректировочный"; КонецЕсли; Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(ПараметрыПечати) ПечататьСчетаФактурыПолученные = ПараметрыПечати.Свойство("МассивСчетФактураПолученный"); ТекстЗапроса = "ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | МИНИМУМ(СчетаФактурыОснования.ДокументОснование) КАК ДокументОснование |ПОМЕСТИТЬ СчетаФактурыОснованияПервые |ИЗ | СчетаФактурыОснования_Шапка КАК СчетаФактурыОснования | |СГРУППИРОВАТЬ ПО | СчетаФактурыОснования.Ссылка |; | |///////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ДанныеОснований.НалогообложениеНДС КАК НалогообложениеНДС, | ДанныеКонтрагента.СтранаРегистрации КАК СтранаРегистрации, | | ВЫБОР КОГДА ЕСТЬNULL(ДанныеОрганизацийПоставщик.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА | ДанныеОрганизацийПоставщик.ГоловнаяОрганизация | ИНАЧЕ | СчетФактураВыданный.Организация | КОНЕЦ КАК Организация, | | ВЫБОР КОГДА ЕСТЬNULL(ДанныеОрганизацийПокупатель.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА | ДанныеОрганизацийПокупатель.ГоловнаяОрганизация | КОГДА ЕСТЬNULL(ДанныеКонтрагента.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА | ДанныеКонтрагента.ГоловнойКонтрагент | ИНАЧЕ | СчетФактураВыданный.Контрагент | КОНЕЦ КАК Контрагент, | | ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ДанныеОснований.Грузоотправитель) = ТИП(Справочник.Контрагенты) | И ДанныеОснований.Грузоотправитель <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА | ДанныеОснований.Грузоотправитель | КОГДА НЕ ДанныеПодразделений.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL ТОГДА | ДанныеПодразделений.РегистрацияВНалоговомОргане | КОГДА ДанныеОснований.Грузоотправитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА | СчетФактураВыданный.Организация | ИНАЧЕ | ДанныеОснований.Грузоотправитель | КОНЕЦ КАК Грузоотправитель, | | ВЫБОР КОГДА ДанныеОснований.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА | СчетФактураВыданный.Контрагент | ИНАЧЕ | ДанныеОснований.Грузополучатель | КОНЕЦ КАК Грузополучатель, | | ВЫБОР КОГДА НЕ ДанныеПодразделенийДляКПП.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL ТОГДА | ДанныеПодразделенийДляКПП.РегистрацияВНалоговомОргане.КПП | ИНАЧЕ | ДанныеОрганизацийПоставщик.КПП | КОНЕЦ КАК КПППоставщика, | | ВЫБОР КОГДА СчетФактураВыданный.КППКонтрагента ПОДОБНО """" ТОГДА | ВЫБОР КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Контрагенты ТОГДА """" | КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Организации ТОГДА ЕстьNULL(ДанныеОрганизацийПокупатель.КПП, """") | ИНАЧЕ """" | КОНЕЦ | ИНАЧЕ | СчетФактураВыданный.КППКонтрагента | КОНЕЦ КАК КПППокупателя, | | ВЫБОР КОГДА СчетФактураВыданный.ИННКонтрагента ПОДОБНО """" ТОГДА | ВЫБОР КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Контрагенты ТОГДА ЕстьNULL(ДанныеКонтрагента.ИНН, """") | КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Организации ТОГДА ЕстьNULL(ДанныеОрганизацийПокупатель.ИНН, """") | ИНАЧЕ """" | КОНЕЦ | ИНАЧЕ | СчетФактураВыданный.ИННКонтрагента | КОНЕЦ КАК ИННПокупателя, | | ДанныеОрганизацийПоставщик.Префикс КАК Префикс, | ДанныеОснований.Комиссионер КАК Комиссионер, | ДанныеВалюты.Ссылка КАК Валюта, | ДанныеВалюты.НаименованиеПолное КАК ВалютаНаименованиеПолное, | ДанныеВалюты.Код КАК ВалютаКод, |//РеквизитыОснованийДляУПД | ВЫБОР |//УсловиеУПДВыданного | КОГДА НЕ ДанныеОснований.РасчетыЧерезОтдельногоКонтрагента | ИЛИ СчетФактураВыданный.Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация) | ТОГДА ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ПечататьСчетФактураВыданный, | СчетФактураВыданный.Перевыставленный КАК ПеревыставленныйСчетФактура | |ПОМЕСТИТЬ ДанныеОснований |ИЗ | СчетаФактурыОснованияПервые КАК СчетаФактурыОснования | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный | ПО СчетФактураВыданный.Ссылка = СчетаФактурыОснования.Ссылка | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаШапокДокументов КАК ДанныеОснований | ПО СчетаФактурыОснования.ДокументОснование = ДанныеОснований.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ДанныеОрганизацийПоставщик | ПО СчетФактураВыданный.Организация = ДанныеОрганизацийПоставщик.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК ДанныеПодразделений | ПО ДанныеПодразделений.Организация = СчетФактураВыданный.Организация | И ДанныеПодразделений.Подразделение = ЕСТЬNULL(ДанныеОснований.Склад.Подразделение, ДанныеОснований.Подразделение) | И ДанныеПодразделений.Подразделение <> ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка) | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК ДанныеПодразделенийДляКПП | ПО ДанныеПодразделенийДляКПП.Организация = СчетФактураВыданный.Организация | И ДанныеПодразделенийДляКПП.Подразделение = ЕСТЬNULL(СчетФактураВыданный.Склад.Подразделение, СчетФактураВыданный.Подразделение) | И ДанныеПодразделенийДляКПП.Подразделение <> ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка) | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ДанныеОрганизацийПокупатель | ПО ДанныеОрганизацийПокупатель.Ссылка = СчетФактураВыданный.Контрагент | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеКонтрагента | ПО ДанныеКонтрагента.Ссылка = СчетФактураВыданный.Контрагент | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК ДанныеВалюты | ПО ДанныеОснований.Валюта = ДанныеВалюты.Ссылка | |ИНДЕКСИРОВАТЬ ПО | Ссылка | |; |///////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | МАКСИМУМ(ВЫБОР | КОГДА НЕ ТаблицаТоваров.ЭтоТовар | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ЕстьУслуги, | МАКСИМУМ(ВЫБОР | КОГДА ТаблицаТоваров.ЭтоТовар | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ЕстьТовары, | МАКСИМУМ(ВЫБОР | КОГДА ЕСТЬNULL(ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар, ЛОЖЬ) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ЕстьПрослеживаемыеТовары |ПОМЕСТИТЬ | НоменклатураДокументов |ИЗ | СчетаФактурыОснования КАК СчетаФактурыОснования | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаТоваров КАК ТаблицаТоваров | ПО СчетаФактурыОснования.ДокументОснование = ТаблицаТоваров.Ссылка | |СГРУППИРОВАТЬ ПО | СчетаФактурыОснования.Ссылка |ИНДЕКСИРОВАТЬ ПО | Ссылка |; | |//////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | СчетаФактуры.Ссылка КАК Ссылка, | Покупатели.Покупатель КАК Грузополучатель, | | ВЫБОР КОГДА ЕСТЬNULL(ДанныеКонтрагента.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА | ДанныеКонтрагента.ГоловнойКонтрагент | ИНАЧЕ | Покупатели.Покупатель | КОНЕЦ КАК Контрагент, | | Покупатели.КПППокупателя КАК КПППокупателя, | Покупатели.ИННПокупателя КАК ИННПокупателя | |ИЗ | СчетаФактурыОснования КАК СчетаФактуры | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Покупатели КАК Покупатели | ПО СчетаФактуры.Ссылка = Покупатели.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеКонтрагента | ПО ДанныеКонтрагента.Ссылка = Покупатели.Покупатель | |ГДЕ | СчетаФактуры.РеализацияЧерезКомиссионера | |УПОРЯДОЧИТЬ ПО | Ссылка |ИТОГИ ПО | Ссылка |; |///////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | ДанныеДокумента.ИдентификаторГосКонтракта КАК ИдентификаторГосКонтракта, | ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ДанныеОснований.СтранаРегистрации КАК СтранаРегистрации, | | &ПредставлениеСчетФактура КАК ПредставлениеДокумента, | ДанныеДокумента.ПредставлениеНомера КАК Номер, | ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА | ЕСТЬNULL(ДанныеДокумента.СчетФактураОснование.Дата, ДАТАВРЕМЯ(1,1,1)) | ИНАЧЕ | ДанныеДокумента.Дата | КОНЕЦ КАК Дата, | ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА | ДанныеДокумента.НомерИсправления | ИНАЧЕ | НЕОПРЕДЕЛЕНО | КОНЕЦ КАК НомерИсправления, | ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА | ДанныеДокумента.Дата | ИНАЧЕ | НЕОПРЕДЕЛЕНО | КОНЕЦ КАК ДатаИсправления, | ДанныеДокумента.Исправление КАК Исправление, | ДанныеДокумента.Корректировочный КАК КорректировочныйСчетФактура, | ЕСТЬNULL(ТаблицаПлатежноРасчетныеДокументы.СтрокаПлатежноРасчетныеДокументы, | ДанныеДокумента.СтрокаПлатежноРасчетныеДокументы) КАК СтрокаПоДокументу, | ДанныеДокумента.Валюта КАК ВалютаСчетаФактуры, | ДанныеОснований.Контрагент КАК Контрагент, | ДанныеОснований.КПППокупателя КАК КПППокупателя, | ДанныеОснований.ИННПокупателя КАК ИННПокупателя, | ДанныеОснований.Грузополучатель КАК Грузополучатель, | ДанныеОснований.Организация КАК Организация, | ДанныеОснований.НалогообложениеНДС КАК НалогообложениеНДС, | ДанныеОснований.КПППоставщика КАК КПППоставщика, | ДанныеОснований.Грузоотправитель КАК Грузоотправитель, | ДанныеОснований.Префикс КАК Префикс, | 0 КАК ИндексПодразделения, | ВЫБОР | КОГДА ОтветственныеЛицаСФ.РуководительНаименование = """" | ТОГДА ТаблицаОтветственныеЛица.РуководительНаименование | ИНАЧЕ ОтветственныеЛицаСФ.РуководительНаименование | КОНЕЦ КАК Руководитель, | ВЫБОР | КОГДА ОтветственныеЛицаСФ.РуководительДолжность = """" | ТОГДА ТаблицаОтветственныеЛица.РуководительДолжность | ИНАЧЕ ОтветственныеЛицаСФ.РуководительДолжность | КОНЕЦ КАК ДолжностьРуководителя, | ВЫБОР | КОГДА ОтветственныеЛицаСФ.ГлавныйБухгалтерНаименование = """" | ТОГДА ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование | ИНАЧЕ ОтветственныеЛицаСФ.ГлавныйБухгалтерНаименование | КОНЕЦ КАК ГлавныйБухгалтер, | ДанныеОснований.Валюта КАК Валюта, | ДанныеОснований.ВалютаНаименованиеПолное КАК ВалютаНаименованиеПолное, | ДанныеОснований.ВалютаКод КАК ВалютаКод, | //РеквизитыОснованийДляУПД | //ДанныеУПДВыданного | ВЫБОР | КОГДА НоменклатураДокументов.ЕстьУслуги | И НЕ НоменклатураДокументов.ЕстьТовары | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ТолькоУслуги, | НоменклатураДокументов.ЕстьПрослеживаемыеТовары КАК ЕстьПрослеживаемыеТовары, | ДанныеДокумента.Перевыставленный КАК ПеревыставленныйСчетФактура, | ПредставленияСтрок5а.ПредставлениеСтроки5а КАК ПредставлениеСтроки5а, | ДанныеДокумента.РеализацияЧерезКомиссионера КАК РеализацияЧерезКомиссионера, | ДанныеКомиссионера.ПредставлениеВыставленКомиссионеру КАК ПредставлениеВыставленКомиссионеру |ИЗ | СчетаФактурыОснованияПервые КАК СчетаФактурыОснования | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК ДанныеДокумента | ПО СчетаФактурыОснования.Ссылка = ДанныеДокумента.Ссылка | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеОснований КАК ДанныеОснований | ПО СчетаФактурыОснования.Ссылка = ДанныеОснований.Ссылка | И ДанныеОснований.ПечататьСчетФактураВыданный | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДокументов КАК НоменклатураДокументов | ПО СчетаФактурыОснования.Ссылка = НоменклатураДокументов.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица | ПО СчетаФактурыОснования.ДокументОснование = ТаблицаОтветственныеЛица.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ОтветственныеЛицаСФ КАК ОтветственныеЛицаСФ | ПО ДанныеДокумента.Ссылка = ОтветственныеЛицаСФ.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПлатежноРасчетныеДокументы КАК ТаблицаПлатежноРасчетныеДокументы | ПО СчетаФактурыОснования.Ссылка = ТаблицаПлатежноРасчетныеДокументы.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияСтрок5а КАК ПредставленияСтрок5а | ПО ПредставленияСтрок5а.СчетФактура = СчетаФактурыОснования.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ПредставлениеВыставленКомиссионеру КАК ДанныеКомиссионера | ПО ДанныеКомиссионера.СчетФактура = СчетаФактурыОснования.Ссылка |"; Если ПечататьСчетаФактурыПолученные Тогда ТекстЗапроса = ТекстЗапроса + " | |ОБЪЕДИНИТЬ ВСЕ |" + "ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | НЕОПРЕДЕЛЕНО КАК ИдентификаторГосКонтракта, | ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ДанныеОснований.СтранаРегистрации КАК СтранаРегистрации, | &ПредставлениеСчетФактураПосредника КАК ПредставлениеДокумента, | ДанныеДокумента.Номер КАК Номер, | ДанныеДокумента.ДатаСоставления КАК Дата, | ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА | ДанныеДокумента.НомерИсправления | ИНАЧЕ | НЕОПРЕДЕЛЕНО | КОНЕЦ КАК НомерИсправления, | ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА | ДанныеДокумента.ДатаИсправления | ИНАЧЕ | НЕОПРЕДЕЛЕНО | КОНЕЦ КАК ДатаИсправления, | ДанныеДокумента.Исправление КАК Исправление, | ЛОЖЬ КАК КорректировочныйСчетФактура, | """" КАК СтрокаПоДокументу, | ДанныеДокумента.Валюта КАК ВалютаСчетаФактуры, | ДанныеОснований.Контрагент КАК Контрагент, | ДанныеОснований.КПППокупателя КАК КПППокупателя, | ДанныеОснований.ИННПокупателя КАК ИННПокупателя, | ДанныеОснований.Грузополучатель КАК Грузополучатель, | ДанныеОснований.Организация КАК Организация, | НЕОПРЕДЕЛЕНО КАК НалогообложениеНДС, | ДанныеОснований.КПППоставщика КАК КПППоставщика, | ДанныеОснований.Грузоотправитель КАК Грузоотправитель, | ДанныеОснований.Префикс КАК Префикс, | 0 КАК ИндексПодразделения, | """" КАК Руководитель, | """" КАК ДолжностьРуководителя, | """" КАК ГлавныйБухгалтер, | ДанныеОснований.Валюта КАК Валюта, | ДанныеОснований.ВалютаНаименованиеПолное КАК ВалютаНаименованиеПолное, | ДанныеОснований.ВалютаКод КАК ВалютаКод, | //ДанныеУПДПолученного | ВЫБОР | КОГДА НоменклатураДокументов.ЕстьУслуги | И НЕ НоменклатураДокументов.ЕстьТовары | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ТолькоУслуги, | ЛОЖЬ КАК ЕстьПрослеживаемыеТовары, | ЛОЖЬ КАК ПеревыставленныйСчетФактура, | ПредставленияСтрок5а.ПредставлениеСтроки5а КАК ПредставлениеСтроки5а, | ЛОЖЬ КАК РеализацияЧерезКомиссионера, | ДанныеКомиссионера.ПредставлениеВыставленКомиссионеру КАК ПредставлениеВыставленКомиссионеру | |ИЗ | СчетаФактурыПолученныеОснованияПервые КАК СчетаФактурыОснования | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК ДанныеДокумента | ПО СчетаФактурыОснования.Ссылка = ДанныеДокумента.Ссылка | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеОснованийСчетФактураПолученный КАК ДанныеОснований | ПО СчетаФактурыОснования.Ссылка = ДанныеОснований.Ссылка | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДокументовПолученные КАК НоменклатураДокументов | ПО СчетаФактурыОснования.Ссылка = НоменклатураДокументов.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияСтрок5а КАК ПредставленияСтрок5а | ПО ПредставленияСтрок5а.СчетФактура = СчетаФактурыОснования.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ПредставлениеВыставленКомиссионеру КАК ДанныеКомиссионера | ПО ДанныеКомиссионера.СчетФактура = СчетаФактурыОснования.Ссылка |"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " | |УПОРЯДОЧИТЬ ПО | Ссылка |; |//////////////////////////////////////////////////////////////////////////// |"; Если ПараметрыПечати.Свойство("ДополнитьДаннымиУПД") И ПараметрыПечати.ДополнитьДаннымиУПД Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//РеквизитыОснованийДляУПД", " ДанныеОснований.Основание КАК Основание, | ДанныеОснований.ОснованиеДата КАК ОснованиеДата, | ДанныеОснований.ОснованиеНомер КАК ОснованиеНомер, | ДанныеОснований.БанковскийСчетОрганизации КАК БанковскийСчетОрганизации, | ДанныеОснований.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента, | ДанныеОснований.БанковскийСчетГрузоотправителя КАК БанковскийСчетГрузоотправителя, | ДанныеОснований.БанковскийСчетГрузополучателя КАК БанковскийСчетГрузополучателя, | ДанныеОснований.ДоверенностьНомер КАК ДоверенностьНомер, | ДанныеОснований.ДоверенностьДата КАК ДоверенностьДата, | ДанныеОснований.ДоверенностьВыдана КАК ДоверенностьВыдана, | ДанныеОснований.ДоверенностьЛицо КАК ДоверенностьЛицо, | ДанныеОснований.Менеджер КАК Менеджер, | ДанныеОснований.Кладовщик КАК Кладовщик, | ДанныеОснований.ДолжностьКладовщика КАК ДолжностьКладовщика,"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеУПДВыданного", " ИСТИНА КАК ВыводитьКодНоменклатуры, | ИСТИНА КАК ТребуетсяНаличиеСФ, | НЕ ДанныеДокумента.Корректировочный КАК ПечатьНеТребуется, | 1 КАК СтатусУПД,"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеУПДВыданного", " КОГДА ТИПЗНАЧЕНИЯ(СчетФактураВыданный.ДокументОснование) = ТИП(Документ.ВозвратТоваровМеждуОрганизациями) | И СчетФактураВыданный.Дата >= &ДатаОтраженияВозвратовКорректировочнымиСФ | ТОГДА ЛОЖЬ"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеУПДПолученного", " НЕОПРЕДЕЛЕНО КАК Основание, | НЕОПРЕДЕЛЕНО КАК ОснованиеДата, | НЕОПРЕДЕЛЕНО КАК ОснованиеНомер, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетОрганизации, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетКонтрагента, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузоотправителя, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузополучателя, | НЕОПРЕДЕЛЕНО КАК ДоверенностьНомер, | НЕОПРЕДЕЛЕНО КАК ДоверенностьДата, | НЕОПРЕДЕЛЕНО КАК ДоверенностьВыдана, | НЕОПРЕДЕЛЕНО КАК ДоверенностьЛицо, | НЕОПРЕДЕЛЕНО КАК Менеджер, | НЕОПРЕДЕЛЕНО КАК Кладовщик, | НЕОПРЕДЕЛЕНО КАК ДолжностьКладовщика, | ЛОЖЬ КАК ВыводитьКодНоменклатуры, | ИСТИНА КАК ТребуетсяНаличиеСФ, | ЛОЖЬ КАК ПечатьНеТребуется, | 1 КАК СтатусУПД,"); КонецЕсли; Возврат ТекстЗапроса; КонецФункции Процедура СформироватьПредставлениеВыставленКомиссионеру(МенеджерВременныхТаблиц) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = " |ВЫБРАТЬ РАЗЛИЧНЫЕ | СчетаФактуры.Ссылка КАК Ссылка, | СчетаФактуры.Ссылка.Дата КАК Дата, | СчетаФактуры.Ссылка.Контрагент КАК Контрагент, | СчетаФактуры.Ссылка.ИННКонтрагента КАК ИНН, | СчетаФактуры.Ссылка.КППКонтрагента КАК КПП, | Покупатели.НомерСчетаФактуры КАК НомерСчетаФактуры | |ИЗ | СчетаФактурыОснования КАК СчетаФактуры | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Покупатели КАК Покупатели | ПО СчетаФактуры.Ссылка = Покупатели.Ссылка | |ГДЕ | СчетаФактуры.РеализацияЧерезКомиссионера | |УПОРЯДОЧИТЬ ПО | Ссылка |ИТОГИ ПО | Ссылка |"; ДанныеПечати = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Результат = Новый ТаблицаЗначений(); Результат.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный,ДокументСсылка.СчетФактураКомиссионеру")); Результат.Колонки.Добавить("ПредставлениеВыставленКомиссионеру", Новый ОписаниеТипов("Строка")); Пока ДанныеПечати.Следующий() Цикл НоваяСтрока = Результат.Добавить(); НоваяСтрока.СчетФактура = ДанныеПечати.Ссылка; СведенияОКомиссионере = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата); Если ЗначениеЗаполнено(ДанныеПечати.ИНН) Тогда ИННКППКомиссионера = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1/%2'"), ДанныеПечати.ИНН, ДанныеПечати.КПП); Иначе ИННКППКомиссионера = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1/%2'"), ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомиссионере, "ИНН", Ложь), ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомиссионере, "КПП", Ложь)); КонецЕсли; ДанныеПоСчетамФактурам = ДанныеПечати.Выбрать(); ВыставленныеСчетаФактуры = Новый Массив; Пока ДанныеПоСчетамФактурам.Следующий() Цикл ВыставленныеСчетаФактуры.Добавить( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='№ %1 от %2'"), ДанныеПоСчетамФактурам.НомерСчетаФактуры, Формат(ДанныеПечати.Дата, "ДЛФ=D"))); КонецЦикла; ПредставлениеСчетаФактуры = СтрСоединить(ВыставленныеСчетаФактуры, ", "); НоваяСтрока.ПредставлениеВыставленКомиссионеру = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Выставлен комиссионеру %1, ИНН/КПП: %2, по счетам-фактурам %3'"), СведенияОКомиссионере.ПолноеНаименование, ИННКППКомиссионера, ПредставлениеСчетаФактуры); КонецЦикла; Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ПредставлениеВыставленКомиссионеру |ИЗ | &ПредставлениеВыставленКомиссионеру КАК ДанныеКомиссионера | |ИНДЕКСИРОВАТЬ ПО | СчетФактура |; |"; Запрос.УстановитьПараметр("ПредставлениеВыставленКомиссионеру", Результат); Запрос.Выполнить(); КонецПроцедуры Процедура СформироватьВТПорядковыеНомераТаблицыТоваровИПредставления5а(МенеджерВременныхТаблиц, ПараметрыПечати) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК СчетФактура, | СчетаФактурыОснования.ДокументОснование КАК ДокументОснование, | МИНИМУМ(ТаблицаДокумента.НомерСтроки) КАК НомерСтроки, | ТаблицаДокумента.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | ТаблицаДокумента.Номенклатура КАК Номенклатура, | ТаблицаДокумента.НоменклатураНаименование КАК НоменклатураНаименование, | ТаблицаДокумента.КодТНВЭД КАК КодТНВЭД, | ТаблицаДокумента.Характеристика КАК Характеристика, | ТаблицаДокумента.Серия КАК Серия, | ТаблицаДокумента.НомерГТД КАК НомерГТД, | ТаблицаДокумента.Цена КАК Цена, | ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС, | | //ДанныеНаборов | | ТаблицаДокумента.ЦенаДо КАК ЦенаДо |ПОМЕСТИТЬ АналитикиТаблицыТоваровБезНомеровСтрок |ИЗ | ТаблицаТоваровДокументов КАК ТаблицаДокумента | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования | ПО (ВЫБОР | КОГДА СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках | ТОГДА СчетаФактурыОснования.Ссылка = ТаблицаДокумента.СсылкаСФ | ИНАЧЕ СчетаФактурыОснования.ДокументОснование = ТаблицаДокумента.Ссылка | КОНЕЦ) |ГДЕ | НЕ ТаблицаДокумента.ЭтоВозвратнаяТара | |СГРУППИРОВАТЬ ПО | СчетаФактурыОснования.Ссылка, | СчетаФактурыОснования.ДокументОснование, | ТаблицаДокумента.НомерСтрокиИсходногоСФ, | ТаблицаДокумента.Номенклатура, | ТаблицаДокумента.НоменклатураНаименование, | ТаблицаДокумента.КодТНВЭД, | ТаблицаДокумента.Характеристика, | ТаблицаДокумента.Серия, | ТаблицаДокумента.НомерГТД, | ТаблицаДокумента.Цена, | ТаблицаДокумента.СтавкаНДС, | //ГруппировкаНаборов | ТаблицаДокумента.ЦенаДо |"; Если ПараметрыПечати.Свойство("МассивСчетФактураПолученный") Тогда Запрос.Текст = Запрос.Текст + " | |ОБЪЕДИНИТЬ ВСЕ | |" + СтрЗаменить( СтрЗаменить( Запрос.Текст, "ПОМЕСТИТЬ АналитикиТаблицыТоваровБезНомеровСтрок", ""), "СчетаФактурыОснования", "СчетаФактурыПолученныеОснования"); КонецЕсли; Запрос.Текст = Запрос.Текст + " |; | |//////////////////////////////////////////////////////////////////////////////// |"; Если ПараметрыПечати.ВыводитьНаборы Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ДанныеНаборов", "ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | ТаблицаДокумента.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | ТаблицаДокумента.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора, | ТаблицаДокумента.ЭтоКомплектующие КАК ЭтоКомплектующие, | ТаблицаДокумента.ЭтоНабор КАК ЭтоНабор, | ТаблицаДокумента.ПолныйНабор КАК ПолныйНабор, | МИНИМУМ(ТаблицаДокумента.НомерСтрокиНаборы) КАК НомерСтрокиНаборы,"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ГруппировкаНаборов", "ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах, | ТаблицаДокумента.ВариантРасчетаЦеныНабора, | ТаблицаДокумента.НоменклатураНабора, | ТаблицаДокумента.ХарактеристикаНабора, | ТаблицаДокумента.ЭтоКомплектующие, | ТаблицаДокумента.ЭтоНабор, | ТаблицаДокумента.ПолныйНабор,"); КонецЕсли; Запрос.Текст = Запрос.Текст + " |ВЫБРАТЬ | АналитикиТаблицыТоваров.СчетФактура КАК СчетФактура, | АналитикиТаблицыТоваров.ДокументОснование КАК ДокументОснование, | МИНИМУМ(АналитикиТаблицыТоваров.НомерСтроки) КАК НомерСтроки, | 0 КАК НомерСтрокиСФ, | АналитикиТаблицыТоваров.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | АналитикиТаблицыТоваров.Номенклатура КАК Номенклатура, | АналитикиТаблицыТоваров.НоменклатураНаименование КАК НоменклатураНаименование, | АналитикиТаблицыТоваров.КодТНВЭД КАК КодТНВЭД, | АналитикиТаблицыТоваров.Характеристика КАК Характеристика, | АналитикиТаблицыТоваров.Серия КАК Серия, | АналитикиТаблицыТоваров.НомерГТД КАК НомерГТД, | АналитикиТаблицыТоваров.Цена КАК Цена, | АналитикиТаблицыТоваров.СтавкаНДС КАК СтавкаНДС, | | //ДанныеНаборовСгруппированные | | АналитикиТаблицыТоваров.ЦенаДо КАК ЦенаДо |ИЗ | АналитикиТаблицыТоваровБезНомеровСтрок КАК АналитикиТаблицыТоваров | |СГРУППИРОВАТЬ ПО | АналитикиТаблицыТоваров.СчетФактура, | АналитикиТаблицыТоваров.ДокументОснование, | АналитикиТаблицыТоваров.НомерСтрокиИсходногоСФ, | АналитикиТаблицыТоваров.Номенклатура, | АналитикиТаблицыТоваров.НоменклатураНаименование, | АналитикиТаблицыТоваров.КодТНВЭД, | АналитикиТаблицыТоваров.Характеристика, | АналитикиТаблицыТоваров.Серия, | АналитикиТаблицыТоваров.НомерГТД, | АналитикиТаблицыТоваров.Цена, | АналитикиТаблицыТоваров.СтавкаНДС, | //ГруппировкаНаборовСгруппированные | АналитикиТаблицыТоваров.ЦенаДо | |УПОРЯДОЧИТЬ ПО | СчетФактура, | ДокументОснование, | //ПорядокНаборов | НомерСтроки |"; Если ПараметрыПечати.ВыводитьНаборы Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ДанныеНаборовСгруппированные", "АналитикиТаблицыТоваров.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | АналитикиТаблицыТоваров.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | АналитикиТаблицыТоваров.НоменклатураНабора КАК НоменклатураНабора, | АналитикиТаблицыТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора, | АналитикиТаблицыТоваров.ЭтоКомплектующие КАК ЭтоКомплектующие, | АналитикиТаблицыТоваров.ЭтоНабор КАК ЭтоНабор, | АналитикиТаблицыТоваров.ПолныйНабор КАК ПолныйНабор, | МИНИМУМ(АналитикиТаблицыТоваров.НомерСтрокиНаборы) КАК НомерСтрокиНаборы,"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ГруппировкаНаборовСгруппированные", "АналитикиТаблицыТоваров.ВариантПредставленияНабораВПечатныхФормах, | АналитикиТаблицыТоваров.ВариантРасчетаЦеныНабора, | АналитикиТаблицыТоваров.НоменклатураНабора, | АналитикиТаблицыТоваров.ХарактеристикаНабора, | АналитикиТаблицыТоваров.ЭтоКомплектующие, | АналитикиТаблицыТоваров.ЭтоНабор, | АналитикиТаблицыТоваров.ПолныйНабор,"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПорядокНаборов", "НомерСтрокиНаборы, | НоменклатураНабора, | ХарактеристикаНабора, | ЭтоНабор УБЫВ,"); КонецЕсли; НомерСтрокиСФ = 1; ТекущийСФ = Неопределено; ТаблицаТоваров = Запрос.Выполнить().Выгрузить(); Для Каждого ТекущиеДанные Из ТаблицаТоваров Цикл Если ПараметрыПечати.ВыводитьНаборы И ТекущиеДанные.ЭтоНабор И Не ТекущиеДанные.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор Тогда Продолжить; КонецЕсли; Если Не ТекущийСФ = ТекущиеДанные.СчетФактура Тогда ТекущийСФ = ТекущиеДанные.СчетФактура; НомерСтрокиСФ = 1; КонецЕсли; ТекущиеДанные.НомерСтрокиСФ = НомерСтрокиСФ; НомерСтрокиСФ = НомерСтрокиСФ + 1; КонецЦикла; Запрос.Текст = "ВЫБРАТЬ | ТаблицаТоваров.СчетФактура КАК СчетФактура, | ТаблицаТоваров.ДокументОснование КАК ДокументОснование, | ТаблицаТоваров.НомерСтрокиСФ КАК НомерСтрокиСФ, | ТаблицаТоваров.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | ТаблицаТоваров.Номенклатура КАК Номенклатура, | ТаблицаТоваров.НоменклатураНаименование КАК НоменклатураНаименование, | ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД, | ТаблицаТоваров.Характеристика КАК Характеристика, | ТаблицаТоваров.Серия КАК Серия, | ТаблицаТоваров.НомерГТД КАК НомерГТД, | ТаблицаТоваров.Цена КАК Цена, | ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС, | | //ДанныеНаборов | | ТаблицаТоваров.ЦенаДо КАК ЦенаДо |ПОМЕСТИТЬ АналитикиТаблицыТоваровСНомерамиСтрок |ИЗ | &ТаблицаТоваровСНомерамиСтрок КАК ТаблицаТоваров |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаТоваров.СчетФактура КАК СчетФактура, | ТаблицаТоваровБезНомеровСтрок.ДокументОснование КАК ДокументОснование, | ТаблицаТоваров.НомерСтрокиСФ КАК НомерСтрокиСФ, | ТаблицаТоваров.НоменклатураНаименование КАК Содержание |ИЗ | АналитикиТаблицыТоваровСНомерамиСтрок КАК ТаблицаТоваров | | ЛЕВОЕ СОЕДИНЕНИЕ АналитикиТаблицыТоваровБезНомеровСтрок КАК ТаблицаТоваровБезНомеровСтрок | ПО ТаблицаТоваровБезНомеровСтрок.СчетФактура = ТаблицаТоваров.СчетФактура | И ТаблицаТоваровБезНомеровСтрок.ДокументОснование = ТаблицаТоваров.ДокументОснование | И ТаблицаТоваровБезНомеровСтрок.НомерСтрокиИсходногоСФ = ТаблицаТоваров.НомерСтрокиИсходногоСФ | И ТаблицаТоваровБезНомеровСтрок.Номенклатура = ТаблицаТоваров.Номенклатура | И ТаблицаТоваровБезНомеровСтрок.НоменклатураНаименование = ТаблицаТоваров.НоменклатураНаименование | И ТаблицаТоваровБезНомеровСтрок.КодТНВЭД = ТаблицаТоваров.КодТНВЭД | И ТаблицаТоваровБезНомеровСтрок.Характеристика = ТаблицаТоваров.Характеристика | И ТаблицаТоваровБезНомеровСтрок.Серия = ТаблицаТоваров.Серия | И ТаблицаТоваровБезНомеровСтрок.НомерГТД = ТаблицаТоваров.НомерГТД | И ТаблицаТоваровБезНомеровСтрок.Цена = ТаблицаТоваров.Цена | И ТаблицаТоваровБезНомеровСтрок.СтавкаНДС = ТаблицаТоваров.СтавкаНДС | И ТаблицаТоваровБезНомеровСтрок.ЦенаДо = ТаблицаТоваров.ЦенаДо | //СоединениеНаборов | |СГРУППИРОВАТЬ ПО | ТаблицаТоваров.СчетФактура, | ТаблицаТоваровБезНомеровСтрок.ДокументОснование, | ТаблицаТоваров.НомерСтрокиСФ, | ТаблицаТоваров.НоменклатураНаименование |"; Если ПараметрыПечати.ВыводитьНаборы Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ДанныеНаборов", "ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | ТаблицаТоваров.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора, | ТаблицаТоваров.ЭтоКомплектующие КАК ЭтоКомплектующие, | ТаблицаТоваров.ЭтоНабор КАК ЭтоНабор, | ТаблицаТоваров.ПолныйНабор КАК ПолныйНабор,"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ГруппировкаНаборов", "ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах, | ТаблицаТоваров.ВариантРасчетаЦеныНабора, | ТаблицаТоваров.НоменклатураНабора, | ТаблицаТоваров.ХарактеристикаНабора, | ТаблицаТоваров.ЭтоКомплектующие, | ТаблицаТоваров.ЭтоНабор, | ТаблицаТоваров.ПолныйНабор,"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "//СоединениеНаборов", "И ТаблицаТоваровБезНомеровСтрок.ВариантПредставленияНабораВПечатныхФормах = ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах | И ТаблицаТоваровБезНомеровСтрок.ВариантРасчетаЦеныНабора = ТаблицаТоваров.ВариантРасчетаЦеныНабора | И ТаблицаТоваровБезНомеровСтрок.НоменклатураНабора = ТаблицаТоваров.НоменклатураНабора | И ТаблицаТоваровБезНомеровСтрок.ХарактеристикаНабора = ТаблицаТоваров.ХарактеристикаНабора | И ТаблицаТоваровБезНомеровСтрок.ЭтоКомплектующие = ТаблицаТоваров.ЭтоКомплектующие | И ТаблицаТоваровБезНомеровСтрок.ЭтоНабор = ТаблицаТоваров.ЭтоНабор | И ТаблицаТоваровБезНомеровСтрок.ПолныйНабор = ТаблицаТоваров.ПолныйНабор"); КонецЕсли; Запрос.УстановитьПараметр("ТаблицаТоваровСНомерамиСтрок", ТаблицаТоваров); ТаблицаТоваров = Запрос.Выполнить().Выгрузить(); // ТаблицаЗначений ПредставленияСтрок5а = ПолучитьПредставленияСтроки5а(ТаблицаТоваров); Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ПредставленияСтрок5а |ИЗ | &ПредставленияСтрок5а КАК ПредставленияСтрок5а | |ИНДЕКСИРОВАТЬ ПО | СчетФактура |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ АналитикиТаблицыТоваровБезНомеровСтрок |"; Запрос.УстановитьПараметр("ПредставленияСтрок5а", ПредставленияСтрок5а); Запрос.Выполнить(); ИменаКолонок = РасчетСебестоимостиПрикладныеАлгоритмы.ПолучитьИменаКолонокСтрокой(ТаблицаТоваров); РасчетСебестоимостиПрикладныеАлгоритмы.ПоместитьТаблицуЗначенийВоВременнуюТаблицу(Запрос.МенеджерВременныхТаблиц, "ТаблицаТоваровНомераСтрокСФ", ТаблицаТоваров, ИменаКолонок, "ДокументОснование"); КонецПроцедуры Функция ПолучитьПредставленияСтроки5а(Знач Таблица) Экспорт ТаблицаИтог = Таблица.СкопироватьКолонки("СчетФактура,ДокументОснование"); ТаблицаИтог.Колонки.Добавить("НомерСтрокиСФ",Новый ОписаниеТипов("Строка")); СчетаФактурыСНомерами = Новый Массив; СчетаФактуры = Таблица.ВыгрузитьКолонку("СчетФактура"); // - Массив из ДокументСсылка.СчетФактураВыданный СчетаФактуры = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СчетаФактуры); Для Каждого СФ Из СчетаФактуры Цикл Если ТипЗнч(СФ) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда РеквизитыСФ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СФ, "Исправление, Перевыставленный, Корректировочный, РучнаяКорректировкаСуммДокумента"); Если (РеквизитыСФ.Исправление Или РеквизитыСФ.Перевыставленный) И Не РеквизитыСФ.Корректировочный Или РеквизитыСФ.РучнаяКорректировкаСуммДокумента Тогда // представления сохранены в ТЧ ДокументыОснования СчетаФактурыСНомерами.Добавить(СФ); Иначе СтрокиПоСФ = Таблица.НайтиСтроки(Новый Структура("СчетФактура",СФ)); ТаблицаПоСФ = Таблица.Скопировать(СтрокиПоСФ,); ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПолучитьПорядковыеНомераСтрок(ТаблицаПоСФ), ТаблицаИтог); КонецЕсли; Иначе СтрокиПоСФ = Таблица.НайтиСтроки(Новый Структура("СчетФактура",СФ)); ТаблицаПоСФ = Таблица.Скопировать(СтрокиПоСФ,); ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПолучитьПорядковыеНомераСтрок(ТаблицаПоСФ), ТаблицаИтог); КонецЕсли; КонецЦикла; Результат = Новый ТаблицаЗначений(); Результат.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный,ДокументСсылка.СчетФактураКомиссионеру")); Результат.Колонки.Добавить("ПредставлениеСтроки5а", Новый ОписаниеТипов("Строка")); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Таблица", ТаблицаИтог); Запрос.УстановитьПараметр("СчетаФактурыСНомерами", СчетаФактурыСНомерами); Запрос.Текст = "ВЫБРАТЬ | Т.СчетФактура КАК СчетФактура, | Т.ДокументОснование КАК ДокументОснование, | Т.НомерСтрокиСФ КАК ПорядковыеНомераСтрок |ПОМЕСТИТЬ ПорядковыеНомера |ИЗ | &Таблица КАК Т |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ПорядковыеНомера.СчетФактура КАК СчетФактура, | ВЫРАЗИТЬ(ПорядковыеНомера.ПорядковыеНомераСтрок КАК СТРОКА(100)) КАК ПорядковыеНомераСтрок, | ДанныеПервичныхДокументов.Номер, | ДанныеПервичныхДокументов.Дата |ИЗ | (ВЫБРАТЬ | ПорядковыеНомера.СчетФактура, | ВЫБОР | КОГДА КорректировкаРеализации.ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок) | ТОГДА КорректировкаРеализации.ДокументОснование | ИНАЧЕ ПорядковыеНомера.ДокументОснование | КОНЕЦ КАК ДокументОснование, | ПорядковыеНомера.ПорядковыеНомераСтрок | ИЗ | ПорядковыеНомера КАК ПорядковыеНомера | ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК КорректировкаРеализации | ПО ПорядковыеНомера.ДокументОснование = КорректировкаРеализации.Ссылка | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | СчетФактураВыданныйДокументыОснования.Ссылка, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ (СчетФактураВыданныйДокументыОснования.ДокументОснование) = ТИП(Документ.КорректировкаРеализации) | И ВЫРАЗИТЬ(СчетФактураВыданныйДокументыОснования.ДокументОснование КАК Документ.КорректировкаРеализации).ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок) | ТОГДА ВЫРАЗИТЬ(СчетФактураВыданныйДокументыОснования.ДокументОснование КАК Документ.КорректировкаРеализации).ДокументОснование | КОГДА СчетФактураВыданныйДокументыОснования.Ссылка.Перевыставленный | ТОГДА ЕСТЬNULL(СчетФактураПолученныйДокументыОснования.ДокументОснование, СчетФактураВыданныйДокументыОснования.ДокументОснование) | ИНАЧЕ СчетФактураВыданныйДокументыОснования.ДокументОснование | КОНЕЦ, | СчетФактураВыданныйДокументыОснования.ПорядковыеНомераСтрок | ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования | ПО СчетФактураВыданныйДокументыОснования.СчетФактураПолученныйОтПродавца = СчетФактураПолученныйДокументыОснования.Ссылка | ГДЕ | СчетФактураВыданныйДокументыОснования.Ссылка В (&СчетаФактурыСНомерами) | ) КАК ПорядковыеНомера | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов | ПО ПорядковыеНомера.СчетФактура.Организация = ДанныеПервичныхДокументов.Организация | И ПорядковыеНомера.ДокументОснование = ДанныеПервичныхДокументов.Документ |УПОРЯДОЧИТЬ ПО | Номер |ИТОГИ |ПО | СчетФактура"; ВыборкаПоСФ = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСФ.Следующий() Цикл НоваяСтрока = Результат.Добавить(); НоваяСтрока.СчетФактура = ВыборкаПоСФ.СчетФактура; ПредставленияДокументов = Новый Массив; Выборка = ВыборкаПоСФ.Выбрать(); Пока Выборка.Следующий() Цикл ПредставленияДокументов.Добавить( СтрШаблон( НСтр("ru = '№ п/п %1 № %2 от %3'"), Выборка.ПорядковыеНомераСтрок, Выборка.Номер, Формат(Выборка.Дата, "ДЛФ=D"))); КонецЦикла; НоваяСтрока.ПредставлениеСтроки5а = СтрСоединить(ПредставленияДокументов, ";"); КонецЦикла; Возврат Результат; КонецФункции Процедура ПоместитьВременнуюТаблицуШапокОснований(МенеджерВременныхТаблиц, МассивОснований) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований); ТекстЗапроса = ""; ТекстОтветственныеЛица = ""; ПервыйТип = Истина; ПервыйТипОтветственныеЛица = Истина; Для Каждого ТипОснования Из ТипыОснований Цикл ОбъектыТипа = ТипОснования.Значение; ИмяОбъекта = Сред(ТипОснования.Ключ, 10); Запрос.Параметры.Вставить("ДокументОснование_" + ИмяОбъекта, ОбъектыТипа); Если Не ПустаяСтрока(ТекстЗапроса) Тогда ТекстЗапроса = ТекстЗапроса + " | |ОБЪЕДИНИТЬ ВСЕ | |"; КонецЕсли; Если Не ПустаяСтрока(ТекстОтветственныеЛица) Тогда ТекстОтветственныеЛица = ТекстОтветственныеЛица + " | |ОБЪЕДИНИТЬ ВСЕ | |"; КонецЕсли; МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта); Если МенеджерОбъекта = Неопределено Тогда МенеджерОбъекта = Документы[ИмяОбъекта]; КонецЕсли; ТекстЗапроса = ТекстЗапроса + МенеджерОбъекта.ТекстЗапросаДанныхОснованияДляПечатнойФормыСчетФактура(); ИмяВременнойТаблицы = ИмяОбъекта + "ОтветственныеЛица"; ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов( ОбъектыТипа, МенеджерВременныхТаблиц, , , ИмяВременнойТаблицы); Если МенеджерВременныхТаблиц.Таблицы.Найти(ИмяВременнойТаблицы) <> Неопределено Тогда ТекстОтветственныеЛица = ТекстОтветственныеЛица + " |ВЫБРАТЬ | Таблица.Ссылка КАК Ссылка, | Таблица.РуководительНаименование КАК РуководительНаименование, | Таблица.РуководительДолжность КАК РуководительДолжность, | Таблица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтерНаименование |//ОператорПОМЕСТИТЬ |ИЗ | " + ИмяВременнойТаблицы + " КАК Таблица"; ТекстОтветственныеЛица = СтрЗаменить(ТекстОтветственныеЛица, "//ОператорПОМЕСТИТЬ", ?(ПервыйТипОтветственныеЛица, "ПОМЕСТИТЬ ТаблицаОтветственныеЛица", "")); ПервыйТипОтветственныеЛица = Ложь; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаШапокДокументов", "")); ПервыйТип = Ложь; КонецЦикла; Если ТекстЗапроса = "" Тогда ТекстЗапроса = ПустойТекстЗапросаШапокОснований(); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " | |ИНДЕКСИРОВАТЬ ПО | Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |"; Если ТекстОтветственныеЛица = "" Тогда ТекстОтветственныеЛица = " |ВЫБРАТЬ | НЕОПРЕДЕЛЕНО КАК Ссылка, | """" КАК РуководительНаименование, | """" КАК РуководительДолжность, | """" КАК ГлавныйБухгалтерНаименование |ПОМЕСТИТЬ ТаблицаОтветственныеЛица"; КонецЕсли; Запрос.Текст = ТекстЗапроса + ТекстОтветственныеЛица; Запрос.Выполнить(); КонецПроцедуры Процедура ПоместитьВременнуюТаблицуДанныхОснований(МенеджерВременныхТаблиц, МассивОснований) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований); ТекстЗапроса = ""; ПервыйТип = Истина; Для Каждого ТипОснования Из ТипыОснований Цикл ОбъектыТипа = ТипОснования.Значение; ИмяОбъекта = Сред(ТипОснования.Ключ, 10); Запрос.Параметры.Вставить("ДокументОснование_" + ИмяОбъекта, ОбъектыТипа); Если Не ПустаяСтрока(ТекстЗапроса) Тогда ТекстЗапроса = ТекстЗапроса + " | |ОБЪЕДИНИТЬ ВСЕ | |"; КонецЕсли; МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта); Если МенеджерОбъекта = Неопределено Тогда МенеджерОбъекта = Документы[ИмяОбъекта]; КонецЕсли; ТекстЗапроса = ТекстЗапроса + МенеджерОбъекта.ТекстЗапросаДанныхОснованияДляПечатнойФормыСчетФактура(); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаДанныхДокументов", "")); ПервыйТип = Ложь; КонецЦикла; ТекстЗапроса = ТекстЗапроса + " | |ИНДЕКСИРОВАТЬ ПО | Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |"; Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); КонецПроцедуры Процедура ПоместитьВременнуюТаблицуПокупатели(МенеджерВременныхТаблиц, МассивОбъектов) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаПокупателей.Ссылка КАК Ссылка, | ТаблицаПокупателей.Покупатель КАК Покупатель, | ТаблицаПокупателей.НомерСчетаФактуры КАК НомерСчетаФактуры |ПОМЕСТИТЬ СчетаФактурыПокупатели |ИЗ | Документ.СчетФактураВыданный.Покупатели КАК ТаблицаПокупателей |ГДЕ | ТаблицаПокупателей.Ссылка В(&МассивОбъектов)"; Запрос.Выполнить(); КонецПроцедуры Процедура ПоместитьВременнуюТаблицуЗаполненияПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | СчетФактураВыданныйДокументыОснования.Ссылка, | СчетФактураВыданныйДокументыОснования.Ссылка.Организация КАК Организация, | СчетФактураВыданныйДокументыОснования.ДокументОснование КАК ДокументОснование |ПОМЕСТИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов |ИЗ | СчетаФактурыОснования_Шапка КАК СчетФактураВыданныйДокументыОснования | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы | ПО СчетФактураВыданныйДокументыОснования.Ссылка = СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка |ГДЕ | СчетФактураВыданныйПлатежноРасчетныеДокументы.НомерСтроки ЕСТЬ NULL | |ИНДЕКСИРОВАТЬ ПО | ДокументОснование, | Организация"; Запрос.Выполнить(); КонецПроцедуры Функция ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц, МассивАналитикУчетаПоПартнерам) ПараметрыПоиска = ВзаиморасчетыСервер.ИнициализироватьПараметрыПоискаОснованийИДокументовОплаты(); ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяПоля = "ДокументОснование"; ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяТаблицыОтбора = "ТаблицаЗаполненияПлатежноРасчетныхДокументов"; ПараметрыПоиска.ТолькоАвансы = Истина; ПараметрыПоиска.ОграничитьТипыДокументовОплаты = Истина; ВзаиморасчетыСервер.ПодготовитьВТ_РасчетыСКлиентами_ОснованияИДокументыОплаты( МенеджерВременныхТаблиц, ПараметрыПоиска); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов(); Запрос.УстановитьПараметр("МассивАналитикУчетаПоПартнерам", МассивАналитикУчетаПоПартнерам); ПлатежноРасчетныеДокументыСводно = Новый ТаблицаЗначений; ПлатежноРасчетныеДокументыСводно.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный")); ПлатежноРасчетныеДокументыСводно.Колонки.Добавить("СтрокаПлатежноРасчетныеДокументы", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(1000))); ПлатежноРасчетныеДокументы = Новый ТаблицаЗначений; ПлатежноРасчетныеДокументы.Колонки.Добавить("НомерПлатежноРасчетногоДокумента", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(30))); ПлатежноРасчетныеДокументы.Колонки.Добавить("ДатаПлатежноРасчетногоДокумента", Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата))); ВыборкаСчетФактур = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаСчетФактур.Следующий() Цикл ПлатежноРасчетныеДокументы.Очистить(); ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ВыборкаСчетФактур); НоваяСтрока = ПлатежноРасчетныеДокументыСводно.Добавить(); НоваяСтрока.Ссылка = ВыборкаСчетФактур.СчетФактура; НоваяСтрока.СтрокаПлатежноРасчетныеДокументы = СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы); КонецЦикла; Запрос.Текст = "ВЫБРАТЬ | Таблица.Ссылка, | Таблица.СтрокаПлатежноРасчетныеДокументы |ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы |ИЗ | &ПлатежноРасчетныеДокументы КАК Таблица"; Запрос.УстановитьПараметр("ПлатежноРасчетныеДокументы", ПлатежноРасчетныеДокументыСводно); Запрос.Выполнить(); Возврат ПлатежноРасчетныеДокументы; КонецФункции Функция АналитикиУчетаПоПартнерамДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц) Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Расчеты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам |ИЗ | РегистрНакопления.РасчетыСКлиентами КАК Расчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов | ПО Расчеты.Регистратор = ТаблицаДокументов.ДокументОснование |ГДЕ | Расчеты.Активность | И Расчеты.АналитикаУчетаПоПартнерам.Организация = ТаблицаДокументов.Организация"; ТаблицаАналитик = Запрос.Выполнить().Выгрузить(); Возврат ТаблицаАналитик.ВыгрузитьКолонку("АналитикаУчетаПоПартнерам"); КонецФункции Функция КонецРасчетаДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц) Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(МАКСИМУМ(Расчеты.Период), ДАТАВРЕМЯ(1,1,1)) КАК Период |ИЗ | РегистрНакопления.РасчетыСКлиентами КАК Расчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов | ПО Расчеты.Регистратор = ТаблицаДокументов.ДокументОснование |ГДЕ | Расчеты.Активность | И Расчеты.АналитикаУчетаПоПартнерам.Организация = ТаблицаДокументов.Организация |ИМЕЮЩИЕ | МАКСИМУМ(Расчеты.Период) ЕСТЬ НЕ NULL"; Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда ТаблицаПериод = Результат.Выгрузить(); КонецРасчета = КонецМесяца(ТаблицаПериод[0].Период) + 1; Иначе КонецРасчета = КонецМесяца(ТекущаяДатаСеанса())+1; КонецЕсли; Возврат КонецРасчета; КонецФункции Процедура СформироватьВременнуюТаблицуТоваровДляПечати(МенеджерВременныхТаблиц, МассивОснований, ПараметрыПечати) Экспорт Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований); ТекстОбщейТаблицыТовары = ""; ТекстыОбщейТаблицыТоваров = Новый Массив; ПервыйТип = Истина; ЕстьНаборы = Ложь; Для Каждого ТипОснования Из ТипыОснований Цикл ПараметрыЗаполнения = ПродажиСервер.ПараметрыЗаполненияВременнойТаблицыТоваров(); ПараметрыЗаполнения.ПересчитыватьВВалютуРегл = Не ПараметрыПечати.ПечатьВВалюте; ПараметрыЗаполнения.АктуализироватьРасчеты = Ложь; ПараметрыЗаполнения.ДляСчетаФактуры = Истина; ИмяОбъекта = Сред(ТипОснования.Ключ, 10); Если ИмяОбъекта = "ВозвратТоваровПоставщику" Или ИмяОбъекта = "ВыкупВозвратнойТарыКлиентом" Или ИмяОбъекта = "ЗаписьКнигиПродаж" Или ИмяОбъекта = "ПередачаТоваровМеждуОрганизациями" Или ИмяОбъекта = "РеализацияТоваровУслуг" Или ИмяОбъекта = "КорректировкаРеализации" Или ИмяОбъекта = "ВыкупТоваровХранителем" Тогда ПараметрыЗаполнения.ВключаяНомераГТД = Истина; КонецЕсли; Если ИмяОбъекта = "КорректировкаРеализации" Тогда ПараметрыЗаполнения.ВключаяДоКорректировки = Истина; КонецЕсли; МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта); Если МенеджерОбъекта = Неопределено Тогда МенеджерОбъекта = Документы[ИмяОбъекта]; КонецЕсли; Если ИмяОбъекта = "ОтчетПоКомиссииМеждуОрганизациями" Тогда МенеджерОбъекта.ПоместитьВременнуюТаблицуТоваровПоВознаграждению(МенеджерВременныхТаблиц, ПараметрыЗаполнения); Иначе МенеджерОбъекта.ПоместитьВременнуюТаблицуТоваров(МенеджерВременныхТаблиц, ПараметрыЗаполнения); КонецЕсли; Если ИмяОбъекта = "КорректировкаРеализации" Или ИмяОбъекта = "ВозвратТоваровОтКлиента" Или ИмяОбъекта = "ВозвратТоваровМеждуОрганизациями" Тогда МенеджерОбъекта.ПреобразоватьВременнуюТаблицуТоваровДляСчетаФактуры(МенеджерВременныхТаблиц); КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | ТаблицаДокумента.Ссылка КАК Ссылка, | ТаблицаДокумента.НомерСтроки КАК НомерСтроки, | ТаблицаДокумента.Номенклатура КАК Номенклатура, | ТаблицаДокумента.Номенклатура.Родитель КАК ГР1, |//ДанныеНоменклатурыПартнера | ТаблицаДокумента.Характеристика КАК Характеристика, | ТаблицаДокумента.Серия КАК Серия, | ТаблицаДокумента.Упаковка КАК Упаковка, | ТаблицаДокумента.НомерГТД КАК НомерГТД, |//ДанныеТНВЭД | ТаблицаДокумента.Количество КАК Количество, | ТаблицаДокумента.КоличествоУпаковок КАК КоличествоУпаковок, | ТаблицаДокумента.КоличествоПоРНПТ КАК КоличествоПоРНПТ, | ТаблицаДокумента.СуммаБезНДС КАК СуммаБезНДС, | ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС, | ТаблицаДокумента.СуммаНДС КАК СуммаНДС, | %Содержание КАК Содержание, |//ДанныеКомиссионера |//ДанныеНабора |//ДанныеКорректировки |//ДанныеСФ | ТаблицаДокумента.ЭтоТовар КАК ЭтоТовар, | ТаблицаДокумента.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару |//ОператорПОМЕСТИТЬ |ИЗ | " + ИмяОбъекта + "ТаблицаТоваров КАК ТаблицаДокумента"; Если ИмяОбъекта = "АктВыполненныхРабот" Или ИмяОбъекта = "СчетФактураВыданный" Или ИмяОбъекта = "РеализацияТоваровУслуг" Или ИмяОбъекта = "КорректировкаРеализации" Тогда ТекстЗамены = " ТаблицаДокумента.НоменклатураПартнера КАК НоменклатураПартнера,"; Иначе ТекстЗамены = " ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНоменклатурыПартнера", ТекстЗамены); Если ИмяОбъекта = "АктВыполненныхРабот" Или ИмяОбъекта = "КорректировкаРеализации" Или ИмяОбъекта = "РеализацияУслугПрочихАктивов" Или ИмяОбъекта = "СчетФактураВыданный" Или ИмяОбъекта = "ЗаписьКнигиПродаж" Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%Содержание", "ТаблицаДокумента.Содержание"); Иначе ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%Содержание", """"""); КонецЕсли; Если ИмяОбъекта = "ОтчетКомиссионера" Тогда ТекстЗамены = " ТаблицаДокумента.Покупатель КАК Покупатель, | ТаблицаДокумента.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактуры,"; ИначеЕсли ИмяОбъекта = "РеализацияТоваровУслуг" Тогда ТекстЗамены = " ТаблицаДокумента.Покупатель КАК Покупатель, | ТаблицаДокумента.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактуры,"; Иначе ТекстЗамены = " ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Покупатель, | """" КАК НомерСчетаФактуры,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеКомиссионера", ТекстЗамены); Если ИмяОбъекта = "АктВыполненныхРабот" Или ИмяОбъекта = "РеализацияТоваровУслуг" Или ИмяОбъекта = "КорректировкаРеализации" ИЛИ ИмяОбъекта = "СчетФактураВыданный" Тогда ЕстьНаборы = Истина; ТекстЗамены = " ТаблицаДокумента.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры, | ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | ТаблицаДокумента.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | ТаблицаДокумента.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора,"; Иначе ТекстЗамены = " НЕОПРЕДЕЛЕНО КАК ВариантКомплектацииНоменклатуры, | НЕОПРЕДЕЛЕНО КАК ВариантПредставленияНабораВПечатныхФормах, | НЕОПРЕДЕЛЕНО КАК ВариантРасчетаЦеныНабора, | &ПустаяНоменклатура КАК НоменклатураНабора, | НЕОПРЕДЕЛЕНО КАК ХарактеристикаНабора,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНабора", ТекстЗамены); Если ИмяОбъекта = "КорректировкаРеализации" Или ИмяОбъекта = "ВозвратТоваровОтКлиента" Или ИмяОбъекта = "ВозвратТоваровМеждуОрганизациями" Или ИмяОбъекта = "СчетФактураВыданный" Тогда ТекстЗамены = " ТаблицаДокумента.КоличествоДо КАК КоличествоДо, | ТаблицаДокумента.КоличествоУпаковокДо КАК КоличествоУпаковокДо, | ТаблицаДокумента.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо, | ТаблицаДокумента.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение, | ТаблицаДокумента.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение, | ТаблицаДокумента.СуммаБезНДСДо КАК СуммаБезНДСДо, | ТаблицаДокумента.СуммаНДСДо КАК СуммаНДСДо, | ТаблицаДокумента.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение, | ТаблицаДокумента.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение, | ТаблицаДокумента.РазницаНДСУвеличение КАК РазницаНДСУвеличение, | ТаблицаДокумента.РазницаНДСУменьшение КАК РазницаНДСУменьшение, | ТаблицаДокумента.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение, | ТаблицаДокумента.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение,"; Иначе ТекстЗамены = " 0 КАК КоличествоДо, | 0 КАК КоличествоУпаковокДо, | 0 КАК КоличествоПоРНПТДо, | 0 КАК КоличествоПоРНПТУвеличение, | 0 КАК КоличествоПоРНПТУменьшение, | 0 КАК СуммаБезНДСДо, | 0 КАК СуммаНДСДо, | 0 КАК РазницаБезНДСУвеличение, | 0 КАК РазницаБезНДСУменьшение, | 0 КАК РазницаНДСУвеличение, | 0 КАК РазницаНДСУменьшение, | 0 КАК РазницаСНДСУвеличение, | 0 КАК РазницаСНДСУменьшение,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеКорректировки", ТекстЗамены); Если ИмяОбъекта = "ЗаписьКнигиПродаж" Или ИмяОбъекта = "РеализацияТоваровУслуг" Или ИмяОбъекта = "СчетФактураВыданный" Или ИмяОбъекта = "РеализацияУслугПрочихАктивов" Или ИмяОбъекта = "КорректировкаРеализации" Тогда ТекстЗамены = " ТаблицаДокумента.КодТНВЭД КАК КодТНВЭД,"; Иначе ТекстЗамены = " ЗНАЧЕНИЕ(Справочник.КлассификаторТНВЭД.ПустаяСсылка) КАК КодТНВЭД,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеТНВЭД", ТекстЗамены); Если ИмяОбъекта = "ОтчетКомитентуОЗакупках" Тогда ТекстЗамены = " ТаблицаДокумента.СсылкаСФ КАК СсылкаСФ,"; Иначе ТекстЗамены = " НЕОПРЕДЕЛЕНО КАК СсылкаСФ,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеСФ", ТекстЗамены); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаТоваров", "")); КолонкиВТ = МенеджерВременныхТаблиц.Таблицы[ИмяОбъекта + "ТаблицаТоваров"].Колонки; //КолонкиВременнойТаблицыЗапроса Если КолонкиВТ.Найти("НомерСтрокиИсходногоСФ") = Неопределено Тогда ТекстЗапроса = СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос( ТекстЗапроса, "0", "НомерСтрокиИсходногоСФ"); Иначе ТекстЗапроса = СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос( ТекстЗапроса, "ТаблицаДокумента.НомерСтрокиИсходногоСФ", "НомерСтрокиИсходногоСФ"); КонецЕсли; ТекстыОбщейТаблицыТоваров.Добавить(ТекстЗапроса); ПервыйТип = Ложь; КонецЦикла; ТекстОбщейТаблицыТовары = СтрСоединить(ТекстыОбщейТаблицыТоваров, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()); ТекстОбщейТаблицыТовары = ТекстОбщейТаблицыТовары + " |; | |//////////////////////////////////////////////////////////////////////////////// |"; ТекстТаблицыНаборов = "ВЫБРАТЬ | ТаблицаТоваров.Ссылка КАК Ссылка, | ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора, | ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС, | МАКСИМУМ(ТаблицаТоваров.КодТНВЭД) КАК КодТНВЭД, | МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки, | МИНИМУМ(ТаблицаТоваров.НомерСтрокиИсходногоСФ) КАК НомерСтрокиИсходногоСФ, | СУММА(ТаблицаТоваров.СуммаБезНДСДо) КАК СуммаБезНДСДо, | СУММА(ТаблицаТоваров.СуммаНДСДо) КАК СуммаНДСДо, | СУММА(ТаблицаТоваров.РазницаБезНДСУвеличение) КАК РазницаБезНДСУвеличение, | СУММА(ТаблицаТоваров.РазницаБезНДСУменьшение) КАК РазницаБезНДСУменьшение, | СУММА(ТаблицаТоваров.РазницаНДСУвеличение) КАК РазницаНДСУвеличение, | СУММА(ТаблицаТоваров.РазницаНДСУменьшение) КАК РазницаНДСУменьшение, | СУММА(ТаблицаТоваров.РазницаСНДСУвеличение) КАК РазницаСНДСУвеличение, | СУММА(ТаблицаТоваров.РазницаСНДСУменьшение) КАК РазницаСНДСУменьшение, | СУММА(ТаблицаТоваров.СуммаБезНДС) КАК СуммаБезНДС, | СУММА(ТаблицаТоваров.СуммаНДС) КАК СуммаНДС, | ТаблицаТоваров.СсылкаСФ КАК СсылкаСФ, | ТаблицаТоваров.Покупатель КАК Покупатель, | ТаблицаТоваров.НомерСчетаФактуры КАК НомерСчетаФактуры |ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка |ИЗ | ТаблицаТоваров КАК ТаблицаТоваров | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры | ПО ДанныеНоменклатуры.Ссылка = ТаблицаТоваров.Номенклатура | |ГДЕ | ТаблицаТоваров.НоменклатураНабора <> &ПустаяНоменклатура | И (ДанныеНоменклатуры.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара) | ИЛИ НЕ ТаблицаТоваров.ВернутьМногооборотнуюТару) | |СГРУППИРОВАТЬ ПО | ТаблицаТоваров.Ссылка, | ТаблицаТоваров.НоменклатураНабора, | ТаблицаТоваров.ХарактеристикаНабора, | ТаблицаТоваров.СтавкаНДС, | ТаблицаТоваров.СсылкаСФ, | ТаблицаТоваров.Покупатель, | ТаблицаТоваров.НомерСчетаФактуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаТоваров.Ссылка КАК Ссылка |ПОМЕСТИТЬ ТоварыРазличные |ИЗ | ТаблицаТоваров КАК ТаблицаТоваров |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Ссылка КАК Ссылка, | Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры, | Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | Товары.НоменклатураНабора, | Товары.ХарактеристикаНабора, | Товары.Номенклатура, | Товары.Характеристика, | ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура | И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА | ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ОсновнаяКомплектующая, | Товары.СтавкаНДС КАК СтавкаНДС, | ВЫБОР | КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура | И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика | ТОГДА Товары.НомерГТД | ИНАЧЕ NULL | КОНЕЦ КАК НомерГТД, | 0 КАК КоличествоПоУмолчанию, | Товары.КоличествоДо КАК КоличествоДо, | Товары.Количество КАК Количество, | Товары.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо, | Товары.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение, | Товары.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение, | Товары.КоличествоПоРНПТ КАК КоличествоПоРНПТ |ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая |ИЗ | ТаблицаТоваров КАК Товары | |ГДЕ | Товары.НоменклатураНабора <> &ПустаяНоменклатура | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ТоварыРазличные.Ссылка КАК Ссылка, | ВариантыКомплектацииНоменклатурыТовары.Ссылка КАК ВариантКомплектацииНоменклатуры, | ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец КАК НоменклатураНабора, | ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика КАК ХарактеристикаНабора, | ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура, | ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика, | ЛОЖЬ КАК ОсновнаяКомплектующая, | НЕОПРЕДЕЛЕНО КАК СтавкаНДС, | NULL КАК НомерГТД, | СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию, | 0 КАК КоличествоДо, | 0 КАК Количество, | 0 КАК КоличествоПоРНПТДо, | 0 КАК КоличествоПоРНПТУвеличение, | 0 КАК КоличествоПоРНПТУменьшение, | 0 КАК КоличествоПоРНПТ |ИЗ | Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары | ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные | ПО ИСТИНА |ГДЕ | ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Т.ВариантКомплектацииНоменклатуры ИЗ ТаблицаТоваров КАК Т) | |СГРУППИРОВАТЬ ПО | ТоварыРазличные.Ссылка, | ВариантыКомплектацииНоменклатурыТовары.Ссылка, | ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец, | ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика, | ВариантыКомплектацииНоменклатурыТовары.Номенклатура, | ВариантыКомплектацииНоменклатурыТовары.Характеристика, | ВариантыКомплектацииНоменклатурыТовары.Упаковка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица.Ссылка, | Таблица.ВариантКомплектацииНоменклатуры, | Таблица.ВариантРасчетаЦеныНабора, | Таблица.ВариантПредставленияНабораВПечатныхФормах, | Таблица.НоменклатураНабора, | Таблица.ХарактеристикаНабора, | Таблица.Номенклатура, | Таблица.Характеристика, | МАКСИМУМ(Таблица.НомерГТД) КАК НомерГТД, | МАКСИМУМ(Таблица.СтавкаНДС) КАК СтавкаНДС, | МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая, | СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию, | СУММА(Таблица.КоличествоДо) КАК КоличествоДо, | СУММА(Таблица.Количество) КАК Количество, | СУММА(Таблица.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо, | СУММА(Таблица.КоличествоПоРНПТУвеличение) КАК КоличествоПоРНПТУвеличение, | СУММА(Таблица.КоличествоПоРНПТУменьшение) КАК КоличествоПоРНПТУменьшение, | СУММА(Таблица.КоличествоПоРНПТ) КАК КоличествоПоРНПТ |ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая |ИЗ | ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица | |СГРУППИРОВАТЬ ПО | Таблица.Ссылка, | Таблица.ВариантКомплектацииНоменклатуры, | Таблица.ВариантРасчетаЦеныНабора, | Таблица.ВариантПредставленияНабораВПечатныхФормах, | Таблица.НоменклатураНабора, | Таблица.ХарактеристикаНабора, | Таблица.Номенклатура, | Таблица.Характеристика |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Результат.Ссылка, | Результат.ВариантКомплектацииНоменклатуры, | Результат.ВариантРасчетаЦеныНабора, | Результат.ВариантПредставленияНабораВПечатныхФормах, | Результат.НоменклатураНабора, | Результат.ХарактеристикаНабора, | МАКСИМУМ(ВЫБОР | КОГДА Результат.ОсновнаяКомплектующая | ТОГДА Результат.СтавкаНДС | ИНАЧЕ null | КОНЕЦ) КАК СтавкаНДС, | МАКСИМУМ(Результат.НомерГТД) КАК НомерГТД, | ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР | КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая | ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию | ИНАЧЕ null | КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество, | ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР | КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая | ТОГДА Результат.КоличествоДо / Результат.КоличествоПоУмолчанию | ИНАЧЕ null | КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоличествоДо, | МАКСИМУМ(Результат.КоличествоПоРНПТ) КАК КоличествоПоРНПТ, | МАКСИМУМ(Результат.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо, | МАКСИМУМ(Результат.КоличествоПоРНПТУвеличение) КАК КоличествоПоРНПТУвеличение, | МАКСИМУМ(Результат.КоличествоПоРНПТУменьшение) КАК КоличествоПоРНПТУменьшение, | МАКСИМУМ(ВЫБОР | КОГДА Результат.КоличествоПоУмолчанию <> 0 | ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию | ИНАЧЕ null | КОНЕЦ) КАК КоэффициентМаксимум, | ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР | КОГДА Результат.КоличествоПоУмолчанию <> 0 | ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию | ИНАЧЕ null | КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоэффициентМинимум |ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно |ИЗ | ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат |СГРУППИРОВАТЬ ПО | Результат.Ссылка, | Результат.ВариантКомплектацииНоменклатуры, | Результат.ВариантРасчетаЦеныНабора, | Результат.ВариантПредставленияНабораВПечатныхФормах, | Результат.НоменклатураНабора, | Результат.ХарактеристикаНабора |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры, | | ВЫБОР КОГДА ДанныеОснований.ХозяйственнаяОперация В (&ХозяйственныеОперацииПередачаНаКомиссию) | И ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = &ВариантТолькоНабор ТОГДА | &ВариантНаборИКомплектующие | ИНАЧЕ | ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах | КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах, | | ВЫБОР КОГДА ДанныеОснований.ХозяйственнаяОперация В (&ХозяйственныеОперацииПередачаНаКомиссию) ТОГДА | ВЫБОР КОГДА | ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = &ВариантТолькоНабор ТОГДА | &ВариантНаборИКомплектующие | ИНАЧЕ | ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах | КОНЕЦ = &ВариантНаборИКомплектующие | И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В ( | ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам), | ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА | | ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих) | ИНАЧЕ | ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора | КОНЕЦ | ИНАЧЕ | ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора | КОНЕЦ КАК ВариантРасчетаЦеныНабора, | | Таблица.Ссылка КАК Ссылка, | Таблица.НоменклатураНабора КАК НоменклатураНабора, | Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора, | Таблица.НомерСтроки КАК НомерСтроки, | Таблица.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТ, 1) КАК КоличествоПоРНПТ, | ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.КоэффициентМинимум = ВременнаяТаблицаНаборыДополнительно.КоэффициентМаксимум ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПолныйНабор, | Таблица.СуммаБезНДС КАК СуммаБезНДС, | Таблица.СуммаНДС КАК СуммаНДС, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоДо, 1) КАК КоличествоУпаковокДо, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоДо, 1) КАК КоличествоДо, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТДо, 1) КАК КоличествоПоРНПТДо, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТУвеличение, 1) КАК КоличествоПоРНПТУвеличение, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТУменьшение, 1) КАК КоличествоПоРНПТУменьшение, | Таблица.СуммаБезНДСДо КАК СуммаБезНДСДо, | Таблица.СуммаНДСДо КАК СуммаНДСДо, | Таблица.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение, | Таблица.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение, | Таблица.РазницаНДСУвеличение КАК РазницаНДСУвеличение, | Таблица.РазницаНДСУменьшение КАК РазницаНДСУменьшение, | Таблица.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение, | Таблица.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение, | Таблица.КодТНВЭД КАК КодТНВЭД, | Таблица.СтавкаНДС КАК СтавкаНДС, | ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.НомерГТД, ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)) КАК НомерГТД, | Таблица.СсылкаСФ КАК СсылкаСФ, | Таблица.Покупатель КАК Покупатель, | Таблица.НомерСчетаФактуры КАК НомерСчетаФактуры |ПОМЕСТИТЬ ВременнаяТаблицаНаборы |ИЗ | ВременнаяТаблицаНаборыПодготовка КАК Таблица | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно | ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора | И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора | И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаДанныхДокументов КАК ДанныеОснований | ПО ДанныеОснований.Ссылка = Таблица.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |"; ТекстРезультирующейТаблицы = "ВЫБРАТЬ | ТаблицаТоваров.Ссылка КАК Ссылка, | ТаблицаТоваров.НомерСтроки КАК НомерСтроки, | ТаблицаТоваров.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | ТаблицаТоваров.Номенклатура КАК Номенклатура, | ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера, | ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА | ДанныеНоменклатуры.НаименованиеПолное | ИНАЧЕ | ТаблицаТоваров.Содержание | КОНЕЦ КАК НоменклатураНаименование, | ВЫБОР КОГДА &КолонкаКодов = ""Артикул"" ТОГДА | ДанныеНоменклатуры.Артикул | ИНАЧЕ | ДанныеНоменклатуры.Код | КОНЕЦ КАК НоменклатураКод, | ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД, | ВЫБОР | КОГДА ДанныеНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара) | И ТаблицаТоваров.ВернутьМногооборотнуюТару | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЭтоВозвратнаяТара, | ВЫБОР | КОГДА &ВыводитьБазовыеЕдиницыИзмерения И ТаблицаТоваров.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И ТаблицаТоваров.Номенклатура <> НЕОПРЕДЕЛЕНО | ТОГДА ДанныеНоменклатуры.ЕдиницаИзмерения | ИНАЧЕ &ТекстЗапросаЕдиницаИзмерения | КОНЕЦ КАК ЕдиницаИзмерения, | ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА | ТаблицаТоваров.Характеристика | ИНАЧЕ | """" | КОНЕЦ КАК Характеристика, | ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА | ТаблицаТоваров.Серия | ИНАЧЕ | ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | КОНЕЦ КАК Серия, | | ТаблицаТоваров.НомерГТД КАК НомерГТД, | ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС, | ТаблицаТоваров.Упаковка КАК Упаковка, | |//РеквизитыТаблицыНаборов | | ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ТаблицаТоваров.Количество | КОГДА ТаблицаТоваров.КоличествоУпаковок = 0 ТОГДА | ТаблицаТоваров.Количество | ИНАЧЕ | ТаблицаТоваров.КоличествоУпаковок | КОНЕЦ КАК Количество, | ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ТаблицаТоваров.КоличествоДо | КОГДА ТаблицаТоваров.КоличествоУпаковокДо = 0 ТОГДА | ТаблицаТоваров.КоличествоДо | ИНАЧЕ | ТаблицаТоваров.КоличествоУпаковокДо | КОНЕЦ КАК КоличествоДо, | ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ, | ТаблицаТоваров.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо, | ТаблицаТоваров.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение, | ТаблицаТоваров.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение, | ВЫРАЗИТЬ(ВЫБОР КОГДА ТаблицаТоваров.Количество = 0 ТОГДА | 0 | КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.Количество | КОГДА ТаблицаТоваров.КоличествоУпаковок = 0 ТОГДА | ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.Количество | ИНАЧЕ | ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.КоличествоУпаковок | КОНЕЦ КАК ЧИСЛО(21,8)) КАК Цена, | ВЫБОР КОГДА ТаблицаТоваров.КоличествоДо = 0 ТОГДА | 0 | КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоДо | КОГДА ТаблицаТоваров.КоличествоУпаковокДо = 0 ТОГДА | ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоДо | ИНАЧЕ | ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоУпаковокДо | КОНЕЦ КАК ЦенаДо, | ТаблицаТоваров.СуммаБезНДС КАК СуммаБезНДС, | ТаблицаТоваров.СуммаБезНДСДо КАК СуммаБезНДСДо, | ТаблицаТоваров.СуммаНДС КАК СуммаНДС, | ТаблицаТоваров.СуммаНДСДо КАК СуммаНДСДо, | ТаблицаТоваров.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение, | ТаблицаТоваров.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение, | ТаблицаТоваров.РазницаНДСУвеличение КАК РазницаНДСУвеличение, | ТаблицаТоваров.РазницаНДСУменьшение КАК РазницаНДСУменьшение, | ТаблицаТоваров.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение, | ТаблицаТоваров.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение, | ТаблицаТоваров.СсылкаСФ КАК СсылкаСФ, | ТаблицаТоваров.Покупатель КАК Покупатель, | ТаблицаТоваров.НомерСчетаФактуры КАК НомерСчетаФактуры | |ПОМЕСТИТЬ ТаблицаТоваровДокументов |ИЗ | ТаблицаТоваров КАК ТаблицаТоваров |//СоединениеТаблицыНаборов | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры | ПО ТаблицаТоваров.Номенклатура = ДанныеНоменклатуры.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеУпаковки | ПО НЕ &ВыводитьБазовыеЕдиницыИзмерения | И ТаблицаТоваров.Упаковка = ДанныеУпаковки.Ссылка |ГДЕ | ТаблицаТоваров.НоменклатураНабора = &ПустаяНоменклатура | ИЛИ (ТаблицаТоваров.НоменклатураНабора <> &ПустаяНоменклатура | И ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах В ( | &ВариантТолькоКомплектующие, &ВариантНаборИКомплектующие))"; Если ЕстьНаборы Тогда ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//РеквизитыТаблицыНаборов", " ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА | ВременнаяТаблицаНаборы.НомерСтроки | ИНАЧЕ | ТаблицаТоваров.НомерСтроки | КОНЕЦ КАК НомерСтрокиНаборы, | ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА | ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах | ИНАЧЕ | &ПустойВариантПредставленияНаборов | КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах, | ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА | ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора | ИНАЧЕ | &ПустойВариантРасчетаЦенНаборов | КОНЕЦ КАК ВариантРасчетаЦеныНабора, | ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора, | ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА | ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ЭтоКомплектующие, | ЛОЖЬ КАК ЭтоНабор, | ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА | ВременнаяТаблицаНаборы.ПолныйНабор | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ПолныйНабор,"); ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//СоединениеТаблицыНаборов", " ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы | ПО ВременнаяТаблицаНаборы.НоменклатураНабора = ТаблицаТоваров.НоменклатураНабора | И ВременнаяТаблицаНаборы.ХарактеристикаНабора = ТаблицаТоваров.ХарактеристикаНабора | И ВременнаяТаблицаНаборы.Ссылка = ТаблицаТоваров.Ссылка | И ВременнаяТаблицаНаборы.СтавкаНДС = ТаблицаТоваров.СтавкаНДС"); ТекстРезультирующейТаблицы = ТекстРезультирующейТаблицы + " | |ОБЪЕДИНИТЬ ВСЕ |" + "ВЫБРАТЬ | ВременнаяТаблицаНаборы.Ссылка КАК Ссылка, | 0 КАК НомерСтроки, | ВременнаяТаблицаНаборы.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ, | ВременнаяТаблицаНаборы.НоменклатураНабора КАК Номенклатура, | ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера, | ДанныеНоменклатуры.НаименованиеПолное КАК НоменклатураНаименование, | ВЫБОР КОГДА &КолонкаКодов = ""Артикул"" ТОГДА | ДанныеНоменклатуры.Артикул | ИНАЧЕ | ДанныеНоменклатуры.Код | КОНЕЦ КАК НоменклатураКод, | ВременнаяТаблицаНаборы.КодТНВЭД КАК КодТНВЭД, | ЛОЖЬ КАК ЭтоВозвратнаяТара, | ДанныеНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК Характеристика, | ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия, | ВременнаяТаблицаНаборы.НомерГТД КАК НомерГТД, | ВременнаяТаблицаНаборы.СтавкаНДС КАК СтавкаНДС, | ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка, | ВременнаяТаблицаНаборы.НомерСтроки КАК НомерСтрокиНаборы, | ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах, | ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора, | ВременнаяТаблицаНаборы.НоменклатураНабора КАК НоменклатураНабора, | ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК ХарактеристикаНабора, | ЛОЖЬ КАК ЭтоКомплектующие, | ИСТИНА КАК ЭтоНабор, | ВременнаяТаблицаНаборы.ПолныйНабор КАК ПолныйНабор, | | ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ВременнаяТаблицаНаборы.Количество | ИНАЧЕ | ВременнаяТаблицаНаборы.КоличествоУпаковок | КОНЕЦ КАК Количество, | ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ВременнаяТаблицаНаборы.КоличествоДо | ИНАЧЕ | ВременнаяТаблицаНаборы.КоличествоУпаковокДо | КОНЕЦ КАК КоличествоДо, | ВременнаяТаблицаНаборы.КоличествоПоРНПТ КАК КоличествоПоРНПТ, | ВременнаяТаблицаНаборы.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо, | ВременнаяТаблицаНаборы.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение, | ВременнаяТаблицаНаборы.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение, | ВЫБОР КОГДА ВременнаяТаблицаНаборы.Количество = 0 ТОГДА | 0 | КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ВременнаяТаблицаНаборы.СуммаБезНДС / ВременнаяТаблицаНаборы.Количество | ИНАЧЕ | ВременнаяТаблицаНаборы.СуммаБезНДС / ВременнаяТаблицаНаборы.КоличествоУпаковок | КОНЕЦ КАК Цена, | ВЫБОР КОГДА ВременнаяТаблицаНаборы.КоличествоДо = 0 ТОГДА | 0 | КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА | ВременнаяТаблицаНаборы.СуммаБезНДСДо / ВременнаяТаблицаНаборы.КоличествоДо | ИНАЧЕ | ВременнаяТаблицаНаборы.СуммаБезНДСДо / ВременнаяТаблицаНаборы.КоличествоУпаковокДо | КОНЕЦ КАК ЦенаДо, | ВременнаяТаблицаНаборы.СуммаБезНДС КАК СуммаБезНДС, | ВременнаяТаблицаНаборы.СуммаБезНДСДо КАК СуммаБезНДСДо, | ВременнаяТаблицаНаборы.СуммаНДС КАК СуммаНДС, | ВременнаяТаблицаНаборы.СуммаНДСДо КАК СуммаНДСДо, | ВременнаяТаблицаНаборы.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение, | ВременнаяТаблицаНаборы.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение, | ВременнаяТаблицаНаборы.РазницаНДСУвеличение КАК РазницаНДСУвеличение, | ВременнаяТаблицаНаборы.РазницаНДСУменьшение КАК РазницаНДСУменьшение, | ВременнаяТаблицаНаборы.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение, | ВременнаяТаблицаНаборы.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение, | ВременнаяТаблицаНаборы.СсылкаСФ КАК СсылкаСФ, | ВременнаяТаблицаНаборы.Покупатель КАК Покупатель, | ВременнаяТаблицаНаборы.НомерСчетаФактуры КАК НомерСчетаФактуры | |ИЗ | ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры | ПО ВременнаяТаблицаНаборы.НоменклатураНабора = ДанныеНоменклатуры.Ссылка | |ГДЕ | ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В ( | &ВариантТолькоНабор, &ВариантНаборИКомплектующие)"; Иначе ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//РеквизитыТаблицыНаборов", " ТаблицаТоваров.НомерСтроки КАК НомерСтрокиНаборы, | &ПустойВариантПредставленияНаборов КАК ВариантПредставленияНабораВПечатныхФормах, | &ПустойВариантРасчетаЦенНаборов КАК ВариантРасчетаЦеныНабора, | ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора, | ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора, | ЛОЖЬ КАК ЭтоКомплектующие, | ЛОЖЬ КАК ЭтоНабор, | ЛОЖЬ КАК ПолныйНабор,"); КонецЕсли; Запрос.Текст = ТекстОбщейТаблицыТовары + ?(ЕстьНаборы, ТекстТаблицыНаборов, "") + ТекстРезультирующейТаблицы; Запрос.Текст = СтрЗаменить( Запрос.Текст, "&ТекстЗапросаЕдиницаИзмерения", Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения( "Ссылка", "ТаблицаТоваров.Упаковка", ?(ИмяОбъекта = "РеализацияУслугПрочихАктивов","","ТаблицаТоваров.Номенклатура"))); Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить()); Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка()); КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов().ИмяКолонки; Если Не ЗначениеЗаполнено(КолонкаКодов) Тогда КолонкаКодов = "Код"; КонецЕсли; Запрос.УстановитьПараметр("КолонкаКодов", КолонкаКодов); Запрос.УстановитьПараметр("ВариантТолькоНабор", Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор); Запрос.УстановитьПараметр("ВариантТолькоКомплектующие", Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие); Запрос.УстановитьПараметр("ВариантНаборИКомплектующие", Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие); Запрос.УстановитьПараметр("ПустойВариантПредставленияНаборов", Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка()); Запрос.УстановитьПараметр("ПустойВариантРасчетаЦенНаборов", Перечисления.ВариантыРасчетаЦенНаборов.ПустаяСсылка()); МассивОперацийПередачаНаКомиссию = Новый Массив; МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту); МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию); МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию); Запрос.УстановитьПараметр("ХозяйственныеОперацииПередачаНаКомиссию", МассивОперацийПередачаНаКомиссию); Запрос.УстановитьПараметр("МассивОснований", МассивОснований); Запрос.Текст = Запрос.Текст + " |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаДокумента.Ссылка, | ТаблицаДокумента.ШтрихкодУпаковки |ПОМЕСТИТЬ ШтрихкодыУпаковок |ИЗ | Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ТаблицаДокумента |ГДЕ | ТаблицаДокумента.Ссылка В (&МассивОснований) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ТаблицаДокумента.Ссылка, | ТаблицаДокумента.ШтрихкодУпаковки |ИЗ | Документ.ВозвратТоваровПоставщику.ШтрихкодыУпаковок КАК ТаблицаДокумента |ГДЕ | ТаблицаДокумента.Ссылка В (&МассивОснований) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ТаблицаДокумента.Ссылка, | ТаблицаДокумента.ШтрихкодУпаковки |ИЗ | Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаДокумента |ГДЕ | ТаблицаДокумента.Ссылка В (&МассивОснований) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ТаблицаОснований.Ссылка, | ТаблицаДокумента.ШтрихкодУпаковки |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаДокумента | ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка |ГДЕ | ТаблицаОснований.Ссылка В (&МассивОснований) | И (ТаблицаОснований.Ссылка.Корректировочный | ИЛИ ТаблицаОснований.Ссылка.Исправление) |"; Если ПараметрыПечати.Свойство("ЗаполнитьДанныеШтрихкодовДляУКДДо") И ПараметрыПечати.ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда Запрос.Текст = Запрос.Текст + " |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаОснований.Ссылка, | ТаблицаРеализации.ШтрихкодУпаковки, | ТаблицаРеализации.Ссылка КАК ДокументРеализации |ПОМЕСТИТЬ ШтрихкодыУпаковокДо |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК ТаблицаДокумента | ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ТаблицаРеализации | ПО ТаблицаДокумента.ДокументОснование = ТаблицаРеализации.Ссылка |ГДЕ | ТаблицаОснований.Ссылка В (&МассивОснований) | И (ТаблицаОснований.Ссылка.Корректировочный | ИЛИ ТаблицаОснований.Ссылка.Исправление)"; КонецЕсли; //для корректировочной и исправительной с/ф приходит документ-основание = с/ф //для обычной с/ф документ основание = реализация Запрос.Выполнить(); ПараметрыПечати.ВыводитьНаборы = ЕстьНаборы; КонецПроцедуры Процедура СформироватьВтСчетаФактурыПолученные(МенеджерВременныхТаблиц, ПараметрыПечати) Если Не ПараметрыПечати.Свойство("МассивСчетФактураПолученный") Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("МассивСчетФактураПолученный", ПараметрыПечати.МассивСчетФактураПолученный); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаОснований.ДокументОснование КАК ДокументОснование, | ТаблицаОснований.Ссылка КАК Ссылка | |ПОМЕСТИТЬ СчетаФактурыПолученныеОснования |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК ТаблицаОснований |ГДЕ | ТаблицаОснований.Ссылка В (&МассивСчетФактураПолученный) |; | |///////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | МИНИМУМ(СчетаФактурыОснования.ДокументОснование) КАК ДокументОснование |ПОМЕСТИТЬ СчетаФактурыПолученныеОснованияПервые |ИЗ | СчетаФактурыПолученныеОснования КАК СчетаФактурыОснования | |СГРУППИРОВАТЬ ПО | СчетаФактурыОснования.Ссылка | |; |///////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ДанныеКонтрагента.СтранаРегистрации КАК СтранаРегистрации, | | ВЫБОР КОГДА ДанныеКонтрагента.ОбособленноеПодразделение ТОГДА | ДанныеКонтрагента.ГоловнойКонтрагент | ИНАЧЕ | ДанныеКонтрагента.Ссылка | КОНЕЦ КАК Организация, | | ВЫБОР КОГДА ДанныеОрганизации.ОбособленноеПодразделение ТОГДА | ДанныеОрганизации.ГоловнаяОрганизация | ИНАЧЕ | ДанныеОрганизации.Ссылка | КОНЕЦ КАК Контрагент, | | ВЫБОР КОГДА ДанныеОснований.Грузоотправитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА | СчетФактураПолученный.Контрагент | ИНАЧЕ | ДанныеОснований.Грузоотправитель | КОНЕЦ КАК Грузоотправитель, | | ВЫБОР КОГДА ДанныеОснований.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА | СчетФактураПолученный.Организация | ИНАЧЕ | ДанныеОснований.Грузополучатель | КОНЕЦ КАК Грузополучатель, | | ДанныеКонтрагента.КПП КАК КПППоставщика, | ДанныеОрганизации.КПП КАК КПППокупателя, | ДанныеОрганизации.ИНН КАК ИННПокупателя, | | ВЫБОР КОГДА ДанныеОснований.Комиссионер = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ТОГДА | ДанныеОснований.Организация.Префикс | ИНАЧЕ | ДанныеОснований.Комиссионер.Префикс | КОНЕЦ КАК Префикс, | | ДанныеОснований.Комиссионер КАК Комиссионер, | ДанныеВалюты.Ссылка КАК Валюта, | ДанныеВалюты.НаименованиеПолное КАК ВалютаНаименованиеПолное, | ДанныеВалюты.Код КАК ВалютаКод | |ПОМЕСТИТЬ ДанныеОснованийСчетФактураПолученный |ИЗ | СчетаФактурыПолученныеОснованияПервые КАК СчетаФактурыОснования | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный | ПО СчетаФактурыОснования.Ссылка = СчетФактураПолученный.Ссылка | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаШапокДокументов КАК ДанныеОснований | ПО СчетаФактурыОснования.ДокументОснование = ДанныеОснований.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ДанныеОрганизации | ПО СчетФактураПолученный.Организация = ДанныеОрганизации.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеКонтрагента | ПО СчетФактураПолученный.Контрагент = ДанныеКонтрагента.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК ДанныеВалюты | ПО ДанныеОснований.Валюта = ДанныеВалюты.Ссылка | |ИНДЕКСИРОВАТЬ ПО | Ссылка | |; |///////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СчетаФактурыОснования.Ссылка КАК Ссылка, | МАКСИМУМ(ВЫБОР | КОГДА НЕ ТаблицаТоваров.ЭтоТовар | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ЕстьУслуги, | МАКСИМУМ(ВЫБОР | КОГДА ТаблицаТоваров.ЭтоТовар | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ЕстьТовары |ПОМЕСТИТЬ | НоменклатураДокументовПолученные |ИЗ | СчетаФактурыПолученныеОснования КАК СчетаФактурыОснования | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаТоваров КАК ТаблицаТоваров | ПО СчетаФактурыОснования.ДокументОснование = ТаблицаТоваров.Ссылка | |СГРУППИРОВАТЬ ПО | СчетаФактурыОснования.Ссылка |ИНДЕКСИРОВАТЬ ПО | Ссылка |"; Запрос.Выполнить(); КонецПроцедуры Функция ПолучитьПорядковыеНомераСтрок(Знач Таблица) Экспорт Результат = Таблица.Скопировать(,"СчетФактура,ДокументОснование"); Результат.Свернуть("СчетФактура,ДокументОснование"); Результат.Колонки.Добавить("НомерСтрокиСФ",Новый ОписаниеТипов("Строка")); Результат.Индексы.Добавить("ДокументОснование"); Расчет = Таблица.Скопировать(); Расчет.Сортировать("СчетФактура,ДокументОснование,НомерСтрокиСФ"); ПорядковыеНомераСтрок = ""; ПредыдущийНомер = 0; ИдетИнтервал = Ложь; ТекущееОснование = Неопределено; // считаем, что двух СФ с одним основанием быть не может Для Каждого СтрокаРасчета Из Расчет Цикл Если СтрокаРасчета.НомерСтрокиСФ = 0 Тогда Продолжить; КонецЕсли; Если СтрокаРасчета.ДокументОснование <> ТекущееОснование Тогда //новый расчет Если ТекущееОснование <> Неопределено Тогда // закрываем старый расчет Если ИдетИнтервал Тогда ИдетИнтервал = Ложь; ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,""); КонецЕсли; СтрокаОснования = Результат.Найти(ТекущееОснование,"ДокументОснование"); СтрокаОснования.НомерСтрокиСФ = ПорядковыеНомераСтрок; КонецЕсли; ТекущееОснование = СтрокаРасчета.ДокументОснование; ПорядковыеНомераСтрок = ""+СтрЗаменить(СтрокаРасчета.НомерСтрокиСФ,Символы.НПП,""); Иначе // продолжаем расчет Если ПредыдущийНомер = СтрокаРасчета.НомерСтрокиСФ - 1 Тогда ИдетИнтервал = Истина; Иначе Если ИдетИнтервал Тогда ИдетИнтервал = Ложь; ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,""); КонецЕсли; ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "," + СтрЗаменить(СтрокаРасчета.НомерСтрокиСФ,Символы.НПП,""); КонецЕсли; КонецЕсли; ПредыдущийНомер = СтрокаРасчета.НомерСтрокиСФ; КонецЦикла; Если ТекущееОснование <> Неопределено Тогда // закрываем последний расчет Если ИдетИнтервал Тогда ИдетИнтервал = Ложь; ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,""); КонецЕсли; СтрокаОснования = Результат.Найти(ТекущееОснование,"ДокументОснование"); СтрокаОснования.НомерСтрокиСФ = ПорядковыеНомераСтрок; КонецЕсли; Возврат Результат; КонецФункции Функция ПустойТекстЗапросаШапокОснований() ТекстЗапроса = "ВЫБРАТЬ | НЕОПРЕДЕЛЕНО КАК Ссылка, | ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка) КАК ХозяйственнаяОперация, | ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта, | ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация, | ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС, | ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка) КАК Подразделение, | ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад, | ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Грузоотправитель, | ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Грузополучатель, | ЛОЖЬ КАК РасчетыЧерезОтдельногоКонтрагента, | НЕОПРЕДЕЛЕНО КАК Номенклатура, | """" КАК Содержание, | ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Комиссионер, | """" КАК Основание, | ДАТАВРЕМЯ(1,1,1) КАК ОснованиеДата, | """" КАК ОснованиеНомер, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетОрганизации, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетКонтрагента, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузоотправителя, | НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузополучателя, | """" КАК ДоверенностьНомер, | ДАТАВРЕМЯ(1,1,1) КАК ДоверенностьДата, | """" КАК ДоверенностьВыдана, | """" КАК ДоверенностьЛицо, | """" КАК Менеджер, | """" КАК Кладовщик, | """" КАК ДолжностьКладовщика |ПОМЕСТИТЬ ТаблицаШапокДокументов"; Возврат ТекстЗапроса; КонецФункции Функция ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов() ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ДанныеПервичныхДокументов.Дата КАК ДатаВходящегоДокумента, | ДанныеПервичныхДокументов.Номер КАК НомерВходящегоДокумента, | ТаблицаДокументов.Ссылка КАК СчетФактура |ИЗ | РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов | ПО | ПлатежныеДокументы.ОснованиеОплаты = ТаблицаДокументов.ДокументОснование | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов | ПО | ПлатежныеДокументы.Организация = ДанныеПервичныхДокументов.Организация | И ПлатежныеДокументы.ДокументОплаты = ДанныеПервичныхДокументов.Документ | |ГДЕ | ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ДанныеПервичныхДокументов.Дата КАК ДатаВходящегоДокумента, | ДанныеПервичныхДокументов.Номер КАК НомерВходящегоДокумента, | ТаблицаДокументов.Ссылка КАК СчетФактура |ИЗ | РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов | ПО | ПлатежныеДокументы.ОснованиеОплаты = ТаблицаДокументов.ДокументОснование | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов | ПО | ПлатежныеДокументы.Организация = ДанныеПервичныхДокументов.Организация | И ПлатежныеДокументы.ДокументОплаты = ДанныеПервичныхДокументов.Документ | |ГДЕ | ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) = ТИП(Документ.ВзаимозачетЗадолженности) | И ПлатежныеДокументы.ДокументОплаты.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера) | |ИТОГИ ПО | СчетФактура |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ РасчетыСКлиентами_ОснованияИДокументыОплаты |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов"; Возврат ТекстЗапроса; КонецФункции Функция СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы) Экспорт СтрокаНомеровИДата = ""; Для Каждого СтрокаТаблицы Из ПлатежноРасчетныеДокументы Цикл СтрокаНомеровИДата = СтрокаНомеровИДата + ?(ПустаяСтрока(СтрокаНомеровИДата), "", ", ") + СтрокаТаблицы.НомерПлатежноРасчетногоДокумента + " от " + Формат(СтрокаТаблицы.ДатаПлатежноРасчетногоДокумента, "ДЛФ=D"); КонецЦикла; Возврат СтрокаНомеровИДата; КонецФункции Процедура ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ДанныеВыборки) Выборка = ДанныеВыборки.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока = ПлатежноРасчетныеДокументы.Добавить(); НоваяСтрока.НомерПлатежноРасчетногоДокумента = Выборка.НомерВходящегоДокумента; НоваяСтрока.ДатаПлатежноРасчетногоДокумента = Выборка.ДатаВходящегоДокумента; КонецЦикла; ПлатежноРасчетныеДокументы.Свернуть("ДатаПлатежноРасчетногоДокумента, НомерПлатежноРасчетногоДокумента", ""); ПлатежноРасчетныеДокументы.Сортировать("ДатаПлатежноРасчетногоДокумента Возр, НомерПлатежноРасчетногоДокумента Возр"); КонецПроцедуры |
|||
1
Обработка
15.11.23
✎
10:30
|
(0) Админы, может ограничение вам вставить на количество строк в посте?
|
|||
2
DJ Anthon
15.11.23
✎
10:33
|
насколько я помню, процедура печати в ВПФ должна быть примерно такая
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПеремещениеТоваровВес") Тогда ТабличныйДокумент = ПечатьДокумента(МассивОбъектовНазначения, ОбъектыПечати, ""); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПеремещениеТоваровВес", "Накладная на перемещение (Вес)", ТабличныйДокумент); КонецЕсли; КонецПроцедуры |
|||
3
DJ Anthon
15.11.23
✎
10:33
|
где ПеремещениеТоваровВес - это идентификатор команды. кажись, у вас это УПДВнешний
|
|||
4
Donkey_hot
15.11.23
✎
10:34
|
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм, "РеализацияТоваровУслуг", - кажется, здесь должно быть "УПДВнешний" |
|||
5
DJ Anthon
15.11.23
✎
10:34
|
а вы указали "РеализацияТоваровУслуг"
|
|||
6
Max57
15.11.23
✎
10:44
|
(4) Спасибо, помогло, (3) Спасибо
Прошу прощения, что вставил весть текст модуля объекта |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |