Перенос печатной формы с обычных на управляемые (макет и форма)

1. Redempty 08.11.22 11:02 Сейчас в теме
Здравствуйте. Помогите разобраться, самостоятельно дошел до некоторых моментов, но не хватает логического завершения. Суть:

Необходимо перенести внешнюю печатную форму с обычных на управляемые формы. Разбирался долгое время сам, было бы не сложно, если бы был нужен один только макет. Но мне нужно, чтобы пользователь на форме выбирал организацию, ответственного из нее и эти данные уже подставлялись в макет для печати. В чем сложность?

Я НЕ могу добавить через расширение реквизиты в документ, чтобы в дальнейшем их пихать на форму, так как расширение работает коряво и банально не дает сохранить конфигурацию с добавленными реквизитами - вылетает конфигуратор.

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

Теперь нужно на эту форму добавить макет, который был в старой конфигурации и заполнялся умными людьми. На этом месте начинается заморочка.

Мне удалось получить ЗАПОЛНЕННЫЙ макет в модуле объекта обработки, но так как это выполняется на сервере, там мне не получится указать ответственного (нужно, чтобы его выбирал пользователь).

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

Собственно, вопросы, я так понимаю, что мне нужно получить заполненный макет в модуле объекта и каким-то чудом передать его на форму, где пользователь сможет выбрать ответственного, отсюда:

1. Как передать заполненный макет на форму и отобразить его?
2. Как в этот макет из модуля формы запихнуть ответственного?

Если нужны будут какие-то куски кода, напишу, а то и так много текста
По теме из базы знаний
Найденные решения
7. user5300 1078 08.11.22 12:44 Сейчас в теме
Примерно так
Прикрепленные файлы:
ПечатнаяФорма.epf
Redempty; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 08.11.22 11:06 Сейчас в теме
1) через значение, возвращаемое функцией
2) сначала все нужное спросить, потом вызвать функцию заполнения макета, в параметрах передать выбранные значения.
3. Redempty 08.11.22 11:12 Сейчас в теме
(2)
сначала все нужное спросить, потом вызвать функцию заполнения макета, в параметрах передать выбранные значения.


Ну, я так понимаю, что наиболее простым вариантом будет из модуля формы передать в модуль объекта этого ответственного. Можете подсказать, каким образом это сделать? Какой код написать для этого?

Замечал не раз, что люди пользуются РеквизитФормыВЗначение() и благодаря ему то и получал макет на форме, но как он в точности работает понимания не сложилось

В общем, подскажите, пожалуйста, как это дело провернуть?
5. starjevschik 08.11.22 11:51 Сейчас в теме
(3)
ЗаполненныйМакет = ЗаполнитьМакетНаСервере(ВыбранныйОтветственный);

а вообще наймите программиста, дешевле будет.
6. Redempty 08.11.22 12:00 Сейчас в теме
(5)
а вообще наймите программиста, дешевле будет.


Я и есть программист, как будто вы сразу все могли и умели, сказки не рассказывайте.

ЗаполнитьМакетНаСервере

В конфигурации нет такой функции/процедуры
9. user1831019 08.11.22 14:28 Сейчас в теме
(6)
В конфигурации нет такой функции/процедуры
Это абстракция. Передавайте в ту процедуру, которую пользуете.
4. Ivan_Sol 19 08.11.22 11:27 Сейчас в теме
7. user5300 1078 08.11.22 12:44 Сейчас в теме
Примерно так
Прикрепленные файлы:
ПечатнаяФорма.epf
Redempty; +1 Ответить
11. Redempty 09.11.22 04:09 Сейчас в теме
(7) Спасибо огромное, сейчас попробую
12. Redempty 09.11.22 06:42 Сейчас в теме
(7) Попробовал сделать по аналогии, дополнил сведениями о внешней обработке и командами, ВПФ заработала, макет отрисовало, значение ответственного подставило. Но не заполнился сам макет.

Я подставил функцию заполнения макета вместо Печать(ПараметрыПечати). Сейчас проблема в том, что для корректного заполнения используются значения (СсылкаНаОбъект, ОбъектыПечати, МассивОбъектов, ПараметрыПечати). Их назначение и формирование для меня тайна.

Как я понял, СсылкаНаОбъект - это сам документ откуда открывается впф, ОбъектыПечати - не понял, МассивОбъектов - массив из документов на печать, ПараметрыПечати - это наши параметры.

Но вот как их заполнять в модуле формы? В модуле объекта программа словно из воздуха берет эти значения. А указать просто так их в функции не даст, требует определения этих значений.

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

Подскажите, как это сделать?
13. user5300 1078 09.11.22 08:16 Сейчас в теме
(12)
Сейчас проблема в том, что для корректного заполнения используются значения (СсылкаНаОбъект, ОбъектыПечати, МассивОбъектов, ПараметрыПечати). Их назначение и формирование для меня тайна.


Это если функция печати находится в "Модуле менеджера" , если у вас функция печати в "Модуле объекта", то всё должно работать .
Документ = Ссылка.ПолучитьОбъект().Печать();
14. Redempty 11.11.22 05:29 Сейчас в теме
(13) Вернулся к задаче. В модуле формы после получения данных об ответственном, я так понял необходимо вызвать функцию печати из модуля объекта. Ту, где как раз происходит заполнение макета?

Делаю это при помощи:
&НаСервере
Функция ПечатьНаСервере()

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


Сама функция печати вызывается в модуле объекта как:
Функция ПечатьОтветственного(СсылкаНаОбъект, ОбъектыПечати, МассивОбъектов, ПараметрыПечати) Экспорт
18. Redempty 14.11.22 09:40 Сейчас в теме
(13) Спасибо большое, без вашего примера разбирался бы гораздо дольше
8. newbas 534 08.11.22 14:18 Сейчас в теме
Я НЕ могу добавить через расширение реквизиты в документ, чтобы в дальнейшем их пихать на форму, так как расширение работает коряво и банально не дает сохранить конфигурацию с добавленными реквизитами - вылетает конфигуратор.

Хочу сказать, что вероятно это проблема с вашей базой, сколько делал подобное - свободно добавлялось и все работает и довольно давно
10. Redempty 09.11.22 04:09 Сейчас в теме
(8) Скорее всего да, но ничего не попишешь, надо искать альтернативные пути решения, через (7) сейчас попробую сделать
15. Alex_E 2384 11.11.22 06:42 Сейчас в теме
(10)
Скорее всего да, но ничего не попишешь, надо искать альтернативные пути решения,
- странный подход, ИМХО, надо искать решение проблемы, потому как поиск альтернативы может породить новую, и надо будет искать альтернативу для альтернативы?)))

Решением (вылет конфигуратора при добавлении реквизитов) может быть банальная смена платформы...
16. Redempty 11.11.22 07:02 Сейчас в теме
(15)
Решением (вылет конфигуратора при добавлении реквизитов) может быть банальная смена платформы...


Ну в ближайшее время планируем обновиться, но задачу нужно решить сейчас, поэтому и приходится изворачиваться)
17. Alex_E 2384 11.11.22 07:47 Сейчас в теме
(16) Ну как пример решения - вот ВПФ с открытием формы перед печатью https://infostart.ru/public/309488/, реквизиты, если не получается сохранить в расширении можно сохранить и использовать для печати в дополнительных реквизитах или сведениях...
Оставьте свое сообщение

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