Новый взгляд на управляемые формы

21.11.23

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

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

Расскажу о необычном подходе к работе с управляемыми формами.

 

Прежде чем начну свой скучный монолог, давайте немного познакомимся.

В мире 1С я существую с 2010 года. После университета попал в желтые лапы 1С в Первый Бит и почти 10 лет там проработал. Потом успел побыть франчом и сейчас работаю на хоумсайде в Тинькофф банке.

Люблю автоматизировать все, до чего дотягиваюсь. Считаю, что если какая-то рутинная работа появляется больше трех раз, ее надо автоматизировать. То же самое – если пишешь один и тот же код несколько раз, его нужно как-то привести в порядок.

 

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

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

  • А во-вторых, если у вас команда работает в EDT или в GIT, не используя блокирующее хранилище, и два разработчика одновременно внесли изменения в одну и ту же форму, у вас опять начнутся очень серьезные боли и проблемы.

Чтобы успешно справиться с такими проблемами, нужно решать конфликты.

 

Конфликты при доработке форм и их последствия

 

Конфликтом я называю ситуацию, когда у нас одновременно в двух ветках разработки изменился один и тот же объект: либо код, либо форма, либо все вместе.

Конфликты приводят к боли.

 

Причина этой боли – в особенностях хранения структуры формы. Самая примитивная форма, у которой меньше десяти элементов, внутри превращается в огромный монструозный XML.

Обратите внимание, что узлы этого XML обозначены идентификаторами и так далее. По сути, это обычная целочисленная переменная, которая при добавлении каждого нового реквизита итерируется. Очевидно, что, когда люди работают параллельно, эта цифра начинает дублироваться и пересекаться.

Чтобы прочувствовать, как проявляется эта боль, давайте попробуем на форме что-то доработать.

Например, наш любимый заказчик сказал, что на форме нужно добавить команду, которая делает все хорошо. Мы потратили на это две недели, взяли 800 тысяч рублей и реализовали эту кнопку. Мы счастливые, довольные.

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

Скачиваем обновление и пытаемся обновить:

  • Если мы расчехляем конфигуратор и обновляем через сравнение/объединение, то конфигуратор вообще не поймет, что произошло – он просто один реквизит поменяет на другой. Она решит, что кнопка заменилась на поле ввода, потому что идентификаторы пересекаются. Иногда это можно отловить сразу, но иногда вы этого не заметите. Конфигуратор ничего не показывает – у него все хорошо, все сравнилось, объединилось. В режиме 1С:Предприятие на форме даже кнопка останется, но нажать на нее вы уже не сможете. Либо приложение просто при открытии формы упадет. Это настолько непредсказуемая история, что лучше до этого не доводить.

  • Мы у себя ведем разработку в Git, и я объединяю изменения через мой любимый мерж-тул Kdiff3 – это такое программное обеспечение для Git, которое помогает мержить. Он мне сразу подсвечивает, что есть изменения, с которыми нужно разобраться. Но для форм его использовать неудобно: если изменений мало, я еще могу посидеть немного и руками все это смержить, а когда изменений много, нет другого решения, кроме как открыть рядом две конфигурации и начать вручную все это перетаскивать.

 

Решение – программная манипуляция с элементами форм

 

Как избежать таких проблем? Ответ на поверхности – нужно использовать исключительно программную доработку форм.

Я к этому снаряду подходил уже несколько раз. Сначала у меня был общий модуль с методами: ДобавитьКнопку, ДобавитьПолеВвода и т.д., которые получали на вход какие-то параметры.

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

В какой-то момент я уже устал добавлять параметры – у меня просто экран закончился, и я все переделал на один параметр ДопПараметры. Это была структура, которая принимала Ключ и Значение – там можно было добавлять параметры до бесконечности.

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

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

В какой-то момент этим пользоваться надоедает, и ты думаешь: «Ладно, я сейчас быстро накидаю то, что нужно, на форму. А кто-то другой потом пострадает с обновлением. Может, повезет, и это буду не я».

 

Паттерн builder для удобной доработки форм

 

После очередной попытки что-то добавить в этот модуль, я решил почитать всевозможные древние книжки. И на одной из древних скрижалей, где описаны паттерны проектирования программного обеспечения, я прочитал о паттерне builder – построитель или строитель. Он называется по-разному, в зависимости от вашей среды обитания и прочтенной литературы.

