Во вложении простая обработка которая показывает список Расходных накладных из УНФ.
Добавлена кнопка "ОткрытьРеализациюВДоработаннойФорме" по которой открывается реализация в стандартной форме.
Задача: нужно перед открытием программно изменить эту форму добавив на нее табличные части "СерииНоменклатуры" и "ШтрихкодыУпаковок" как будто бы форма изменена в конфигураторе.
Сейчас решаю эту задачу скопировав форму из документа в обработку, добавив в нее что нужно, закомментив код на который ругается при открытии и открываю ее:
&НаКлиенте
Процедура РедактироватьРеализацию(Команда)
ТекущиеДанные = Элементы.ДокументыРеализации.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ОткрытьФорму(ИмяФормыРеализации(), Новый Структура("Ключ", ТекущиеДанные.Ссылка));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИмяФормыРеализации()
Возврат РеквизитФормыВЗначение("Отчет").Метаданные().ПолноеИмя() + ".Форма.ФормаРеализации";
КонецФункции
Показать
Но при каждом обновлении УНФ приходится брать новую форму Реализации.
Возможно ли такое решение в виде обработки?
(1) Вот пример, который работает на УНФ 1.6.27.190. Обязательно добавлять через справочник Доп.обработок. Далее, если эту же обработку открыть через Файл-Открыть, то откроется ваша форма и по нажатию кнопки все работает как нужно. Либо можете форму вынести в отдельную обработку, тоже работать будет.
(10) Спасибо, работает.
Правда пришлось обновить до релиза 1.6.27.190, на релизе 1.6.26.229 в форме "РасходнаяНакладная" не было процедуры "Подключаемый_ПродолжитьВыполнениеКомандыНаСервере"
Конечно результат не на 100% то что нужно - открыть обработку на неизвестной базе и получить доступ к табличным частям ничего не добавляя в базу. Если будет решение, могу предложить еще SM, но путем скачивания любых разработок решившего, т.к. через вознаграждение расходуются личные SM, а скачиванием списывается с абонемента.
А расширения нельзя использовать?
Там присозданиинасервере куча общих модулей обычно вызывается, можно в них встроиться и там свои ТЧ создавать. Тогда не придется форму тащить в расширение и не будет проблем, когда форма обновляется.
(3) Тогда попробуйте вот так, на демо-базе БСП работает. Одна обработка - обработка заполнения, в которой реализовано добавление реквизитов и элементов. Подключается через доп. обработки, добавляет кнопку на форму, по нажатию кнопки добавляется реквизит на форму. Далее, нужно в присозданиинасервере отладчиком найти имя команды, которая соответствует данной кнопке обработки заполнения, и в своей обработке заменить имя команды на нужное, тогда ваша обработка сразу будет вызывать команду обработки заполнения, без необходимости ее нажатия.
Задача сделать это из внешней обработки. Без расширения.
Расширения как раз и были созданы для тех задач, которые невозможно решить обработками: изменять объекты метаданных и алгоритмы их работы без изменения конфигурации.
А вы хотите функционал расширений... но без расширений.
Не, я понимаю: "впихнуть невпихуемое" - это наше национальное... но вряд ли возможное в данном случае.
В https://infostart.ru/public/1385148/ я программно создаю ТаблицуЗначений и добавляю в нее столбцы. Для этого необходимо изменить состав реквизитов формы. Публикую фрагмент из кода обработки:
МассивДобавляемыхРеквизитов = Новый Массив;
Реквизит = Новый РеквизитФормы("ТаблицаЗначений", Новый ОписаниеТипов("ТаблицаЗначений"));
МассивДобавляемыхРеквизитов.Добавить(Реквизит);
Для каждого Поле из Колонки Цикл
Столбец = Новый РеквизитФормы(Поле.Имя, Новый ОписаниеТипов(Поле.ТипЗначения),"ТаблицаЗначений" ,Поле.Имя);
МассивДобавляемыхРеквизитов.Добавить(Столбец);
КонецЦикла;
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);