Идеальное сочетание небольшого собственного продукта и EDT. Мы это используем не потому что модно, а потому что это реально решает наши проблемы

26.01.26

Разработка - EDT

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

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

У меня довольно большой опыт в проектной деятельности 1С и в разработке крупных проектов. Мы занимаемся IT-консалтингом, автоматизацией и разработкой собственных продуктов, в том числе продукта, который работает с маркетплейсами. Разрабатываем на платформе 1С RDV Маркет. Являемся официальным техпартнером четырех ведущих маркетплейсов России.

 

 

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

Что представляет из себя публичный интерфейс? Это система, которая работает в облачной среде RDV. Она является неким адаптером для работы с маркетплейсами. Под капотом она скрывает всю сложную логику взаимодействия с API маркетплейсов и в итоге выдает уже наш общий, унифицированный для всех API-интерфейс для работы со всеми маркетплейсами.

Сам API является отдельным продуктом и хорошо задументирован. Наше расширение – одно из возможных решений для работы с ним. Любая система, которая умеет общаться с HTTP-сервисами, может к нему подключаться и использовать.

 

EDT и его преимущества

 

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

Первое, это интеграция с Git. Это почти отдельная область знаний, много разных нюансов. И какая современная среда разработки без Git?

Инструменты в EDT богаче, чем в конфигураторе: это различные контекстные подсказки, больше возможностей по кодогенерации. Мощный инструмент, предельно детальный – сравнение и объединение объектов. Проверка кода фактически из коробки, это стандартный плагин от 1С.

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

Если чего не хватает и хочется дополнительно добавить в среду разработки, то пожалуйста: есть стандартные плагины от 1С, появляются плагины от сообщества, есть плагины, которые идут прямо от родной среды для EDT – Eclipse. Все это можно использовать.

 

Проблемы и ограничения EDT

 

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

  • типовые конфигурации,

  • ограниченное время,

  • ресурсы,

  • «плавающая» команда, которая зависит от стадии проекта: мы то подключаем разработчиков на проект, то отключаем, если объем разработки уменьшается.

Все это усложняет работу с EDT.

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

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

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

Процессы работы с EDT во всех командах так или иначе отличаются.

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

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

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

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

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

 

Причины выбора EDT для нового продукта

 

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

Предыдущая конфигурация у нас была построена на базе «Комплексной автоматизации». Это выливалось в определенные проблемы, когда мы обновляли конфигурацию. Типовая конфигурация – большая, тяжелая, и периодически требует больших технологических окон. А процессы, связанные с работой с маркетплейсами, оперативные. Даже ночью есть активность, заказы идут постоянно, то есть это круглосуточные процессы. Технологические окна ночью – это боль.

Плюсом проблемы с API маркетплейсов, которые вынуждают нас чаще делать обновления. API могут измениться без предупреждения – такое бывает. А бывает, что они просто перестают работать – и нужно бежать, быстрее искать решение, чтобы восстановить работу. И все это требует оперативности.

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

Мы знали про минусы EDT, что с большими конфигурациями работает тяжело. Но если у нас маленькая конфигурация, то нас это не касается. Решили попробовать.

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

 

Опыт работы с «монорепозиторием» и переход к распределенной структуре

 

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

 

 

С чего мы начали? Мы это назвали «монорепозиторий» – собрали в один репозиторий все: все конфигурации, расширения, типовые конфигурации, для которых разрабатываются расширения. Почему пошли именно по такому пути? Наверное, потому что раньше работали с хранилищями конфигураций 1С и конфигурация воспринималась как монолит.

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

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

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

 

 

Стало легче.

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

Если исправляем ошибки в релизной конфигурации, обратно переносим с помощью cherry-pick. Это инструмент Git, который позволяет взять отдельный коммит из одной ветки и перенести его в другую.

 

Проблемы синхронизации кода и переход на форки

 

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

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

 

 

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

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

Нужно было как-то это исправлять. Решили сделать инструмент, который просто пробежится по исходным файлам и все эти ошибки исправит:

  • определяемые типы просто разнесет на составные части,

  • лобальные модули сделает обычными, снимет соответствующую галочку,

  • несуществующие объекты в подсистемах удалит

и все это сделает программно через исходники EDT.

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

 

 

Мы подумали и решили, что нужно попробовать написать на Python подобный скрипт, который будет все это делать вместо обработки.

Получилась интересная задача. Написали библиотечки, скрипты, которые работают “как EDT”: парсят исходные файлы, представляют их как объекты. Мы настраиваем, какие объекты нужно перенести, с каким составом, какими реквизитами, и все работает. Произошел своеобразный реверс-инжиниринг исходников EDT.

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

Было ощущение, что должно быть какое-то простое решение. Надо посмотреть под другим углом, изменить систему координат.

 

 

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

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

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

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

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

Для расширений такой возможности нет: нельзя сделать поставку на основе расширения. Но с этой задачей прекрасно справляются EDT+Git и форки: делаем расширение как типовое, дорабатываем, потом через форк средствами Git обновляем.

