Как вывести на внешнюю печатную форму данные реквизитов с разных справочников ?

1. Gok9 10.11.22 11:23 Сейчас в теме
Здравствуйте, как можно создать внешнюю печатную форму АктДоставку если в этой печатной форме используется реквизиты с разных документов, например в документе РеализацияТоваровУслуг есть реквизиты ФормаОплаты, АдресДоставки но нет Вес и Объем, в документе ЗаказНаПеревозку есть реквизиты Вес и Объем но нет ФормаОплаты и АдресДоставки, скажите пожалуйста как можно это решить?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 10.11.22 11:27 Сейчас в теме
(1)Должно быть что что объединяет эти реквизиты - Элемент справочника, например.
3. ZergKRSK 129 10.11.22 11:39 Сейчас в теме
(1) между доками РеализацияТоваровУслуг и ЗаказНаПеревозку сделать связь (если её нет)
4. Gok9 10.11.22 11:40 Сейчас в теме
(3) как сделать? Потом реквизиты обоих можно использовать?
5. Prikum 3 10.11.22 11:42 Сейчас в теме
(4)Заказ делается на основании реализации? Если да, то вот она связь.
6. Gok9 10.11.22 11:44 Сейчас в теме
(5) Честно не знаю, пока новичок, сказали что надо такая печатная форма
8. yurikmellon 6 10.11.22 11:50 Сейчас в теме
(6) тебе уже ответили, что нужно понимать из каких документов вытаскивать значения. Вот у тебя ВПФ печатается, допустим, из Реализации, как понять из какого дока ЗаказНаПеревозку вытаскивать Вес и Объём, в базе этих доков 100500 может быть.
10. Gok9 10.11.22 11:58 Сейчас в теме
(8) Да, мне лучше взять данные вес, объем из ЗаказНаПеревозку и вывести печатную форму с Реализации, но не знаю насколько это будет правильным, пока вот так сделал...
Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");//Указываем документ к которому делаем внешнюю печ. форму
МассивНазначений.Добавить("Документ.ЗаданиеНаПеревозку");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Акт доставки"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0"); 
ПараметрыРегистрации.Вставить("Информация", "Заказ"); 
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Акт доставки", "АктДоставкиВнешняя", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;	
	
КонецФункции

Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление; 
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктДоставкиВнешняя", "Акт доставки", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));

КонецПроцедуры // Печать()

Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)
	
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктДоставкиВнешняя";

МакетОбработки = ПолучитьМакет("МакетАктДоставки");

//заполняем шапку
ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Дата = СсылкаНаОбъект.Дата;
ОбластьШапка.Параметры.Номер = СсылкаНаОбъект.Номер;
//ОбластьШапка.Параметры.Организация = СсылкаНаОбъект.Организация;
ОбластьШапка.Параметры.КурьерЭкспедитор = СсылкаНаОбъект.КурьерЭкспедитор;
ОбластьШапка.Параметры.Вес = СсылкаНаОбъект.Вес;
ОбластьШапка.Параметры.Объем = СсылкаНаОбъект.Объем;
ОбластьШапка.Параметры.КоличествоПунктов = СсылкаНаОбъект.КоличествоПунктов;
ТабличныйДокумент.Вывести(ОбластьШапка);

//заполняем СтрокаТаблицы
ОбластьСтрокаТаблицы = МакетОбработки.ПолучитьОбласть("СтрокаТаблицы");
ОбластьСтрокаТаблицы.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
//ОбластьСтрокаТаблицы.Параметры.Адрес = СсылкаНаОбъект.Адрес;
ОбластьСтрокаТаблицы.Параметры.Вес = СсылкаНаОбъект.Вес;
ОбластьСтрокаТаблицы.Параметры.Объем = СсылкаНаОбъект.Объем;
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

//заполняем  Подвал
//ОбластьПодвал = МакетОбработки.ПолучитьОбласть("Подвал");
//ОбластьПодвал.Параметры.

ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;	

КонецФункции
Показать
Прикрепленные файлы:
7. yurikmellon 6 10.11.22 11:48 Сейчас в теме
(4) ну например, добавить в док ЗаказНаПеревозку реквизит, назвать его "РеализацияТоваровУслуг" с типом РеализацияТоваровУслуг.Ссылка. Заполнять его или автоматом, если ввод на основании или вручную.
В ПФ вытаскивать нужные значения Вес = ЗаказНаПеревозку.РеализацияТоваровУслуг.Вес
9. ZergKRSK 129 10.11.22 11:56 Сейчас в теме
(4) зависит от структуры этих двух документов. ЗаказНаПеревозку возможно заполняется на основании одной Реализации, может быть нескольких Реализаций (что более логично). Отсюда не видно в общем.
11. Gok9 10.11.22 12:02 Сейчас в теме
(9) Справился бы если использовал реквизиты одного документа, а здесь в табличной части используются разные данные))
12. Prikum 3 10.11.22 12:04 Сейчас в теме
(11)Что мешает написать запрос, который объединит 2 документа и выведет нужную информацию?
13. Gok9 10.11.22 12:09 Сейчас в теме
(12) Можно через конструктор запросов? На внешней обработке делаю и раньше такого не делал, можете подсказать как через запрос получить данные с двух документов?
14. Prikum 3 10.11.22 12:11 Сейчас в теме
(13)
Можно через конструктор запросов?
Можно, я не против.
можете подсказать как через запрос получить данные с двух документов?
Что общего у документов, уже определили?
15. Gok9 10.11.22 12:16 Сейчас в теме
(14) Пока не знаю что у них общего)) знаю что это документ для экспедитора и все))
16. Prikum 3 10.11.22 12:19 Сейчас в теме
(15)Блин, как можно выполнять задачу, если не знаешь откуда брать данные?
tamidi; ZergKRSK; +2 Ответить
17. Gok9 10.11.22 12:55 Сейчас в теме
(16) С ЗаказКлиента и ЗаданиеНаПеревозку
18. Prikum 3 10.11.22 12:56 Сейчас в теме
(17)
Что общего у документов, уже определили?
19. Gok9 10.11.22 13:04 Сейчас в теме
(18) Контрагент, АдресДоставки, Вес, Объем
21. Prikum 3 10.11.22 13:54 Сейчас в теме
(19)
Контрагент, АдресДоставки, Вес, Объем
а что на 1 адрес доставки и контрагента всегда выписывается только единственный документ? Повторно по этому адресу и этому контрагенту уже не доставляем?
20. Gok9 10.11.22 13:06 Сейчас в теме
(18) Надо потянуть с документа ЗаказКлиента ФормаОплаты, Менеджер, Организацию
Прикрепленные файлы:
22. tamidi 8 10.11.22 14:28 Сейчас в теме
(20)Ищите в документе ЗаданиеНаПеревозку реквизит, у которого в типе есть Документ.РеализацияТоваровУслуг или ЗаказКлиента, у вас то один документ, то другой фигурирует. Но еще учтите, что тип может быть определяемый, т.е. в реквизите вы не увидите напрямую название вашего документа, надо будет смотреть из чего состоит этот тип.
Для убыстрения поиска выберите запросом все данные из документа ЗаданияНаПеревозку и посмотрите, где есть ссылка на документ реализации. Причем он может быть и в табличной части.
Так вы определите связь между документами, а дальше будете строить запрос по 2 документам
23. Gok9 11.11.22 05:27 Сейчас в теме
(21)
(22) Есть связь через определяемый тип РаспоряжениеНаДоставку который связан и с документом ЗаказКлиента и с Реализацией и ещё с множеством документов связанные с перевозкой.
Как теперь строит запрос для внешней обработки, СсылкаНаОбъект будет работать?
Прикрепленные файлы:
24. tamidi 8 11.11.22 08:58 Сейчас в теме
(23)
СсылкаНаОбъект будет работать?

