Внедрение поддержки конфигурации поставщика в проект на EDT

18.01.24

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

Внедрение поддержки конфигурации поставщика в проект на EDT

 

Предпосылки

  1. Мы ведем разработку крупного проекта в EDT (написан на базе 1С:БП, но по сути, практически полностью самописная конфигурация). Разработка ведется полностью в EDT + gitlab. Конфигурация полностью снята с поддержки.
  2. Параллельная команда разработала собственную конфигурацию, которую надо встроить в нашу конфигурацию

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

 

Дисклеймер

  1. Все написано на основании собственного опыта, вероятнее всего есть более правильные решения, буду рад, если вы поделитесь идеями в комментариях, как улучшить предложенную схему.
  2. Чтобы не нарушать NDA, для примера будем использовать репозиторий простой конфигурации на базе БСП. (Надеюсь, автор репозитория не будет сильно против). В качестве «Конфигурации поставщика» будет нечто небольшое, состоящее из справочника и регистра сведений. Наша задача пройтись по процессу, а не решить реальную задачу.
  3. Данная статья написана для тех кто уже работает с EDT и Git, или планирует переход на данный стек. Мы не будем останавливаться на вопросах зачем делать свою конфигурацию на поддержке другой (чтобы иметь возможность обновлять функционал от поставщика), не будем сравнивать функциональность с конфигуратором, решать что лучше или хуже (личное мнение - пока, на конфигураторе удобнее), глубоко вникать в суть работы с Git и его терминологию (на этот счет написано достаточно много статей и дублировать их тут особого смысла нет).
    Цель статьи - пошагово рассказать в практическом примере, как организовать возможность разработки собственного продукта на поддержке конфигурации от стороннего вендора, подсветить возможные "подводные камни", показать, на что стоит обращать внимание.
  4. Конечно, такой вариант разработки не подходит для текущего сопровождения типовых баз. Если Вы дорабатываете типовую конфигурацию от 1С для конечных пользователей, лучше использовать "классические механики", точечно включая возможность изменения для конкретных объектов конфигурации, максимально сохраняя поддержку. Описанная методика в большей степени, подходит для разработки собственного тиражного продукта, или для "инхаус-разработки"
  5. Мы рассмотрим подход к разработке, декларируемый Вендором. Возможно, есть иные, более удобные, в каких-то ситуациях, подходы, однако мы рассмотрим именно тот, который показала Фирма 1С.
  6. Предполагаем, что Читатель знает, как выполнить те же действия (добавить еще одну конфигурацию поставщика), используя конфигуратор, знает, что из конфигурации поставщика нужно в его проекте, а что нет)

 

Внедрение

Существует известная проблема о том, что EDT не работает с поставкой в "классическом" для нас, 1С-ников, понимании. То есть, мы не можем менять правила поддержки объектов конфигурации поставщика, не можем создавать собственные поставки и так далее. На смену этим практикам приходит git.

Итак, первое, изучим видео от 1С:

Организация командной разработки в 1C:EDT - расширенная часть 

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

Кратко: нам необходимо создать в репозитории проекта отдельную ветку, в которой будет храниться конфигурация поставщика. Затем, с помощью слияния веток, мы будем переносить необходимый функционал в свой проект. При необходимости, сможем обновить ветку с конфигурацией поставщика и снова слить с нашим проектом. Звучит несколько сложнее, чем то к чему мы привыкли (на самом деле и на практике все посложнее), однако необходимо разобрать этот вопрос для полноценной работы в стеке Git + EDT.

 

Создание ветки вендора, подготовка репозитория

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

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

git checkout --orphan VendorBranch

здесь:

  • git checkout – команда гиту переключиться на ветку;
  • --orphan – ключ указывающий, что новая ветка будет создана root-коммитом;
  • VendorBranch – имя новой ветки.

 

Возвращаемся в EDT и в панели Навигатор видим, что здесь тоже переключилась ветка.

 

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

 

Долгий способ

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

 

Удаляем вместе с содержимым проекта:

 

После удаления, если перейти в перспективу «Файлы», увидим, что проект в EDT отображается, как пустой:

 