Согласно этому паттерну у нас есть объект:

  • У этого объекта есть какое-то свое состояние, которое можно менять.

  • И есть определенные методы.

    • Одни из этих методов меняют состояние объекта и возвращают этот же самый объект.

    • А другие методы результируют накопленную в объекте информацию и возвращают какое-то значение.

На слайде показан пример реализации такого паттерна в 1С. Здесь объектом является обработка, содержащая одну переменную и три функции, которые что-то с переменной делают – в данном случае, функции «Плюс» и «Минус» возвращают саму обработку (значение переменной ЭтотОбъект).

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

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

 

Перейдем непосредственно к библиотеке. Это расширение, в котором есть:

  • один общий модуль, который обеспечивает инфраструктуру по созданию и инициализации объектов;

  • сердце библиотеки – это обработка «ПостроительФорм», которая реализует паттерн builder и позволяет создавать много разных красивых элементов;

  • и две вспомогательные обработки для работы с таблицами и динамическими списками.

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

 

В обработке «ПостроительФорм» методы условно поделены на несколько типов.

  • Методы, которые создают реквизиты формы – какие-то бизнес-сущности наподобие Контрагент, Договор и т.д.

  • Методы, которые создают команды формы – на эти команды ссылаются кнопочки.

  • Методы, которые непосредственно создают элементы.

  • И методы, которые управляют свойствами этих элементов.

В результате мы ушли от длинных портянок методов с кучей параметров, которые надо помнить.

Нам не важен порядок создания элементов и установки для них свойств.

  • Например, мы можем создать поле ввода, указать для него путь к данным, родителя, видимость – что угодно. И если мы поменяем порядок этих вызовов, ничего не сломается, все будет прекрасно работать.

  • Обратите внимание, здесь создается реквизит ДинамическаяДата, а потом я могу переместить его за «Оплачен», хотя реквизит «Оплачен» еще не создан, он только здесь создается. Здесь тоже ничего не сломается, тоже будет работать. Библиотека поймет, что у вас немного нарушен порядок, подправит это за вас и даже не упадет.

  • Здесь мы в самом начале создаем группу формы «НомерИДата», и потом туда что-то складываем. Но можно сделать и наоборот – сначала создать несколько полей ввода, а потом только где-то внизу определить группу. Тоже ничего не сломается, все будет работать.

 

Компонентный подход

 

Небольшой пример из жизни – на слайде наше рабочее место дежурного.

Здесь много табличек, вкладок, кнопочек и всего прочего. Все построено кодом на билдере.

Когда мы только начали этим заниматься, мы поняли, что здесь хорошо заходит компонентный подход.

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

Это можно использовать для документов «Реализация», «Заказ», «Счет» и так далее. Табличная часть у них, как правило, одинаковая: товар, характеристика и т.д. Можно все описать в одном месте, вставить кнопку подбора, и это везде будет сразу появляться. Классно.

 

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

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

 

Шаблоны для автодополнения

 

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

Чтобы решить эту проблему, мы опять вернулись к кодогенерации, только уже генерировали не код, а файлы шаблона – загрузили в генератор все процедуры из модуля нашей обработки, и сгенерировали файл шаблона, который помогает писать эту цепочку вызовов.

Обратите внимание, здесь у каждого метода есть литера.

  • Р – это создание реквизитов;

  • Э – это создание элементов.

  • С – это управление свойствами.

  • У – управляющие, их не так много, это как раз «Применить», «ТекущийЭлемент» (переключиться на элемент) и так далее.

 

Упрощение добавления сложных элементов и расширение возможностей

 

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

Я вам уже говорил, что у нас есть основная обработка и несколько дополнительных. На самом деле я вас обманул – дополнительных обработок у нас очень много. Но я их вам не покажу, т.к. это просто наша внутренняя бизнес-логика. В качестве примера мы оставили в библиотеке только две дополнительные обработки – «Таблицы» и «Динамические списки». Без них при добавлении таблиц получается много кода, который неудобно читать – а так мы сделали для себя упрощение.

Суть в том, что вы можете завести свою обработку, которая будет начинаться с префикса рсф_ (сокращение от «Работа с формами») и реализовать у нее минимально простой интерфейс из шести строчек.

