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

11.01.22

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

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

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

6000 руб.

16.01.2015    61798    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

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

5000 руб.

14.01.2016    54404    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16700    21    4    

35

Новогоднее оформление для 1С

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

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

27.12.2023    10742    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

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

2 стартмани

10.04.2023    9621    151    acces969    31    

118

Модель состояния для MVC

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

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3669    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12083    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. retr0 25.11.21 10:03 Сейчас в теме
Так, в документообороте 3 уже давно есть модуль называется РаботаСФормами, при желании этот модуль можно выдернуть в расширение для любой другой конфигурации и адаптировать процедуры/функции под свои нужды. В целом он и из коробки хорошо работает.
DrAku1a; salexdv; TMV; EliasShy; ubnkfl; +5 2 Ответить
3. Dementor 1015 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 6 Ответить
15. ser6702 165 29.11.21 13:40 Сейчас в теме
(1)
РаботаСФормами


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

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

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

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

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

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

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


и

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