Варианты программного добавления элементов на...
-

Варианты программного добавления элементов на форму

0
8656
17.08.2020 Максим Федоров

Содержание:

  1. Добавляем реквизит
  2. Добавление кнопки
  3. Добавление группы
  4. Добавляем табличную часть 1С

В связи с развитием системы расширений многие разработчики 1С сталкиваются с проблемой: если форма захвачена и на ней произведены изменения, то после обновления в основной конфигурации формы, эти изменения не будут отражены на захваченной форме. Получается, что форму после обновления надо каждый раз проверять. Это трудно и "убивает" все плюсы расширения. Но из любой непростой ситуации есть выход, если знать, где его искать. Можно захватить форму в расширение и не изменять её, а все новые реквизиты добавить программно. Тогда при обновлении формы в основной конфигурации 1С 8.3, форма измениться в расширении, и добавленные реквизиты будут корректно отображаться в ней.


В этой статье я постараюсь собрать все основные методы создания реквизитов на форме. 


1.     Добавляем реквизит


Начнем с самого простого. Мы добавили реквизит "МоеРасширение_НаименованиеНаАнглийском" в справочник контрагентов.




                Для того, чтобы вывести его на форму програмно, пишем код процедуры "МоеРасширение_ПриСозданииНаСервереПосле" (Отказ, Стандартная Обработка).

                НовыйЭлемент = Элементы.Добавить ("МоеРасширение_НаименованиеНаАнглийском", Тип("ПолеФормы"));

                НовыйЭлемент.ПутьКДанным                = "Объект. МоеРасширение_НаименованиеНаАнглийском";

                НовыйЭлемент.Вид                                     = ВидПоляФормы.ПолеВвода;

                НовыйЭлемент.ТолькоПросмотр         = Ложь;

                НовыйЭлемент.Видимость                      = Истина;

                НовыйЭлемент.Доступность                  = Истина.

 

Теперь мы добавим на форму реквизит, которого нет в конфигурации. Например, выведем на форму текущую задолженность: реквизит "МоеРасширение_ТекущаяЗадолженность".

 

Сначала создадим реквизит:

                ДобавляемыеРеквизиты           = Новый Массив;

                НовыйРеквизит = Новый РеквизитФормы("МоеРасширение_ТекущаяЗадолженность"),      Новый ОписаниеТипов ("Число", "Текущая задолженность");

                ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

                ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты).

 

Затем выведем его на форму таким же образом, как и добавленный в конфигурацию реквизит, разница только в поле "ПутьКДанным" – здесь мы пишем наименование только что созданного реквизита:

 

                НовыйЭлемент = Элементы.Добавить("МоеРасширение_НаименованиеНаАнглийском", Тип("ПолеФормы"));

                НовыйЭлемент.ПутьКДанным                = "МоеРасширение_ТекущаяЗадолженность";

                НовыйЭлемент.Вид                                     = ВидПоляФормы.ПолеВвода;

                НовыйЭлемент.ТолькоПросмотр         = Истина;

                НовыйЭлемент.Видимость                      = Истина;

                НовыйЭлемент.Доступность                  = Истина.

 


 

Теперь переместим наши реквизиты под поле "Полное наименование". Для этого надо определить на форме место добавления, в нашем случаем – над группой "ГруппаКолонки":



 

Элементы.Переместить(Элементы.МоеРасширение_НаименованиеНаАнглийском,Элементы.ГруппаКолонки.Родитель,Элементы.ГруппаКолонки);

Элементы.Переместить(Элементы.МоеРасширение_ТекущаяЗадолженность,Элементы.ГруппаКолонки.Родитель,Элементы.ГруппаКолонки).

 

Получаем результат:



 

Для того, чтобы отрабатывались процедуры событий для этих реквизитов, можем указать действия:


                Элементы. МоеРасширение_ТекущаяЗадолженность.УстановитьДействие("ПриИзменении", "МоеРасширение_РасшифроватьЗадолженность"). 


2.     Добавление кнопки

 

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

 

                НоваяКоманда = Команды.Добавить("МоеРасширение_ПоказатьОСВ");

                НоваяКоманда.Действие = "МоеРасширение_ПоказатьОСВ";

                НоваяКоманда.Заголовок = "Показать ОСВ".

 

