v8.2 Управляемые формы: Динамические элементы формы и переопределяемые события или как изменить поведение и внешний вид управляемой формы программно без лишних хлопот

Публикация № 171514 31.01.13

Разработка - Инструментарий разработчика

В продолжении статьи "v8: Концепция минимального изменения конфигурации для легкого обновления" (http://infostart.ru/public/170935/) предлагаю вашему вниманию небольшую подсистему, позволяющую динамически размещать реквизиты формы, элементы формы переопределять события существующих и назначать новые на уровне "настроек"

Предисловие:

В предыдущей статье я предложил методику модификации конфигурации 1С, находящейся на поддержке с описанием некоторых применяемых мною подходов программирования, позволяющих с минимальными изменениями объектов конфигурации добиться, по моему мнению, максимально "простого" обновления типовой конфигурации. Хочу уточнить что речь идет о тех случаях, когда Вам необходимо менять типовой объект. 

Ограничения: подсистема разрабатывалась для 8.2 управляемое приложение, а именно - конфигурация УТ11. Но механизм может быть применен для любой конфигурации на базе 8.2 управляемые формы. Данная статья и прикрепленная конфигурация направлена на то чтобы продемострировать возможности возможности платформы 8.2 и не является 100% решением всех потребностей динамического изменения формы. 

В данной редакции реализованны механизмы:

  1. Добавление динамических реквизитов любых форм (форм объектов, списков, общих форм и т.п.).
  2. Добавление динамических элементов форм связанных с реквизитами объектов или реквизитами форм (ПолеФормы, ТаблицаФормы)
  3. Переопределение старнадтных обработчиков с возможностью их "наследования"

В качестве примера реализации в конфигурации присутствуют:

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

Конфигурация несет в себе только "обучающую" нагрузку. 

Предполагается, что все объекты системы (кроме общего молуля "ДинамическиеЭлементыКлиентСервер" и обработки "ДинамическиеНастройкиФорм") без префикса являются объектами/реквизитами созданными поставщиком. Все "корневые" объекты и реквизиты с префиксом "н" созданы в процессе доработки конфигурации.
 
Описание конфигурации "От поставщика".
 
  1. Константа "Работа с заказами". 
  2. Справочник "Номенклатура" 
    • Реквизиты:
      • Код
      • Наименование
      • ИспользованиеВЗаказах - если "ложь" то отказ от выбора в документе заказа.
    • Формы:
      • Форма элемента - на форме (Код, Наименование, ИспользованиеВЗаказах)
      • Форма списка - источник динамического списка физическая таблица Справочник.Номенклатура.
  3. Документ "Заказ"
    • Реквизиты 
      • Номер
      • Дата
    • Табличные части
      • Товары
        • номер строки
        • Номенклатура
        • Количество
    • Формы
      • Форма документа. 
        • Поведение формы: Если константа "Работа с заказами" = ложь тогда форма заказа не открывается с предупреждением. При попытке выбрать номенклатуру с признаком ИспользованиеВЗаказах = ложь отказ от выбора с сообщением.
      • Форма списка
        • Источник динамического списка - запрос.
 Еще раз повторюсь, функционал бредовый, но он направлен на то чтобы раскрыть возможности механизма динамического изменения формы.
 
Реализованные изменения:
По "ТЗ" в справочник "Номенклатура" добавлены 2 новых реквизита "вес" и "объем" в существющую группу Дополнительные реквизиты.
Результат и потребовавшиеся изменения ниже:
 
По "ТЗ" систему добавлен новый регистр "нАртикулыОсновногоПоставщика" Измерение Номенклатура, ресурс "Артикл". Его требуестя вывести в списке справочника "Номенклатура".
Результат и изменения ниже:
 
 
Так же как и в для пред. объекта существуют настройки макета в которых прописано добавление колонки "артикул".
 
Документ заказ. Пожалуй это основной пример во всей конфигурации.
Изменение функционала по "ТЗ"
  1. При открытии документа система должна игнорировать константу "Работа с заказами". т.е. открываться всегда.
  2. Добавить Табличную Часть "График оплаты" обязательную для заполнения. Реквизиты: Дата, Сумма
  3. Добавить в таблицу Товары реквизиты Цена, Сумма. Сумма должна пересчитываться автоматически при изменении кол-ва и цены.
  4. Добавить в таблицу товары реквизит Отменена - булево. При значении Истина цвет строки устанавливать в серый.
  5. Добавить реквизит формы общее количество и ссумировать количество товаров в документе кроме отмененных строк. пересчет при изменениях количества цены и флага Отменен
  6. Добавить реквизит формы Сумма документа и как итог суммы в таблице товары кроме отмененных строк. пересчет при изменениях количества цены и флага Отменен
  7. Добавить проверку заполнения (при проведении) чтобы сумма по документу была равной итогу по строкам Графика оплат.
  8. Игнорировать флаг "ИспользованиеВЗаказах" при выборе номенклатуры.
  • Результат и изменения ниже:
 
так-же существует настройка в макете динамических элементов аналогии в изменением спр. Номенклатура. 

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

В конфигурации так же добавлен вывод реквизита формы в таблице Товары (не объекта). Реквизит выведен на форму, на него настроено событие и условное оформление
Так же добавлен пример вывода динамической Комманды в заказе в таблице график оплаты.

Если Вы хотите посмотреть как выглядят формы без динамических модификаций установите константу "Использовать динамическую модификацию" в ложь.

Надеюсь эта статья будет Вам полезной а решение достаточно понятным и легким в использовании.
Готов ответить на все интересующие вопросы. По результатам обсуждений готов изменять статью.

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

Скачать файлы

Наименование Файл Версия Размер
Демо конфигурация

.zip 73,08Kb
307
.zip 73,08Kb 307 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. MarSeN 983 31.01.13 12:55 Сейчас в теме
Хочу уточнить, то в примере используются переопределение и установка событий &НаКлиенте, но механизм расчитан на все события формы и элементов. т.е. пожно переопределять и устанавливать события как &НаКлиенте так и &НаСервере
2. TitanLuchs 344 01.02.13 13:21 Сейчас в теме
В реальной жизни уже пробовали тестировать? Как-нибудь отражается на быстродействии, тормозов нет?
3. MarSeN 983 01.02.13 13:49 Сейчас в теме
(2) Все написанное в обоих статьях с успехом применяется в разрабатываемой и уже внедренной конфигурации УТ11.
Тормозов нет
4. Evil Beaver 7867 01.02.13 16:15 Сейчас в теме
А в 8.3 обещают подписку на события форм. Тогда даже модуль формы менять не придется.
5. MarSeN 983 01.02.13 16:59 Сейчас в теме
(4) скорее бы, но пока мы жевем реальностью и приходится как-то выкручиваться ))
7. ivs200999 06.02.13 07:13 Сейчас в теме
(4) Обещают? Это было бы прекрасно, если было бы правдой.
(1) С какой целью создание реквизитов, элементов и назначение обработчиков реализовано тремя вызовами процедур общего модуля? Для наглядности? Не лучше ли сделать один вызов?
8. MarSeN 983 06.02.13 11:06 Сейчас в теме
(7) для того чтобы не перебирать макет если там нет настроек для этой формы. И конечно так нагляднее.
51. mikhailv 19 26.10.15 12:58 Сейчас в теме
(4) Evil Beaver, обещанного 3 года ждут. Исходя из даты сообщения, 01.02.2016 должно случиться чудо:)
6. wunderland 201 05.02.13 02:15 Сейчас в теме
В стандартных тоже иногда применяется динамическое формирование формы, например в УНФ форма элемента для спр. ФизЛица. Но здесь намного красивее. Мне понравилось, возьму на вооружение...
9. пользователь 07.02.13 20:25
Сообщение было скрыто модератором.
...
10. MarSeN 983 07.02.13 20:57 Сейчас в теме
(9) Эх...
Цитирую:
"Данная статья и прикрепленная конфигурация направлена на то чтобы продемострировать возможности возможности платформы 8.2".
Никто не говорит о том что это ноу-хау. Есть гораздо продуманные системы по "программному добавлению элементов". И подходов множество. Речь совсем не об этом. А о точ то есть такие возможности и, как вариант, этот механизм.
НО - я еще не встречал механизма который бы давал возможность модифицировать формы (элементы/реквизиты) + их поведение (переопределение событий) в одном флаконе.
Если бы подобный механизм/функционал был хоть бы в одной конфе - статьи бы тут не было.
Попробуйте в пару строк распространить механизм документа Установка цен на всю конфу. Для внедрения моего механихма надо перенести 1 общий модуль и одну обработку.
11. пользователь 07.02.13 21:04
Сообщение было скрыто модератором.
...
12. MarSeN 983 07.02.13 21:18 Сейчас в теме
(11) Я только за чтоб в комментах обсуждалось и приводились примеры других реализаций. Но, желательно, не в таком тоне.
Спасибо за понимание.
13. internetname 08.02.13 12:56 Сейчас в теме
Управляемые формы рулят. Кстати, когда там рабочая версия 8.3 появится?
14. MarSeN 983 08.02.13 15:21 Сейчас в теме
(13) сам жду с нетерпением )
15. ArtfulCrom 21 09.02.13 16:51 Сейчас в теме
(13) ) хотел бы я взглянуть в глаза человеку ЗНАЮЩЕМУ ответ на этот вопрос )
Статья хорошая. Спасибо. Побольше бы таких простых и безхистростных "учебников" для отрастающего поколения
16. marochkin 13 13.02.13 11:34 Сейчас в теме
Спасибо за метод, давно не видел столь грамотного способа. Сам делал нечто подобное (переопределение действий с сохранением вызова типового) для элементов форм. Чувствуется опыт программирования не только в 1С ;)