Что значит будет работать? Вы ее передадите в качестве параметра запроса, чтобы отобрать в запросе один документ ЗаданиеНаПеревозку.
В запросе через Распоряжение связываете ваше ЗаданиеНаПеревозку с нужным документом, посмотрите, какой конкретно у вас указан в реквизите Распоряжение (ЗаказКлиента или Реализация), с ним и связывайте и оттуда уже выводите данные об оплате и прочее.
Сначала постройте запрос, которым получите все поля для печатной формы, потом уже разбирайтесь с печатью.
25. Gok9 11.11.22 09:42 Сейчас в теме
(24) Можете помочь как построить запрос для внешней обработки, сейчас не могу построить запрос для внешней обработки и это сильно ограничивает меня))
26. Gok9 11.11.22 10:14 Сейчас в теме
(24)
Примерно так выбрал поля, теперь что делать дальше?
Прикрепленные файлы:
27. Prikum 3 11.11.22 10:25 Сейчас в теме
(26)
теперь что делать дальше?
Теперь добавить связь документов в запрос.
28. Gok9 11.11.22 10:39 Сейчас в теме
(27) как это сделать?)) В конструкторе запросов можно связать?
29. Prikum 3 11.11.22 10:52 Сейчас в теме
(28)
В конструкторе запросов можно связать?
Можно!

(28)
как это сделать?))
Вроде как краткий курс по запросам был пройден в другой теме? Неужели еще раз надо?
30. Gok9 11.11.22 11:10 Сейчас в теме
(29) Ааа где?)) В ютубе не смог найти роликов где с помощью запроса получают данные для внешней обработки))
31. Prikum 3 11.11.22 11:11 Сейчас в теме
(30)
где с помощью запроса получают данные для внешней обработки
а какая разница куда получать данные запросом?
32. Gok9 11.11.22 11:38 Сейчас в теме
(31) Например где надо поставить СсылкуНаОбъект )) пока мало опыта в разработке)) и вообще в программирование))
33. Prikum 3 11.11.22 11:52 Сейчас в теме
(32)
Запрос.УстановитьПараметр("СсылкаНаобъект",СсылкаНаОбъект);
34. Prikum 3 11.11.22 11:54 Сейчас в теме
(32)
Запрос.Текст ="Выбрать НашДокумент.РеквизитДокумента ИЗ Документы.НашДокумент КАК НашДокумент Где НашДокумент.Ссылка = &СсылкаНаобъект";
37. Gok9 11.11.22 13:51 Сейчас в теме
(36)
(34) Примерно так? Дальше не знаю что делать))
Запрос = новый запрос;
Запрос.УстановитьПараметр("СсылкаНаобъект",СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
|	ЗаданиеНаПеревозку.Дата КАК Дата,
|	ЗаданиеНаПеревозку.Номер КАК Номер,
|	ЗаданиеНаПеревозку.КурьерЭкспедитор КАК КурьерЭкспедитор,
|	ЗаданиеНаПеревозку.Водитель КАК Водитель,
|	ЗаданиеНаПеревозку.Вес КАК Вес,
|	ЗаданиеНаПеревозку.Объем КАК Объем,
|	ЗаданиеНаПеревозку.КоличествоПунктов КАК КоличествоПунктов,
|	ЗаданиеНаПеревозку.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
|	ЗаданиеНаПеревозку.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
|	ЗаданиеНаПеревозку.Маршрут.(
|		Адрес КАК Адрес
|	) КАК Маршрут,
|	ЗаданиеНаПеревозку.Распоряжения.(
|		ПолучательОтправитель КАК ПолучательОтправитель,
|		Распоряжение.Организация КАК РаспоряжениеОрганизация,
|		Распоряжение.Менеджер КАК РаспоряжениеМенеджер,
|		Распоряжение.Номер КАК РаспоряжениеНомер,
|		Распоряжение.ФормаОплаты КАК РаспоряжениеФормаОплаты
|	) КАК Распоряжения
|ИЗ
|	Документ.ЗаданиеНаПеревозку КАК ЗаданиеНаПеревозку
|ГДЕ
|   ЗаданиеНаПеревозку.Ссылка = &СсылкаНаобъект";

Показать
38. tamidi 8 11.11.22 15:00 Сейчас в теме
(37) Попробуйте так:
"ВЫБРАТЬ
|	ЗаданиеНаПеревозку.Дата КАК Дата,
|	ЗаданиеНаПеревозку.Номер КАК Номер,
|	ЗаданиеНаПеревозку.КурьерЭкспедитор КАК КурьерЭкспедитор,
|	ЗаданиеНаПеревозку.Водитель КАК Водитель,
|	ЗаданиеНаПеревозку.Вес КАК Вес,
|	ЗаданиеНаПеревозку.Объем КАК Объем,
|	ЗаданиеНаПеревозку.КоличествоПунктов КАК КоличествоПунктов,
|	ЗаданиеНаПеревозку.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
|	ЗаданиеНаПеревозку.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
|	ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель КАК ПолучательОтправитель,
|	ЗаданиеНаПеревозкуРаспоряжения.Распоряжение КАК Распоряжение,
|	РеализацияТоваровУслуг.ФормаОплаты КАК ФормаОплаты
|ИЗ
|	Документ.ЗаданиеНаПеревозку КАК ЗаданиеНаПеревозку
|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
|			ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|			ПО (ЗаданиеНаПеревозкуРаспоряжения.Распоряжение = РеализацияТоваровУслуг.Ссылка)
|		ПО (ЗаданиеНаПеревозку.Ссылка = ЗаданиеНаПеревозкуРаспоряжения.Ссылка)
|ГДЕ
|	ЗаданиеНаПеревозку.Ссылка = &СсылкаНаобъект"
Показать

Это для случая когда ЗаданиеНаПеревозку на основании РеализацииТоваровУслуг, не знаю как у вас
Поля сами выбирайте какие нужны, я только показываю соединение
39. Gok9 14.11.22 05:31 Сейчас в теме
(38)
(38)
"ВЫБРАТЬ
| ЗаданиеНаПеревозку.Дата КАК Дата,
| ЗаданиеНаПеревозку.Номер КАК Номер,
| ЗаданиеНаПеревозку.КурьерЭкспедитор КАК КурьерЭкспедитор,
| ЗаданиеНаПеревозку.Водитель КАК Водитель,
| ЗаданиеНаПеревозку.Вес КАК Вес,
| ЗаданиеНаПеревозку.Объем КАК Объем,
| ЗаданиеНаПеревозку.КоличествоПунктов КАК КоличествоПунктов,
| ЗаданиеНаПеревозку.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
| ЗаданиеНаПеревозку.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
| ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель КАК ПолучательОтправитель,
| ЗаданиеНаПеревозкуРаспоряжения.Распоряжение КАК Распоряжение,
| РеализацияТоваровУслуг.ФормаОплаты КАК ФормаОплаты
|ИЗ
| Документ.ЗаданиеНаПеревозку КАК ЗаданиеНаПеревозку
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ПО (ЗаданиеНаПеревозкуРаспоряжения.Распоряжение = РеализацияТоваровУслуг.Ссылка)
| ПО (ЗаданиеНаПеревозку.Ссылка = ЗаданиеНаПеревозкуРаспоряжения.Ссылка)
|ГДЕ
| ЗаданиеНаПеревозку.Ссылка = &СсылкаНаобъект"
Показать


Здравствуйте, как вывести теперь ФормаОплаты на макет?
ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = СсылкаНаОбъект.ФормаОплаты;
Так написал не находить поля
40. Gok9 14.11.22 05:45 Сейчас в теме
(38)
 Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)
	
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктДоставкиВнешняя";

