Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Делаю сам внешнюю печатную форму (http://forums.kuban.ru/f1040/delayu_sam_vneshnyuyu_pechatnuyu_formu-8780155.html)

Line 24.12.2018 16:38

Делаю сам внешнюю печатную форму
 
Решил сделать сам, надеюсь на вашу помощь.)
Была у меня внешняя печ. форма для 7.7

сейчас делаю для БП 3.0
форма достаточно простая, удостоверение качества по сути просто табличка с данными.

Получилось создать внешнюю форму,подключить ее.
Не могу только понять как вывести поля, которые были в 7.7, а именно в 7.7 было так:

Покупатель: [?(ПустоеЗначение(Контрагент) = 1, "", глПолноеНаименование(Контрагент) + " " + глПредставлениеАдреса(Контрагент.ЮридическийАдрес))]

и

[ДатаДок+5 #Д]

как в восьмерке правильно написать?

т.е. мне надо:
1. вывести в шапке Контрагента с юр адресом
2. вывести текущую дату документа + 5 дней и вывести итоговую дату

Line 24.12.2018 16:43

делать печатную форму для документа РеализацияТоваровУслуг

Line 24.12.2018 17:26

вот мой код:

Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)

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

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

ОбластьШапка.Параметры.НомерРеализации = СсылкаНаОбъект.Номер;
ОбластьШапка.Параметры.ДатаРеализации = Формат (СсылкаНаОбъект.Дата,"ДФ=dd.MM.yyyy; ДЛФ=DD");
ОбластьШапка.Параметры.Грузополучатель = СсылкаНаОбъект.Грузополучатель;

//выводим шапку в табличный документ
ТабличныйДокумент.Вывести(ОбластьШапка);

//заполняем строки

ОбластьСтроки = МакетОбработки.ПолучитьОбласть("Строка");
ОбластьСтроки.Параметры.ДатаРеализации = Формат (СсылкаНаОбъект.Дата,"ДФ=dd.MM.yy");
ТабличныйДокумент.Вывести(ОбластьСтроки);

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

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

Возврат ТабличныйДокумент;

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

Viking 24.12.2018 17:29

Вы уверены что вы для БП 3.0 внешнюю форму делаете?

Line 24.12.2018 17:41

3-Viking >да, для документа накладной нужно сделать печатную форму с качественный удостоверением (табличка с текстом и датами)

Viking 24.12.2018 17:47

Да не важно для чего, Интересно что используете "СсылкаНаОбъект"... как бы это наследие БП 2.0 и обычных форм. БП 3 на управляемых формах, там это не используется...
--
А контрагента и его реквизиты проще получить штатными средствами

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

Viking 24.12.2018 17:52

Да, прибавляя к дате имейте ввиду что в 8-ке время прибавляется в секундах.. будет что-то типа СведенияОДокументе.Дата + 5 * 86400 (86400 - количество секунд в сутках)

US1C 24.12.2018 18:21

(0) Дата, в 8-ке, содержит время. Поэтому прибавляй столько секунд, сколько их в 5-и днях, т.е. 432000.

Line 24.12.2018 18:35

5-Viking >я не кодил на 8-ке, нужно формочку сделать, вот на ютюбе нашел пример создание, поэтому такой код и получился, спасибо за советы буду пробовать

USSR 24.12.2018 19:23

(8)Тогда лучше попробуй для начала сделать ВПФ штатной печатной формы ТОРГ11, СФ или УПД. БП 3.0 так быстро меняется, что лучше не подбирать непонятно что

Line 24.12.2018 20:50

5-Viking >что-то ошибки выходят в режиме предприятия, может код не там ставлю, не могли бы вы в моем коде указать куда вставить СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛи це(СведенияОДокументе.Контрагент, СведенияОДокументе.Дата);
ПредставлениеПокупателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации (СведенияОПокупателе, "НаименованиеДляПечатныхФорм, ЮридическийАдрес");

и что вставить в таблице макета? <ПредставлениеПокупателя>?

Viking 24.12.2018 21:12

текст ошибок какой?

Line 24.12.2018 21:45

11-Viking > если вставить код сюда:

Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)

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

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

ОбластьШапка.Параметры.НомерРеализации = СсылкаНаОбъект.Номер;

ОбластьШапка.Параметры.ДатаРеализации = Формат (СсылкаНаОбъект.Дата,"ДФ=dd.MM.yyyy; ДЛФ=DD");
ОбластьШапка.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Контрагент, СведенияОДокументе.Дата);
ПредставлениеПокупателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации (СведенияОПокупателе, "НаименованиеДляПечатныхФорм, ЮридическийАдрес");
//выводим шапку в табличный документ
ТабличныйДокумент.Вывести(ОбластьШапка);

//заполняем строки

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

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

Возврат ТабличныйДокумент;

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



то при сохранении выходит ошибка такая:

{ВнешняяОбработка.КачествоВнешний.МодульОбъекта(63,76)**: Переменная не определена (СведенияОДокументе)
СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(<<?>>СведенияОДокументе.Контрагент, СведенияОДокументе.Дата); (Проверка: Сервер)
{ВнешняяОбработка.КачествоВнешний.МодульОбъекта(63,107)**: Переменная не определена (СведенияОДокументе)
СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Контрагент, <<?>>СведенияОДокументе.Дата); (Проверка: Сервер)

Viking 24.12.2018 22:39

пригласите программиста, проще будет

Line 24.12.2018 23:15

С Датой кстати получилось, по сути остался один вопрос, как вывести Наименование контрагента и его юр адрес.

если с этим не разберусь, буду искать онлайн кто поможет.

Неужели в 8.3 так мудрено это вывести? как было просто в 7.7)

Вроде как подсказали как выбрать контрагента :

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

но куда поставить код этот и что дополнительно нужно указать бы еще подсказали

в макете понятно, надо указать ПредставлениеПокупателя с типом параметр.

Viking 25.12.2018 00:23

судя по коду у вас изначально не верный подход... посмотрите как сделаны внешние печатные формы для управляемого приложения, их полно в интернете, и ознакомьтесь с методологией создания оных для управляемого приложения. Сейчас, кстати, намного удобнее делать дополнительные печатные формы в расширении.

Line 25.12.2018 00:51

15-Viking >обязательно почитаю про данный метод, не знал о нем раньше.

но просто уже стало очень интересно, почему у меня пишет переменная не определена, вас бы не затруднило объяснить, а еще лучше пример написать как правильно вывести только один реквизит Наименование контрагента и его юр адрес?

Viking 25.12.2018 01:22

неужели не видно, что такого объекта "СведенияОДокументе" у вас нет, но есть "СсылкаНаОбъект"... попробуйте заменить.

Viking 25.12.2018 01:24

ну и подумайте вот над чем... в 1С БП 3 можно пометить НЕСКОЛЬКО документов и сразу напечатать какую-нибудь выбранную печатную форму по каждому из них (групповая печать)... сможет ВАШ код обеспечить это?

Line 25.12.2018 09:02

17-Viking> спасибо Вам большое, получилось!

USSR 25.12.2018 11:40

Ну то что отчёт или обработка в расширении удобнее, чем впф-это спорно или дело вкуса. Разве что с отладкой попроше


Текущее время: 14:40. Часовой пояс GMT +3.