Скорее всего сталкивались со следующим вопросом, очень интересует как решали!?

БСП входит в состав УТ 11. В своих объектах тоже очень хочется пользоваться плюшками БСП. Самые простые примеры: - структура подчиненности, движения документов, виды объектов доступа и права.

При обновлении БСП, в классическом варианте нужно снимать с поддержки некоторые объекты и снимать галки при обновлении. Как поступить в случае когда в УТ добавляются новые документы и удаляются старые. Вариантов кроме как делать для своих объектов каждый раз руками некий перечень действий, не нашел.

Очень интересен комментарий автора статьи на этот счет!
17. MarSeN 983 13.02.13 13:16 Сейчас в теме
(16) Спасибо за высокую оценку.

Я сам пока не заморачивался по "таким" вопросам, так как методику разработал и начал применять относительно недавно. Но на вскидку думаю но структуре подчиненности и движениям документа или другим командам можно просто существующую комманду скопировать в "свою" некую обработку и на нее назначить нужные объекты. при этом больше править ничего не нужно будет. А вот в с составом объектов метаданных, к сожалениию, решений нет. (
По ролям я делаю на все объекты новые роли. Если нужно убрать на сущ. роли часть прав то копирую нужную - ее правлю и потом в профиле перевыбираю свою вместо преджней.
Можно устроить мозговой штурм при желании )
marochkin; +1 Ответить
18. marochkin 13 13.02.13 13:42 Сейчас в теме
(17) Да тоже думал над копированием команд, но в некоторых случаях возможно придется копировать объекты целиком, поэтому это пока не сложилось в вариант решения вопроса ))

Насчет прав я не про роли. А про возможность использовать RLS шаблоны самой БСП. Там нужно в нескольких объектах изменять типы, примеры: ПВХ.Виды объектов доступа, некоторые подписки на события, типы измерений некоторых регистров.
19. MarSeN 983 13.02.13 13:57 Сейчас в теме
(18) К сожалению приходится нсимать с поддержки и править ручками то что нельзя "отнаследовать". В каждом случае приходится решать проблемку конкретно. Иногда, если есть такая возможность правильнее упростить задачу или решить ее бругим путем. Но 1С в некоторых случаях не оставляет нам другого пути, как решать задачу "В лоб" (
20. ivanov660 3878 09.03.13 17:08 Сейчас в теме
Интересный подход. Хотел бы спросить по поводу ограничения доступа на уровне реквизитов, проблем с этим не было? Или задачу динамического размещения необходимо создавать в привилегированном режиме, или данный функционал не зависит от этой особенности?
21. MarSeN 983 09.03.13 20:30 Сейчас в теме
(20) ivanov660
Все "динамические" модификации делаются в привелегированном режиме. С правами реквизитов объекта "только на просмотр" все работает корректно. Если отсутствуют права на чтение то будет ошибка. Я делал этот механизм на УТ11 и у в моих задачах не было необходимости запрещать чтение реквизитов.
но не проблема проверить перед добавлением элемента на форму права пользователя на чтение динамически добавляемых реквизитов.
22. Kaval88 167 11.03.13 11:53 Сейчас в теме
Интересный подход. Хорошо применялась для моих прикладных задач.
23. MarSeN 983 11.03.13 12:06 Сейчас в теме
(22) Kaval88
По моему мнению, на данный момент, это наиболее "полный" вариант из имеющихся на инфостарте включающий подписки, элементы формы и реквизиты.
Задумываюсь над тем чтобы перевести настройку в режим предприятия посредством обработки - визуально чтоб можно было все делать.
24. MarSeN 983 11.03.13 12:07 Сейчас в теме
(22) я рад, что данная разработка будет применена не только в моих решениях )
25. irishka77 16.04.13 12:58 Сейчас в теме
Спасибо, ко времени.Начала работать с бух3.0.
26. MarSeN 983 16.04.13 13:58 Сейчас в теме
(25) irishka77,
всегда пожалуйста )
27. HIgor 21 08.08.13 11:49 Сейчас в теме
События &НаСервере пробовали переопределять? У меня ошибки посыпались (хотя мог и я недоглядеть что-нибудь, вместо макета справочник дополнительный завел). &НаКлиенте - все отлично переопределяется.
28. MarSeN 983 08.08.13 11:58 Сейчас в теме
(27) HIgor,
Да, должно быть в примере. на документе Заказ. Кажись итоги там подчитываются
29. pbazeliuk 1934 23.08.13 16:05 Сейчас в теме
На версии УТ 11.1.2.8 и выше - не сработает переопределение событий, например в документе реализация товаров услуг.
31. MarSeN 983 23.08.13 17:38 Сейчас в теме
(29) pbazelyuk,
А на версии ниже работает??
Думаю, что проблема не в версиях.
Код в студию )) или в личку.
30. Evgen.Ponomarenko 563 23.08.13 17:19 Сейчас в теме
Годится, откладываю статью в "закладки"! Вернусь после командировки - разберу по винтикам :)
32. mister_tula 21.03.14 14:29 Сейчас в теме
Интересное решение, но есть большое сомнение в эффективности его применения к изменению типовых конфигураций. Очень большой объем кода приходится вставлять в модули форм, может проще и быстрее вставить "визуальные" элементы и описать на месте все обработчики? Форму-то всё равно придётся скопировать, а потом исправлять! Или Вы меняете существующую форму?
На первый взгляд вижу только некую "классификацию-напоминалку" внесенных изменений в макете "ДинамическиеЭлементыФорм" и "ДинамическиеРеквизитыФорм"?!! Какое мнение автора? Хотелось бы обсудить!
Прикрепленные файлы:
33. MarSeN 983 21.03.14 15:08 Сейчас в теме
(32) mister_tula,
Меняется модуль формы и реквизиты. Вставляются только шаблоны обработчиков и строчка вызова общего модуля.
Все что в статье описано как пример и работает на демо конфе - в статье отражено ввиде принтскринов. Думаю это не большие изменения.
или я не понял Вашего вопроса?
готов обсудить.
я не совсем понял о чем Вы "Какое мнение автора?"
mister_tula; +1 Ответить
34. mister_tula 21.03.14 16:16 Сейчас в теме
Возможно Вы меня не совсем поняли. Шаблоны обработчиков необходимо вставлять в форму, сами обработчики в общий модуль. Я пишу о том, что текста то-полно!! Может всё это сразу вставить в форму и будет проще! Зачем такие сложности? Я не вижу достоинств Вашего решения перед более простым. Возможно я ошибаюсь. Я пытаюсь практически применить Ваши решения и пока не заметил преимуществ. Поэтому и хотел с обсудить. Если , конечно, у Вас есть время.
35. MarSeN 983 21.03.14 16:35 Сейчас в теме
(34) mister_tula,
Да, давайте обсудим.
Макеты можно добавлять в конкретные объекты - тогда нудно переписать общий модуль подключений чтоб смотрел модули объектов.
конечно же все тексты обработчков надо хранить в общих модулях.

Давайте я помогу разглядеть их - достоинства, но если только Вы их хотите увидеть. В противном случае лучше поступать так:
Может всё это сразу вставить в форму и будет проще!

какие у Вас лично проблемы возникают с применением данного метода?
36. mister_tula 21.03.14 17:09 Сейчас в теме
Проблем с "простым" изменением форм - никаких. Я копирую исходную форму, называю её myФормаЭлемента, назначаю основной и вношу все изменения непосредственно в модуль формы.
конечно же все тексты обработчков надо хранить в общих модулях
. В данном случае зачем мне это делать?
Если я воспользуюсь Вашей методикой:
шаблоны обработчиков вставляю в мою форму myФормаЭлемента, затем в общем модуле их описываю. Дописываю метод ПриСозданииНаСервере. Если необходимо добавить доп.реквизиты - добавляю в любом случае. Описываю все изменения в шаблоне ДинамическиеЭлементыФорм. Мне кажется манипуляций даже больше. Объективно, в чем преимущества? Пока я вижу только два:
1) текстовое описание добавляемых реквизитов в шаблоне ДинамическиеЭлементыФорм и ДинамическиеРеквизитыФорм, помогает разобраться в омуте внесенных изменений, СОГЛАСЕН.
2) если вдруг типовая форма изменилась, мне придется ее скопировать вновь и добавить блок по Вашей методике, по моей методике путь немного длиннее - вставляю реквизиты "руками" и привязываю обработчики событий. Не вижу разницы.
Возможно несколько примитивно я описал. Но всё-таки есть другие достоинства?
37. mister_tula 21.03.14 17:25 Сейчас в теме
Если не сложно, напишите, как действуете Вы для изменения типовой формы, чтобы потом было легче обновляться. Может я не тем путем хожу (:
38. MarSeN 983 21.03.14 17:37 Сейчас в теме
(37) mister_tula,
В статье вроде все подробно описано, ну да ладно
1. снимаю форму с поддержки
2. добавляю нужные реквизиты
3. в макете для элементов прописываю куда и какой реквизит поместить
4. в при создании на сервере прописываю вызов метода для динамической вставки элементов
----------------------
обычные реквизиты без обработчиков готовы.

если нужны обработчики как на новые так и на существующие элементы.
1. Прописываю обработчик в макете. если большой текст обработчика - перенаправление в макете в общий модуль
2. Снимаю, если еще не снята, форму с поддержки
3. вставляю подключаемые команды (тексты которые я привел с статье и есть в демке) в модуль формы
4 . подключаю при создании на сервере вызов метода подключения обработчика.

с реквизитами форм все аналогично

что это дает?
При обновлении я вижу что форма поменялась и мне не надо смотреть что там поменялось. Я просто в существующую форму добавляю свои вставки и все. если таковых много - пользуюсь KDiff3

и никаких заново выкладываний на форму, проверок старого и нового функционала в случае если вы делаете свою форму основной и тп.
teflon; mister_tula; +2 Ответить
39. mister_tula 21.03.14 17:46 Сейчас в теме
СПасибо огромное за разъяснение, я был не прав, использую копирование форм. Ваш метод ГОРАЗДО привлекательнее.
А KDiff3 по-моему это какая-то прога для сравнения файлов? А что она может интегрироваться как-то с 1С?
40. MarSeN 983 21.03.14 18:01 Сейчас в теме
(39) mister_tula,
KDiff3 - программа которая намного удобнее чем то что предлагает нам 1С
В ней есть возможность сравнивать и объединять до 3-х файлов одновременно. Широко применял для 7.7 в связке с GComp
Нет. она не интегрирована. Нужно выгрузить модули из 1С ч/з выгрузить модули (есть до версии 8.3) или просто ручками создать 2 текстовых файла старого и нового модуля. Объединить и ручками вернуть обратно.
если выгружать из 1С то потом загрузить обратно. Все просто.
Спасибо
DoReMi; mister_tula; +2 Ответить
41. mister_tula 21.03.14 18:04 Сейчас в теме
42. MarSeN 983 22.03.14 00:17 Сейчас в теме
(41) mister_tula,
поделитесь результатами экспериментов )
43. zqzq 23 17.04.14 08:32 Сейчас в теме
Глянул демо-конфу, достаточно красиво и главное просто реализовано (в отличии от соседней темы где внешние обработки и черт ногу сломит). Единственное, повторяющийся код типа
	МассивИнструкций = ДинамическиеЭлементыКлиентСервер.ПолучитьИнструкцииПереопределаемыхОбработчиков(ЭтаФорма, "ПослеЗаписи");
	
	Для Каждого Инструкция из МассивИнструкций Цикл 
		Выполнить(Инструкция);
	КонецЦикла;	