ВАЖНО!! В поле действие пишется имя процедуры.



 

Теперь добавляем саму кнопку:

 

                НоваяКнопка = Элементы.Добавить("МоеРасширение_Кнопка_ПоказатьОСВ", Тип("КнопкаФормы"));

                НоваяКнопка.ИмяКоманды = "МоеРасширение_ПоказатьОСВ". 



 

3.     Добавление группы

 

Для добавления группы переместим кнопку к полю "Текущая задолженность". На этом этапе нам надо создать группу и переместить в нее уже созданные наши элементы.


Создаем группу и помещаем ее под наименованием. Затем переносим в нее реквизит "Текущая задолженность" и кнопку "Показать ОСВ":

 

                НоваяГруппа =Элементы.Добавить("МоеРасширение_ГруппаЗадолженность", Тип("ГруппаФормы"));

                НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;

                НоваяГруппа.Заголовок = "";

                НоваяГруппа.ОтображатьЗаголовок = Ложь;

                НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;

                Элементы.Переместить(НоваяГруппа,Элементы.ГруппаКолонки.Родитель,Элементы.ГруппаКолонки);

                Элементы.Переместить(Элементы.МоеРасширение_ТекущаяЗадолженность,НоваяГруппа);

                Элементы.Переместить(Элементы.МоеРасширение_Кнопка_ПоказатьОСВ,НоваяГруппа). 

 


 

4.     Добавляем табличную часть 1С

 

Добавим к контрагенту табличную часть 1С "МоеРасширение_Номенклатура" с реквизитом "Номенклатура" и выведем ее на форму.



 

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


ВАЖНО! При создании реквизитов таблицы родителем указывается реквизит формы "Табличная часть".

 

                НоваяТабличнаяЧасть = Элементы.Добавить("МоеРасширение_ТаблицаНоменклатура", Тип("ТаблицаФормы"));

                НоваяТабличнаяЧасть.ПутьКДанным = "Объект.МоеРасширение_Номенклатура";

                НовыйРеквизитТабличнойЧасти = Элементы.Добавить("МоеРасширение_Номенклатура", Тип("ПолеФормы"),НоваяТабличнаяЧасть);

                НовыйРеквизитТабличнойЧасти.Заголовок = "Номенклатура";

                НовыйРеквизитТабличнойЧасти.Вид = ВидПоляФормы.ПолеВвода;

                НовыйРеквизитТабличнойЧасти.ПутьКДанным = "Объект.МоеРасширение_Номенклатура.Номенклатура".


 

 

Используя этот базовый набор, можно изменить любую форму программно. И при обновлениях форма всегда будет подстраиваться под выбранный алгоритм. Если форма поменяется глобально, то расширение выдаст ошибку. Тогда, переписав несколько строчек кода, мы снова получим рабочую форму. Это быстрее и проще, чем каждый раз анализировать диалоговую форму.


Специалист компании «Кодерлайн» 

