Договор с контрагентом, как основание в счете на оплату (печатная форма)

1. lordelis 01.04.19 13:22 Сейчас в теме
Здравствуйте!

Перешли с 1С 8.2, УТП на 1С 8.3 УТ 3.2 для Казахстана, как я понял, то это аналог УТ 11.4.
Обнаружили, что в счёте не оплату исчезло поле Основание, в УТП оно было, в УТ нет.
Клиенты требуют, чтобы мы указывали Договор в поле основание.

Сейчас выкручиваемся указанием Договора в поле Информация для печати.

Вопрос: как вывести Основание в печатную форму?
Перелопатил интернет, полез в модуль, но ничего не получилось.
Есть ли ВПФ с выводом основания для УТ 11.4?

Понял, что надо здесь вставить кусок кода:

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

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


Показать
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 01.04.19 13:32 Сейчас в теме
Ну может реквизит "заказ" есть ?
В структуре подчиненности документ основание выводится ?


А, или основание - это чисто в печатной форме....? Тогда сложнее, т.к. думаю немного пользователей с такой конфигурацией сидит. В самом макете то есть основание ?
А так да ВПФ, и доп реквизит, решит проблему.
3. lordelis 01.04.19 13:39 Сейчас в теме
(2) Нет, вы не поняли.
Требуется указывать в печатной форме в поле "Основание" Договор с контрагентом, по которому оформляется заказ и выставляется счет на оплату.

В УТП это по умолчанию было, в УТ исчезло.
4. SedovSU@mail.ru 297 01.04.19 13:47 Сейчас в теме
Ну раз вы уже начали писать, у вас не получилось??? или что? все же верно написано по подобию!
5. lordelis 01.04.19 13:57 Сейчас в теме
(4) Верно,написал по подобию, но не выводится в печатной форме.
7. SedovSU@mail.ru 297 01.04.19 14:18 Сейчас в теме
(5) а в параметрах макета есть параметр Договор??? Может его там нету и поэтому у вас не получается
9. lordelis 01.04.19 14:34 Сейчас в теме
(7) Да, добавил в макете параметр <Договор>
6. lordelis 01.04.19 14:15 Сейчас в теме
Я так понял, что напрямую реквизит Договор подтянуть нельзя. Надо пилить код в этом направлении.
8. oleg-x 26 01.04.19 14:27 Сейчас в теме
//ЭТО расшифровка того что сделали
    ОбластьМакета = Макет.ПолучитьОбласть("Основание"); //То есть в макете должна быть такая область, если её нет, то выдаст ошибку. Область выделена красны и на поля пишется её название
    СтруктураДанныхОснование = Новый Структура;
    СтруктураДанныхОснование.Вставить("Договор", СсылкаНаДокумент.ДоговорКонтрагента); //Это лишнее
    
    СтруктураДанныхОснование.Вставить("Договор" ,
            ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата),
            "Наименование,Номер,Дата"));// В структуре может быть только один параметр с уникальным названием "Договор",
// а при попытке присвоить, заменится значение
    
    ОбластьМакета.Параметры.Заполнить(СтруктураДанныхОснование); //Слово заполнить() означает, что по именам структуры заполняются параметры в области. 
//То есть если в макете есть параметр договор, он будет заполнен иначе проигнорирует.
    ТабличныйДокумент.Вывести(ОбластьМакета);
Показать
11. lordelis 01.04.19 14:36 Сейчас в теме
(8)
СтруктураДанныхОснование.Вставить("Договор", СсылкаНаДокумент.ДоговорКонтрагента); //Это лишнее


Это при отладке закомментил.


(8)
СтруктураДанныхОснование.Вставить("Договор" , ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата), "Наименование,Номер,Дата"));// В структуре может быть только один параметр с уникальным названием "Договор", а при попытке присвоить, заменится значение


Пробовал просто "Договор", не отображается.
Это уже эксперименты шли :)

