Программный интерфейс для доработки форм

11.01.22

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

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

Понимаю, что тема не новая, и что есть тут же подобные публикации.

Тем не менее, как мне показалось, данный программный интерфейс представляется уникальным, так как постарался автоматизировать и максимально упростить этот процесс. Основная идея - это простота использования, а также имитация тех действий, которые платформа производит при интерактивной работе.

Пока этот механизм доработан не до конца: нет работы с таблицей и декорацией. Так как разрабатывал это всё по потребностям.

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

Примерно так может быть организована общая процедура по доработке форм:

 
 Общая процедура доработки форм

Далее представлены основные функции по программной работе с формой:

 
 Добавление реквизита/ов
 
 Добавление команды
 
 Добавление поля
 
 Добавление кнопки
 
 Добавление группы

Также были добавлены две обобщенные функции, создающие за раз команду с кнопкой и реквизит с полем:

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

В разработке используются две общие служебные (внутренние) функции, вызывающиеся в различных местах основного кода:

 
 Служебная функция получения произвольного реквизита формы по пути
 
 Служебная функция получения заголовка по имени

Скопировать весь код сразу и следить за изменениями: github.com/AtamanovYS/interface-for-developing-forms

 
 Весь код программного интерфейса (без лишнего кода)

 

Программирование Интерфейс Формы Программно

См. также

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

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

6000 руб.

16.01.2015    62998    44    59    

82

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

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

2400 руб.

29.06.2020    18870    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

1500 руб.

06.10.2020    10241    7    7    

10

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

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

20.08.2024    16922    mrXoxot    43    

121

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

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

27.05.2024    7457    smielka    37    

100

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

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

27.12.2023    14836    921    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    11926    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. retr0 25.11.21 10:03 Сейчас в теме
Так, в документообороте 3 уже давно есть модуль называется РаботаСФормами, при желании этот модуль можно выдернуть в расширение для любой другой конфигурации и адаптировать процедуры/функции под свои нужды. В целом он и из коробки хорошо работает.
DrAku1a; salexdv; TMV; EliasShy; ubnkfl; +5 2 Ответить
3. Dementor 1035 25.11.21 18:17 Сейчас в теме
(1) забавный у вас комментарий )))

1. "Документооборота 3" пока нет в релизе, так как до сих пор не написаны правила конвертации, чтобы перейти с 2.1 (они не совместимы). В этом контексте "уже давно есть" звучит странно.
2. Копировать код из конфигураций, а дальше "выдернуть в расширение для любой другой конфигурации и адаптировать процедуры/функции под свои нужды" разрешается только при условии покупки коробки.
Светлый ум; Evg-Lylyk; IgorS; triviumfan; semagin@gmail.com; DrAku1a; mrChOP93; mihap; +8 Ответить
5. retr0 26.11.21 06:44 Сейчас в теме
(3) Что ты "забавного" видишь в моем комментарии? Пол года для меня уже считается давно, то что она есть или нет в релизе значения не имеет, я назвал конкретный модуль, с работающими функциями. Причем здесь твои правила конвертации и какие-то переходы не понятны вообще. Конкретный модуль не является каким-то особенным, у меня, у самого имелся аналогичный, еще до того как я увидел их реализацию.
nkp14108; ubnkfl; +2 7 Ответить
15. ser6702 174 29.11.21 13:40 Сейчас в теме
(1)
РаботаСФормами


верное замечание ДО 3 еще не в релизе - ничего особенного в публикации нет кроме одного - все собрано в одно место и если еще с таблицами форм доделано будет то выглядит как законченный продукт. + за то что человек собрал и структурировал. Пользуйтесь и не требуется лезть в бета релиз
dimaster; +1 Ответить
2. Дмитрий74Чел 239 25.11.21 17:50 Сейчас в теме
За оформление плюс. Не хватает возможности передать произвольные значения свойств в функцию создания поля: Видимость, Доступность и т.п. - структурой. А также передать имя события и имя процедуры, которая должна быть назначена обработчиком ("ПриИзменении", "НовоеПолеПриИзменении")
AtamanovYS; +1 Ответить
4. AtamanovYS 162 25.11.21 18:51 Сейчас в теме
(2) Неплохая идея, позже что-нибудь придумаю. Полезно будет, когда сразу нужно создать много аналогичных элементов, чтобы не переназначать свойства (хотя часть свойств через "Эталон" можно и сейчас копировать).
При создании же единичного элемента представляется излишним такая передача. Проще после получения элемента через точку задать свойства, это и короче будет по синтаксису.