МакетОбработки = ПолучитьМакет("МакетАктДоставки");

Запрос = новый запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ЗаданиеНаПеревозку.Дата КАК Дата,
|    ЗаданиеНаПеревозку.Номер КАК Номер,
|    ЗаданиеНаПеревозку.КурьерЭкспедитор КАК КурьерЭкспедитор,
|    ЗаданиеНаПеревозку.Водитель КАК Водитель,
|    ЗаданиеНаПеревозку.Вес КАК Вес,
|    ЗаданиеНаПеревозку.Объем КАК Объем,
|    ЗаданиеНаПеревозку.КоличествоПунктов КАК КоличествоПунктов,
|    ЗаданиеНаПеревозку.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
|    ЗаданиеНаПеревозку.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
|    ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель КАК ПолучательОтправитель,
|    ЗаданиеНаПеревозкуРаспоряжения.Распоряжение КАК Распоряжение,
|    ЗаказКлиента.ФормаОплаты КАК ФормаОплаты
|ИЗ
|    Документ.ЗаданиеНаПеревозку КАК ЗаданиеНаПеревозку
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
|            ПО (ЗаданиеНаПеревозкуРаспоряжения.Распоряжение = ЗаказКлиента.Ссылка)
|        ПО (ЗаданиеНаПеревозку.Ссылка = ЗаданиеНаПеревозкуРаспоряжения.Ссылка)
|ГДЕ
|    ЗаданиеНаПеревозку.Ссылка = &СсылкаНаобъект";

Запрос.УстановитьПараметр("СсылкаНаобъект",СсылкаНаОбъект);



//заполняем шапку
ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Дата = СсылкаНаОбъект.Дата;
ОбластьШапка.Параметры.Номер = СсылкаНаОбъект.Номер;
//ОбластьШапка.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
ОбластьШапка.Параметры.АвтомобильГрузоподъемностьВТоннах = СсылкаНаОбъект.АвтомобильГрузоподъемностьВТоннах;
ОбластьШапка.Параметры.АвтомобильВместимостьВКубическихМетрах = СсылкаНаОбъект.АвтомобильВместимостьВКубическихМетрах;
//ОбластьШапка.Параметры.Организация = СсылкаНаОбъект.Организация;
ОбластьШапка.Параметры.КурьерЭкспедитор = СсылкаНаОбъект.КурьерЭкспедитор;
ОбластьШапка.Параметры.Вес = СсылкаНаОбъект.Вес;
ОбластьШапка.Параметры.Объем = СсылкаНаОбъект.Объем;
ОбластьШапка.Параметры.КоличествоПунктов = СсылкаНаОбъект.КоличествоПунктов;
ТабличныйДокумент.Вывести(ОбластьШапка);

//заполняем СтрокаТаблицы
ОбластьСтрокаТаблицы = МакетОбработки.ПолучитьОбласть("СтрокаТаблицы");
////ОбластьСтрокаТаблицы.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
//ОбластьСтрокаТаблицы.Параметры.Адрес = СсылкаНаОбъект.Маршрут.Адрес;
//ОбластьСтрокаТаблицы.Параметры.Вес = СсылкаНаОбъект.Вес;
//ОбластьСтрокаТаблицы.Параметры.Объем = СсылкаНаОбъект.Объем;
//Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Маршрут Цикл
//ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, ТекущаяСтрока);
//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

//Для Каждого ТекущаяСтрока1 Из СсылкаНаОбъект.Распоряжения Цикл
//	 //ОбластьСтрокаТаблицы.Параметры.Номер = СсылкаНаОбъект.Номер;
//	//Если ОбластьСтрокаТаблицы.Параметры.ВидДоставки = СсылкаНаОбъект.Перечисления.ВидыДоставки.НаСклад Тогда
//	//	СсылкаНаОбъект.Элементы.РаспоряженияПолучатель.Видимость = Ложь;
//	//Иначе
//	//	СсылкаНаОбъект.Элементы.РаспоряженияОтправитель.Видимость = Ложь;
//	//КонецЕсли;

//	ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ТекущаяСтрока1.ПолучательОтправитель;	
////ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ТекущаяСтрока.Распоряжения.ПолучательОтправитель;
//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
//КонецЦикла;
//КонецЦикла;
ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = СсылкаНаОбъект.ФормаОплаты;

Для Каждого ТекущаяСтрока1 Из СсылкаНаОбъект.Распоряжения Цикл
ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ТекущаяСтрока1.ФормаОплаты;	
ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ТекущаяСтрока1.ПолучательОтправитель;
ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, ТекущаяСтрока1);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
КонецЦикла;

//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

//заполняем Итог
ОбластьИтог = МакетОбработки.ПолучитьОбласть("Итог");
ТабличныйДокумент.Вывести(ОбластьИтог);

//заполняем  Подвал
ОбластьПодвал = МакетОбработки.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Водитель = СсылкаНаОбъект.Водитель;
//Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Распоряжения Цикл
//ОбластьПодвал.Параметры.Менеджер = ТекущаяСтрока.Распоряжение.Менеджер;
ТабличныйДокумент.Вывести(ОбластьПодвал);
//КонецЦикла;


ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;	

КонецФункции
Показать


Выдал ошибку
Прикрепленные файлы:
35. tamidi 8 11.11.22 12:46 Сейчас в теме
(30)Запрос - это всего лишь средство для получения набора данных.
Вы можете получать набор данных напрямую из объекта, а можете формировать этот набор запросом.
А где дальше эти данные будут использоваться не имеет никакого значения.
Казалось бы это самые азы теории, даже без привязки к 1С.
Поэтому смотрите ролики, статьи про запросы данных из нескольких источников, про соединения таблиц
36. tamidi 8 11.11.22 12:50 Сейчас в теме
(26)Данные из табличных частей надо выбирать из отдельных таблиц, в вашем случае вы получите в выборке таблицы значений, а вам нужны реквизиты.
Т.е. ЗаданиеНаПеревозку.Распоряжение должно быть отдельной таблицей, иначе вы не свяжете ее реквизиты с документом распоряжения
41. gmw 14.11.22 06:14 Сейчас в теме
Попробуйте так:
"ВЫБРАТЬ
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата КАК Дата,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Номер КАК Номер,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.КурьерЭкспедитор КАК КурьерЭкспедитор,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Водитель КАК Водитель,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Вес КАК Вес,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Объем КАК Объем,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.КоличествоПунктов КАК КоличествоПунктов,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
|    ЗаданиеНаПеревозкуРаспоряжения.Ссылка.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
|    ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель КАК ПолучательОтправитель,
|    ЗаданиеНаПеревозкуРаспоряжения.Распоряжение КАК Распоряжение,
|    ЗаказКлиента.ФормаОплаты КАК ФормаОплаты
|ИЗ
|    Документ.ЗаданиеНаПеревозкуРаспоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
|            ПО (ЗаданиеНаПеревозкуРаспоряжения.Распоряжение = ЗаказКлиента.Ссылка)
|ГДЕ
|    ЗаданиеНаПеревозку.Ссылка = &СсылкаНаобъект";
Показать
42. Gok9 14.11.22 07:44 Сейчас в теме
(38)
(41)
Вообще запутался, сделал СсылкаНаОбъект, установил параметр, не сработал... потом после запроса добавил эти строчки кода
 РезультатЗапроса = Запрос.Выполнить(); 
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
сумел вывести форму оплаты, хотя неправильно вывел в цикле, менеджера тоже вывел и организацию тоже, добавив перед ними ВыборкаДетальныеЗаписи, потом добавил СсылкаНаОбъект не сработал, потом опять вернул ВыборкаДетальныеЗаписи после этого не показывает поля, хотя ошибку не выдаёт.

