Динамическая модификация форм в расширении

05.04.21

Разработка - Механизмы платформы 1С

Пример динамического изменения форм расширением конфигурации без заимствования формы.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Динамическая модификация форм в расширении :
.cfe 5,70Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Современные типовые конфигурации на УФ часто используют вызов различных серверных методов из процедуры ПриСозданииНаСервере() модуля формы. Это обстоятельство можно использовать для динамической модификации формы, без добавления ее в расширение конфигурации.

Рассмотрим такое решение на конкретном примере. ( Управление предприятием ERP 2.4. )

От производства поступила заявка - в  АРМ  "Выполнение этапов"  добавить колонку с указанием получателя   продукции. Стандартными средствами программы настроить такой вывод нельзя, нужные данные находятся в табличной части "Выходные изделия"  документа "Этап производства". Для решения задачи требуется модификация динамического списка формы. Вносить изменения в основную конфигурацию не хочется , а с применением расширения  необходимо добавить  форму и зависимые объекты, что тоже, в перспективе обновления релизов, несет потенциальные проблемы. 

Рассмотрим вариант динамического изменения формы нашей обработки. В процедуре ПриСозданииНаСервере() модуля формы присутствует вызов методов из общих  модулей, в том числе цепочка серверных вызовов с передачей в качестве параметра  нашей формы.

Идея состоит в том, чтобы добавить в расширение общий модуль, и там произвести динамическую модификацию объекта.  Сделать это можно с любым модулем из цепочки, но последний  понравился по контексту.

Итак, для решения задачи нужно создать расширение, добавить  в него общий модуль МодификацияКонфигурацииПереопределяемый и разместить  процедуру:

&После("ПриСозданииНаСервере")

Процедура Расш1_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
    Если Форма.ИмяФормы = "Обработка.ВыполнениеЭтаповПроизводства.Форма.Форма" Тогда
        
    // Изменение запроса динамического списка модифицируемой формы
    // Добавление вложенного запроса, выполняющего выборку данных ("Получатель")из
    // ТЧ "ВыходныеИзделия"
    
        Форма.Список.ТекстЗапроса= СтрЗаменить(Форма.Список.ТекстЗапроса,
        
        "Документ.ЭтапПроизводства2_2 КАК ЭтапыПереопределяемый",
        
        "Документ.ЭтапПроизводства2_2 КАК ЭтапыПереопределяемый
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            ВыходныеИзделия.Ссылка КАК Ссылка,
        |            ВыходныеИзделия.Получатель КАК Получатель
        |        ИЗ
        |            Документ.ЭтапПроизводства2_2.ВыходныеИзделия КАК ВыходныеИзделия
        |        ГДЕ ВыходныеИзделия.НомерСтроки =1 )
        | КАК ВложенныйЗапрос
        |    ПО ЭтапыПереопределяемый.Ссылка = ВложенныйЗапрос.Ссылка
        |"
        );
        
        Форма.Список.ТекстЗапроса= СтрЗаменить(Форма.Список.ТекстЗапроса,
        
        "ЭтапыПереопределяемый.Распоряжение.Очередь КАК ОчередьРаспоряжения",
        
        "ЭтапыПереопределяемый.Распоряжение.Очередь КАК ОчередьРаспоряжения,
        |    ВложенныйЗапрос.Получатель КАК Получатель");

    // Добаввляем колонку "Получатель" в таблицу "Список" на форме
    
        НоваяКолонка = Форма.Элементы.Добавить("Получатель", Тип("ПолеФормы"), Форма.Элементы.Список );
        НоваяКолонка.Заголовок = "Получатель";
        НоваяКолонка.Вид = ВидПоляФормы.ПолеНадписи;
        НоваяКолонка.ПутьКДанным = "Список.Получатель";
        НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;   
    КонецЕсли;    
    
КонецПроцедуры

В результате получаем отображение формы с требуемым результатом.

 

Прилагаемое к публикации расширение содержит опубликованный выше код, тестировалось на конфигурации 1C:ERP Управление предприятием  2.4.11.43.

Вступайте в нашу телеграмм-группу Инфостарт

УФ расширение ERP программирование обновление модификация

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    29369    TitanLuchs    106    

148

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    16035    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    18892    user2122906    9    

64

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    29688    dsdred    92    

147

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    26656    bayselonarrend    22    

176

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    14453    dsdred    22    

85
Для отправки сообщения требуется регистрация/авторизация