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");
ЗаполнитьЗначенияСвойств(ДанныеПечати, ВыборкаДетальныеЗаписи);
Возврат ДанныеПечати;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Функция ПолучитьПА(Ссылка,ДатаДок)
ПокупательПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);
ПоставщикПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);
Возврат ПокупательПА;
Возврат ПоставщикПА;
КонецФункции
&НаСервере
Функция ПолучитьЮА(Ссылка,ДатаДок)
ПокупательЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);
ПоставщикЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);
Возврат ПокупательЮА;
Возврат ПоставщикЮА;
КонецФункции
&НаСервере
Функция ПолучитьДС(Ссылка,ДатаДок,НомерСчета)
ДопСвед = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(Ссылка,ДатаДок, ,НомерСчета);
Возврат ДопСвед;
КонецФункции
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Внешняя печатная форма с созданием word файла Срочный договор с работником из элемента справочника Сотрудники организаций
- Универсальная печатная форма Трудового договора на основе шаблона Word для ЗУП 3.1
- Трудовой договор в Word + Договор материальной ответственности в Word + Соглашение о сохранении коммерческой тайны в Word + Соглашение о расторжении трудового договора в Word для ЗУП 3.1
- Универсальная печать кадровых документов в формате Word для ЗУП 3
- Вебинар PrintWizard: Удобное создание печатных форм и централизованное управление в едином конструкторе для 1С 8.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Вы в курсе что 2 функции всегда Вам будут отдавать первый Возврат?
Возврат ПокупательПА;
Возврат ПокупательЮА;
Возврат ПокупательЮА;
Вы в курсе что 2 функции всегда Вам будут отдавать первый Возврат?
&НаСервере
Функция ПолучитьПА(Ссылка,ДатаДок)
ПокупательПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);
ПоставщикПА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Фактический",ДатаДок);
Возврат ПоставщикПА;
КонецФункции
&НаСервере
Функция ПолучитьЮА(Ссылка,ДатаДок)
ПокупательЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);
ПоставщикЮА = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Ссылка,"Юридический",ДатаДок);
Возврат ПоставщикЮА;
КонецФункции
Это решение
Для того что бы выходила пустая строка а не ошибка ты всегда должен передавать значение переменной в параметры ворда, если значение не заполнено пиши в параметр пустую строку. Для вывода Директора автоматически нужно получить ФИО физ лица из Ответственных лиц организации.
Это решение
В качестве примера:
| ЕстьNULL(КонтрагентыКонтактнаяИнформация.АдресЭП, "") КАК ПокупательЭП,
| ЕстьNULL(КонтрагентыКонтактнаяИнформация.НомерТелефона, "") КАК ПокупательТел
Просто не совсем понятна ошибка, что указана на картинке. Приходится гадать. Одно ясно, что запрос очень ядрёный.
Банально:
ЗаказКлиента.Руководитель.Наименование КАК Руководитель
Не будет заполнен "Руководитель" в результате будет NULL и этих возможных NULL в запросе чуть бы не каждая строка.
| ЕстьNULL(КонтрагентыКонтактнаяИнформация.АдресЭП, "") КАК ПокупательЭП,
| ЕстьNULL(КонтрагентыКонтактнаяИнформация.НомерТелефона, "") КАК ПокупательТел
Просто не совсем понятна ошибка, что указана на картинке. Приходится гадать. Одно ясно, что запрос очень ядрёный.
Банально:
ЗаказКлиента.Руководитель.Наименование КАК Руководитель
Не будет заполнен "Руководитель" в результате будет NULL и этих возможных NULL в запросе чуть бы не каждая строка.
Это решение
(5) ок:
ТекДок.Variables("ПокупательТел").Value = ?(ПустаяСтрока(Строка(Данные.ПокупательТел)), "-", Строка(Данные.ПокупательТел));
ТекДок.Variables("ПокупательЭП").Value = ?(ПустаяСтрока(Строка(Данные.ПокупательЭП Строка(Данные.ПокупательЭП ));
ТекДок.Variables("ПоставщикТел").Value = ?(ПустаяСтрока(Строка(Данные.ПоставщикТел Строка(Данные.ПоставщикТел ));
ТекДок.Variables("ПоставщикЭП").Value = ?(ПустаяСтрока(Строка(Данные.ПоставщикЭП Строка(Данные.ПоставщикЭП ));
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот