Массовое изменение режима поддержки объектов конфигурации

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

Разработка - Конфигурирование 1С - Структура метаданных

35
Что делать, если при сравнении/объединении конфигураций нужно изменить режим поддержки для большого количества объектов? Штатного механизма для выполнения подобной задачи в Платформе нет. Изменять режим для всей конфигурации? Описывается способ, позволяющий выполнить изменение режима только для нужных объектов.

Как мы поступаем, если при сравнении/объединении конфигураций нужно изменить объект, находящийся на поддержке? Открываем диалог «Настройка поддержки», меняем нужному объекту режим на «Редактируется с сохранением поддержки» и возвращаемся к сравнению/объединению. А если таких объектов несколько? Повторяем процедуру для каждого из объектов. А если таких объектов, находящихся на поддержке, которые изменены в новой Конфигурации много (даже не известно сколько именно)? Тогда мы поступаем просто – меняем режим для всей конфигурации. Потому что изменить режим для большого количества объектов штатными средствами невозможно, а делать это поштучно – слишком трудо- и время-затратно.

В данной заметке я опишу подход, позволяющий решить эту задачу и другие подобного рода.

Если Вас интересует готовое решение и не важны детали реализации, можно сразу переходить к концу заметки.
 

Изменение режима для всей конфигурации (с флагом "Установить для подчиненных объектов")
 

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

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

Первый вопрос, который потребовалось решить – это понять какие конкретно объекты потребуют изменения режима и сколько их всего. Этот вопрос решается достаточно просто. Производится предварительное сравнение/объединение и выводится отчет о сравнении Конфигураций. Удобнее для данной цели отчет в текстовом виде и кратком формате. В файле отчета все объекты (и реквизиты) что изменены, будут помечены тремя звёздочками. Нужно лишь отфильтровать эти записи каким-нибудь способом – регулярными выражениями, построчным чтением в обработке или любым другим.
В результате имеем список измененных объектов (в моем случае – 509, включая корень конфигурации).
 

Список измененных объектов Конфигурации
 

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

Просмотр файлов выгрузки глазами не позволил найти места, где в явном виде был бы указан режим поддержки для объектов. Поэтому пришлось ставить эксперимент с использованием GIT-а. Инициализировал в каталоге выгрузки репозиторий, закоммитил исходное состояние, изменил режим объекта и выгрузил заново. GIT показал что изменено два файла - ConfigDumpInfo.xml и Ext/ParentConfigurations.bin. 
 

Изменения репозитория GIT при изменении режима поддержки для объекта
 

В файле ConfigDumpInfo.xml содержатся имена объектов, их идентификаторы и текущие версии - вряд ли это то, что мы ищем.

Заглядываем в ParentConfigurations.bin и видим, что он представляет собой стандартный 1С-овский «скобочный» файл, представляющий собой единственную километровую строку с идентификаторами. В таком файле утилитами сравнения неудобно смотреть, где и что именно изменилось. Поэтому заменяем запятые, разделяющие поля, на комбинацию «,\r\n» и сравниваем в таком виде. Теперь хорошо видно, что изменилось.
 

Результат сравнения файлов ParentConfigurations.bin
 

Отмечу, что данное изменение относится не к тому идентификатору, который идет непосредственно перед изменением, а к ближайшему следующему (выделен на скриншоте).

Теперь нам известно, что для решения задачи нужно изменить 0 на 1 для всех идентификаторов, соответствующих измененным объектам из списка. Значит, требуется для каждого объекта списка определить его идентификатор. С этим нам поможет уже упоминавшийся файл ConfigDumpInfo.xml, ведь в нём есть и имена объектов, и их идентификаторы. 
 

Файл ConfigDumpInfo.xml
 

Но есть и небольшое затруднение – в файле имена видов объектов – англоязычные. 
Для примера, в списке у нас «ПланОбмена.ОбменУправлениеХолдингомДокументооборот20.Макет.ПодробнаяИнформация», а в файле – «ExchangePlan.ОбменУправлениеХолдингомДокументооборот20.Template.ПодробнаяИнформация». 

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

Для поиска идентификаторов в файле и дальнейшего изменения файла ParentConfigurations.bin была создана простенькая обработка. В ней для каждой строки списка измененных объектов производится замена русских терминов на англоязычные, поиск идентификатора объекта в файле ConfigDump.xml, замена вхождения «,0,0,<GUID>,» на «,1,0,<GUID>,» в файле ParentConfigurations.bin.
 

Измененный файл ParentConfigurations.bin
 

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

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


 

Закрываем Конфигуратор, выполняем команду в режиме командной строки:
"C:\Program Files\1cv8\<ВашаВерсия>\bin\1cv8.exe" DESIGNER /S<server>\<base> /N<Юзер> /P<Пароль> /LoadConfigFromFiles "<КаталогВыгрузки>" -Files "<КаталогВыгрузки>\Ext\ParentConfigurations.bin"