можно было бы заменить на одну строчку типа
Выполнить(ДинамическиеЭлементыКлиентСервер.ПолучитьВсеИнструкцииПереопределаемыхОбработчиков(ЭтаФорма, "ПослеЗаписи")); 
44. MarSeN 983 17.04.14 09:14 Сейчас в теме
(43) zqzq,
Спасибо
Нет, Ваш код не подходит. Цикл сделан специально, так как подсистема способна нетолько добавлять и заменять сущеструюшие обработчики, но и выполнять новый обработчик до или после существующего.
45. zqzq 23 17.04.14 11:16 Сейчас в теме
(44) ну так загнать массив инструкций в многострочную строку в общем модуле и её уже выполнять на форме.
46. MarSeN 983 17.04.14 11:19 Сейчас в теме
(45) zqzq,
) Согласен, ступил. Спасибо.
47. knasa 18.03.15 08:17 Сейчас в теме
Здравствуйте MarSeN.
Подскажите пожалуйста, а можно ли на основе Вашей разработки полностью создать таблицуформы и определить в ней колонки. Наподобии как если бы я сделал это в ручную на управляемой форме?
48. MarSeN 983 26.03.15 13:45 Сейчас в теме
(47) Да, можно.
это есть в примере
49. It-developer 20 08.05.15 10:10 Сейчас в теме
Не знаю, не знаю. Пробовал динамически добавлять элементы, но в обычные формы. Довольно геморройное дело. Слишком много кода.
Наверно, для каких-то целей такая реализация может подойти. Например, когда у тебя пару сотен узлов, которые ты обновлять не хочешь.
Но опять же, писать кучу всяких обработчиков в самой форме нужно (не считая события ПриСозданииНаСервере) :(
И потом ... в макетах куча описалова по обработчикам, элементам, реквизитам. Приколол макет с реквизитами - куча свойств формы в макете :) - в конце проекта в этом макете будут все свойства реквизитов форм :))
Не знаю как автору, но мне было бы неудобно больше всего не видеть визуально изменяемую форму.
Я поставил плюс, т. к. сама идея мне лично интересна
50. MarSeN 983 08.05.15 13:43 Сейчас в теме
(49)
Я объединение делал через KDiff 3 при этом использовал 3 версии текстов (cf) - конфа поставщика, новая версия, и текущая версия.
при этом кадиф автоматом предлагает, если нет изменений между поставщиком и новой от поставщика, вставить код от текущей версии
52. Cyberhawk 133 06.06.16 14:50 Сейчас в теме
1. Я правильно понимаю, что переопределить обработчик ПриСозданииНаСервере не получится?
2. Также желательно описать (и добавить в демо-конфигурацию) переопределение обработчика, получающего на вход больше одного параметра
53. MarSeN 983 06.06.16 18:29 Сейчас в теме
(52)
1. Можно переопределить обработчик ПриСозданииНаСервере, но я не заморачивался тогда по причине отсутствия надобности.
2. Принцип всегда один, но количество параметров зависит от конкретного обработчика. Тут особо описывать нечего. Я всегда брал типовой и на основе него делал переопределеное.
54. check2 304 27.03.18 12:03 Сейчас в теме
Сергей, просто супер!
А почему все элементы в один макет? не лучше ли было бы лепить макеты к самому объекту: три макета. Если очень много дорабатываемых объектов, то чуть-чуть выиграем на сканировании табличного документа и... самое главное... я в задании на разработку описываю табличку что во что должно вставиться... Мы просто копируем табличку из задания на разработку и разработчику нужно вставить несколько обработчиков в форму... Щастье... Беру демку, переделаю под себя... Идея просто блестящая.
Спасибо!

UPD: Ещё бы и код обработчиков генерился... из обработки... алмаз...
56. MarSeN 983 27.03.18 16:56 Сейчас в теме
(54)
Да, можно было и так сделать, но я ориентировался на минимум изменений в типовых объектах
Кот обработчиков, если я правильно понял что имеется ввиду, не может быть сгенерирован. Его можно попробовать в обработке разместить, но не весь, только для серверных вызовов. Для клиентских только в общем модуле.

Прошу прощения если не точно ответил. Писал давно и уже многое не помню
55. check2 304 27.03.18 12:15 Сейчас в теме
Ещё вопрос, если поле имя оставить пустым - синоним в заголовок из реквизита подтянется? Или пусто будет?
57. MarSeN 983 27.03.18 16:57 Сейчас в теме
(55)
Это я не помню. Если такое возможно (платформой и по коду), то я должен был прописать.
58. MarSeN 983 27.03.18 17:00 Сейчас в теме
Не думал, что данная разработка еще актуальна )
59. check2 304 04.05.18 05:34 Сейчас в теме
(58) Ещё как актуальна, мы её допилили, добавили работу с существующими элементами - перемещение, скрытие, удаление. Добавили работу с группами, кнопками. Сделали дополнительно обработку - генератор форм. Т.е. в рунтайме правим табличку - получаем форму с новыми вставленными элементами. Очень помогает в процессе написания проектных решений чтобы не просто описывать будущую форму, а заскринить, выделить новые элементы. Затем таблички сохраняем к заданию на разработку.- кодеру достаточно только заменить пути в элементах форм на реквизиты объекта. Как результат - снижение трудоёмкости работ при проектировании.
60. Sirruf 181 30.06.22 17:43 Сейчас в теме
Не разделяю восторгов в комментариях, реализация не выдерживает никакой критики хотя бы потому, что все это не будет работать в веб-клиенте по причине: "оператор выполнить в веб-клиенте не поддерживается". Вот попробуйте реализовать функционал без этого оператора, тогда это будет действительно круто)
Оставьте свое сообщение