Максим Федоров

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
# абота Риелторского Агентства # Управление торговлей 11 #Работа Риелторского Агентства # 1C # CRM-система # Cинтаксис-помощник # Cинхронные методы работы # PDF документами # PowerShell # XML-файл # Бизнес-процесс # Глубина анализа # Графические объекты # Динамический список # Документ заполнен # Документ Отбор (размещение) товаров # Документ Отгрузка товаров ИС МП # Документ Приобретение товаров и услуг # Документ УПД # Доступ на ТСД # ДтКт # ЕАЭС # Закладка Администрирование # Зарплата и кадры # Имя таблицы # ИТС # Кабель NYM(Севкабель) 3x5.5 # Книга учета доходов и расходов # Курс валюты # Лицо с правом подписи # Лицо, имеющее право подписи документов # Маркировка цифровыми кодами # Минимальные цены продажи в 1С # Настройка НСИ и разделов # Настройка ценообразования # НДФЛ # Нематериальные активы # Оплата через банк # Основное ответственное лицо организации # Перемещение ТС и оборудования # Проведение инструктажа # Продажи или Закупки # Прочие доходы # Пункт Подключить обработки # Пункт Сервис # ПФР и ФФОМС # Работа ТС # Расчет налога УСН # Расчетные счета # Система «Честный знак» # Система GS1 # Списание на расходы # Справка-расчет налога УСН # Страховые взносы # Таблица формы # Таблица формы «Сотрудники» # Товары # Установка цен на товары # Формат Цифровой Маркировки # Функция Дата # Функция ДеньГода # Функция ДеньНедели # Центральный Банк России # Цены номенклатуры 2.5 # Элементы #1.6-НДФЛ #1С Бухгалтерия #1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Модули #1С: Платформа #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #1С:ERP #1С:БГУ #1С:БП #1С:Риелтор #1С:Управление холдингом #1С.6-НДФЛ #ADO #APACHE #API #canonical #com-объекты #Excel #Excel в 1С #GoogleDrive #Googleаккаунт #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #PDF #WEB #WEB-сервисы 1С #Word #WS-ссылки #XDTO-объект #XML #XML-обмен #Администрирование 1С #Адрес URL описания #акты в 1С #Безопасность сервера #Бесшовная интеграция #БИТ.Финанc #Битрикс24 #Блокировки в 1С #БСП #БУ #Бурение скважин #Бухгалтерская отчётность в МСФО #Бюджетирование #Вид Характеристики #Внедрение #Внедрение ERP #Внешний вид формы #Выбор каталога #Выбранные файлы #Документ Отпуск #Документ1 #Журналы #Загрузка цен в 1С #Задача для 1С #Закладка Торговля #Закрытие месяца #Заменить #Запись регистра сведений #Запросы 1С #Интеграция 1С #Интервал dpi #История пользователя #КАК ОТРАЖАЮТСЯ ТОВАРЫ В ПУТИ 1С #Как сделать в 1С #Карточка Объекта недвижимости #Клиент-серверная схема #Код ЦМТ #Конвертация данных #Контроль документов #Конфигурация 1С #Конфигурация 1С ЗУП 3.1 #Копирование настроек пользователей #Корпоративное сопровождение #Лизинг #Лицензии 1С #Лицензионный договор #Личные документы #Массовая регистрация отгулов #Меню Отчет #Механизм Анализа Данных в 1С #Моделирование #Модуль Диадок #МРОТ #МСФО #Налоги #Начисления Арендной платы #Обмен между базами #Обновления #Общие ознакомительные рассылки #Операции в 1С #Оптимизация #Организация #Отпуск #Отчетность #Отчеты в 1С #Оценка задач #Параметр «Количество» #Партнер #Передача неисключительных прав #Перенос данных #Перенос цен из Excel в 1С #Периодичность ДЕНЬ #Периодичность МЕСЯЦ #Планирование #Поле Ввода Значение Субконто #Полезные обработки #Пользовательский режим #Правила обмена #предопределенные элементы справочников #Принцип работы 1С #Проводки 1С #Программа 1С #Программирование в 1С #Программные права #Продажа ТМЦ #Продажи #Продление #Производство #Просмотр #Путь к файлу #Работа с объектами в 1С #Расторжение #Расчет зарплаты #Расчетные документы #Расширение конфигурации #Регламентированная отчетность #Режим РИБ #Результаты поиска #РСБУ #С # #Сдельный заработок #СЗВ-СТАЖ #СКД #Соединение COM в 1С платформе #Соединение СОМ в 1С платформе #Сравнение конфигураций #Счет-фактура #Территориальная привязка #Территориальные рамки #Тестирование 1С #Техническое задание #Типы данных ссылки #Торговое оборудование #Транспортная логистика #Управление проектами #Установка цен номенклатуры #Финансовый учет #Формат MicrosoftExcel #Функционал МРМ #Х-точка #Характеристики Товаров #Хранилище настроек #Хранить историю изменений #Ценообразование #Чтение #Экзамен 1С #Яндекс-диск или Google-диск #Яндекс.Касса 1С под Linux 1С:УНФ Email или телефон Работа с объектами в 1С Функциональные опции в 1С
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.