Здесь есть особенность – после запуска команды сразу же происходит возврат к приглашению ввода следующей, без ожидания завершения текущей команды и можно решить, что команда не работает. На самом деле, если посмотреть диспетчером задач или ProcessExplorer ом, видно, что процесс 1cv8.exe запущен. Нужно дождаться его завершения.
 

Процесс конфигуратора, запущенный в пакетном режиме
 

Вновь запускаем Конфигуратор, видим значок восклицательного знака, указывающий на то, что открытая конфигурация отличатся от конфигурации БД. Выборочно проверяем установленные значения в диалоге «Настройка поддержки» и убеждаемся в том, что желаемый результат достигнут.
 

Успешный результат изменения режима поддержки
 

Задача выполнена. Можно продолжить сравнение/объединение с встраиваемой Конфигурацией. 

Готовое решение

В приложенной обработке реализованы все этапы процесса.

1. Чтение файла отчета о сравнении с фильтрацией записей об изменении Объектов Конфигурации.

2. Чтение файла ConfigDumpInfo.xml и сопоставление идентификаторов измененных Объектов.

3. Изменение режима в файле ParentConfigurations.bin

4. Запуск Конфигуратора в пакетном режиме для обновления измененным файлом.

Обработка для массового изменения режима поддержки объектов Конфигурации

Протестировано на версиях Платформы 8.3.10.2561, 8.3.14.1630.

35

Скачать файлы

Наименование Файл Версия Размер
Массовое изменение режима поддержки объектов конфигурации:
.epf 11,29Kb
05.11.19
1
.epf 11,29Kb 1 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Жолтокнижниг 249 08.11.19 22:44 Сейчас в теме
Отлично написано, все по полочкам, зачем почему и как.
2. Xershi 762 08.11.19 22:49 Сейчас в теме
А какой смысл менять 99 из 200?
Все объекты меняются. Затем создается хранилище. И делай что хочешь.
Но ваш случай скорее в обратном. Когда старый разработчик вот так тыкался и вообще с поддержки снял! И чтобы не тыкаться поднимая поддержку можно использовать ваш метод загрузки из файлов.
3. -vito- 228 09.11.19 11:03 Сейчас в теме
(2) Максим, смысл и целесообразность каждый для себя может определить самостоятельно.
Цель публикации - продемонстрировать один из возможных подходов, и поделиться инструментом, который сделал для себя.

Насчет возврата на поддержку, не всё так просто. Я проводил этот эксперимент, конечно же. Загрузка из файла вернет значки замка на все объекты, которым будет установлен 0, но определять были ли изменены объекты, и при необходимости, загружать их из Конфигурации Поставщика, всё-таки придется сравнением с этой КонфигурациейПоставщика.
4. 7OH 32 12.11.19 11:49 Сейчас в теме
На днях обновлял БУХУ.
Тоже снимал с поддержки.
Только выписал имена объектов нужных и снял с мультивыделением.
Есть некоторые но - чтобы снимать рекурсивно - все выделенные объекты должны иметь внутренности, иначе галка рекурсии недоступна.
5. Olenevod 24 17.11.19 18:19 Сейчас в теме
Здорово! Возьму а заметку. Бывали случаи когда надо было восстанавливать замки.
6. athena 23.11.19 00:18 Сейчас в теме
Спасибо! Воспользовалась идеей, чтоб вернуть объекты на поддержку.
Ошибочно было включено редактирование всех объектов конфигурации, хотя изменения были не такими значительными.

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

См. также

Имена метаданных и синонимы 4

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 v8::УФ УПП1 Россия Абонемент ($m) Структура метаданных

Обработка показывает имена объектов конфигурации и их синонимы.

1 стартмани

13.12.2019    171    Senator_I    4       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

Расширим общую форму "Расширения", чтобы по метаданным расширения полнее понять, для чего это расширение 1

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) БСП (Библиотека стандартных подсистем) Структура метаданных Расширения

Показывает метаданные расширения в общей форме БСП "Расширения" В конфигурации должна быть БСП. Версия платформы должна быть не меньше 8.3.13 Режим совместимости текущего расширения: 8.3.12 Для работы расширения безопасный режим должен быть отключен.

1 стартмани

07.11.2019    1835    2    K_A_O    0       

Карта метаданных 1С для редактора yED, для любых конфигураций 10

Инструменты и обработки no Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Структура метаданных Работа с интерфейсом

Обработка "Карта метаданных 1С для редактора yED". Для отображения метаданных любых конфигураций

1 стартмани

28.10.2019    2088    6    ManyakRus    1       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.