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