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