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

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

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

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

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

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

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

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

На днях мне довелось столкнуться с такой ситуацией при встраивании отраслевого решения в типовую конфигурацию, которая нами уже достаточно серьезно дорабатывается под нужды Заказчика и требует регулярного обновления релизами 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.

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

Наименование Файл Версия Размер
Массовое изменение режима поддержки объектов конфигурации:

.epf 11,29Kb
23.04.20
5
.epf 11,29Kb 5 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Жолтокнижниг 250 08.11.19 22:44 Сейчас в теме
Отлично написано, все по полочкам, зачем почему и как.
2. Xershi 982 08.11.19 22:49 Сейчас в теме
А какой смысл менять 99 из 200?
Все объекты меняются. Затем создается хранилище. И делай что хочешь.
Но ваш случай скорее в обратном. Когда старый разработчик вот так тыкался и вообще с поддержки снял! И чтобы не тыкаться поднимая поддержку можно использовать ваш метод загрузки из файлов.
3. -vito- 480 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 Сейчас в теме
Спасибо! Воспользовалась идеей, чтоб вернуть объекты на поддержку.
Ошибочно было включено редактирование всех объектов конфигурации, хотя изменения были не такими значительными.

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

См. также

Соответствие структуры базы данных с SQL таблицами

Структура метаданных v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Данная обработка выводит соответствие структуры базы данных с SQL таблицами в режиме управляемого приложения.

1 стартмани

22.06.2020    654    2    user1425179    0    

Быстрый (но тернистый) путь к метаданным картинок в 1С

Структура метаданных v8 1cv8.cf Абонемент ($m)

Задача звучала так: прочитать GPS-геометки из картинок. Всё закончилось бы как у всех, кто брался за эту задачу, – сторонним сервисом или утилитой. Но в обсуждении кто-то сказал, «да 1С так не сможет» …

1 стартмани

15.04.2020    1068    2    утюгчеловек    4    

Просмотр данных объекта

Структура метаданных Универсальные обработки v8 v8::УФ 1cv8.cf Абонемент ($m)

Просмотр данных объектов ссылочного типа: элементов справочников, документов, бизнес-процессов, задач.

1 стартмани

18.02.2020    1487    1    armeec    1    

Структура хранения базы данных в виде таблицы Excel (управляемые и обычные формы)

Структура метаданных v8 v8::УФ 1cv8.cf Абонемент ($m)

Простая обработка получает таблицу соответствия таблиц СУБД объектам конфигурации 1С и сохраняет ее в файл MS Excel (XLSX). Мне лично нужна была для анализа SQL-запросов, генерируемых 1С.

1 стартмани

31.01.2020    1459    1    w.r.    3    

Инструментарий для анализа и редактирования регистров 1С (Управляемые формы)

Структура метаданных Прочие инструменты разработчика Механизмы бухгалтерского учета Механизмы оперативного учета Расчетные механизмы v8::УФ 1cv8.cf Абонемент ($m)

Набор инструментов для анализа и манипулирования записями регистров накопления, сведений, бухгалтерии и расчёта. Обладает широким спектром возможностей для отбора и редактирования. Для тех, кто работает с ЕРП.

2 стартмани

17.12.2019    5124    42    Азбука Морзе    18    

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

Структура метаданных v8 v8::УФ УПП1 Россия Абонемент ($m)

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

1 стартмани

13.12.2019    1778    0    Senator_I    4    

Сравнение структуры метаданных неограниченного числа конфигураций

Структура метаданных v8::УФ 1cv8.cf Абонемент ($m)

Опять слетела часть галочек в подписке на событие при сравнении/объединении с новым типовым релизом? Потеряли новый документ регистратор при переносе в продакшн?

1 стартмани

13.12.2019    2142    7    An-Aleksey    2    

Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)

Администрирование СУБД Производительность и оптимизация (HighLoad) Администрирование данных 1С Структура метаданных v8 Абонемент ($m)

Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

10 стартмани

27.11.2019    10158    36    akpaevj    46    

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

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

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

1 стартмани

07.11.2019    5668    3    K_A_O    0    

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

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

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

1 стартмани

28.10.2019    5573    12    ManyakRus    9    

Оценка заполненности базы

Инструментарий разработчика Структура метаданных v8 1cv8.cf Россия Абонемент ($m)

Количество записей в базе. Просмотр списков метаданных

1 стартмани

22.10.2019    2199    0    XACHAPURIN    2    

Структура метаданных: отчет с возможностью отбора по количеству объектов в БД (СКД, без БСП, 8.2, 8.3, код открыт)

Структура метаданных v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Подходит для любой конфигурации 1С 8.2-8.3; БСП не используется. Разработан с применением системы компоновки данных (СКД). Перед вычислением количества объектов выполняется проверка доступа на чтение таблицы объекта. Обрабатываемые типы объектов: Константа, Документ, Справочник, Регистр сведений, Регистр накопления, Регистр бухгалтерии, Регистр расчета, Бизнес процесс, Задача.

3 стартмани

08.12.2017    10158    56    TuneSoft    1    

Размер таблицы SQL базы 1С

Статистика базы данных Сервисные утилиты Администрирование СУБД Структура метаданных v8 1cv8.cf Россия Абонемент ($m)

Обработка для анализа структуры БД в виде таблиц SQL, их объемов и объемов индексов таблиц. Писалась для анализа в целях оптимизации работоспособности и быстродействия 1С. Будет полезна администраторам и разработчикам, в целях поиска нужной таблицы в SQL по метаданным конфигурации. Две обработки: 1. "Размер таблицы SQL базы 1С не УФ" - не управляемые формы - работает на любой конфигурации 1С 8.2/8.3 (тестировалась УПП 10.3, КА 1.1, ЗУП 2.5 и т.д.) 2. "Размер таблицы SQL базы 1С УФ" - под управляемые формы - работает под любыми конфигурациями 1С 8.3 (тестировалась УТ 11)

1 стартмани

11.04.2017    18116    105    Mouros    5