Тогда при инициализации построителя форм ваша обработка подтянется в доступные компоненты, и ее можно будет вызывать по аналогии с тем, как здесь вызван компонент «Таблицы». И все функции с бизнес-логикой, которые вы там пропишите, будут вам доступны. Но, поскольку здесь все в текучем виде, я советую описывать логику в добавляемой обработке тоже по этому паттерну.

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

 

Лекарство от боли

 

 

Давайте вернемся к боли, которую мы уже испытали, и попробуем от нее избавиться.

Помните тот ужасный XML, который был? А теперь посмотрим, как бы выглядело обновление, если бы мы использовали программную доработку формы с помощью этой библиотеки:

  • слева – доработки одного разработчика, за которые мы взяли 800 тысяч;

  • а справа – труды другого разработчика, который тоже нам чем-то помог.

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

 

Альтернативы и аналоги

 

Мы не одни во вселенной. К программному изменению форм подходили многие талантливые люди. Некоторые их решения я нашел на Инфостарте и привел здесь в качестве примера:

И многие другие.

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

 

Ограничения программного управления формой

 

Ложка дегтя в желтой бочке.

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

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

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

  • Еще одно ограничение – в том, что методы для любых обработчиков событий (например, у кнопки есть событие «ПриНажатии», у таблицы есть «ПриДобавлении», у поля ввода – «ПриИзменении» и т.д.) должны быть объявлены исключительно в модуле формы. Согласитесь, было бы здорово, если бы этот код можно было хранить не в модуле формы, а где-то в общем модуле, чтобы, поменяв поведение в одном месте, у нас везде сразу стало хорошо. Такого нет и вряд ли, наверное, будет.

  • И есть еще множество других подобных нюансов, в которые я уже не буду углубляться, иначе получится, как будто я в докладе свой подход ругаю. Нет, не ругаю, работать можно.

 

Задел на дальнейшее развитие и применимость в разработке

 

Когда мы на все это смотрим, приходит понимание, что чего-то не хватает.

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

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

  • И если мы наталкиваемся на что-то, чего в нашем построителе нет, мы это добавляем.

 

И напоследок:

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

  • Если у вас развита культура тестирования, будь то unit-тесты или feature-тесты, с этим можно классно подружиться – в результате вы получите синергию, вам это тоже понравится.

  • Подход программной доработки можно использовать даже в расширениях – туда это тоже хорошо ложится. Мы просто затягиваем нужную форму в расширение и добавляем одну строчку в метод ПриСозданииНаСервере. В этом случае обновление формы от поставщика, для вас, по сути, будет бесплатным – он добавляет свои изменения в XML-файл формы, а изменения формы потом генерируются сверху кодом из нашей библиотеки.

  • Оно может сломаться только в том случае, если вы докидываете свои элементы в какую-то типовую группу, а поставщик эту группу удалил – но тогда у вас даже в дымовых тестах будет сразу видно, что форма не открывается, падает.

  • И есть один незначительный минус – когда платформа открывает встроенные в конфигурацию формы в первый раз, они немного подтормаживают, а на второй и третий раз эти XML где-то кешируются и форма открывается быстрее. Но в случае программного управления элементами формы ничего не кешируется, потому что мы каждый раз тратим время на создание самого объекта обработки и на прорисовку. Эти задержки незначительны – когда мы замеряли, разница во времени составляла не более 5%. Цена за последующее снижение боли этого не перевешивает, так что можно пользоваться.

По ссылке https://github.com/Nivanchenko/formhelper вы можете скачать библиотеку для программного управления элементами формы, о которой я говорил, и файл с шаблонами кода.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции Infostart Event.

 

30 мая - 1 июня 2024 года состоится конференция Анализ & Управление в ИТ-проектах, на которой прозвучит 130+ докладов.

Темы конференции:

  • Программная инженерия.
  • Инструментарий аналитика.
  • Решения 1С: архитектура, учет и кейсы автоматизации на 1С.
  • Управление проектом.
  • Управление продуктом.
  • Soft skills, управление командой проекта.

Конференция для аналитиков и руководителей проектов, а также других специалистов из мира 1С, которые занимаются системным и бизнес-анализом, работают с требованиями, управляют проектами и продуктами!

