Печатные формы Word (Срочно!)

1. Гость 12.03.21 13:04
Только учусь нужна помощь, как сделать, чтобы в печатную форму директор выводился автоматически (и как сделать, чтобы если поле в программе не указанные данные выводилась пустая строка , а не Ошибка! Переменная неопределенна. Буду очень благодарна за помощь)

&НаСервере
Функция ПолучитьМакетСервер()
	Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции

// Ну теперь пишем процедуру печати. 
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
	Для Каждого ЭлементМассиваОбъектов Из МассивОбъектов Цикл
		Договор = ЭлементМассиваОбъектов;
		Данные = ПолучитьДанные(Договор);
		ПокупательПА = ПолучитьПА(Данные.Ссылка,Данные.ДатаДок);
		ПокупательЮА = ПолучитьЮА(Данные.Ссылка,Данные.ДатаДок);
		ПоставщикПА = ПолучитьПА(Данные.Ссылка,Данные.ДатаДок);
		ПоставщикЮА = ПолучитьЮА(Данные.Ссылка,Данные.ДатаДок);
		ДопСвед = ПолучитьДС(Данные.Ссылка,Данные.ДатаДок,Данные.НомерСчета);
		Если Данные <> Неопределено Тогда
			Word = Новый COMОбъект("Word.Application"); 
			Макет = ПолучитьМакетСервер();
			ВременныйПуть = КаталогВременныхФайлов();
			ИмяВременногоФайла = ВременныйПуть + "dogovor1.docx";
			Макет.Записать(ИмяВременногоФайла);
			ТекДок = Word.Documents.ADD(ИмяВременногоФайла);
			ИННКПП = ""+Данные.ИНН+"/"+Данные.КПП;
			ОрганизацияИННОрганизацияКПП = ""+Данные.ОрганизацияИНН+"/"+Данные.ОрганизацияКПП;
			
				
			ТекДок.Variables("Номер").Value				              = Данные.Номер;
			ТекДок.Variables("ДатаДок").Value 				          = Формат(Данные.ДатаДок, "ДЛФ=DD");
			ТекДок.Variables("Покупатель").Value 			     	  = ""+Данные.Покупатель;
			ТекДок.Variables("Поставщик").Value 			     	  = ""+Данные.Поставщик;
			ТекДок.Variables("Руководитель").Value 			     	  = ""+Данные.Руководитель;
			ТекДок.Variables("Директор").Value 			     	      = ""+Данные.Директор;
			//ТекДок.Variables("RepresentativeOfTheCounterparty").Value = Данные.КонтактноеЛицо;
			//ТекДок.Variables("BasisOfAction").Value					  = Данные.ОснованиеПредставителя;
			//ТекДок.Variables("SettlementProcedure").Value			  = Данные.Оплата;
			//ТекДок.Variables("OrderOfDelivery").Value				  = Данные.Отгрузка;
			//ТекДок.Variables("ExpirationDate").Value				  = Данные.ДатаОкончания;
			ТекДок.Variables("ПокупательСокр").Value				  = ""+Данные.Покупатель;
			ТекДок.Variables("ИННКПП").Value						  = ""+ИННКПП;
			ТекДок.Variables("ОрганизацияИННОрганизацияКПП").Value	  = ""+ОрганизацияИННОрганизацияКПП;
			ТекДок.Variables("ПокупательБанк").Value				  = Строка(""+Данные.Банк);
			ТекДок.Variables("ПоставщикБанк").Value				      = Строка(""+Данные.Банк1);

			ТекДок.Variables("ПокупательРС").Value				      = Строка(""+Данные.НомерСчета);
			ТекДок.Variables("ПоставщикРС").Value				      = Строка(""+Данные.БанковскийСчетНомерСчета);
			ТекДок.Variables("ПокупательБИК").Value					  = Данные.БИК;
			ТекДок.Variables("ПоставщикБИК").Value					  = Данные.БанкКод1;
			ТекДок.Variables("ПокупательТел").Value					  = ""+Данные.ПокупательТел;
			ТекДок.Variables("ПокупательЭП").Value					  = ""+Данные.ПокупательЭП;
			ТекДок.Variables("ПоставщикТел").Value					  = ""+Данные.ПоставщикТел;
			ТекДок.Variables("ПоставщикЭП").Value					  = ""+Данные.ПоставщикЭП;

			//ТекДок.Variables("OKPO").Value							  = Данные.ОКПО;
			//ТекДок.Variables("OGRN").Value							  = Данные.ОГРН;
			ТекДок.Variables("ПокупательЮА").Value					  = ""+ПокупательЮА;
			ТекДок.Variables("ПоставщикЮА").Value					  = ""+ПоставщикЮА;
			ТекДок.Variables("ПокупательКС").Value					  = Данные.КоррСчет;
			ТекДок.Variables("ПоставщикКС").Value					  = Данные.БанкКоррСчет1;
			ТекДок.Variables("ПокупательПА").Value					  = ""+ПокупательПА;
			ТекДок.Variables("ПоставщикПА").Value					  = ""+ПоставщикПА;
			ТекДок.Variables("ТекущийГод").Value					  = Год(Данные.ДатаДок);
			//ТекДок.Variables("Phone").Value							  = Данные.КонтактныйТелефон;
			//ТекДок.Variables("Signer").Value 						  = Данные.Подписант;
			
			
			ТекДок.Fields.Update();
			Word.ActiveWindow.View.ShowFieldCodes = False;
			Word.Visible=Истина;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

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

		Возврат Неопределено;	
	КонецЕсли; 
	