Код несколько раз менял чтобы посмотреть на результаты

Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)
	
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктДоставкиВнешняя";

МакетОбработки = ПолучитьМакет("МакетАктДоставки");

Запрос = новый запрос;
Запрос.УстановитьПараметр("СсылкаНаобъект",СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
|    ЗаданиеНаПеревозку.Дата КАК Дата,
|    ЗаданиеНаПеревозку.Номер КАК Номер,
|    ЗаданиеНаПеревозку.КурьерЭкспедитор КАК КурьерЭкспедитор,
|    ЗаданиеНаПеревозку.Водитель КАК Водитель,
|    ЗаданиеНаПеревозку.Вес КАК Вес,
|    ЗаданиеНаПеревозку.Объем КАК Объем,
|    ЗаданиеНаПеревозку.КоличествоПунктов КАК КоличествоПунктов,
|    ЗаданиеНаПеревозку.АвтомобильВместимостьВКубическихМетрах КАК АвтомобильВместимостьВКубическихМетрах,
|    ЗаданиеНаПеревозку.АвтомобильГрузоподъемностьВТоннах КАК АвтомобильГрузоподъемностьВТоннах,
|    ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель КАК ПолучательОтправитель,
|    ЗаданиеНаПеревозкуРаспоряжения.Распоряжение КАК Распоряжение,
|    ЗаказКлиента.ФормаОплаты КАК ФормаОплаты,
|    ЗаказКлиента.Организация КАК Организация,
|    ЗаказКлиента.АдресДоставки КАК АдресДоставки,
|    ЗаказКлиента.Менеджер КАК Менеджер
|ИЗ
|    Документ.ЗаданиеНаПеревозку КАК ЗаданиеНаПеревозку
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
|            ПО (ЗаданиеНаПеревозкуРаспоряжения.Распоряжение = ЗаказКлиента.Ссылка)
|        ПО (ЗаданиеНаПеревозку.Ссылка = ЗаданиеНаПеревозкуРаспоряжения.Ссылка)
|ГДЕ
|    ЗаданиеНаПеревозку.Ссылка = &СсылкаНаобъект";

РезультатЗапроса = Запрос.Выполнить(); 
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

//ОбластьСтрокаТаблицы = МакетОбработки.ПолучитьОбласть("СтрокаТаблицы");

//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//	    ОбластьСтрокаТаблицы.Параметры.АдресДоставки = ВыборкаДетальныеЗаписи.АдресДоставки;
//        ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ВыборкаДетальныеЗаписи.ФормаОплаты;
//		ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ВыборкаДетальныеЗаписи.ПолучательОтправитель;
//        ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, ВыборкаДетальныеЗаписи);
//		//ОбластьСтрокаТаблицы.Параметры.ТипКонтрагента = ВыборкаДетальныеЗаписи.ТипКонтрагента;
//        ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
//КонецЦикла;   

//заполняем шапку
ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Организация = ВыборкаДетальныеЗаписи.Организация;
ОбластьШапка.Параметры.Дата = СсылкаНаобъект.Дата;
ОбластьШапка.Параметры.Номер = СсылкаНаобъект.Номер;
//ОбластьШапка.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
ОбластьШапка.Параметры.АвтомобильГрузоподъемностьВТоннах = СсылкаНаобъект.АвтомобильГрузоподъемностьВТоннах;
ОбластьШапка.Параметры.АвтомобильВместимостьВКубическихМетрах = СсылкаНаобъект.АвтомобильВместимостьВКубическихМетрах;
//ОбластьШапка.Параметры.Организация = СсылкаНаОбъект.Организация;
ОбластьШапка.Параметры.КурьерЭкспедитор = СсылкаНаобъект.КурьерЭкспедитор;
ОбластьШапка.Параметры.Вес = СсылкаНаобъект.Вес;
ОбластьШапка.Параметры.Объем = СсылкаНаобъект.Объем;
ОбластьШапка.Параметры.КоличествоПунктов = СсылкаНаобъект.КоличествоПунктов;
ТабличныйДокумент.Вывести(ОбластьШапка);

//заполняем СтрокаТаблицы
ОбластьСтрокаТаблицы = МакетОбработки.ПолучитьОбласть("СтрокаТаблицы");
////ОбластьСтрокаТаблицы.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
//ОбластьСтрокаТаблицы.Параметры.Адрес = СсылкаНаОбъект.Маршрут.Адрес;
//ОбластьСтрокаТаблицы.Параметры.Вес = СсылкаНаОбъект.Вес;
//ОбластьСтрокаТаблицы.Параметры.Объем = СсылкаНаОбъект.Объем;
//Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Маршрут Цикл
//ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, ТекущаяСтрока);
//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

//Для Каждого ТекущаяСтрока1 Из СсылкаНаОбъект.Распоряжения Цикл
//	 //ОбластьСтрокаТаблицы.Параметры.Номер = СсылкаНаОбъект.Номер;
//	//Если ОбластьСтрокаТаблицы.Параметры.ВидДоставки = СсылкаНаОбъект.Перечисления.ВидыДоставки.НаСклад Тогда
//	//	СсылкаНаОбъект.Элементы.РаспоряженияПолучатель.Видимость = Ложь;
//	//Иначе
//	//	СсылкаНаОбъект.Элементы.РаспоряженияОтправитель.Видимость = Ложь;
//	//КонецЕсли;

//	ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ТекущаяСтрока1.ПолучательОтправитель;	
////ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ТекущаяСтрока.Распоряжения.ПолучательОтправитель;
//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
//КонецЦикла;
//КонецЦикла;
//ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = СсылкаНаОбъект.ФормаОплаты;

//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//	    ОбластьСтрокаТаблицы.Параметры.АдресДоставки = ВыборкаДетальныеЗаписи.АдресДоставки;
//        ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ВыборкаДетальныеЗаписи.ФормаОплаты;
//		ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ВыборкаДетальныеЗаписи.ПолучательОтправитель;
//        ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, ВыборкаДетальныеЗаписи);
//		//ОбластьСтрокаТаблицы.Параметры.ТипКонтрагента = ВыборкаДетальныеЗаписи.ТипКонтрагента;
//        ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
//КонецЦикла;  

Для Каждого ТекущаяСтрока1 Из СсылкаНаОбъект.Распоряжения Цикл
//ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ТекущаяСтрока1.ФормаОплаты;

ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ВыборкаДетальныеЗаписи.ФормаОплаты;
//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = ТекущаяСтрока1.ПолучательОтправитель;
ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, ТекущаяСтрока1);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
КонецЦикла;


//ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

//заполняем Итог
ОбластьИтог = МакетОбработки.ПолучитьОбласть("Итог");
ТабличныйДокумент.Вывести(ОбластьИтог);

//заполняем  Подвал
ОбластьПодвал = МакетОбработки.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Водитель = ВыборкаДетальныеЗаписи.Водитель;
//Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Распоряжения Цикл
ОбластьПодвал.Параметры.Менеджер = ВыборкаДетальныеЗаписи.Менеджер;
ТабличныйДокумент.Вывести(ОбластьПодвал);
//КонецЦикла;


ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;	

КонецФункции
Показать
Прикрепленные файлы:
44. tamidi 8 14.11.22 09:36 Сейчас в теме
(42) Забудьте вы про ссылку на объект после того как передали ее в качестве параметра в запрос.
Вы запросом получили данные и вместо документа перебирайте данные запроса:

