Как оптимально перенести актуальные цены в 1С:Управление торговлей 11.1 при начале работы с чистой базы?

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

Перенос данных в новую информационную базу «с чистого листа» — задача ответственная, особенно когда речь идет о ценообразовании. В конфигурации 1С:Управление торговлей 11.1 (УТ 11.1) работа с ценами завязана на справочнике номенклатуры, характеристиках и регистрах сведений. Если в вашей базе накопилось более миллиона записей в регистре ЦеныНоменклатуры, переносить всю историю не имеет смысла. Намного эффективнее создать актуальные документы Установка цен номенклатуры. Рассмотрим подробно, как это сделать оптимально.

Анализ исходных данных и выбор стратегии

Прежде чем приступать к переносу, проанализируем объем данных. Если у нас порядка 30 000 позиций номенклатуры с учетом характеристик и 13 видов цен, простая выгрузка регистра «как есть» приведет к переносу огромного количества лишней информации. Наша цель — получить срез последних значений на текущую дату и зафиксировать их в новой базе.

Существует три основных пути решения этой задачи:

  1. Использование механизма Конвертации данных 2.0 (КД 2.0).
  2. Загрузка через штатный механизм «Загрузка цен из внешнего файла» (Excel).
  3. Программное создание документов в базе-источнике с последующей пересылкой.

Способ 1: Перенос через Конвертацию данных 2.0

Этот метод считается наиболее надежным для программиста, так как позволяет полностью контролировать процесс сопоставления объектов. Разберем алгоритм настройки правил обмена:

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


ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
    ЦеныНоменклатурыСрезПоследних.Валюта КАК Валюта
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыСрезПоследних

После получения данных в обработчике ПередВыгрузкой или в самом ПВД нам необходимо программно сформировать структуру, которая будет соответствовать документу УстановкаЦенНоменклатуры. Выясним важный момент: система 1С:УТ 11.1 чувствительна к количеству строк. Если мы попытаемся «засунуть» все 30 000 позиций в один документ, мы столкнемся с проблемами производительности.

Практический совет: При выгрузке через КД 2.0 программно разбивайте данные на пакеты. Оптимальный объем — не более 5 000 – 10 000 строк на один документ. Это гарантирует, что база на PostgreSQL или даже на MS SQL не «упадет» по таймауту при проведении документа в новой базе.

Способ 2: Загрузка через внешний файл (Excel)

Если вы не хотите тратить время на написание правил в КД 2.0, воспользуемся штатным функционалом документа Установка цен номенклатуры. Рассмотрим пошагово:

  1. В старой базе сформируем отчет «Прайс-лист» или воспользуемся обработкой формирования цен, выбрав нужные виды цен и оставив только актуальные значения.
  2. Выгрузим результат в Excel.
  3. В новой базе создадим пустой документ Установка цен номенклатуры.
  4. Нажмем кнопку «Загрузить из внешнего файла».

Проанализируем риски этого метода. Главная проблема здесь — сопоставление характеристик. Если в новой базе характеристики еще не созданы или их внутренние идентификаторы (GUID) отличаются, система может их не найти. Убедитесь, что сопоставление идет по текстовому представлению или артикулу, и что структура характеристик (индивидуальные или общие) в новой базе идентична старой.

Технические нюансы и ограничения производительности

Рассмотрим важные детали, о которых часто забывают при миграции цен:

1. Статус документа. В УТ 11.1 цены начинают действовать только тогда, когда документ Установка цен номенклатуры проведен в статусе Согласован. Если вы переносите документы программно, обязательно устанавливайте это значение в коде:

ОбъектДокумент.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;

2. Расчетные и динамические цены. Выясним разницу: если вид цены в новой базе настроен как «Рассчитывать по формуле от других видов цен», то записывать в него фиксированное число через документ часто не имеет смысла. Правильнее перенести только «Базовые» цены (например, закупочные), а для расчетных цен в новой базе просто задать формулы. После этого нужно запустить обработку актуализации цен, чтобы система сама заполнила регистры на основании базовых значений.

3. Работа с характеристиками. Если номенклатура ведется в разрезе характеристик, количество записей в документе увеличивается кратно. Помните, что ограничение платформы на количество строк в табличной части (около 99 999) — это теоретический предел. На практике Установка цен выполняет сложные расчеты при проведении (проверку зависимых цен), поэтому при 30 000 позициях лучше создать несколько документов, разделенных по группам номенклатуры или видам цен.

Программный «лайфхак» через копирование базы

Рассмотрим еще одну интересную стратегию для опытных администраторов. Если структура баз абсолютно идентична:

  1. Создаем полную копию рабочей базы.
  2. В копии заходим в обработку «Цены (прайс-лист)».
  3. Выбираем все позиции и создаем на текущую дату новый документ Установка цен. При этом используем команду «Заполнить по действующим ценам».
  4. После проведения этого «финального» документа удаляем все старые документы установки цен.
  5. Выполняем свертку информационной базы.

В результате мы получаем чистый справочник номенклатуры и один (или несколько) документов с актуальными ценами, которые легко переносятся в целевую базу через стандартную выгрузку XML.

Резюме

Для успешного переноса цен в УТ 11.1 мы рекомендуем использовать комбинированный подход: перенести базовые цены (закупочные) через КД 2.0 небольшими порциями по 5 000 строк, предварительно убедившись в синхронизации справочников номенклатуры и характеристик. Расчетные цены лучше настроить в новой базе заново по формулам — это обеспечит чистоту данных и корректную работу алгоритмов ценообразования в будущем.

← На главную