КонецФункции

&НаСервере
Функция ПолучитьПА(Ссылка,ДатаДок)
	ПокупательПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);
	ПоставщикПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);

	Возврат ПокупательПА;
	Возврат ПоставщикПА;

КонецФункции

&НаСервере
Функция ПолучитьЮА(Ссылка,ДатаДок)
	ПокупательЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);
	ПоставщикЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);

	Возврат ПокупательЮА;
	Возврат ПоставщикЮА;

КонецФункции

&НаСервере
Функция ПолучитьДС(Ссылка,ДатаДок,НомерСчета)
	ДопСвед = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(Ссылка,ДатаДок, ,НомерСчета);
	Возврат ДопСвед;
КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. ivan1703 79 12.03.21 22:20 Сейчас в теме
(1)
Возврат ПокупательЮА;


Вы в курсе что 2 функции всегда Вам будут отдавать первый Возврат?

&НаСервере
Функция ПолучитьПА(Ссылка,ДатаДок)
    ПокупательПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);
    ПоставщикПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);

Возврат ПокупательПА;
  Возврат ПоставщикПА;

КонецФункции


&НаСервере
Функция ПолучитьЮА(Ссылка,ДатаДок)
    ПокупательЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);
    ПоставщикЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);

Возврат ПокупательЮА;
 Возврат ПоставщикЮА;

КонецФункции
2. Ul_developer 12.03.21 13:09 Сейчас в теме
Для того что бы выходила пустая строка а не ошибка ты всегда должен передавать значение переменной в параметры ворда, если значение не заполнено пиши в параметр пустую строку. Для вывода Директора автоматически нужно получить ФИО физ лица из Ответственных лиц организации.
3. Torin 758 12.03.21 13:23 Сейчас в теме
(2) ну или Попытка Исключение КонецПопытки
4. aezdakov 6 12.03.21 13:23 Сейчас в теме
В качестве примера:
| ЕстьNULL(КонтрагентыКонтактнаяИнформация.АдресЭП, "") КАК ПокупательЭП,
| ЕстьNULL(КонтрагентыКонтактнаяИнформация.НомерТелефона, "") КАК ПокупательТел
Просто не совсем понятна ошибка, что указана на картинке. Приходится гадать. Одно ясно, что запрос очень ядрёный.
Банально:
ЗаказКлиента.Руководитель.Наименование КАК Руководитель
Не будет заполнен "Руководитель" в результате будет NULL и этих возможных NULL в запросе чуть бы не каждая строка.
5. an_gl 12.03.21 13:58 Сейчас в теме
(4) К сожалению это не помогло, ошибку так в печатной форме Word и пишет
Прикрепленные файлы:
6. Torin 758 12.03.21 14:10 Сейчас в теме
(5)Alt+F9 см. коды полей
aezdakov; +1 Ответить
8. an_gl 12.03.21 14:20 Сейчас в теме
(6)
Прикрепленные файлы:
9. Torin 758 12.03.21 14:24 Сейчас в теме
(8) точку останова и смотри что тут!
Прикрепленные файлы:
7. aezdakov 6 12.03.21 14:14 Сейчас в теме
(5) ок:
  ТекДок.Variables("ПокупательТел").Value                      = ?(ПустаяСтрока(Строка(Данные.ПокупательТел)), "-", Строка(Данные.ПокупательТел));
            ТекДок.Variables("ПокупательЭП").Value                      = ?(ПустаяСтрока(Строка(Данные.ПокупательЭП Строка(Данные.ПокупательЭП ));
            ТекДок.Variables("ПоставщикТел").Value                      = ?(ПустаяСтрока(Строка(Данные.ПоставщикТел Строка(Данные.ПоставщикТел ));
            ТекДок.Variables("ПоставщикЭП").Value                      = ?(ПустаяСтрока(Строка(Данные.ПоставщикЭП Строка(Данные.ПоставщикЭП ));
10. an_gl 12.03.21 14:54 Сейчас в теме
(7) Спасибо этот способ помог)
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Оставьте свое сообщение

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