вместо
Для Каждого ТекущаяСтрока1 Из СсылкаНаОбъект.Распоряжения Цикл
    ...
    ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ВыборкаДетальныеЗаписи.ФормаОплаты;
    ...
КонецЦикла;


делайте

РезультатЗапроса = Запрос.Выполнить(); 
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ...
    ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ВыборкаДетальныеЗаписи.ФормаОплаты;
    ...
КонецЦикла;
45. Gok9 14.11.22 10:53 Сейчас в теме
(44)
(44) Почему при использование цикла
Пока Выборка.Следующий() Цикл

ЗаполнитьЗначенияСвойств(ОбластьСтрокаТаблицы.Параметры, Выборка);
ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = Выборка.ФормаОплаты;
ОбластьСтрокаТаблицы.Параметры.ПолучательОтправитель = Выборка.ПолучательОтправитель;
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
КонецЦикла;


Вес и объем неправильно показывает?

При использование цикла
Для Каждого ТекущаяСтрока1 Из СсылкаНаОбъект.Распоряжения Цикл
    ...
    ОбластьСтрокаТаблицы.Параметры.ФормаОплаты = ВыборкаДетальныеЗаписи.ФормаОплаты;
    ...
КонецЦикла;


Такое не происходить?

Как можно это исправить?
Прикрепленные файлы:
43. gmw 14.11.22 08:04 Сейчас в теме
(42)
Проблема в том, что в запросе используется Документ.ЗаданиеНаПеревозку, то есть сам документ, а связь нужна с Документ.ЗаказКлиента, ссылка на который находится в табличной части документа. Поэтому в запросе нужно использовать табличную часть ЗаданиеНаПеревозкуРаспоряжения, а к самому документу обращаться через ЗаданиеНаПеревозкуРаспоряжения.Ссылка.
см (41)
52. Gok9 15.11.22 12:17 Сейчас в теме
(43) Здравствуйте, спасибо за помощь
Хотел ещё спросить, как можно передать ПараметрыПечати во внешнюю печатную форму? Там можно передать 4 параметра, я скопировал ПФ с типовой конфигурации...
53. gmw 15.11.22 14:24 Сейчас в теме
(52) Добрый день!

При копировании печатных форм типовой конфигурации во внешнюю ПФ нужно учитывать, что меняется контекст, то есть окружение. Часто требуется дополнительно копировать другие процедуры, так как изменяются параметры при их вызове. Чтобы передать ПараметрыПечати, нужно поразбираться в общих модулях БСП (библиотека стандартных подсистем), из которых вызывается внешняя ПФ. То есть, по определению внешняя ПФ имеет совсем другой контекст, чем копируемая ПФ конфигурации, так как вызывается в других условиях.

Правильнее будет создать расширение конфигурации и изменить типовую ПФ там, или создать там доработанную копию ПФ.
54. Gok9 16.11.22 11:57 Сейчас в теме
(53)
(53 Можете подсказать, откуда берутся эти списки для печати? Как можно посмотреть как они формируются?
Прикрепленные файлы:
55. Prikum 3 16.11.22 12:00 Сейчас в теме
(54)
Можете подсказать, откуда берутся эти списки для печати?
Судя по названиям (измИненая) то из внешних отчетов и обработак
56. Gok9 16.11.22 12:19 Сейчас в теме
(53)
(55)Нашел в макеты печатных форм, но их формат html, как это? можно ли их открыт в конфигураторе, чтобы посмотреть код и макет?
Прикрепленные файлы:
58. gmw 16.11.22 12:51 Сейчас в теме
(56)
"Макет может содержать табличный или текстовый документ, двоичные данные, HTML-документ или Active Document, графическую или географическую схему, схему компоновки данных или макет оформления схемы компоновки данных. " (ИТС).
В ИТС (сайт "Информационно-технологическое сопровождение" от 1С) можно найти много полезного для пользователя или разработчика 1С.
57. gmw 16.11.22 12:39 Сейчас в теме
(54)
Возможные варианты:
1. Изменена конфигурация, в ней добавлены команды вывода печатных форм.
2. Подключено расширение, которое добавило команды и формы.
3. Подключены внешние печатные формы.

Соответственно, и формирование можно видеть там.
Место подключения можно найти при отладке в конфигураторе в процедуре ПриСозданииНаСервере формы документа.
59. Gok9 18.11.22 11:45 Сейчас в теме
(57) Посмотрел это от модуля CRM, конфигурация объединенное решение ERP2 + CRM, печатная форма от CRM полностью заменяет ПФ от ERP2, ПФ от CRM формируются в общих модулях CRM, пробовал вынести код формирования ПФ на ВПФ, не получилось, вынес макет в расширение поменял в некоторых местах и с расширения ничего не подтягивает
60. gmw 18.11.22 16:54 Сейчас в теме
(59)
с расширения ничего не подтягивает

Поясните, пожалуйста, что не получается. Если в расширении используются модули, то при подключении расширения следует снять флажок "Безопасный режим".
Прикрепленные файлы:
61. Gok9 21.11.22 09:41 Сейчас в теме
(60) расширение смог подключить, но теперь не получается вывести итоги сверху строки таблицы, области заданы верно но не могу понять почему не выводиться сверху строки таблицы, даже удалил старые области внизу строки таблицы, но всё равно выводить внизу строки таблицы
Прикрепленные файлы:
46. user654641_yaga_m 12 14.11.22 11:00 Сейчас в теме
ДД, а отдельные печатные формы для каждого документа не катит?
47. tamidi 8 14.11.22 11:30 Сейчас в теме
(46)Это вы так советуете облегчить задачу?
Конечно, зачем изучать какие-то запросы и прочие вещи, если можно все упростить(
49. Gok9 14.11.22 12:03 Сейчас в теме
(48)
(47)Спасибо разобрался) Раньше не знал как через Запрос получить данные и вывести на макет
48. user654641_yaga_m 12 14.11.22 11:48 Сейчас в теме
(47) Ну если Вы хотите что-то изучать, тогда подкидываю свою мысль: я бы создал реквизиты во внеш обработке и при запуске определял бы с какого документа запускается обработка и заполнял соответствующие реквизиты. Недостающие через вопрос/ответ или еще как-то (не вижу всей картины).
50. tamidi 8 14.11.22 12:11 Сейчас в теме
(48) (48):-/
Спасибо за ценный совет
51. Gok9 15.11.22 08:15 Сейчас в теме
(50)
Здравствуйте)) хотел немного изменить печатную форму КоммерческоеПредложениеКлиенту, создал внешнюю обработку, перенес коды для печати, при печати выдал ошибку "Недостаточно фактических параметров" Думаю ошибка из-за СсылкаНаОбъект, можете подсказать что делаю не так?

Функция СведенияОВнешнейОбработке() Экспорт
	
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.КоммерческоеПредложениеКлиенту");//Указываем документ к которому делаем внешнюю печ. форму
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Коммерческое предложение клиенту доработка"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0"); 
ПараметрыРегистрации.Вставить("Информация", "Коммерческое предложение клиенту внешняя доработка"); 
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Коммерческое предложение клиенту доработка", "КоммерческоеПредложениеКлиентуВнешняя", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;	
	
КонецФункции

Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление; 
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