Реквизит "Договор" существует.
10. oleg-x 26 01.04.19 14:34 Сейчас в теме
Как сделать так, что бы в основание выводился договор:
ОбластьМакета = Макет.ПолучитьОбласть("Основание"); //Найти в коде, где заполняется область, в которой заполняется основание
//Потом в макете посмотри как называется параметр, где хотите что бы выводился договор.
И перед выводом области в табличный документ пишите такую строку
ОбластьМакета.Параметры.НужныйПараметр = Ссылка на договор;
ТабличныйДокумент.Вывести(ОбластьМакета);


Все, будет выведено название договора. Соотвественно, старое значение параметра затрется, то есть другая информация в этом поле выводится не будет.
16. lordelis 01.04.19 14:48 Сейчас в теме
Скриншот выложил в виде ссылке, на модерацию ушел.

(10)
ОбластьМакета.Параметры.НужныйПараметр = Ссылка на договор;


Вопрос: где ссылку взять :)?
12. oleg-x 26 01.04.19 14:38 Сейчас в теме
Выложите СкринШот макета
13. lordelis 01.04.19 14:38 Сейчас в теме
Как я понял, тут надо работать через ссылку на Договор в счете.
Буду копать. Что-то не смог подобных ВПФ найти. А сам писать не умею :(
15. SedovSU@mail.ru 297 01.04.19 14:44 Сейчас в теме
(13) да у вас практически все готово все верно сделано. вы скиньет скриншот макета и посмотрим, может там проблема то в две минуты
17. lordelis 01.04.19 14:51 Сейчас в теме
Вот скрин
Прикрепленные файлы:
19. SedovSU@mail.ru 297 01.04.19 15:14 Сейчас в теме
(17) вот вы теперь поставьте точку останова где пишите код и в табло ставьте параметр ДанныеПечати - какие в нем будут доступны реквизиты. Исходя из этого можно вытащить ваш параметр
18. oleg-x 26 01.04.19 15:10 Сейчас в теме
Все зависит где этот код выполняется, модуль менеджера или в какой-то обработке.
Либо в "ДанныеПечати" одно из значений будет договор, либо там есть ссылка на документ и уже у него взять ссылку на договор.

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


Если делать в отладке (поставить точку остановки), то можно посмотреть какие данные доступны и не гадать.
21. lordelis 02.04.19 03:52 Сейчас в теме
(18)
ОбластьМакета = Макет.ПолучитьОбласть("Основание"); ОбластьМакета.Параметры.Договор = ДанныеПечати.ссылкаНаДокумент.ДоговорКонтрагента; ТабличныйДокумент.Вывести(ОбластьМакета);


{Обработка.ПечатьСчетовНаОплату.МодульМенеджера(287)}: Поле объекта не обнаружено (ссылкаНаДокумент)
ОбластьМакета.Параметры.Договор = ДанныеПечати.ссылкаНаДокумент.ДоговорКонтрагента;
22. Natasha70 02.04.19 15:55 Сейчас в теме
(21) ОбластьМакета.Параметры.Договор = ДанныеПечати.ДоговорКонтрагента;
Если нет договора в ДанныхПечати, то нужно привести структуру ДанныеПечати, чтобы узнать как ваша "ссылкаНаДокумент" там называется и из нее Договор взять.
23. lordelis 03.04.19 09:11 Сейчас в теме
(22)

Выглядит так:
Переменная Значение Тип
ДанныеПечати ВыборкаИзРезультатаЗапроса
|
|
|
|
|
|_ССылка Заказ клиента № ДокументСсылка.ЗаказКлиента
|
|
|
|_Договор Договр №__ СправочникСсылка.ДоговорыКонтрагентов

Единственное но, что эти переменные появляются при выполнение ниже расположенного кода

Процедура ЗаполнитьРеквизитыПодвалаСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, СоответствиеСтавокНДС, ПараметрыПечати)
	
	МассивПроверкиВывода = Новый Массив;
	
	// В этом месте мы получаем данные печати //
	
	// Вывести этапы графика оплаты
	Если ТаблицаЭтапыОплаты.Количество() > 1 Тогда
		
		ИмяКолонкиДатыОплаты = ?(ДанныеПечати.СчетКВозврату, НСтр("ru='Дата оплаты или возврата'"), НСтр("ru='Дата оплаты'"));
		
		ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыЭтапыОплаты");
		ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ИтогоЭтапыОплаты");
		СтруктураДанныхШапки = Новый Структура("ИмяКолонкиДатыОплаты",ИмяКолонкиДатыОплаты);
		ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураДанныхШапки);
		МассивПроверкиВывода.Добавить(ОбластьШапкаТаблицы);
		МассивПроверкиВывода.Добавить(ОбластьПодвалТаблицы);
		
		ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыЭтапыОплаты");
		
		НомерЭтапа = 1;
		Для Каждого ТекЭтап Из ТаблицаЭтапыОплаты Цикл
			
			ПараметрыСтроки = НовыеПараметрыСтрокиЭтапа();
			ЗаполнитьЗначенияСвойств(ПараметрыСтроки, ТекЭтап);
			ПараметрыСтроки.НомерСтроки = НомерЭтапа;
			Если Не ПараметрыСтроки.ЭтоЗалогЗаТару Тогда
				ПараметрыСтроки.ТекстНДС = ФормированиеПечатныхФорм.СформироватьТекстНДСЭтапаОплаты(
					СоответствиеСтавокНДС,
					ТекЭтап.ПроцентПлатежа);
			Иначе
				ПараметрыСтроки.ПроцентПлатежа = "-";
				ПараметрыСтроки.ТекстНДС = НСтр("ru='Залог за тару. Без налога (НДС).'");
			КонецЕсли;
			
			ОбластьСтрокаТаблицы.Параметры.Заполнить(ПараметрыСтроки);
			
			МассивПроверкиВывода.Добавить(ОбластьСтрокаТаблицы);
			
			Если ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
				Если НомерЭтапа = 1 Тогда
					ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
					МассивПроверкиВывода.Удалить(0);
				КонецЕслИ;
			Иначе
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
			КонецЕсли;
			
			ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
			МассивПроверкиВывода.Удалить(МассивПроверкиВывода.ВГраница());
			
			НомерЭтапа = НомерЭтапа + 1;
			
		КонецЦикла;
		ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);
		
	КонецЕсли;
	
	      	
	Если ЗначениеЗаполнено(ДанныеПечати.СсылкаДоговор) Тогда
		
		Область = Макет.ПолучитьОбласть("Основание");
		Область.Параметры.Заполнить(ДанныеПечати);
		ТабличныйДокумент.Вывести(Область);
	КонецЕсли;

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



