Інкрементальний вивантаження конфігурації в xml, 1с задзеркалля

Реалізовано в версії 8.3.10.2168.

Ми продовжуємо розвивати механізм вивантаження / завантаження конфігурації в файли XML. Деякий час тому ми вже розповідали про те, що реалізували часткове завантаження конфігурації. Тепер ми реалізували зворотну операцію - часткову (Інкрементальний) вивантаження конфігурації.

В результаті цих двох змін групова розробка великих конфігурацій повинна стати легше і швидше.

Зміна логіки вивантаження

Головна зміна полягає в тому, що під час вивантаження конфігурації в файли XML тепер формується (або оновлюється) спеціальний службовий файл ConfigDumpInfo.xml. який називається файлом версій. Він зберігається в каталозі вивантаження разом з іншими файлами XML, і містить інформацію про формат вивантаження, про версії вивантаження, і про версії всіх об'єктів, які були вивантажені.

Таким чином тепер, проаналізувавши цей файл, платформа точно знає, які версії яких об'єктів містяться в вивантаженні. На підставі цієї інформації вона вивантажує тільки ті об'єкти, які були змінені по відношенню до вже вивантажені.

На практиці це виглядає наступним чином.

Якщо вивантаження виконується в перший раз (або якщо в каталозі вивантаження відсутня файл версій), то виконується повне вивантаження, генерується файл версій.

Якщо в каталозі вивантаження вже є файл версій, то вивантажуються тільки зміни конфігурації по відношенню до файлу версій, файл версій оновлюється.

Як приклад фрагмент файлу версій може виглядати наступним чином:

Сценарії використання

Цікавим моментом є те, що часткове розвантаження конфігурації в файли XML надає вам відразу кілька нових можливостей, які були відсутні раніше, або були складні в реалізації.

Оптимізація роботи 1C: Enterprise Development Tools

Ця можливість не вимагає від вас будь-яких зусиль, бо реалізується на рівні платформи. Звичайно ж, Інкрементальний вивантаження в файли XML ми, перш за все, задіємо в новому середовищі розробки. Це має прискорити роботу з великими конфігураціями, на які це середовище і розрахована. Завдяки тому, що тепер є можливість вивантажувати тільки змінені об'єкти, повинні прискоритися операції отримання змін з інформаційної бази.

Інтерактивна вивантаження

Цей сценарій дозволяє вам в процесі розробки періодично зберігати конфігурацію у вигляді файлів XML. Раніше для великих конфігурацій цей сценарій був практично неприйнятний, тому що кожен раз вивантажувалася вся конфігурація. А це могло займати багато часу.

Тепер же повне вивантаження конфігурації буде потрібно вам тільки в перший раз. Далі ви вносите конфігурацію і в певний момент просто викликаєте діалог вивантаження, вказуєте каталог, і натискаєте ОК. В результаті будуть вивантажені тільки ті зміни, які ви зробили в конфігурації з минулого вивантаження в XML.

Автоматичне оновлення XML вивантаження

Це варіація попереднього сценарію, коли зміни, виконані вами за день, автоматично зберігаються в XML вивантаження. Тут вам знадобиться написати скрипт, який запускається після закінчення робочого дня, і виконує, наприклад, таку команду:

В результаті в каталог вивантаження (C: \ xml) будуть збережені тільки ті зміни (-update), які зроблені з моменту попередньої вивантаження, тобто протягом дня.

update це новий ключ, який дозволяє оновити вивантаження, тобто вивантажити тільки ті файли, версії яких відрізняється від версій в каталозі вивантаження.

Автоматична модифікація або контроль конфігурації

Існує цілий ряд завдань, коли вивантаження конфігурації в файли XML використовується для автоматичної перевірки конфігурації або для виконання «регламентних» дій, не пов'язаних з прикладної логікою. Це може бути, наприклад, автоматизована перевірка конфігурації на відповідність стандартам розробки, прийнятим в компанії. Або автоматична модифікація ролей для нових об'єктів.

Загальним в цих завданнях є те, що конфігурацію попередньо потрібно вивантажити в файли XML. А іноді ще й завантажити назад. І тут, звичайно, Інкрементальний вивантаження конфігурації дозволить заощадити значну кількість часу в ланцюжку вивантаження - обробка - завантаження.

Контроль змін в конфігурації

Цей сценарій зручний в тому випадку, коли над однією конфігурацією працюють відразу кілька розробників. При цьому мається XML вивантаження, яка є еталонним станом конфігурації. Завдання полягає в тому, щоб при кожній зміні конфігурації зберігати інформацію про те, що змінилося. В цьому випадку розробник може виконати, наприклад, таку команду:

В результаті буде сформований файл (C: \ diff.txt), що містить зміни конфігурації (-getChanges) відносно встановленої вивантаження (C: \ xml). Якщо змін немає, то файл diff.txt буде порожнім.

getChanges це новий ключ, який дозволяє вивести в зазначений далі файл зміни поточної конфігурації щодо тієї вивантаження, каталог якої зазначений перед цим ключем.

Робота з системами контролю версій

Ще один сценарій групової розробки передбачає те, що вивантаження конфігурації у вигляді файлів XML зберігається у зовнішній системі контролю версій, з якої працюють всі розробники.

Тоді розробник, внісши свої зміни в конфігурацію локальної інформаційної бази, може виконати наступні кроки:

  • Отримати оновлення (Update) вивантаження конфігурації з системи контролю версій (якщо вони є);
  • Вивантажити змінені об'єкти з локальної інформаційної бази, наприклад, такою командою:
  • Зафіксувати зміни (Commit) вивантаження конфігурації в системі контролю версій.

Після цього інші розробники зможуть оновити (Update) свої копії XML вивантаження конфігурації.

Отримання «патча» для конфігурації

І, нарешті, останній сценарій використання часткового вивантаження конфігурації в файли XML дозволяє створювати своєрідні «патчі» з XML файлів конфігурації.

Наприклад, є конфігурація, яка зберігається і поширюється у вигляді XML вивантаження. Відомо, що ця конфігурація змінюється мало. В деякий момент в конфігурації були виявлені помилки.

Тоді перш, ніж виправляти помилки, ви фіксуєте (зберігаєте) XML вивантаження, відповідну цьому стану конфігурації, як еталонну. Після цього виправляєте помилки, і вивантажує тільки зміни, які стосуються виправлення помилок. Наприклад, такою командою:

Тут C: \ xml_source \ ConfigDumpInfo.xml це файл версій еталонної конфігурації, а C: \ xml_patch - каталог, в який будуть вивантажені тільки ті XML файли, які виправляють виявлені помилки.

configDumpInfoForChanges це новий ключ, який дозволяє вказати конкретний файл версій, від якого потрібно «відраховувати» зміни.

Якщо ж ви хочете не тільки вивантажити файли, але і отримати список змінених об'єктів, що містяться в вашому «патчі», то потрібно виконати таку команду:

Тоді інформація про зміни буде записана в файл C: \ diff.txt.