Процедура Печать(Знач МассивОбъектов, Знач ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КоммерческоеПредложениеКлиентуВнешняя") Тогда
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
			"КоммерческоеПредложениеКлиентуВнешняя",
			НСтр("ru = 'Коммерческое предложение клиенту';
				|en = 'Sales quotation for customer'"),
			ПечатнаяФормаКоммерческоеПредложениеКлиенту(МассивОбъектов[0], ОбъектыПечати, ПараметрыПечати));
		
	КонецЕсли;
	
КонецПроцедуры 

Функция ДанныеДляПечати(СсылкаНаОбъект, ПараметрыПечати)
	
	СтруктураДанныхДляПечати = Неопределено;
	СтандартнаяОбработка = Истина;
	КоммерческиеПредложенияДокументыПереопределяемый.КоммерческоеПредложениеКлиентуПриФормированииСтруктурыДанных­Печати(
		СсылкаНаОбъект,
		СтруктураДанныхДляПечати,
		ПараметрыПечати,
		СтандартнаяОбработка);
		
	Если Не СтандартнаяОбработка Тогда
		Возврат СтруктураДанныхДляПечати;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("СсылкаНаОбъект", СсылкаНаОбъект);
	
	ОтображатьСкидки = Истина;
	Если ПараметрыПечати.Свойство("ОтображатьСкидки")
		И Не ПараметрыПечати.ОтображатьСкидки Тогда
		ОтображатьСкидки = Ложь;
	КонецЕсли;
	
	Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	КоммерческоеПредложениеКлиенту.Ссылка                              КАК Ссылка,
	|	КоммерческоеПредложениеКлиенту.Дата                                КАК Дата,
	|	КоммерческоеПредложениеКлиенту.Номер                               КАК Номер,
	|	КоммерческоеПредложениеКлиенту.Менеджер                            КАК Менеджер,
	|	КоммерческоеПредложениеКлиенту.КонтактноеЛицо                      КАК КонтактноеЛицо,
	|	КоммерческоеПредложениеКлиенту.Организация                         КАК Организация,
	|	КоммерческоеПредложениеКлиенту.СрокДействия                        КАК СрокДействия,
	|	КоммерческоеПредложениеКлиенту.Валюта                              КАК Валюта,
	|	КоммерческоеПредложениеКлиенту.ЦенаВключаетНДС                     КАК ЦенаВключаетНДС,
	|	КоммерческоеПредложениеКлиенту.Налогообложение                     КАК УчитыватьНДС,
	|	КоммерческоеПредложениеКлиенту.УсловияДоставкиТекст                КАК УсловияДоставки,
	|	КоммерческоеПредложениеКлиенту.УсловияОплатыТекст                  КАК УсловияОплаты,
	|	КоммерческоеПредложениеКлиенту.ПрочаяДополнительнаяИнформацияТекст КАК ПрочиеУсловия,
	|	КоммерческоеПредложениеКлиенту.Клиент                              КАК Клиент,
	|	КоммерческоеПредложениеКлиенту.Контрагент                          КАК Контрагент,
	|	КоммерческоеПредложениеКлиенту.ВариантУказанияСрокаПоставки        КАК ВариантУказанияСрокаПоставки,
	|	КоммерческоеПредложениеКлиенту.МожетВыкупатьсяЧастично             КАК МожетВыкупатьсяЧастично
	|ИЗ
	|	Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
	|ГДЕ
	|	КоммерческоеПредложениеКлиенту.Ссылка В(&СсылкаНаОбъект)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Товары.Ссылка                                                   КАК Ссылка,
	|	Товары.НомерСтроки                                              КАК НомерСтроки,
	|	Товары.Номенклатура                                             КАК Номенклатура,
	|	Товары.Характеристика                                           КАК Характеристика,
	|	Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки     КАК СуммаСкидки,
	|	Товары.ПроцентРучнойСкидки + Товары.ПроцентАвтоматическойСкидки КАК ПроцентСкидки,
	|	&УсловияЕдиницыИзмерения                                        КАК ЕдиницаИзмерения,
	|	Товары.Количество                                               КАК Количество,
	|ВЫБОР
	|	КОГДА &ОтображатьСкидки
	|		ТОГДА Товары.Цена
	|	ИНАЧЕ ВЫБОР
	|			КОГДА Товары.Количество = 0
	|				ТОГДА 0
	|			ИНАЧЕ Товары.Сумма / Товары.Количество
	|		КОНЕЦ
	|КОНЕЦ                                                              КАК Цена,
	|	Товары.СуммаСНДС                                                КАК СуммаСНДС,
	|	Товары.Сумма                                                    КАК Сумма,
	|	Товары.СуммаНДС                                                 КАК СуммаНДС,
	|	Товары.СрокПоставки                                             КАК СрокПоставки
	|ИЗ
	|	Документ.КоммерческоеПредложениеКлиенту.Товары КАК Товары
	|ГДЕ
	|	Товары.Ссылка В(&СсылкаНаОбъект)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	НомерСтроки";
	
	УсловияЕдиницыИзмерения = "Товары.ЕдиницаИзмерения";
	КоммерческиеПредложенияДокументыПереопределяемый.ПолучитьТекстЗапросаПолученияЕдиницыИзмерения(УсловияЕдиницыИзмерения);
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияЕдиницыИзмерения", УсловияЕдиницыИзмерения);
	
	ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет(); // Массив из ВыборкаИзРезультатаЗапроса
	
	СтруктураДанныхДляПечати = Новый Структура;
	СтруктураДанныхДляПечати.Вставить("РезультатПоШапке",   ПакетРезультатовЗапроса[0]);
	СтруктураДанныхДляПечати.Вставить("РезультатПоТоварам", ПакетРезультатовЗапроса[1]);
	
	Возврат СтруктураДанныхДляПечати;
	
КонецФункции

// Подготовка данных объекта по данным для печати.
// 
// Параметры:
// 	ДанныеШапки - ВыборкаИзРезультатаЗапроса.
// 	ТаблицаТовары - ТаблицаЗначений - товары:
//    * НомерСтроки - Число.
Функция ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТовары)

	ДанныеОбъекта = Новый Структура;
	
#Область ДанныеОрганизации
	
	СведенияОрганизации = Новый Структура;
	СведенияОрганизации.Вставить("Наименование");
	СведенияОрганизации.Вставить("ПолноеНаименование");
	СведенияОрганизации.Вставить("Телефоны");
	СведенияОрганизации.Вставить("ЮридическийАдрес");
	СведенияОрганизации.Вставить("ЭлектроннаяПочта");
	
	КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеОрганизации(ДанныеШапки.Организация, СведенияОрганизации);
	
	Если ЗначениеЗаполнено(СведенияОрганизации.ПолноеНаименование) Тогда
		ПредставлениеОрганизации = СведенияОрганизации.ПолноеНаименование;
	Иначе
		ПредставлениеОрганизации = СведенияОрганизации.Наименование;
	КонецЕсли;
	
#КонецОбласти
	