См. также

Функции "слоупока": как заставить открываться "Все функции" в 97 раз быстрее!

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

Наверное, каждый программист 1С (да и не только программист), открывая «Функции для технического специалиста» (ранее «Все функции») на массивных конфигурациях вроде ERP 2.4 и т.п., в своей жизни много раз задавался вопросом – почему же они так долго открываются?? Действительно, в зависимости от мощностей сервера «Все функции» могут открываться от 20 секунд до 2 минут! «Ну, слишком много объектов в конфигурации, огромное количество констант, справочников, документов, регистров… – Отвечали себе страдающие пользователи. – Пока программа обойдёт в цикле все метаданные, пока построит дерево… Тут ничего не поделаешь…». И все они были не правы! Я провёл собственное расследование, которое показало, что 97% времени построения дерева метаданных тратится на…

1 стартмани

09.03.2022    22612    93    XilDen    76    

240

Программное формирование существующих печатных форм

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

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    12571    32    RocKeR_13    5    

42

Универсальный редактор данных (УРД)

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

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    15858    206    Adeptus    57    

91

Подсистема "Показатели объектов"

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

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

2 стартмани

06.03.2021    14394    8    pila86    17    

29

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

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

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    19529    32    huxuxuya    11    

36

Проверка ведения учета (универсальная)

Инструментарий разработчика Анализ учета Платформа 1С v8.3 Запросы Абонемент ($m)

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

2 стартмани

11.08.2020    11508    59    vozhd    4    

19

Консоль кода для управляемых форм

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

