В процессе разработки и сопровождения типовых решений на платформе 1С:Предприятие одной из самых частых задач является сравнение и объединение конфигураций. Однако многие разработчики сталкиваются с неприятной ситуацией: запустив длительный процесс сравнения, они обнаруживают, что нужный объект находится «на замке» (заблокирован для редактирования), и внести в него изменения или принять обновления невозможно без перезапуска всего процесса. Разберем подробно, почему так происходит, и какие существуют способы решения этой проблемы.
Проанализируем архитектуру стандартного Конфигуратора. Когда мы запускаем процедуру через меню «Конфигурация — Сравнить, объединить с конфигурацией из файла» или «Поддержка — Обновить конфигурацию», система открывает специализированное окно. Основная проблема заключается в том, что это окно является модальным.
В терминах интерфейса это означает, что пока открыто окно сравнения, доступ ко всем остальным функциям основного окна Конфигуратора заблокирован. Мы не можем параллельно зайти в «Настройку поддержки», чтобы снять «замок» с объекта. Платформа 1С жестко фиксирует состояние метаданных на момент начала сравнения. Если объект был нередактируемым (находился на строгой поддержке), то в рамках текущей сессии сравнения его статус изменить «на лету» стандартными средствами нельзя.
Рассмотрим ситуацию, когда мы выполняем сравнение с конфигурацией поставщика. В этом случае у нас чуть больше маневренности. Разберем по шагам, что можно сделать:
Объект поставщика редактируется с сохранением поддержки.Важный нюанс: выясним, сработает ли это всегда. Если сама «Конфигурация в целом» не была предварительно переведена в режим возможности редактирования (через Настройку поддержки), то попытка изменить правила для отдельных объектов внутри окна объединения может быть заблокирована или не принесет результата при попытке сохранения. Система выдаст предупреждение о том, что конфигурация находится на поддержке без возможности редактирования.
Проанализируем альтернативный инструмент разработки — EDT. В отличие от старого Конфигуратора, EDT построена на базе Eclipse, что в корне меняет подход к работе с модальностью и метаданными.
Выясним, почему в EDT этой проблемы не существует:
Рассмотрим, как это выглядит на практике: при возникновении конфликта в коде, вы просто открываете панель Staging, запускаете Merge Tool и спокойно работаете с текстом, имея полный доступ ко всему функционалу среды разработки одновременно.
Для опытных разработчиков, работающих с большими объемами данных, рассмотрим метод предварительной подготовки объектов. Если мы знаем, что нам придется объединять много объектов, заблокированных для редактирования, мы можем воспользоваться параметрами командной строки для пакетного изменения правил поддержки.
Пример логики сценария (скрипта), который можно запустить перед сравнением:
// Пример параметров запуска Конфигуратора для пакетной настройки
1cv8.exe DESIGNER /F "ПутьКБазе" /N "Логин" /P "Пароль" /UpdateCfg /SetCfgModifiable /SetObjectModifyMode "Справочник.Номенклатура" EditWithSupport
Использование подобных команд позволяет автоматически подготовить конфигурацию к объединению, чтобы не сталкиваться с блокировками в ручном режиме.
Проанализируем типовые ошибки. Часто разработчик пытается объединить изменения, выбирает флажки, настраивает правила внутри окна, нажимает «Выполнить», и спустя 10 минут ожидания получает ошибку: «Объект не может быть изменен, так как он не редактируется». Чтобы этого избежать, разберем алгоритм правильной подготовки:
Объект поставщика редактируется с сохранением поддержки.Посмотрим на ситуацию с точки зрения эффективности. Если вы часто сталкиваетесь с необходимостью «подправлять» объекты во время слияния, это явный сигнал к тому, что пора рассмотреть переход на 1C:EDT. Это снимет архитектурные ограничения старого Конфигуратора и позволит работать с кодом гораздо гибче.
Мы выяснили, что в классическом Конфигураторе 1С включить возможность редактирования объекта непосредственно внутри модального окна сравнения (если объект изначально был закрыт) практически невозможно без перезапуска процесса. Однако, понимая механизмы работы правил поддержки и используя современные инструменты вроде EDT, мы можем значительно оптимизировать этот процесс и избежать потерь времени на повторные сравнения конфигураций.