#Область КонтактнаяИнформация
	
	Если ЗначениеЗаполнено(ДанныеШапки.Менеджер) Тогда
		
		МассивСМенеджером = Новый Массив;
		МассивСМенеджером.Добавить(ДанныеШапки.Менеджер);
		
		ТребуемыеТипыКонтактнойИнформации = Новый Массив;
		ТребуемыеТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
		
		ТаблицаКонтактнойИнформации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(
		                                   МассивСМенеджером,
		                                   ТребуемыеТипыКонтактнойИнформации,,
		                                   ДанныеШапки.Дата);
		
		АдресЭлектроннойПочтыМенеджера = КоммерческиеПредложенияДокументы.ПредставлениеКонтактнойИнформацииИзТаблицы(
		                                   ТаблицаКонтактнойИнформации,
		                                   Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
		
	Иначе
		ТелефонМенеджера = "";
		АдресЭлектроннойПочтыМенеджера   = "";
	КонецЕсли;
	
#КонецОбласти

#Область Товары

	ЕстьСкидки = Ложь;
	ДанныеОбъекта.Вставить("СуммаВсего", 0);
	ДанныеОбъекта.Вставить("СуммаВсегоНДС", 0);
	ДанныеОбъекта.Вставить("КоличествоТоваров", 0);
	ДанныеОбъекта.Вставить("Товары", Новый Массив);
	
	Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
		
		Если СтрокаТовары.СуммаСкидки <> 0 Тогда
			ЕстьСкидки = Истина;
		КонецЕсли;
		
		ДанныеОбъекта.СуммаВсего        = ДанныеОбъекта.СуммаВсего + СтрокаТовары.Сумма;
		ДанныеОбъекта.СуммаВсегоНДС     = ДанныеОбъекта.СуммаВсегоНДС + СтрокаТовары.СуммаНДС;
		ДанныеОбъекта.КоличествоТоваров = ДанныеОбъекта.КоличествоТоваров + 1;
		
		СтрокаТаблицыТовары = Новый Структура;
		
		НаименованиеТовара = КоммерческиеПредложенияДокументыКлиентСервер.ПредставлениеНоменклатурыДляПечати(СтрокаТовары.Номенклатура, СтрокаТовары.Характеристика);
		
		СтрокаТаблицыТовары.Вставить("НомерСтроки",      СтрокаТовары.НомерСтроки);
		СтрокаТаблицыТовары.Вставить("Номенклатура",     НаименованиеТовара);
		СтрокаТаблицыТовары.Вставить("Количество",       СтрокаТовары.Количество);
		СтрокаТаблицыТовары.Вставить("ЕдиницаИзмерения", СтрокаТовары.ЕдиницаИзмерения);
		СтрокаТаблицыТовары.Вставить("Цена",             Формат(СтрокаТовары.Цена,"ЧДЦ=2; ЧРД=."));
		СтрокаТаблицыТовары.Вставить("СуммаСНДС",        Формат(СтрокаТовары.СуммаСНДС,"ЧДЦ=2; ЧРД=."));
		СтрокаТаблицыТовары.Вставить("СуммаСкидки",      Формат(СтрокаТовары.СуммаСкидки,"ЧДЦ=2; ЧРД=."));
		СтрокаТаблицыТовары.Вставить("СрокПоставки",     КоммерческиеПредложенияДокументыКлиентСервер.СрокПоставкиСтрокой(ДанныеШапки.ВариантУказанияСрокаПоставки, 
		                                                                                                                  СтрокаТовары.СрокПоставки));
		
		КоммерческиеПредложенияДокументыПереопределяемый.ДополнитьДанныеОбъектаДляПечати(СтрокаТаблицыТовары, СтрокаТовары, ДанныеОбъекта);
		
		ДанныеОбъекта.Товары.Добавить(СтрокаТаблицыТовары);
		
	КонецЦикла;

#КонецОбласти

#Область ЗаполнениеДанныхОбъекта 

	ПредставлениеСуммДокумента = КоммерческиеПредложенияДокументы.ПредставлениеСуммДокументаДляПечати(ДанныеШапки,
	                                                                                                  ДанныеОбъекта.СуммаВсего,
	                                                                                                  ДанныеОбъекта.СуммаВсегоНДС,
	                                                                                                  ДанныеОбъекта.КоличествоТоваров);
	
	ДанныеОбъекта.Вставить("Ссылка",                              ДанныеШапки.Ссылка);
	ДанныеОбъекта.Вставить("Организация",                         ДанныеШапки.Организация);
	ДанныеОбъекта.Вставить("ТелефонОрганизации",                  СведенияОрганизации.Телефоны);
	ДанныеОбъекта.Вставить("АдресОрганизации",                    СведенияОрганизации.ЮридическийАдрес);
	ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыОрганизации",    ?(СведенияОрганизации.Свойство("ЭлектроннаяПочта"),СведенияОрганизации.ЭлектроннаяПочта, ""));
	ДанныеОбъекта.Вставить("Клиент",                              ДанныеШапки.Клиент);
	ДанныеОбъекта.Вставить("Контрагент",                          ДанныеШапки.Контрагент);
	ДанныеОбъекта.Вставить("ПредставлениеОрганизации",            ПредставлениеОрганизации);
	ДанныеОбъекта.Вставить("ПредставлениеКлиента",                ПредставлениеКлиента(ДанныеОбъекта.Клиент, ДанныеОбъекта.Контрагент));
	ДанныеОбъекта.Вставить("КонтактноеЛицо",                      ДанныеШапки.КонтактноеЛицо);
	ДанныеОбъекта.Вставить("Менеджер",                            ДанныеШапки.Менеджер);
	ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыМенеджера",      АдресЭлектроннойПочтыМенеджера);
	ДанныеОбъекта.Вставить("ТелефонМенеджера",                    ТелефонМенеджера);
	ДанныеОбъекта.Вставить("Номер",                               ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеШапки.Номер, Ложь, Истина));
	ДанныеОбъекта.Вставить("Дата",                                Формат(ДанныеШапки.Дата,"ДЛФ=D"));
	ДанныеОбъекта.Вставить("ВариантУказанияСрокаПоставки",        ДанныеШапки.ВариантУказанияСрокаПоставки);
	ДанныеОбъекта.Вставить("УсловияОплаты",                       ДанныеШапки.УсловияОплаты);
	ДанныеОбъекта.Вставить("УсловияДоставки",                     ДанныеШапки.УсловияДоставки);
	ДанныеОбъекта.Вставить("ПрочиеУсловия",                       ДанныеШапки.ПрочиеУсловия);
	ДанныеОбъекта.Вставить("КонтактнаяИнформацияПредложения",     КонтактнаяИнформацияПредложения(ДанныеОбъекта));
	ДанныеОбъекта.Вставить("ИтоговаяСтрока",                      ПредставлениеСуммДокумента.ИтоговаяСтрока);
	ДанныеОбъекта.Вставить("СуммаПрописью",                       ПредставлениеСуммДокумента.СуммаПрописью);
	ДанныеОбъекта.Вставить("ЕстьСкидки",                          ЕстьСкидки);
	ДанныеОбъекта.Вставить("ПредставлениеСрокаДействия",          КоммерческиеПредложенияДокументы.ПредставлениеСрокаДействияДляПечати(ЕстьСкидки, ДанныеШапки.СрокДействия));
	ДанныеОбъекта.Вставить("ПредставлениеЧастичногоВыкупа",       КоммерческиеПредложенияДокументы.ПредставлениеЧастичногоВыкупаДляПечати(ДанныеШапки.МожетВыкупатьсяЧастично));
	ДанныеОбъекта.Вставить("УсловияПоставкиПредставление",        КоммерческиеПредложенияДокументы.ПредставлениеУсловийПоставкиДляПечати(ДанныеОбъекта.УсловияОплаты, 
	                                                                                                                                     ДанныеОбъекта.УсловияДоставки, 
	                                                                                                                                     ДанныеОбъекта.ПрочиеУсловия));
	
#КонецОбласти
	
	Возврат ДанныеОбъекта;
	
КонецФункции

Функция ПредставлениеКлиента(Клиент, Контрагент)
	
	Возврат КоммерческиеПредложенияДокументы.ПредставлениеПартнераКонтрагента(Клиент, Контрагент);
	
КонецФункции