Консоль кода для управляемых форм с подсказками и подсветкой синтаксиса.

1 стартмани

17.07.2020    45565    603    salexdv    423    

328

Внешний регламент для 1С

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

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

1 стартмани

05.03.2020    17301    14    moolex    13    

15

Конвейер проверки качества кода

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

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    52595    35    Stepa86    46    

220

Модель объекта

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

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    24743    3    vadim1980    5    

17

CFU & CFE - reader (версия 3.1).

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

Обработка для анализа файлов обновлений (.cfu) и расширений (.cfe) в режиме предприятия в любой конфигурации для 1С 8.3.+. Основана на разработке https://infostart.ru/public/97194/.

2 стартмани

21.06.2019    17344    48    vandalsvq    12    

28

Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD

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

Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.

1 стартмани

03.06.2019    53937    12    ripreal1    92    

183

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

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

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

1 стартмани

13.05.2019    52080    201    Diversus    44    

278

Блин, мы забыли включить регламентные задания…

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

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    34872    23    slozhenikin_com    37    

61

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    77843    286    informa1555    246    

207

Легкое и гибкое управление списком доступных баз 1С у пользователей

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

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    30399    30    RomikR    11    

18

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

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

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    68243    648    Eugen-S    36    

51

Навигатор по конфигурации базы 1С 8.3

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

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.95 от 07.05.2023

3 стартмани

28.10.2018    59838    535    ROL32    72    

183

Консоль Внедренца v.3.6.2

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

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами - загрузка данных из табличного документа.

1 стартмани

27.08.2018    53891    525    evvakra    42    

182

HTTP Сервисы: Путь к своему сервису. Часть 3

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

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    79096    96    dsdred    17    

182

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

10 стартмани

14.08.2018    159355    3532    Evg-Lylyk    800    

624

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

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

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    46395    35    informa1555    30    

77

Консоль HTTP-запросов с генерацией кода

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

Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

1 стартмани

25.05.2018    45334    411    leongl    20    

199

Работа со схемой запроса

Инструментарий разработчика Платформа 1С v8.3 Запросы Абонемент ($m)

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    59288    kalyaka    40    

212

Регистры правил [Расширение]

Инструментарий разработчика Платформа 1С v8.3 Управление правами 1С:Управление торговлей 11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    32374    33    33lab    5    

18

Заполняем по шаблону (по умолчанию)

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

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

1 стартмани

08.02.2018    44225    25    mvxyz    17    

79

Практика доступа в базу 1С через протокол oData. Чтение данных

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

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    141193    Dementor    74    

396

Паузы при исполнении кода (Sleep для 1С)

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

Решил проверить все найденные варианты паузы для 1С. В результате получилась обработка для тестирования и небольшая статья с итогом.

1 стартмани

28.11.2017    101445    24    swimdog    57    

183

Программное формирование форматированной строки в стиле html+inline CSS

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

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

1 стартмани

18.11.2017    58623    60    bonv    13    

74

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз

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

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

1 стартмани

14.11.2017    39066    109    bonv    17    

48

DataReducer — R-консоль для «1С:Предприятия»

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

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

10 стартмани

10.07.2017    33441    3    DataReducer    13    

47

Трансформатор 1С - SQL

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

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

1 стартмани

28.06.2017    54986    454    Synoecium    54    

249

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов

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

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

26.05.2017    54023    DarkAn    87    

196

Набор подсистем "Умные таблицы"

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

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    48817    119    Silenser    34    

75

Автокликер для 1С

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

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

1 стартмани

03.04.2017    47149    87    slava_1c    67    

74

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

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

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

1 стартмани

13.03.2017    51901    138    romasna    54    

208

Сценарное тестирование в помощь программисту 1С

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

Альтернативное решение для организации сценарного тестирования конфигураций, разработанных на управляемых формах

1 стартмани

11.11.2016    39607    62    grumagargler    62    

193

Несколько шаблонов для доработки типовых конфигураций

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Абонемент ($m)

Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы

1 стартмани

03.10.2016    52361    107    json    26    

196

Конструктор-тестер http запросов в 1С

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

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    58472    344    hlopik    19    

227