Подробнее о конференции.

 


См. также

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

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

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

6000 руб.

16.01.2015    62091    43    59    

81

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

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

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

5000 руб.

14.01.2016    54685    16    21    

42

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

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

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

2400 руб.

29.06.2020    16905    22    4    

36

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

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

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

27.12.2023    11159    761    elcoan    45    

106

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

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

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

2 стартмани

10.04.2023    9885    153    acces969    31    

119

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

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

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

1 стартмани

05.07.2022    3937    kalyaka    4    

29

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

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

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

3600 руб.

29.04.2022    12290    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

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

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

6000 руб.

18.01.2022    8951    1    2    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1325 21.11.23 13:05 Сейчас в теме
Оно может сломаться только в том случае, если вы докидываете свои элементы в какую-то типовую группу, а поставщик эту группу удалил – но тогда у вас даже в дымовых тестах будет сразу видно, что форма не открывается, падает.

Опять же, родителя можно прописывать не напрямую, а искать его через Элементы.Найти: в случае удаления/переименования типовой группы программно добавляемые элементы просто "упадут" в низ формы.
triviumfan; NikitaIvanchenko; mas_kot; +3 Ответить
2. NikitaIvanchenko 266 21.11.23 17:08 Сейчас в теме
(1)Да, это тоже можно обойти 👍
3. booksfill 22.11.23 09:53 Сейчас в теме
(1)Мне кажется, что лучше, если все сразу сломается.

Во-первых, если пользователь не найдет нужный элемент на своем месте, то он растеряется, особенно, если у вас что-то должно располагаться на определенной странице.
Да и появление "чего-то вдруг внизу", тупо сломает отображение остальных элементов, вплоть до невозможности нормальной работы.

Во-вторых, переименование/удаление стандартной группы, или элемента, может быть связано с изменением логики работы формы и это требует внимания программиста на самой ранней стадии.
EvgeniyOlxovskiy; NikitaIvanchenko; +2 Ответить
6. RocKeR_13 1325 22.11.23 13:28 Сейчас в теме
(3) Много есть факторов, которые влияют на принятие решения. Иногда нужно срочно накатить обновление на конфу с массой доработок (кого я обманываю: обновить - это всегда срочно))); все мы люди и не всегда клиенты готовы оплачивать трудозатраты на качественное тестирование. В итоге вышеприведенная причина вполне может случиться и в итоге, например, утром менеджеры не смогут зайти в заказы клиентов. Хорошо, если это маленькая компания, а если большая оптовая? В этом случае лучше пусть поля уедут вниз формы, но заказы будут оформляться, чем куча заявок и криков с утра) Пользователи все равно заметят, что на прежнем месте полей нет (может даже кто их сам отыщет и, приговаривая "ай-яй-яй, опять они 1С ОБНОВИЛИ...", заполнит) и заявку всенепременно отправят) В общем, как понимаете, это был вполне себе случай из практики :)
EvgeniyOlxovskiy; +1 Ответить
4. user1955966 22.11.23 10:09 Сейчас в теме
Никита, спасибо! Оч. круто!

Я перехожу с SAP на 1C - там такой проблемы в принципе быть не может. Даже в страшном сне не мог представить себе проблему с id.