Если проверить каталог локального репозитория, мы увидим, что проекта в нем нет. Но остались файлы, которые не были включены в конфигурацию – это могут быть «README.md»: проекты внешних отчетов и обработок, проекты расширений, или, например, файлы скриптов CI/CD-контура (или любые другие сопроводительные файлы). Эти файлы тоже надо удалить. Иначе в дальнейшем, они могут нам мешать обновлять версию конфигурации поставщика.

 

Поэтому, надо удалить эти файлы из проводника, консоли и т.д.

Удаляем файлы.

 

Быстрое удаление

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

git reset --hard

Теперь, в результате обоих способов, мы имеем пустой проект в EDT, готовый к загрузке новой конфигурации поставщика. В каталоге репозитория должен остаться только один файл – скрытый “.git”

 

Загрузка конфигурации

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

 

----------

Почему конфигурация снимается c поддержки

 

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

 

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

----------

 

Закроем конфигуратор, вернемся в EDT и импортируем эту конфигурацию в проект с таким же именем, какое установлено у основного проекта.

 

Нажимаем «Импорт» и получаем проект

 

Сейчас, как видим, проект не связан с репозиторием. Идем в контекстное меню «Групповая разработка» – «Общий проект»

 

Здесь, указываем репозиторий

 

Проект был связан с репозиторием

 

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

 

В итоге, у нас есть отдельная ветка, содержащая конфигурацию поставщика.

 

Слияние в основной проект

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

Итак, я переключусь на основную ветку (main), и создам от нее «feature/Task1» для слияния с конфигурацией поставщика.

 

На перспективе Git можем увидеть, как сейчас выглядит дерево репозитория: есть дерево основного проекта и «отдельно висящий» коммит конфигурации вендора

 

Далее, нам необходимо слить feature/Task1 с VendorBranch – можем выбрать ветку в панели «Репозитории Git» - в этом случае происходит слияние с последним коммитом ветки, или же выбрать конкретный коммит в дереве

 

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

Так же, как и сказано в видео от 1С, ставим флаг «Открыть редактор сравнения/объединения (даже при отсутствии потенциальных проблем)» - нам нужно будет настроить, как минимум, слияние свойств конфигурации

 

В дереве слияния по умолчанию, установлен фильтр «потенциальные проблемы»

 

Но для нас важно проанализировать не только их, но все отличия конфигураций. Для этого, установим фильтр "Без фильтра"

 

Скорее всего, не понадобится переносить такие свойства, как "Версия", "Имя", "Синоним конфигурации", информация о поставщике и т.д. (конечно, для каждой конфигурации, набор свойств следует проанализировать отдельно, на основе того, что требуется в конкретном проекте) Чаще всего, вам могут пригодиться только изменения в модулях.

Настройте слияние объектов и нажмите на кнопку «Объединить», выполните объединение и убедитесь, что все необходимые объекты созданы, код обновлен корректно.

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

 

Конфигурация внедрена корректно, можно переносить доработки в основную ветку, согласно вашему flow.

 

Обновление конфигурации вендора

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

По этому, следующая тема, которую нам надо рассмотреть – это обновление конфигурации.

 

Обновление ветки поставщика

Переключаемся на ветку VendorBranch и запускаем Конфигуратор

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

Почему не подходит сравнение-объединение? Если в конфигурации было изменено имя объекта метаданных и создан новый с тем же именем (например, меняем имя регистра на «Vendor_УдалитьРегистр» и создаем новый с именем «Vendor_Регистр»), то при сопоставлении новый и старый могут быть сопоставлены по имени и данные будут перенесены некорректно. Поэтому, пока лучшее решение, чем полная загрузка конфигурации найдено не было (может, коллеги в комментариях подскажут метод лучше?)

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

 

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

 

 

 

 

Здесь, так же, в стратегии сопоставления, сопоставляем по UUID, чтобы новый регистр не сопоставился со старым по наименованию (в реальном проекте, к сожалению, такой артефакт случился)

Убедимся, что изменения «затягиваются» в проект

 

Коммитим изменения в репозиторий

 

Ветка обновлена. Осталось перенести изменения в проект.

 

Слияние в основной проект

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

В том числе, объекты БСП. Например, в реальной задаче вылезла проблема с модулем БСП ПодсистемыКонфигурацииПереопределяемый – в основном проекте у него один UUID, в конфигурации поставщика – другой. Сопоставить можно по имени, но в этом случае, некорректно сопоставляются переименованные объекты конфигурации (Регистр – УдалитьРегистр) – решение этой проблемы пока не придумалось.

Что ж, создаем новую ветку от основной и сливаем ее с необходимой версией вендора

 

Сравниваем по UUID и открываем редактор сравнения даже при отсутствии проблем. Разрешаем конфликты, если они есть, и объединяем ветки

 

Проверяем, что все объединилось корректно

 

И если нас все устраивает, переносим изменения в основную ветку согласно flow разработки. Если сливать в интерфейсе EDT, это выглядит примерно так. Регистры сопоставляются корректно.

 

Дерево репозитория после всех махинаций выглядит так

 

Голубая ветка – main
Коричневая (или оранжевая?) – ветка вендора
Зеленая – фича-ветка при первом слиянии
Желтая – фича-ветка при обновлении.

 

Выявленные проблемы, которые пока не понятно как решить

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

Проблема

Текущее решение

Изменение uuid в типовых объектах (БСПшных) Менять uuid вручную на тот, который указан в основном проекте. Если не найду более подходящее решение – видится логичным просто заскриптовать это изменение.
Объект был удален и добавлен новый с таким же именем
(в данном случае появляется дубль, мешающий объединению)
Менять uuid вручную на тот, который указан в основном проекте
Удаление объектов в конфигурации поставщика
(при слиянии они не удаляются в основном проекте, надо чистить вручную)
После слияния с основным проектом, запустить отдельно базу с конфигурацией вендора, найти удаленные объекты, убедиться, что они удалены в основном проекте, или удалить вручную
Объекты БСП заменяют собой существующие
Пример - ПодсистемыКонфигурацииПереопределяемый
Всегда объединять вручную
Настроенные при внедрении объекты метаданных (например, определяемые типы) после обновления надо контролировать. При слиянии веток их тип заменяется на указанный в ветке поставщика  

 

Наверняка, у этих проблем есть (или, может, появится) более простое решение. Было бы интересно послушать мнение коллег.

 

Заключение

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

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

Надеюсь, инструкция будет полезна тем, кто столкнется с такой задачей в будущем.

EDT типовая конфигурация поддержка

См. также

INFOSTART TECH EVENT 2024, 10-12 октября, Санкт-Петербург

Мероприятия Россия Платные (руб)

XIV конференция по управлению и технологиям автоматизации учета на платформе 1С:Предприятие, которая пройдет в Санкт-Петербурге и соберет 1200 участников из разных регионов России и мира.

42000 руб.

06.12.2023    6267    289    0    

70

Оркестратор 1С

Технологические Конфигурации 1cv8

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

92000 руб.

04.12.2023    6127    0    0    

20

Модуль интеграции 1С и Wildberries+Яндекс Маркет по схеме FBO+FBS для УТ 11, КА, ERP, УНФ

Маркетплейсы Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Оптовая торговля, дистрибуция, логистика Ювелирная промышленность и торговля Фармацевтика, аптеки Легкая промышленность, мода и одежда Пищевая промышленность Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Расширение позволяет работать из 1С с площадкой Wildberries, Яндекс Маркет (без публикации базы) по Схеме FBS и FBO В FBO реализован механизм сборки коробов по штрих кодам в Wildberries. Отличительная особенность легкая настройка и информативный управленческий учет! Всего через 15 минут вы сможете полностью автоматизировать свои продажи на WB и ЯМ и узнать какую итоговую выручку вы получаете за вычетом всех комиссий ВБ и ЯМ. Исключите штрафы за продажу товара отсутствующего на складе и не своевременную передачу кодов маркировок, легкий и интуитивно понятный интерфейс позволит перенести всю работу с площадкой в 1С. Есть Демо.

30000 руб.

17.07.2023    7972    26    16    

28

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

