Почему в 1С:Комплексная автоматизация 2 не заполняются цены в документах после переноса данных?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Управленческий учет Торговля и дистрибуция
← На главную

При настройке новой базы 1С:Комплексная автоматизация 2 (КА 2) или 1С:ERP специалисты часто сталкиваются с ситуацией: данные (номенклатура, характеристики, цены) перенесены из старой базы с помощью обработки «Универсальный обмен данными XML», документы «Установка цен номенклатуры» проведены, записи в регистрах присутствуют, но в «Заказах клиента» или «Реализациях» цена упорно не заполняется автоматически. Более того, выбор цены вручную также может быть заблокирован.

В этой статье мы подробно разберем, почему «визуально правильные» данные не работают в логике системы, проанализируем скрытые механизмы работы справочника ВидыЦен и выясним, как исправить ситуацию, не прибегая к полному ручному вводу данных.

Анализ ситуации: почему регистр заполнен, а цена не подтягивается?

Рассмотрим стандартную цепочку действий. Вы создали новую базу, перенесли справочники и документы установки цен. Проверили регистр сведений ЦеныНоменклатуры — там есть записи на нужную дату, с верной валютой и характеристиками. В СоглашенииСКлиентом или настройках склада указан правильный вид цены. Однако при выборе товара в документе продажи колонка «Цена» остается пустой.

Проблема кроется в том, что для корректной работы алгоритмов КА 2 недостаточно простого наличия ссылки в регистре. Объект ВидЦены (справочник ВидыЦен) должен обладать определенным набором корректно заполненных реквизитов, многие из которых являются служебными или не видны в стандартных формах при определенных настройках. При переносе через «Конвертацию данных 2.0» (КД 2) эти связи или специфические строковые идентификаторы могут быть повреждены или пропущены.

Решение 1: Проверка скрытого реквизита «Идентификатор для формул»

Проанализируем структуру справочника ВидыЦен. Одним из важнейших реквизитов в современных версиях КА 2 является ИдентификаторДляФормул. Этот реквизит используется системой для программного обращения к виду цены, особенно если цена является расчетной.

При ручном создании вида цены в интерфейсе 1С этот идентификатор формируется автоматически из наименования. Однако при загрузке через XML он может оказаться пустым или содержать недопустимые символы. Если система не может корректно разрешить этот идентификатор, механизм поиска цен в документах может давать сбой.

Разберем, как это проверить и исправить:

  1. Откроем справочник «Виды цен» и зайдем в карточку проблемного вида цены.
  2. Если реквизит «Идентификатор для формул» доступен на форме, проверим его заполнение. Он должен содержать текст без пробелов (например, РозничнаяЦена).
  3. Если реквизит не виден, попробуем изменить наименование вида цены (добавить символ и убрать его) и нажать «Записать». В типовых конфигурациях это инициирует процедуру ПередЗаписью, которая может дозаполнить служебные поля.

Решение 2: Флаги использования вида цены

В конфигурации 1С:Комплексная автоматизация 2 у каждого вида цены есть функциональные флаги, определяющие его назначение. Выясним причину, по которой вид цены может игнорироваться документами продажи:

При переносе данных через КД 2 часто сопоставляются только основные реквизиты (Наименование, Валюта), а эти флаги могут не перенестись, если они не были явно указаны в правилах обмена (ПКО).

Решение 3: «Оживление» объекта через программную перезапись

Как показывает практика, создание нового вида цены «руками» в новой базе решает проблему. Это происходит потому, что при интерактивном создании срабатывают все встроенные обработчики событий объекта. Если видов цен много, пересоздавать их вручную нецелесообразно. Мы можем заставить систему пересчитать служебные поля программно.

Рассмотрим пример кода для обработки перенесенных видов цен (использовать в консоли кода или внешней обработке):


Выборка = Справочники.ВидыЦен.Выбрать();
Пока Выборка.Следующий() Цикл
    ОбъектВидаЦены = Выборка.ПолучитьОбъект();
    // Инициируем обновление служебных реквизитов
    ОбъектВидаЦены.ОбменДанными.Загрузка = Ложь; 
    Попытка
        ОбъектВидаЦены.Записать();
        Сообщить("Вид цены обновлен: " + ОбъектВидаЦены.Наименование);
    Исключение
        Сообщить("Ошибка при записи: " + ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;

Важный момент: Установка ОбменДанными.Загрузка = Ложь обязательна, чтобы сработали алгоритмы проверки и заполнения ПередЗаписью, которые обычно отключаются при загрузке данных из XML.

Решение 4: Проверка настроек Соглашений и Склада

Если с самим видом цены все в порядке, проанализируем настройки, связывающие этот вид цены с документом. В КА 2 действует строгая иерархия приоритетов:

  1. Индивидуальное соглашение: Если оно указано в документе, система ищет цену, заданную именно в нем. Если в соглашении указан вид цены "А", а вы установили цены по виду "Б", автозаполнения не будет.
  2. Типовое соглашение: Работает аналогично, если индивидуальное не выбрано.
  3. Склад: В настройках склада (вкладка «Настройки продаж») также указывается вид цены. Он используется как «запасной» вариант.

Проанализируем ситуацию с переносом УИД (уникальных идентификаторов). Если вы перенесли Соглашение, но не перенесли связанный с ним Вид цены (или перенесли его как новый объект с другим УИД), то в поле «Вид цены» в Соглашении может отображаться «Объект не найден» или пустая ссылка, что блокирует подстановку цен.

Решение 5: Функциональные опции маркетинга

В новой «пустой» базе часто забывают включить ключевые функциональные опции, которые активируют механизмы ценообразования. Проверим следующие настройки (НСИ и администрирование -> Настройка НСИ и разделов -> CRM и маркетинг -> Маркетинг):

Рекомендации по правильному переносу через КД 2

Чтобы избежать подобных проблем в будущем, при настройке правил обмена в «Конвертации данных 2.0» для справочника ВидыЦен следуйте этим правилам:

  1. Всегда синхронизируйте объекты по УИД (Уникальному идентификатору), чтобы сохранить связи между Соглашениями, Видами цен и Документами установки.
  2. В ПКО (Правила конвертации объектов) для ВидыЦен убедитесь, что переносятся реквизиты ИдентификаторДляФормул, ИспользоватьПриПродаже и ВалютаЦены.
  3. После загрузки цен в новую базу всегда проверяйте регистр ЦеныНоменклатуры не только на наличие записей, но и на соответствие измерений (Характеристика, Единица измерения).

Подводя итог, можно сказать, что в 90% случаев проблема незаполнения цен после миграции данных в КА 2 связана с «недозаполнением» объекта ВидЦены служебной информацией, которая в типовых формах скрыта, но критически важна для внутренних запросов системы. Самый быстрый способ диагностики — ручное создание аналогичного вида цены и сравнение его поведения с перенесенным объектом.

← На главную