Функция КонтактнаяИнформацияПредложения(ДанныеОбъекта)
	
	МассивСтрок = Новый Массив;
	
	Если Не ПустаяСтрока(ДанныеОбъекта.АдресОрганизации) Тогда
		МассивСтрок.Добавить(ДанныеОбъекта.АдресОрганизации);
	КонецЕсли;
	
	Если Не ПустаяСтрока(ДанныеОбъекта.ТелефонОрганизации) Тогда
		МассивСтрок.Добавить(ДанныеОбъекта.ТелефонОрганизации);
	КонецЕсли;
	
	Если Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера) Тогда
		МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера);
	ИначеЕсли Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации) Тогда
		МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации);
	КонецЕсли;
	
	Возврат СтрСоединить(МассивСтрок, Символы.ПС);
	
КонецФункции



Функция ПечатнаяФормаКоммерческоеПредложениеКлиенту(СсылкаНаОбъект, ОбъектыПечати, ПараметрыПечати)
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	ДанныеДляПечати = ДанныеДляПечати(СсылкаНаОбъект, ПараметрыПечати);
	
	ДанныеШапки   = ДанныеДляПечати.РезультатПоШапке.Выбрать();  // ВыборкаИзРезультатаЗапроса
	ТаблицаТовары = ДанныеДляПечати.РезультатПоТоварам.Выгрузить(); // ТаблицаЗначений
	
	ТаблицаТоварыДокумента = Новый ТаблицаЗначений;
	Для Каждого КолонкаТаблицыЗначений Из ТаблицаТовары.Колонки Цикл
		ТаблицаТоварыДокумента.Колонки.Добавить(КолонкаТаблицыЗначений.Имя, КолонкаТаблицыЗначений.ТипЗначения);
	КонецЦикла;
	
	ПервыйДокумент = Истина;
	
	Пока ДанныеШапки.Следующий() Цикл
		
		Если Не ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		ТаблицаТоварыДокумента.Очистить();
		
		ПараметрыПоиска = Новый Структура;
		ПараметрыПоиска.Вставить("Ссылка", ДанныеШапки.Ссылка);
		
		НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыПоиска);
		
		Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
			НоваяСтрока = ТаблицаТоварыДокумента.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяСтрока);
		КонецЦикла;
		
		ДанныеОбъекта = ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТоварыДокумента);
		ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеШапки.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
	
КонецФункции

Процедура ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати)
	
	Макет = ПолучитьМакет("ПФ_MXL_КоммерческоеПредложениеКлиенту");
	
	Если ПараметрыПечати.Свойство("ОтображатьСкидки")
		И Не ПараметрыПечати.ОтображатьСкидки Тогда
		
		Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
			ИмяОбластиШапкаТаблицы             = "ШапкаТаблицыТовары";
			ИмяОбластиСтрокаТаблицы            = "СтрокаТаблицыТовары";
			ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТовары";
		Иначе
			ИмяОбластиШапкаТаблицы             = "ШапкаТаблицыТоварыСрокПоставки";
			ИмяОбластиСтрокаТаблицы            = "СтрокаТаблицыТоварыСрокПоставки";
			ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТоварыСрокПоставки";
		КонецЕсли;
		
	Иначе
		
		Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
			ИмяОбластиШапкаТаблицы             = "ШапкаТаблицыТоварыСкидка";
			ИмяОбластиСтрокаТаблицы            = "СтрокаТаблицыТоварыСкидка";
			ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТоварыСкидка";
		Иначе
			ИмяОбластиШапкаТаблицы             = "ШапкаТаблицыТоварыСрокПоставкиСкидка";
			ИмяОбластиСтрокаТаблицы            = "СтрокаТаблицыТоварыСрокПоставкиСкидка";
			ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТоварыСрокПоставкиСкидка";
		КонецЕсли;
		
	КонецЕсли;
	
	ОбластьШтрихкода                = Макет.ПолучитьОбласть("ОбластьШтрихкода");
	ОбластьЗаголовок                = Макет.ПолучитьОбласть("Заголовок");
	ОбластьКонтактноеЛицо           = Макет.ПолучитьОбласть("КонтактноеЛицо");
	ОбластьПредлагаемОзнакомиться   = Макет.ПолучитьОбласть("ПредлагаемОзнакомиться");
	ОбластьШапкаТаблицыТовары       = Макет.ПолучитьОбласть(ИмяОбластиШапкаТаблицы);
	ОбластьСтрокаТаблицыТовары      = Макет.ПолучитьОбласть(ИмяОбластиСтрокаТаблицы);
	ИменованнаяОбластьСтрокаТовары  = ИмяИменованнойОбластиСтрокаТаблицы;
	ОбластьПодвалТаблицыТовары      = Макет.ПолучитьОбласть("ПодвалТаблицыТовары");
	ОбластьМенеджер                 = Макет.ПолучитьОбласть("Менеджер");
	ОбластьПустаяСтрокаТонкая       = Макет.ПолучитьОбласть("ПустаяСтрокаТонкая");
	ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
	ОбластьСрокДействия             = Макет.ПолучитьОбласть("СрокДействияЧастичныйВыкуп");
	
	КоммерческиеПредложенияДокументыПереопределяемый.ПриВыводеШтриховогоКодаВПечатныеФормы(ТабличныйДокумент, Макет, ОбластьШтрихкода, ДанныеОбъекта);
	
	КоммерческиеПредложенияДокументыПереопределяемый.ПриФормированииЗаголовкаПечатнойФормы(Макет, ОбластьЗаголовок, ДанныеОбъекта);
	
	ДополнительныеПараметрыВывода = Неопределено;
	
	ОбластьЗаголовок.Параметры.Заполнить(ДанныеОбъекта);
	ТабличныйДокумент.Вывести(ОбластьЗаголовок);
	
	Если ЗначениеЗаполнено(ДанныеОбъекта.КонтактноеЛицо) Тогда
		ОбластьКонтактноеЛицо.Параметры.Заполнить(ДанныеОбъекта);
		ТабличныйДокумент.Вывести(ОбластьКонтактноеЛицо);
	КонецЕсли;
	
	ОбластьПредлагаемОзнакомиться.Параметры.Заполнить(ДанныеОбъекта);
	ТабличныйДокумент.Вывести(ОбластьПредлагаемОзнакомиться);
	
	ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыТовары);
	
	Для Каждого СтрокаТовары Из ДанныеОбъекта.Товары Цикл
		
		СтандартнаяОбработка = Истина;
		КоммерческиеПредложенияДокументыПереопределяемый.ПриВыводеСтрокиТоварыПечатнуюФорму(ТабличныйДокумент,
		                                                                                    СтрокаТовары,
		                                                                                    ОбластьСтрокаТаблицыТовары,
		                                                                                    ИменованнаяОбластьСтрокаТовары,
		                                                                                    ДополнительныеПараметрыВывода,
		                                                                                    СтандартнаяОбработка);
		
		Если СтандартнаяОбработка Тогда
			ОбластьСтрокаТаблицыТовары.Параметры.Заполнить(СтрокаТовары);
			ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыТовары);
		КонецЕсли;
		
	КонецЦикла;
	
	ОбластьПодвалТаблицыТовары.Параметры.Заполнить(ДанныеОбъекта);
	ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыТовары);
	
	ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);
	
	ОбластьСрокДействия.Параметры.Заполнить(ДанныеОбъекта);
	ТабличныйДокумент.Вывести(ОбластьСрокДействия);
	
	Если Не ПустаяСтрока(ДанныеОбъекта.УсловияПоставкиПредставление) Тогда
		
		ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);
		ОбластьДополнительнаяИнформация.Параметры.Заполнить(ДанныеОбъекта);
		ТабличныйДокумент.Вывести(ОбластьДополнительнаяИнформация);
		
	КонецЕсли;
	
	ОбластьМенеджер.Параметры.Заполнить(ДанныеОбъекта);
	ТабличныйДокумент.Вывести(ОбластьМенеджер);
	
КонецПроцедуры


Показать
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот