О синхронизации ИБ с проектом в EDT

Публикация № 1197800

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

EDT Разработка синхронизация

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

Ни для кого не секрет, что при разработке в EDT больше всего раздражают незапланированные длительные операции, и очень часто появление сообщения (назовём его "печальным") вида:

 

Грустное сообщение

 

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

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

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

В случае, приведённом выше операция, если проект класса ERP, даже на топовом оборудовании (Core i7, SSD, >16Gb RAM) может отнять около полутора часов на полную пересборку, причём она не пройдёт полностью автоматически: после длительного импорта и конвертации в формат EDT, чтобы добиться желаемой синхронности:

 

зеленогалка

 

нужно будет обновить конфигурацию ИБ и это будет тоже полная сборка.

Если говорить более конкретно, то моя патовая ситуация была такова, что я в EDT разрабатывал расширение для конфигурации ERP, а сама конфигурация была подключена к хранилищу 1С и была на железном, для меня, замке от того, что моя УЗ в репозитории 1С была только на чтение… Т.е. импорт то я бы сделал, но обновить конфигурацию ИБ не смог бы по определению, соответственно так как по отношению к проекту расширения основной проект не синхронизирован,  сборка обновления расширения производится не будет…

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

Возвращаясь к моему примеру, что я сделал, чтобы получить "печальное" сообщение:

  1. Открыл конфигуратор
  2. Получил изменения из хранилища, в котором было добавление предопределённого элемента в справочнике и два переименования других предопределённых элементов
  3. Обновил конфигурацию ИБ
  4. Закрыл конфигуратор
  5. В списке ИБ, для этой ИБ выбрал "Импортировать конфигурацию" и нажал в диалоговом окне кнопку обновить.

 

 

 

Что далее?

Далее всё. Выходом из этой ситуации поможет знание как устроен механизм синхронизации проекта EDT с информационной базой.

За заветную зелёную галку отвечает файл без расширения store, размещённый в служебном каталоге проекта Eclips'a:

<%1>\.metadata\.plugins\org.eclipse.core.resources\.projects\<%2>\com._1c.g5.v8.dt.platform.services.core\.default\infobase-synchronization\%3\SynchronizationData.store

Где:

  • %1 - путь к вашему workspace
  • %2 - имя вашего проекта как вы его видите в списке проектов панели навигатора 1С
  • %3 - UUID информационной базы, связанной с проектом %2, как он числится в файле
    • "%USER PROFILE%\AppData\Roaming\1C\1CEStart\ibases.v8i"

 

Содержимое файла, соответствующее зелёной галке, если его посмотреть в Notepad++ выглядит так:

 

 store

 

 

  • Если вы в EDT измените какие-либо объекты метаданных, затем закроете EDT и посмотрите содержимое, то пути к изменённым объектам, и связанных с ними для инкрементального обновления будут размещены через semicolon справа от последнего NUL, но запись  SYNCHRONIZED будет на месте.
  • А  вот если справа от последнего NUL не будет ничего, а вместо SYNCHRONIZED будет UNSYNCHRONIZED, то при попытке обновить конфигурацию ИБ у вас будет в любом случае полная выгрузка проекта в XML и полная сборка CF.

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

До окончания сеccии EDT список изменённых объектов храниться в файле log, лежащим рядом со store, по закрытии сесcии EDT, данные из log'a переносятся в store, а сам файл удаляется.

Наверное, вы сейчас подумали: "Ха, так достаточно заменить это файл store на сохранённый и будет всё тип топ - прощай унылая звезда и здравствуй зелёная галка!" Да, если погасить EDT, заменить этот файл, затем запустить снова, то заветный статус синхронизации в редакторе проекта будет присутствовать… Но, не всё так просто…

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

Общее размещение файлов на картинке:

 Структура каталогов

 

После первоначального импорта ИБ "на замке" или подключенной к хранилищу я Вам настоятельно рекомендую запаковать содержимое каталога %3 (см описание выше) и положить в укромное местечко. Как только появится унылое окно, они вас спасут :)

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

  1. Получить из новой ИБ файл ConfigDumpInfo.xml . Сделать это можно следующим образом:
    1. По 14ю платформу включительно:
      %4\1cv8.exe"  DESIGNER /AppAutoCheckMode /S %5 | /F %5 [/WA -] [/N %6] [/ConfigurationRepositoryF %7 [/ConfigurationRepositoryN %8] /DumpConfigToFiles %9 /Out %10
    2. Начиная с 15й платформы добавился ещё параметр:
      %4\1cv8.exe"  DESIGNER /AppAutoCheckMode /S | /F %5 [/WA -] [/N %6] [/ConfigurationRepositoryF %7 [/ConfigurationRepositoryN %8] /DumpConfigToFiles %9 -configDumpInfoOnly /Out %10

Где:

  • %4 - Путь к выполнимому файлу 1С
  • %5 - путь к ИБ в виде сервер\ИБ для модификатора /S или путь в файловой ИБ если использован модификатор /F
  • %6 - пользователь ИБ
  • %7 - путь к репозиторию 1С, если ИБ подключена к нему
  • %8 - пользователь репозитория
  • %9 - каталог куда положить CofigDumpInfo
  • %10 - лог, посмотреть если что не так пошло
  1. Положить полученный ConfigDumpInfo.xml в служебный каталог эклипса
  2. Заменить файл store на ранее сохранённый.
  3. Запустить EDT и убедиться, что имплант прижился.

 

Где ещё это может быть полезно?

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

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

 

 групповая структура

 

Т.е. в этом случае наша последовательность действий следующая:

  1. Если у первого (передающего) разработчика ИБ синхронизирована с рабочей областью, то он все результаты работы коммитит в ветку исправления/фичи и отправляет в совместный репозиторий. И передаёт ИБ другому разработчику (преемнику технического долга :)
  2. Помимо этого, первый разработчик закрывает EDT, архивирует содержимое каталога %3 включая структуру и так же передаёт второму разработчику
  3. Второй разработчик извлекает ту ветку, где были остановлены работы создаёт локальную ветку и присоединяет к ней в редакторе проекта информационную базу.
  4. Дожидается окончания обновления вторичных данных в прогрессе после извлечения (чекаута), после чего гасит EDT, находит каталог с присоединённой ИБ %3 у себя (идентификатор у нег естественно другой) и заменяет его содержимое на то, что отдал первый разработчик.
  5. Запускает EDT и проверяет - зеленогалка в редакторе проекта должна быть и при запуске отладки сборки проекта производиться не будет. Возможна некоторая задержка на сверку ConfigDumpInfo из присоединённой ИБ с тем, что подсунули в служебный каталог Эклипса… Небольшая для ERP на не топовом оборудовании (Core i3, HDD, 8 Gb RAM) - около 5 минут, на топовом и того меньше… Но это будет в десятки раз быстрее, чем полная сборка…

 

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

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Алексей Воробьев 108 20.02.20 07:16 Сейчас в теме
Конечно, это все костыли, но костыли нужные. Сам наталкивался на подобные проблемы именно при разработке расширрения ERP с хранилищем в основной конфигурации. Время теряется действительно много при доработках основной конфигурации или случайном изменении проекта основной конфигурации в EDT.
Спасибо за статью, попробуем использовать!
2. check2 137 20.02.20 07:40 Сейчас в теме
(1) К сожалению так. Я много раз просил разработчиков в ПК, чтобы сделали кнопку "эквивалентности" но тщетно. Просьбы были просто проигнорированы, не смотря на то, что на другие вопросы довольно активно разработчики в ПК отвечают. Что ж, надеюсь в будущем не поменяют механизм. А пока очень помогает. В особенности тем кто на саппорте сидит иногда в день по 3-4 раза переключают на проблемы, базы ещё не детские по размеру, штатными средствами EDT не наклонируешь и не наобновляешь. Делали всегда так, с какого релиза пришёл из продакшена, знали коммит (по метке) ветку bug_fix_NNNN открывали от этой метки, затем согласно инструкции выше присоединяли копию базы. Вся операция занимала 20 минут, включая и время разворота копии на SQL (пока база разворачивалась, создавали ветку в EDT, там же не мгновенно рабочая область обновляется). Время приближенное к реакции на конфигураторе вплотную. Ну а далее фиксили, тестили и коммитили...
Оставьте свое сообщение

См. также

1C:Enterprise Development tools (EDT) или кодим в Eclipse Промо

EDT v8 Бесплатно (free)

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