А вставка Договора идет выше в предыдущей процедуре. Там вообще нет нигде Договора в переменных.
24. Natasha70 03.04.19 09:34 Сейчас в теме
(23) у вас в ДанныхПечати этот реквизит называется СсылкаДоговор - назовите его в макете также, если он заполнен, то появится в печатной форме
25. Natasha70 03.04.19 09:39 Сейчас в теме
(23) Если не заполнен СсылкаДоговор, то нужно все таки знать как в ДанныхПечати из запроса получается сама Ссылка на Заказ....тогда:
ОбластьМакета.Параметры.СсылкаДоговор = ДанныеПечати."та самая Ссылка на Заказ".ДоговорКонтрагента;
26. lordelis 08.04.19 14:24 Сейчас в теме
(25)
Никак не могу понять, как ссылка формируется из вытащенных данных.

Переменная ///////// Значение /////////// Тип
ДанныеПечати ///// ВыборкаИзРезультатаЗапроса
|
|
|
|
|
|_ССылка // Заказ клиента № // ДокументСсылка.ЗаказКлиента
* |
* |
* |
* |_Договор // Договор №__ // СправочникСсылка.ДоговорыКонтрагентов
Показать
20. oleg-x 26 01.04.19 15:31 Сейчас в теме
Также перед тем как печатать, не забудте установить настройки по умолчанию. Так как с пользовательской стороны макет можно менять также и возможно там старый вариант.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)