Ещё подумал, что будет полезно добавить такие совмещённые функции, как: "СоздатьКомандуИКнопку", "СоздатьРеквизитИПоле".
16. ser6702 174 29.11.21 13:43 Сейчас в теме
(2) мне кажется это усложнит структуру и все эти свойства достаточно просто можно в своих процедурах переопределять. Тем более все это очень индивидуально и специфично для каждого конкретного случая. Не стоит загромождать
6. Serg O. 297 26.11.21 09:12 Сейчас в теме
большой + автору, хорошее оформление статьи,
всё структурировано и по пунктам расписано.
За использование github отдельное спасибо.
ivnik; user1430978; +2 Ответить
7. Aletar 26.11.21 11:41 Сейчас в теме
А вы не смотрели вот это решение: https://infostart.ru/1c/articles/1284403/ ?

...А то может сходу скажите отличия.
8. AtamanovYS 162 26.11.21 12:16 Сейчас в теме
(7)
- Не увидел автоматическое формирование заголовков по имени
- Не увидел копирование оформление элемента по другому элементу (см. параметр "Эталон" в функциях создания элемента).
- Не увидел создание имени поля по пути (при создании поля у меня не нужно передавать имя, достаточно только пути, имя из реквизита берется).
- Не увидел динамически изменяемого типа поля формы, в зависимости от типа данных (если реквизит типа "булево", то вид поля автоматически станет полем флажка)
- Если у реквизита свойство ПроверкаЗаполнения в Истина, то у создаваемого поля автоматически проставится ОтметкаЗаполнения и АвтоОтметкаНезаполненного

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

У меня не было желания создавать универсальную библиотеку для программной работой с формой.
Основная идея (на начальном этапе так точно) заключалась в том, чтобы автоматически выполнять те действия, которые сама платформа выполняет при интерактивной работе с формой.
DrAku1a; asteblev; Aletar; +3 Ответить
9. user1674163 29.11.21 11:51 Сейчас в теме
Для бесшовного внедрения на конфигурациях с БСП

тут лучше указать в каких именно конфигурациях есть этот переопределяемый модуль, потому что далеко не во всех типовых он есть (не проверял, но по-моему, такой модуль есть только в УТ/ERP)
AtamanovYS; +1 Ответить
10. ser6702 174 29.11.21 12:48 Сейчас в теме
Указано что Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
// Эту функцию корректнее размещать в клиентСерверном модуле, так как необходимость ее вызова возможна и с клиента

может быть имелось ввиду в модуле с указанием "Вызов сервера"?
11. AtamanovYS 162 29.11.21 13:13 Сейчас в теме
(10) А зачем идти лишний раз на сервер ? Просто бывает потребность получить эту же информацию на клиенте. Например, в переопределяемой процедуре ПослеЗаписи (см. "МодификацияКонфигурацииКлиентПереопределяемый"). Там тоже может нужна будет потребность определить, что это за форма.
13. ser6702 174 29.11.21 13:23 Сейчас в теме
(11) с какой директивой ее
Функция ПолучитьСтруктурированноеОписаниеИмениФормы(ПолноеИмяФормы) Экспорт
тогда определяете в клиент серверном модуле?
14. ser6702 174 29.11.21 13:25 Сейчас в теме
(11) или тогда две функции иметь надо в этом модуле, чтоб не ходить на сервер. Одну
&Клиент
Функция ПолучитьСтруктурированноеОписаниеИмениФормы(ПолноеИмяФормы) Экспорт


и

Функция ПолучитьСтруктурированноеОписаниеИмениФормыСервер(ПолноеИмяФормы) Экспорт
17. AtamanovYS 162 29.11.21 13:44 Сейчас в теме
(14) Не сосвем понял. Эта функция просто находится в другом модуле, где стоят крыжеки и клиента, и сервера. Если мы обращаемся в этот модуль с сервера, то он компилируется на сервере. Если с клиента, то на клиенте.
18. ser6702 174 29.11.21 13:58 Сейчас в теме
12. ser6702 174 29.11.21 13:22 Сейчас в теме
(10) имелась ввиду конечно эта Функция ПолучитьСтруктурированноеОписаниеИмениФормы(ПолноеИмяФормы) Экспорт
19. Yashazz 4791 30.11.21 13:03 Сейчас в теме
Ещё один велосипед, который никто, кроме автора, юзать не станет вообще, да и сам автор через полтора годика забросит. Скучно.
Evg-Lylyk; Aleksandr_Kotelnikov_mmc; slauter77; +3 1 Ответить
Оставьте свое сообщение