Печатные формы 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 81 12.03.21 22:20 Сейчас в теме
(1)
Возврат ПокупательЮА;


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

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

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

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


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

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

КонецФункции
Это решение
2. Ul_developer 12.03.21 13:09 Сейчас в теме
Для того что бы выходила пустая строка а не ошибка ты всегда должен передавать значение переменной в параметры ворда, если значение не заполнено пиши в параметр пустую строку. Для вывода Директора автоматически нужно получить ФИО физ лица из Ответственных лиц организации.
Это решение
3. Torin 964 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 964 12.03.21 14:10 Сейчас в теме
(5)Alt+F9 см. коды полей
Это решение
aezdakov; +1 Ответить
8. an_gl 12.03.21 14:20 Сейчас в теме
(6)
Прикрепленные файлы:
Это решение
9. Torin 964 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) Спасибо этот способ помог)
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Для отправки сообщения требуется регистрация/авторизация

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