Странно, что вендор, зная об этой проблеме, до сих пор не решил ее централизовано. Как минимум в качестве id мог бы быть GUID. Но, как говорится, работаем с тем, что есть...
NikitaIvanchenko; +1 Ответить
7. NikitaIvanchenko 266 22.11.23 23:43 Сейчас в теме
(4) отлично, рад что Вам пригодилось. А по поводу id и вендора, скорее всего он и не считает это проблемой.
5. пользователь 22.11.23 12:57
Сообщение было скрыто модератором.
...
8. Xershi 1486 23.11.23 13:35 Сейчас в теме
Я уже думал что то новое. Пару лет назад была похожая статья. И там всё это описали. Там кстати ещё оф пилили и там действительно проблема была. А с уф проблемы не те, тем более программно.
9. roman72 380 24.11.23 10:32 Сейчас в теме
Может быть всё дело в том, что не надо выстраивать разработку так, чтобы один объект/модуль пилили одновременно несколько разработчиков?
EvgeniyOlxovskiy; Cерый; +2 Ответить
10. NikitaIvanchenko 266 24.11.23 13:19 Сейчас в теме
(9)конечно, это тоже путь. А вот с поставщиком типовой, кто будет договариваться ?
11. roman72 380 28.11.23 10:48 Сейчас в теме
(10) А с поставщиком типовой договариваться не надо за болной бесполезностью сего действия.
Но незавсимо от этого подход к разработке можно выстроить так, чтобы сильно минимизировать фортели 1С в типовых от релиза к релизу.
NikitaIvanchenko; +1 Ответить
12. NikitaIvanchenko 266 28.11.23 10:53 Сейчас в теме
(11) А как можно выстроить процесс, когда например при добавлении новых элементов типовой форме, было кайфово, если от вендора прилетают изменения этой формы, в тч новые элементы ?
13. roman72 380 28.11.23 15:57 Сейчас в теме
(12)
Например, все свои и чужие (соисполнителей) добавки элементов на форму делать строго в отдельном (ых) закладках.
Это если достаточно контролировать несовпадение объектов по именам.

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

Это лишь два варианта из возможных.
14. Viktor_Ermakov 364 21.12.23 14:31 Сейчас в теме
А режим совместимости 8.3.14 выбран осознанно, или в расширении активно используются механизмы актуальные для 18 платформы? Почему спрашиваю, хочу использовать на конфе где режим совместимости 8.3.14
Спасибо!
15. TerveRus 10.01.24 11:48 Сейчас в теме
1. Если такая проблема с быстродействием через обработку, то почему не разместить общий модуль в расширении?
Зачем вообще внешняя обработка? Чтобы на лету дорабатывать?

2. Зачем заимствовать форму и добавлять строчку в "ПриСозданииНаСервере", если в типовых уже повсеместно используются общие модули "МодификацияКонфигурацииПереопределяемый" и "МодификацияКонфигурацииКлиентПереопределяемый", где как раз и вызывается общая процедура "ПриСозданииНаСервере"?

3. Вы меня извините, но паттерн builder читается и воспринимается мозгом, как абсолютная дичь) Ну может с непривычки).
А как с быстродействием, когда постоянно объект гоняется из функции в функцию?
Ну и порядок вызовов этих функций через точку все же имеет кардинальное значение какому элементу какое свойство установится.
17. Viktor_Ermakov 364 14.03.24 16:37 Сейчас в теме
(15)
Зачем заимствовать форму и добавлять строчку в "ПриСозданииНаСервере", если в типовых уже повсеместно используются общие модули "МодификацияКонфигурацииПереопределяемый" и "МодификацияКонфигурацииКлиентПереопределяемый", где как раз и вызывается общая процедура "ПриСозданииНаСервере"?

Не во всех типовых это есть

Вы меня извините, но паттерн builder читается и воспринимается мозгом, как абсолютная дичь) Ну может с непривычки)

Значит Вы еще не доросли до юнит тестирования, и не используете Yaxunit.
Это плохо, если Вы участвуете в создании продукта.
Формат очень удобный.
16. Viktor_Ermakov 364 14.03.24 16:35 Сейчас в теме
Скажите, а расширение планирует развиваться, ишузы прибавляются, а реакции пока не видно. Спасибо!
18. VVi3ard 52 23.04.24 17:25 Сейчас в теме
Интересный подход, как раз сейчас собираю информацию по этой теме, и пока меня крайне интересует момент с 5%.
Не совсем понятно как именно получали эти 5% но скорей всего для одного пользователя.
А если представить что речь идет о документе который активно используется в системе где работают 400-500 человек, не получится ли так что эти 5% будут иметь накопительный эффект?

И в целом проблема понятна когда мы говорим о типовой конфигурации и ее изменении с последующим обновлением на типовые релизы.

Но вы в статье упомянули что такой же подход можно использовать и в расширении, и вот тут не совсем понятно, зачем это использовать в расширении?
Минусы понятны:
1. Сложность разработки, сложность подключения новых людей (нужно фактически рисовать форму в голове у себя что бы понять куда что добавить).
2. Ломается кеширование формы что для нагруженных форм не лучший вариант.

А какие плюсы от использования такого подхода в расширении?
Оставьте свое сообщение