Поддержка Для ИТ-специалистов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

29900 руб.

26.12.2023    1897    9    0    

2

Обмен с системой ФГИС Зерно через API для любых конфигураций (универсальная подсистема ХамелеонЗерно)

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

Универсальная конфигурация ХамелеонЗерно для взаимодействия с системой ФГИС Зерно (тестовый+рабочий контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Работа через API 1.0.5 и на API 1.0.7. Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом ФГИС Зерно, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе ФГИС Зерно и наоборот.

124800 руб.

27.06.2023    3116    20    0    

8

1С:Распознавание первичных документов

Для бухгалтерии и кадров Конфигурации 1cv8 Россия Платные (руб)

Это сервис, который распознает и исключает необходимость ввода первичных документов в 1С.

600 руб.

11.07.2023    13213    94    0    

42

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 25 июня по 18 июля 2024г.

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

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

8500 руб.

04.12.2023    4341    1    2    

124

Таймлист (1С:Совещание, Таймлист Лайт)

Документооборот и делопроизводство (СЭД) Конфигурации 1cv8

«Таймлист» – экосистема сервисов («Таймлист Лайт», «1C:Совещание», «Таймлист Recorder»), основанная на искусственном интеллекте Таймлист, который позволяет эффективно работать с легкими поручениями за счет фиксации всех важных идей при расшифровке и последующем формировании автопротокола встречи. Сервисы, в которые интегрирован ИИ, позволяют работать с задачами (поручениями), полученными из автопротокола.

10000 руб.

06.12.2023    1525    0    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Brawler 455 20.11.23 20:26 Сейчас в теме
"Нравятся" мне базы данных у клиентов переживших нечто подобное, когда их оставляют те кто это творил)))
8 лет доработками 1С ERP занимаемся только в расширениях конфигураций и в классическом хранилище конфигурации 1С. Да команда не большая, до 10 человек, но все же даже мысли не возникает за GIT, избыточное это все, технологии ради технологий, ну это мое ИМХО, которое другие могут не разделять. Порог вхождения новичков зашкаливает как по мне. Тут бы просто найти программиста 1С, а не вот это вот все)))

P.S.
EDT тоже не применяем.
7OH; VAAngelov; smit1c; EliasShy; Oculta; maksa2005; qwinter; ixijixi; MyProject; sys1c; t278; +11 Ответить
3. AntonChausov 228 21.11.23 13:13 Сейчас в теме
(1) Странно ругать инструмент, если он не подходит для ваших задач.. Можно забивать гвозди микроскопом, но зачем? Конечно, для внешнего сопровождения в 90% случаев EDT не нужен, мне кажется, это очевидно (10% оставим на заказчиков, у которых просто есть такая хотелка - надо вести проект в EDT+Git, сталкивался с такими в бытность работы во франчах)..

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

У меня речь про инхаус-самописку, по сути, о чем и сказано в самом начале :)
serg-lom89; unichkin; chekha-ukhta; muhin.a.s; brr; iron_admin; +6 Ответить
13. 7OH 69 23.01.24 09:00 Сейчас в теме
(3) гвозди микроскопом - это как раз поддержка поставки через ЕДТ.
Сколько боли в статье, и сколько надо сделать в конфиге.
9. amiralnar 9 19.01.24 13:20 Сейчас в теме
(1) А как у вас организовано тестирование?
10. Brawler 455 19.01.24 18:49 Сейчас в теме
(9) Ничего сверх естественного.

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

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

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

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

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

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

В условиях, когда и ТЗ от юзеров нет (особенно когда даже речь у них бессвязная порой), и все в торопях (ну как это бывает, срочные отгрузки, нужно что-то такое сотворить чтобы что-то там понять, а все ли мы сделали и тд. и тп. срочно нужен отчет, а то меня уволят), и времени особо нет, вполне действенный метод разработки. Программисты прокачанные и с высокими навыками дискомфорта не испытывают от процесса разработки (ну кроме что под гоняний под зад юзерами, а бывают и угрозы директором, а кто через это не проходил???). Лбами редко приходится биться на захваченных одних и тех же объектах в хранилище конфигураций. Новички чуть более трепетнее подходят к тестированию.

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

