Программная доработка управляемых форм. Разбираем ошибки при добавлении элементов на форму

28.04.25

Разработка - Работа с интерфейсом

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

 

Используемые методы:

Добавить (Add)
Синтаксис:
Добавить(<Имя>, <ТипЭлемента>, <Родитель>)
Параметры:
<Имя> (обязательный)
Тип: Строка. 
Уникальное имя добавляемого элемента.
<ТипЭлемента> (обязательный)
Тип: Тип. 
Тип добавляемого элемента.
<Родитель> (необязательный)
Тип: ГруппаФормы, ТаблицаФормы, ФормаКлиентскогоПриложения. 
Родитель для добавляемого элемента.
Если не указан, то добавляется на верхний уровень.
Вставить (Insert)
Синтаксис:
Вставить(<Имя>, <ТипЭлемента>, <Родитель>, <Элемент>)
Параметры:
<Имя> (обязательный)
Тип: Строка. 
Уникальное имя добавляемого элемента.
<ТипЭлемента> (обязательный)
Тип: Тип. 
Тип добавляемого элемента.
<Родитель> (необязательный)
Тип: ГруппаФормы, ТаблицаФормы, ФормаКлиентскогоПриложения. 
Родитель для добавляемого элемента.
Если не указан, то вставляется на верхний уровень.
<Элемент> (необязательный)
Тип: ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы. 
Элемент, перед которым должен быть вставлен новый элемент. Если не указан, то элемент будет вставлен в конец.

Параметров немного, но ошибки возникают часто. Некоторые ставят в тупик.
Какие могут быть причины ошибки "Недопустимое значение параметров":

 

1. Элемент с таким именем уже есть на форме в типовом решении.

Конфликт имен с именем элемента формы типовой конфигурации или другого расширения.
Способы обхода:

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

 

2. Элемент уже добавлен вашим же кодом.

Например вы используете для добавления реквизитов ПриЧтенииДанныхНаСервере. Такой обработчик может вызваться много раз. 

Способ обхода - проверять наличие элемента формы:

Если Элементы.Найти("МойЭлемент") <> Неопределено Тогда
    Возврат;
КонецЕсли;
Элементы.Добавить("МойЭлемент",...

 

3. Можно дважды подключиться к одному и тому же обработчику события.

В принципе легко диагностируется. Но я с таким сталкивался.

Обработчик ПриСозданииНаСервере можно подключить через свойства формы (расширение обработчика) дважды:

  1. ПриСозданииНаСервереПеред
  2. ПриСозданииНаСервереПосле

Также можно подключиться к  имеющейся в модуле процедуре через аннотации

  1. &Вместо
  2. &Перед
  3. &После
  4. &ИзменениеИКонтроль

 

4. Ошибка параметра номер 3 - родитель.

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

Способ обхода - надо убедиться в наличии группы:

Если Элементы.Найти("ИмяГруппыДляДобавленияНашегоПоля") = Неопределено Тогда
   Возврат;
КонецЕсли;
Элементы.Добавить("МойЭлемент", Тип("ПолеФормы"), Элементы.ИмяГруппыДляДобавленияНашегоПоля);

 

5. Проблема при вставке элемента. 

когда элемент должен встать в группу на определенную позицию, а не просто в конец, то используем метод Вставить() или последовательность методов Добавить() и Переместить().
Ошибка "Недопустимое значение параметров" мало чем помогает при расследовании. 
Причина ошибки в параметре №4 - элемент перед которым должен встать наш элемент. Этот элемент должен лежать в той же группе что и наш добавляемый элемент. Вам могут позвонить клиенты с такой ошибкой. Причем у вас она не будет воспроизводиться. Причиной может быть очередное добавление, стороннее расширение или ручное изменение формы (Форма/Изменить форму).
Результат будет такой же плачевный - форма перестает открываться, лишая доступа пользователя к типовому функционалу.
Способ обхода - проверка что элемент перед которым вы вставляете ваш элемент, находится в той же группе, куда происходит добавление нового элемента:
 

Если Не ГруппаДляДобавления = ПолеПередКоторымМыДобавляемСвойЭлемент.Родитель Тогда
   Возврат;
КонецЕсли;
Элементы.Вставить("МойЭлемент",Тип("ПолеФормы"), ГруппаДляДобавления, ПолеПередКоторымМыДобавляемСвойЭлемент); 

 

6. Подчиненность групп определенного вида.

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

 

Полезные ссылки:

Книга Разработка интерфейса прикладных решений на платформе 1С:Предприятие 8. Глава 3.20: Программное изменение формы 

См. также

Работа с интерфейсом Анализ учета Мониторинг Платформа 1С v8.3 8.3.14 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Платные (руб)

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

9600 руб.

27.03.2025    1028    3    5    

8

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

6000 руб.

14.01.2016    56293    19    25    

45

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    20502    30    6    

46

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64631    45    60    

83

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    28173    mrXoxot    44    

133

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    14952    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    19251    1251    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    13570    172    acces969    31    

130
Оставьте свое сообщение