Можно заметить, что “монорепозиторий” оказался для нас плохим решением. Собрать все в одну кучу в один репозиторий лишило возможности использовать стандартный функционал ветвления в Git для синхронизации кодовой базы. Оказалось разбивать репозитории по программным решениям с учетом иерархии предок-потомок и функциональности.

Если есть желание разрабатывать в EDT, и есть маленькая конфигурация, то это прекрасное сочетание, чтобы использовать все возможности EDT.

 

Архитектурные решения и слои абстракции

 

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

 

 

Мы для себя четко разделяем слои абстракции нашего решения:

  • Есть типовая конфигурация.

  • Есть наше расширение с объектной моделью, которая совершенно не зависит от типовых объектов.

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

Таким образом, в базовом форке мы разрабатываем основной функционал: все армы, функциональность. Работа с API построена на собственной объектной модели, а точка соприкосновения отвечает только за то, чтобы транслировать наши внутренние объекты в объекты типовых конфигураций.

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

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

 

Полезные фичи EDT, реально помогающие в разработке

 

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

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

Сначала сложно, но потом привыкаешь, код становится чище, организованнее. Такой код проще поддерживать, в нем меньше ошибок. Если ошибки находятся – их проще исправлять. Мы не громоздим нечто, не создаем себе проблем.

Наличие интеграции с Git в EDT позволяет нам использовать GitLab с merge requests. Мы используем это для выполнения ревью. Разработчик создает для себя отдельную ветку, разрабатывает в этой ветке, формирует merge requests, а технический архитектор или ведущий разработчик с помощью merge requests выполняет ревью.

Потрясающий инструмент в том плане, что:

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

  • Можно отметить: «Да, вот это я здесь проверил, все выполнено, а вот это можно поправить», чтобы ревьюер не возвращался, к ранее проверенным участкам кода, после внесения исправлений по замечаниям.

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

Мы используем техники Git быстрого переноса между ветками. Это удобно, взяли cherry-pick и с помощью него перенесли какое-то исправление бага из одной ветки в другую одну или несколько веток. Представьте, что мы делаем такое же в конфигураторе 1С, это будет сравнение-объединение. Мы сразу попадаем на то, что нужно что-то выгрузить или загрузить. Контекстная подсказка формируется путем анализа окружения в конфигурации. Допустим, мы где-то определили структуру, ниже используем ее, и она уже подсвечивается, показывается, какие ключи есть в этой структуре.

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

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

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

Еще есть интересный плагин YaxUnit для тестирования. Мы его пробуем, начинаем использовать.

 

Заключение

 

Мы разрабатываем много разного API, и было бы здорово, если бы на базе описания стандарта OpenAPI можно было бы сформировать структуру метаданных в конфигурации.

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

 

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

EDT Обновление 1С Программист Бесплатно (free)

На примере рассмотрим одну из стратегий обновления проекта на новый релиз поставщика через 1С:EDT.

19.01.2026    2047    eakomarov    11    

18

EDT Программист Стажер 1С 8.3 Россия Бесплатно (free)

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

22.12.2025    3969    chuevsf    8    

3

EDT Программист Стажер 1С:Предприятие 8 Россия Абонемент ($m)

Данная публикация посвящена работе с новым функционалом в 1С:EDT, а точнее ИИ 1С:Напарник. Этот материал будет полезен для начинающих программистов, а также для программистов, которые желают научиться работать в 1С:EDT с применением ИИ.

2 стартмани

05.11.2025    6195    chuevsf    7    

9

EDT Групповая разработка (Git, хранилище) Программист 1С:Предприятие 8 Бесплатно (free)

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

04.08.2025    9367    ZigRinat85    26    

45

DevOps и автоматизация разработки EDT Программист Бесплатно (free)

Цель статьи – показать, что DevOps можно внедрять в проектах любого масштаба, даже с ограниченными ресурсами. Автор делится личным опытом: рассказывает, как начиналось внедрение, какие ресурсы потребовались, какие задачи удалось решить и как организован текущий рабочий процесс. Вы узнаете, как DevOps-практики помогают участникам разработки и чем DevOps-инженеры полезны для всех, кто участвует в создании решений. В статье подробно разбираются преимущества, которые дал переход на EDT, его влияние на процессы сборки, а также анализируется опыт внедрения Kubernetes – что это уже принесло и что принесет в будущем.

11.07.2025    3968    ptica    0    

7

Групповая разработка (Git, хранилище) EDT OneScript Программист 1С:Предприятие 8 Бесплатно (free)

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    6055    AlexF1    4    

10

EDT Программист Бесплатно (free)

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

03.06.2025    4781    PetrovAnton    5    

9

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) EDT Программист 1С:Предприятие 8 Бесплатно (free)

В процессе использования 1С:EDT и репозитория Git для обновлений релизов доработанных конфигураций появилась необходимость в регулярной загрузке конфигураций от вендора 1С в Git-репозиторий. Описанное в статье решение позволяет автоматизировать эту операцию и может быть полезным специалистам, занимающимися обновлениями с использованием 1C:EDT+Git

21.05.2025    7600    vladimir_iclsoft    3    

23
Для отправки сообщения требуется регистрация/авторизация