Меня больше состояние сверх протестированной вдоль и поперек и около платформы 1С пугает.
Пример. На днях вырубили свет, а на тестовом сервере стоит 8.3.24 крайняя. И вот вырубили свет, а MS SQL сервер отдельный в другом здании находится и вот связь пропала, а у меня похоже была нажата кнопка сохранить конфу, а может и не нажата, но я уверен был, что все как миниму до этого было применено. И вот вырубается свет, вырубается связь. Сервера оба от ИБП пашут в разных зданиях. И вот включается свет и у меня в конфигураторе утрачена вся работа за день по всем захваченным объектам. При этом!!! Если запустить на исполнение, то там все выполняется, что понаписал за день. Попытки обратиться к конфигурации ИБ чтобы ее сохранить ни к чему не привели, там так же как чистый лист, при этом ну как бы по конфигурации ИБ сама ИБ и работает, но как оказалось нет. Вот что пугает больше, неизвестность и отсутствие контроля над платформой. По итогу даже отменив захват всех объектов, ничего лучше стало, база не обновлялась, отключился от хранилища, подключился, подтянулся слепок конфигурации, давай его применять, и там ошибка с аварией вылетела, мол конфигурация повреждена в базе, досвидос, и вылет. Поднимал базу с нуля из ночного бэкапа и с чистого листа все по новой делать.

Был опыт, что применялись изменения расширения динамически, а потом произошел некий глюк, а потом потребовалось ребутнуть сервер, а база все больше не стартует, вернее кластер 1С не стартует с той базой, как было замечено сожрет пусть там будет 10 МБайт памяти и застывает, а нормально когда все ну он кудаааааа больше жрет. Начался простой предприятия. И только экстренные меры в MS SQL помогли, пришлось рубить все записи в таблице с файлами конфигурации и копировать из тестовой базы))) Экстренные ситуации требуют неординарных решений и действий. Поднятие из бэкапа не помогло бы, так как бэкапы делались 1 раз ночью по простой схеме, а авария произошла после обеда. Да для базы свыше 500 гигов это стремно, но так было на прошлой работе, что я сделаю, эта тема была на админах.

