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

1. Антон Ширяев 529 08.05.22 03:04 Сейчас в теме
Во вложении простая обработка которая показывает список Расходных накладных из УНФ.
Добавлена кнопка "ОткрытьРеализациюВДоработаннойФорме" по которой открывается реализация в стандартной форме.
Задача: нужно перед открытием программно изменить эту форму добавив на нее табличные части "СерииНоменклатуры" и "ШтрихкодыУпаковок" как будто бы форма изменена в конфигураторе.

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

&НаКлиенте
Процедура РедактироватьРеализацию(Команда)
	ТекущиеДанные = Элементы.ДокументыРеализации.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		ОткрытьФорму(ИмяФормыРеализации(), Новый Структура("Ключ", ТекущиеДанные.Ссылка));
	КонецЕсли;
КонецПроцедуры

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


Но при каждом обновлении УНФ приходится брать новую форму Реализации.
Возможно ли такое решение в виде обработки?
Прикрепленные файлы:
СписокРеализаций.epf
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. laperuz 46 08.05.22 19:37 Сейчас в теме +3 $m
(1) Вот пример, который работает на УНФ 1.6.27.190. Обязательно добавлять через справочник Доп.обработок. Далее, если эту же обработку открыть через Файл-Открыть, то откроется ваша форма и по нажатию кнопки все работает как нужно. Либо можете форму вынести в отдельную обработку, тоже работать будет.
Прикрепленные файлы:
СписокРеализаций.epf
11. Антон Ширяев 529 09.05.22 10:37 Сейчас в теме
(10) Спасибо, работает.
Правда пришлось обновить до релиза 1.6.27.190, на релизе 1.6.26.229 в форме "РасходнаяНакладная" не было процедуры "Подключаемый_ПродолжитьВыполнениеКомандыНаСервере"

Конечно результат не на 100% то что нужно - открыть обработку на неизвестной базе и получить доступ к табличным частям ничего не добавляя в базу. Если будет решение, могу предложить еще SM, но путем скачивания любых разработок решившего, т.к. через вознаграждение расходуются личные SM, а скачиванием списывается с абонемента.
2. laperuz 46 08.05.22 05:02 Сейчас в теме
А расширения нельзя использовать?
Там присозданиинасервере куча общих модулей обычно вызывается, можно в них встроиться и там свои ТЧ создавать. Тогда не придется форму тащить в расширение и не будет проблем, когда форма обновляется.
3. Антон Ширяев 529 08.05.22 09:53 Сейчас в теме
Задача сделать это из внешней обработки. Без расширения.
6. laperuz 46 08.05.22 12:45 Сейчас в теме
(3) Тогда попробуйте вот так, на демо-базе БСП работает. Одна обработка - обработка заполнения, в которой реализовано добавление реквизитов и элементов. Подключается через доп. обработки, добавляет кнопку на форму, по нажатию кнопки добавляется реквизит на форму. Далее, нужно в присозданиинасервере отладчиком найти имя команды, которая соответствует данной кнопке обработки заполнения, и в своей обработке заменить имя команды на нужное, тогда ваша обработка сразу будет вызывать команду обработки заполнения, без необходимости ее нажатия.
Прикрепленные файлы:
ТестОбработкаЗаполнения.epf
ТестФормы.epf
7. ishelper 08.05.22 13:14 Сейчас в теме
(3)
Задача сделать это из внешней обработки. Без расширения.
Расширения как раз и были созданы для тех задач, которые невозможно решить обработками: изменять объекты метаданных и алгоритмы их работы без изменения конфигурации.

А вы хотите функционал расширений... но без расширений.

Не, я понимаю: "впихнуть невпихуемое" - это наше национальное... но вряд ли возможное в данном случае.
5. Антон Ширяев 529 08.05.22 12:05 Сейчас в теме
(4) Там примеры создания элементов из процедуры "ПриСозданииНаСервере", но весь вопрос в том как до нее добраться при программном открытии формы.
8. triviumfan 93 08.05.22 14:25 Сейчас в теме
9. blockcode 40 08.05.22 18:25 Сейчас в теме
В https://infostart.ru/public/1385148/ я программно создаю ТаблицуЗначений и добавляю в нее столбцы. Для этого необходимо изменить состав реквизитов формы. Публикую фрагмент из кода обработки:

        МассивДобавляемыхРеквизитов = Новый Массив; 
	Реквизит = Новый РеквизитФормы("ТаблицаЗначений", Новый ОписаниеТипов("ТаблицаЗначений"));
	МассивДобавляемыхРеквизитов.Добавить(Реквизит);
	
	Для каждого Поле из Колонки Цикл
		Столбец = Новый РеквизитФормы(Поле.Имя, Новый ОписаниеТипов(Поле.ТипЗначения),"ТаблицаЗначений" ,Поле.Имя);
		МассивДобавляемыхРеквизитов.Добавить(Столбец); 
	КонецЦикла;
	
	ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
Показать
Оставьте свое сообщение

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