11.04.2015    78551    DitriX    297    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 4

EDT Бесплатно (free)

Сборка репозитория P2 на основе исходников плагина 1С:EDT для поставки пользователям.

27.12.2020    609    marmyshev    0    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 3

EDT Бесплатно (free)

Описание процесса создания UI-плагина для EDT с Quick-Fix по проверке.

08.11.2020    752    marmyshev    0    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 2

EDT Бесплатно (free)

Описание процесса создания плагина для EDT по валидации с квикфиксом.

07.11.2020    1525    marmyshev    1    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 1

EDT Бесплатно (free)

Введение в разработку плагинов для 1С:EDT. Цель: показать, что плагины для 1С:EDT можно делать быстро и легко.

17.10.2020    3866    marmyshev    24    

1С:EDT. Куда пинать, чтобы полетело?

EDT v8 УНФ Россия Бесплатно (free)

Работал в 1С Конфигуратор и решил перейти на 1С EDT. Не получилось сразу. Потребовалась модификация компьютера.

19.08.2020    5806    pa240775    33    

Unit-тесты с помощью 1C:Enterprise Development Tools

EDT v8 Бесплатно (free)

Концепция TDD требует перестроения подходов к разработке и наличия инструментов для запуска Unit-тестов. Про написание плагина для EDT, который содержит в себе инструменты написания, анализа результатов и запуска Unit-тестов для конфигураций 1С на конференции Infostart Event 2019 Inception рассказал ведущий специалист по внедрению компании 1С-Рарус Александр Капралов.

11.06.2020    5018    doublesun    8    

Установка EDT 2020.2 на Ubuntu 18.04

EDT Россия Бесплатно (free)

Установка EDT 2020.2 на Ubuntu 18.04 Заметки на будущее.

12.04.2020    3450    awk    14    

Enterprise Development Tools, версия 2020.2 для мобильной разработки. Бег по граблям (серия публикаций от чайника для чайников)

EDT v8::Mobile 1cv8.cf Бесплатно (free)

Небольшие советы, которые сберегут время при работе с Enterprise Development Tools, версия 2020.2.

10.04.2020    4922    capitan    8    

Технология разветвлённой разработки, использующая git, ci/cd

CI/CD Git (GitHub, GitLab, BitBucket) Методология управления разработкой EDT 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Адаптация и расширение требований к разветвлённой разработке с использованием git и ci/cd, основанное на стандартах 1С

24.02.2020    6969    check2    10    

EDT + УТ 11.4 + БП 3.0 + Расширения. ЧАСТЬ 03

EDT v8 Бесплатно (free)

Групповая разработка в EDT.

21.01.2020    4972    YuriYuriev    3    

EDT + УТ 11.4 + БП 3.0 + Расширения. Часть 02

EDT v8 Бесплатно (free)

Продолжение "путевых заметок" про EDT...

09.01.2020    6971    YuriYuriev    32    

EDT + УТ 11.4 + БП 3.0 + Расширения. ЧАСТЬ 01

EDT v8 Бесплатно (free)

...продолжаем мучить(ся с) EDT

28.12.2019    7285    YuriYuriev    8    

EDT 1.16. Первые 20 часов работы

EDT v8 Россия Бесплатно (free)

Первое знакомство с 1C:Enterprise Development Tools, версия 1.16.0.363.

25.12.2019    11871    YuriYuriev    13    

Как мы разрабатываем в EDT

EDT Инструментарий разработчика v8 Бесплатно (free)

EDT – это новая среда разработки, на которую сейчас перешли разработчики фирмы «1С». Однако до сих пор существует ряд «белых пятен», касающихся как теоретической, так и практической части применения этого инструмента. Про опыт перехода на разработку в EDT на конференции INFOSTART EVENT 2018 EDUCATION рассказал начальник сектора разработки в компании «Группа Полипластик» Владимир Крючков.

23.08.2019    14120    ivanov660    31    

1С:EDT. Первые шаги… или есть ли альтернатива конфигуратору?

EDT v8 Бесплатно (free)

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

15.08.2019    31667    ellavs    109    

Взгляд на практику разработки в EDT из зазеркалья

EDT v8 1cv8.cf Бесплатно (free)

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

26.07.2018    26730    ivanov660    115