Я например понимаю, что вот алгоритмы зашитые в платформе они поддаются автотестированию, там мало общения с пользователем, там больше операций атомарных, каждую из них проверить не сложно думаю, но не те, где как в бизнес логике нужно нажать кнопку эту, а потом эту, а тут надо так, а тут так, по сути миллиарды комбинаций разных нажатий может быть. Не рассказывайте тока, что такое есть в автотестировании, но это дурь ИМХО. НИКОГДА за 24 года занятия программированием мне такое не пригодилось. Ну может кому и нужно чтобы демонстрации работы делать и прикрывать зад, но в нашем случаем мы этим не страдаем, накосячил один, другие выручают, это плюсы работы в команде на постоянной работе при промышленном предприятии.
2. kauksi 216 21.11.23 10:19 Сейчас в теме
напоминает Закат Солнца вручную
JohnyDeath; 7OH; asupsam; qwinter; unichkin; starik-2005; +6 Ответить
4. starik-2005 3040 21.11.23 15:09 Сейчас в теме
Работаем в конторе с ЕДТ только ради ГИТ. Даже ярые фанаты ЕДТ уже в ЕДТ нажимают кнопку "Открыть конфигуратор" и пилят там, потом переносят в ЕДТ через импорт, чтобы накатить на ГИТ. Раз в неделю после очередного слияния валится тестовая база и приходится накатывать ее с бэкапа. Сегодня после очередного такого слияния померла тестовая, привязанная к релизной ветке - полдня на восстановление (ага, ТиИ написало, что что-то там не поддерживается в данном режиме совместимости, реструктуризация там на сутки, так что подняли бэкап, а это несколько связанных друг с другом баз). Очень круто так работать...
improg; asupsam; smit1c; qwinter; +4 Ответить
5. user1636469 21.11.23 15:10 Сейчас в теме
11. acsent 1200 20.01.24 16:53 Сейчас в теме
(4) Можно же просто выгружать в гит, без всякого едт. Всякие sync git итд
12. starik-2005 3040 21.01.24 20:03 Сейчас в теме
(11)
Всякие
А как понять, какие файлы изменились, и сколько ждать полной выгрузки из 1С? Это все не быстрые операции. Так что ЕДТ для гита, конфигуратор для разработки.
14. JohnyDeath 301 30.01.24 09:57 Сейчас в теме
(12) так давно ж есть инкрементальная выгрузка. В том числе и через автономный сервер.
ЕДТ ж не делает что-то своё сверхъестественное, он также выполняет пакетные команды над конфигуратором (а с недавних пор и с возможностью через автономный сервер)
15. starik-2005 3040 30.01.24 10:11 Сейчас в теме
(14)
инкрементальная выгрузка
В моей ЕДТ она работает не каждый день, т.к. периодически по каким-то своим внутренним причинам просит обновить систему полностью. А у соседей, у которых ЕРП, даже самые рьяные сторонники ЕДТ работают в конфигураторе, ибо даже с инкрементальностью дождаться обновления ни у кого терпения не хватает.
16. JohnyDeath 301 30.01.24 10:12 Сейчас в теме
(15) я к вопросу о том, зачем вам вообще ЕДТ в вашей схеме, если её используют только для выгрузки в исходники?
17. starik-2005 3040 30.01.24 10:17 Сейчас в теме
(16)
только для выгрузки в исходники
ЕДТ - это и есть "исходники". Она нам нужна, чтобы в гитлаб конфу класть и ложить.
18. JohnyDeath 301 30.01.24 10:19 Сейчас в теме
(17) исходники - это не ЕДТ.
Исходники - это файлики с текстами модулей, метаданных и пр.
"Класть и ложить" - это обычные команды git.
Так и не понял для чего вам ЕДТ? Или вы другого более удобного гит-клиента не нашли?
19. starik-2005 3040 30.01.24 10:24 Сейчас в теме
(18)
Так и не понял для чего вам ЕДТ?
Суть - да, гитклиент. Была попытка там разрабатывать, но она уперлась в скорость и удобство работы. В итоге ЕДТ остался только как механизм получения из гита, покладения в гит и уже вроде как все.
20. JohnyDeath 301 30.01.24 10:29 Сейчас в теме
(19) в качестве гит клиента рекомендую: https://gitextensions.github.io/
А выгрузка в исходники - это одна команда. При чем, если использовать автономный сервер, то можно даже не выходить из конфигуратора:
"c:\Program Files\1cv8\8.3.24.1342\bin\ibcmd.exe" infobase config -c "...\конф-файл-автономного.cfg" export --sync --force --data=d:\tmp\ibcmd-data\ "\каталог-исходников" < d:\файл-лого-пасса-базы
21. starik-2005 3040 30.01.24 10:45 Сейчас в теме
(20) Ну вот такой кейс, например: я в конфигураторе поменял несколько объектов, вернулся в ЕДТ, импортировал изменения - это достаточно быстрая операция. Дальше я зашел на вкладку гита, выбрал модуль, указал задачу в жире, зафиксировал и отправил. Дальше я взял второй модуль, зафиксировал и отправил, указав вторую задачу из жиры. Как мне такой кейс с помощью вашей строки командной организовать?
22. JohnyDeath 301 30.01.24 11:32 Сейчас в теме
(21) После того как ты сделал что-то в конфигураторе, наверное приходится закрывать сам конфигуратор и потом открывать едт и уже запускать там импорт. Правильно? С открытым конфигуратором оно вряд ли заработает, потому что работает не через автономный сервер.

А вообще процесс без ЕДТ будет примерно такой:
0. Сделали изменение в конфигураторе. Конфигуратор не закрываем.
1. Запуск этой команды синхронизации исходников (по идее делать будет быстрее, чем едт, т.к. едт еще толком не научилась работать с автономным сервером)
2. Открываете любой гит клиент например тот, что я писал выше.
3. Фиксируем изменения, указав задачу в комментариях (я же правильно понимаю, что для связи с жирой надо просто указать номер задачи с решеткой?)
4. Аналогично со вторым изменением.

