При работе с крупными внедрениями или распределенными командами часто возникает ситуация: разработчик готовит обновление на копии базы, доводит ее до рабочего состояния, выгружает финальный cf файл, но при попытке загрузить его в рабочую базу (которая подключена к хранилищу конфигурации) сталкивается с проблемой — кнопка «Загрузить конфигурацию из файла» недоступна. В этой статье мы подробно разберем, почему это происходит и какими способами можно выполнить обновление, сохранив при этом историю изменений в хранилище и правила поддержки.
Разберем причину такого поведения платформы. Хранилище конфигурации 1С — это система версионирования, которая отслеживает изменения каждого объекта метаданных по отдельности. Операция «Загрузить конфигурацию из файла» является деструктивной: она полностью заменяет структуру метаданных текущей базы структурой из файла (проанализировать которую поможет Информер по метаданным). Если бы эта операция была разрешена при подключенном хранилище, это привело бы к необратимому нарушению связей между объектами в базе и их версиями в хранилище. Поэтому платформа блокирует этот путь, заставляя разработчиков использовать механизмы захвата и помещения объектов.
Этот метод считается наиболее «чистым» и правильным с точки зрения методологии 1С. Рассмотрим его по шагам:
dt) и перенести на свой рабочий компьютер, где нет прямого доступа к серверу хранилища.захвачено. Платформа помнит, что именно этот пользователь в этой базе захватил объекты.cf или cfu), редактировать код и метаданные. Все изменения будут фиксироваться в нашей локальной базе.Важное предостережение: Проанализируем риски этого метода. Если во время вашей «оффлайн» работы администратор хранилища выполнит операцию Удалить захват объектов принудительно, вы не сможете просто так вернуть свои изменения. Хранилище сочтет ваши локальные версии устаревшими или конфликтующими.
Если нет возможности работать в «оффлайн» режиме или захват всех объектов затруднен, воспользуемся вторым методом. Разберем ситуацию, когда у нас уже есть готовый cf, полученный после успешного обновления копии.
Просто выполнить «Сравнить, объединить с конфигурацией из файла» недостаточно, так как это не обновит Конфигурацию поставщика. Правильный алгоритм действий будет следующим:
Конфигурация — Поддержка — Обновить конфигурацию.cf поставщика или cfu).Конфигурация — Сравнить, объединить с конфигурацией из файла, выбирая наш подготовленный cf с доработками.Часто после массового объединения объекты переходят в статус «Редактируется с сохранением поддержки». Если объектов тысячи, проставлять правила вручную невозможно. Посмотрим, как автоматизировать этот процесс:
Откроем окно «Настройка поддержки» (Конфигурация — Поддержка — Настройка поддержки). Выделим корень конфигурации и нажмем кнопку «Установить правило». В появившемся диалоге выберем Объект поставщика не редактируется и обязательно установим флаг Установить для подчиненных объектов.
Важный нюанс: Платформа применит правило «замок» только к тем объектам, которые идентичны объектам поставщика. Если вы внесли в объект хотя бы одно изменение (добавили реквизит или изменили строку кода), он останется в статусе «редактируется», что позволит вам не потерять свои доработки.
Проанализируем интересную особенность (иногда называемую «багом» хранилища), которую можно использовать в работе. Если выполнить последовательность действий:
В некоторых версиях платформы объект может остаться на полной поддержке («на замке»), но при этом содержать ваши изменения. Однако полагаться на это поведение в промышленной разработке не рекомендуется, так как это может затруднить последующие обновления.
Для успешного обновления в среде с хранилищем всегда придерживайтесь правила: сначала обновляем конфигурацию поставщика, затем накатываем свои изменения через сравнение/объединение. И всегда делайте архивную копию базы .dt и самого файла хранилища перед началом глобальных манипуляций.