Реалізовано в версії 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.