Но в твоем случае, возможно командная строка немного изменится, потому что скорее всего ты уже хранишь исходники в формате ЕДТ, а сейчас они будут выгружаться в формате конфигуратора. Т.е. надо будет добавить еще одну команду преобразования из одного формата в другой
23. starik-2005 3040 30.01.24 16:46 Сейчас в теме
(22) Конфигуратор - да, но ЕДТ открывать и закрывать не надо. Прям на конфе ПКМ и "Открыть конфигуратор". Конфигуратор секунд 10 открывается, а вот ЕДТ - да, долго. Но из конфигуратора - это полбеды, хочется ведь и в конфигуратор изменения накатывать с гита, желательно перед этим на них посмотреть в части изменений. Тут ЕДТ справляется. Ну и при создании коммитов файлы открываются из синхронизации в сравнении. В итоге кейс работы с ЕДТ у меня такой:
1. Получить ориджн
2. Слить/перемотать с девлоп.
3. Получить изменения из конфигуратора.
4. Просмотреть изменения.
5. Поправить при необходимости.
6. Сохранить локальный мердж между гитом и конфигуратором.
7. Фиксануть изменения по задачам.
8. Обновить конфигурацию.
9. Зайти в конфигуратор и продолжить творить добро дальше.
6. unichkin 1565 18.01.24 17:42 Сейчас в теме
Я бы в статье еще дал рекомендацию установить и настроить плагин EDTEditing, для блокировки объектов поставщика и исключений их из проверок.
Кстати, не понял - а трехсторонее сравнение как сделать?
Встречал еще где-то способ, в котором конфа поставщика хранится в сабмодуле. Сейчас имеется опыт применения сабмодулей в EDT - есть линия сборки CI\CD, которая таким образом прикручена к нескольким проектам. Разрабатывать скрипты CI удобно, но вот EDT с ним бывает глючит. Не страшно для CI скриптов, но с т.з. конфы поставщика в отдельной репе - на текущий момент даже думать об этом не стоит.
Это все только выглядит красиво, к сожалению.. На деле куча заморочек, больше для гиков. Сейчас как раз обновляю встроенные БСП, БЭД, БИП - через конфигуратор сильно удобнее.
7. TimkoNzt 19.01.24 09:54 Сейчас в теме
Как-то скользь описан сам процесс обновления основной конфигурации. Я правильно понял, чтобы обновиться на очередной релиз вендора, вы обновляете его ветку и сравниваете ветки между собой? В ЕДТ это весьма медленная операция. Сначала программе приходится полностью извлечь эту ветку, и потом строить сравнение по всему дереву. Гораздо быстрее идёт сравнение между двумя лежащими рядом проектами, плюс появляется возможность сравнения пачки объектов, а не всей конфигурации, это ещё быстрее. При этом проект вендора можно держать в том же репозитории, обновлять под своей веткой и закрывать когда он не нужен.
8. AntonChausov 228 19.01.24 10:53 Сейчас в теме
(7) Да, проект вендора в отдельной ветке, мержим именно их. Собственно, как и рекомендовали 1С в приведенном в начале видео.
Ваш способ - интересный, поэкспериментирую с ним, спасибо! От части, статью для этого и писал - чтобы найти более удачные решения :)
24. Keath 24 31.01.24 17:16 Сейчас в теме
В git влюбились, когда поняли, что 15 типовых баз в разных подразделениях имеют 8 версий одной и то же внешней обработки. Теперь любой чих, даже: "ой, в слове Комментарний на форме ошибка, уберите лишнюю букву, а то не красиво", прогоняем через git и поддерживаем историю версий. Путь ценой дополнительного времени на всю эту движуху "git ради git".
Поэтому не согласен, что EDT он только для своей внутренней разработки.
Иногда прилетают задачи от новых клиентов разобраться с помойкой после целой цепочки предыдущих разработчиков в жутко переписанных базах. Без EDT можно было со старта отказываться от таких задач, ибо через Конфигуратор формы сравнивать то еще удовольствие, а в EDT для этого все есть.

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

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