Цены поставщика из Excel, XML и YML в базу 1С 8.3 без ручного набора

· 11 мин

Содержание

Чтобы загрузить прайс-лист в 1С 8.3, цены почти всегда заносят через документ «Установка цен номенклатуры»: создают документ на нужный тип цен, а табличную часть заполняют из файла. Заполнить её можно встроенной командой загрузки из файла или универсальной обработкой загрузки данных из табличного документа. Номенклатуру из прайса сопоставляют с вашим справочником по артикулу, коду или штрихкоду. После проведения документа новые цены действуют с его даты.

Типичная ситуация: поставщик раз в месяц присылает прайс на 3 000 позиций, менеджер правит цены руками два дня и всё равно ошибается в десятке строк. Загрузка прайсов в 1С снимает эту работу. Время уходит на одну настройку соответствия колонок, а дальше каждый новый файл ложится за 10–15 минут вместе с проверкой.

1. Подготовка прайса в Excel перед загрузкой

Файл поставщика почти никогда не готов к импорту «как есть». В нём шапка с логотипом, объединённые ячейки, группы товаров строкой-заголовком, цены с пробелами. Обработка загрузки ждёт простую таблицу: одна строка — один товар, одна колонка — одно поле.

Порядок подготовки:

  1. Сохраните копию файла поставщика. Работайте только с копией.
  2. Удалите всё над строкой заголовков: логотип, реквизиты, контакты, «Действует с…».
  3. Снимите объединение ячеек на всём листе.
  4. Удалите строки-заголовки групп («Крепёж», «Электрика»), если в них нет цены. Если группа нужна, вынесите её в отдельную колонку.
  5. Оставьте нужные колонки: артикул, наименование, единица измерения, цена. Остальное можно удалить или просто не сопоставлять.
  6. Приведите цены к числу: уберите «руб.», «р.», пробелы между разрядами, замените точку на запятую, если так настроена система.
  7. Сохраните результат в .xlsx. Для старых обработок под обычные формы иногда нужен .xls или .mxl.

Артикулы и штрихкоды переведите в текстовый формат ДО вставки данных. Иначе Excel срежет ведущие нули (00451 станет 451), а длинный штрихкод превратит в 4,6E+12. Такие строки потом не найдут пару в 1С.

Отдельно проверьте дубли артикулов. Если у поставщика один артикул встречается дважды с разными ценами, программа запишет одну из них, и не факт, что правильную. Условное форматирование «Повторяющиеся значения» в Excel находит такие строки за минуту.

2. Загрузка прайс-листа встроенной командой и универсальной обработкой

Способов два, и они дополняют друг друга.

СпособКогда подходитОграничения
Команда загрузки в табличной части документаЦены на товары, которые уже есть в справочникеНовую номенклатуру не создаёт или создаёт с минимумом реквизитов
Загрузка в список номенклатурыНужно завести новые позиции вместе с ценамиНабор колонок ограничен формой загрузки
Универсальная обработка загрузки из табличного документаНестандартный файл, свои правила поиска, большие объёмыНужны права на открытие внешних обработок

Встроенная загрузка в документ цен

В 1С:Бухгалтерии 3.0 документ находится в разделе Склад → Цены → Установка цен номенклатуры. В 1С:Управление торговлей 11 аналогичный документ ищите в разделе ценообразования (CRM и маркетинг), там же лежит справочник «Виды цен».

  1. Создайте новый документ и укажите тип цен, который хотите обновить.
  2. Над табличной частью откройте меню Ещё и выберите команду загрузки из файла.
  3. Программа покажет шаблон-таблицу. Вставьте в неё колонки из Excel через буфер обмена или укажите файл.
  4. Сопоставьте колонки: какая — артикул, какая — цена.
  5. На шаге сопоставления 1С покажет, сколько строк нашла, сколько не распознала и сколько неоднозначных. Нераспознанные можно сопоставить вручную или пропустить.
  6. Перенесите строки в документ, проверьте несколько цен глазами и проведите его.

Универсальная обработка

Универсальная обработка «Загрузка данных из табличного документа» (файл ЗагрузкаДанныхИзТабличногоДокумента.epf) — внешняя обработка, её берут с диска ИТС. Открывают через Файл → Открыть (в интерфейсе «Такси» — меню с тремя полосками в заголовке окна). Платформа предупредит о безопасности внешнего файла, подтвердите открытие, если доверяете источнику.

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

В Бухгалтерии 3.0 регистр «Цены номенклатуры» подчинён документам. Писать цены в него напрямую через режим загрузки в регистр не получится — только через документ. Так даже лучше: у каждой загрузки остаётся документ с датой, и неудачную загрузку легко отменить, сняв проведение.

3. Сопоставление номенклатуры поставщика с вашим справочником

Главный приём практика: решить заранее, по какому полю искать товар. От этого зависит, сколько строк ляжет автоматически.

  • 🔑 Артикул — самый надёжный ключ, если вы заводили номенклатуру с артикулом поставщика.
  • 🏷️ Штрихкод — хорош для розничных товаров. Требует, чтобы штрихкоды были внесены в базу.
  • 🔢 Код 1С — работает, только если поставщик знает ваши коды (обычно это ваш внутренний файл, а не его прайс).
  • 📝 Наименование — крайний вариант. «Болт М8х40 оцинк.» и «Болт оцинкованный М8*40» для программы разные строки.

В универсальной обработке для колонки табличной части задаётся режим загрузки: искать значение, установить фиксированное или вычислить выражением. Для колонки «Номенклатура» выберите поиск и укажите поле поиска — артикул или код. Если поиск не дал результата, ячейка останется пустой, а строка попадёт в протокол.

Если артикулы поставщика не совпадают с вашими, заведите «таблицу перевода» один раз:

  1. Выгрузите из 1С список номенклатуры с кодами в Excel (отчёт или список → Ещё → Вывести список).
  2. Рядом поставьте артикул поставщика и проставьте пары. Для 3 000 позиций это день работы, но разовый.
  3. Внесите артикул поставщика в карточки номенклатуры той же загрузкой в режиме справочника: ищем по коду, записываем артикул.
  4. Дальше каждый новый прайс находит товары по артикулу сам.

В Управлении торговлей 11 для этого есть отдельный механизм номенклатуры поставщиков: позиция поставщика хранится со своим артикулом и наименованием и связывается с вашей номенклатурой. Если ведёте закупки в УТ, пользуйтесь им, а не перезаписывайте артикулы в своей карточке.

Сопоставление полей
Артикул (прайс поставщика)→Номенклатура (поиск по артикулу)
Наименование→Только для контроля, не загружать
Ед. изм.→Проверить совпадение с единицей в карточке
Цена, руб.→Цена (табличная часть документа)
Валюта→Валюта типа цен

4. Загрузка прайсов из XML и YML файлов

Крупные поставщики и маркетплейсы отдают прайс не в Excel, а в XML. Встречаются два формата.

CommerceML — формат обмена, который разрабатывали вместе с фирмой 1С. Пакет состоит из файлов import.xml (каталог) и offers.xml (предложения и цены). Конфигурации, где есть обмен с сайтом, читают его штатно через узел обмена с сайтом. В УТ 11 такой обмен настраивается в разделе администрирования, в настройках синхронизации с сайтом.

YML (Yandex Market Language) — формат выгрузки для торговых площадок. Внутри — элементы <offer> с атрибутом id и вложенными <price>, <vendorCode>, <name>, <currencyId>. Типовые конфигурации 1С его как прайс поставщика не читают.

Для YML есть два рабочих пути.

Путь через Excel. Откройте файл в Excel: Данные → Получить данные → Из файла → Из XML. В навигаторе выберите таблицу offer, загрузите её на лист. Получится обычная таблица, дальше — как в первом разделе.

Путь через свою обработку. Если YML приходит каждый день, напишите внешнюю обработку. Ядро чтения файла:

Функция ПрочитатьYML(ИмяФайла)

    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Ид");
    Таблица.Колонки.Добавить("Артикул");
    Таблица.Колонки.Добавить("Наименование");
    Таблица.Колонки.Добавить("Цена");

    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ИмяФайла);

    Строка = Неопределено;
    ТекущийЭлемент = "";

    Пока Чтение.Прочитать() Цикл
        Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            Если Чтение.Имя = "offer" Тогда
                Строка = Таблица.Добавить();
                Строка.Ид = Чтение.ПолучитьАтрибут("id");
            КонецЕсли;
            ТекущийЭлемент = Чтение.Имя;
        ИначеЕсли (Чтение.ТипУзла = ТипУзлаXML.Текст
            Или Чтение.ТипУзла = ТипУзлаXML.СекцияCDATA)
            И Строка <> Неопределено Тогда
            Если ТекущийЭлемент = "vendorCode" Тогда
                Строка.Артикул = СокрЛП(Чтение.Значение);
            ИначеЕсли ТекущийЭлемент = "name" Тогда
                Строка.Наименование = СокрЛП(Чтение.Значение);
            ИначеЕсли ТекущийЭлемент = "price" Тогда
                Строка.Цена = Число(СтрЗаменить(Чтение.Значение, ",", "."));
            КонецЕсли;
        ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
            Если Чтение.Имя = "offer" Тогда
                Строка = Неопределено;
            КонецЕсли;
            ТекущийЭлемент = "";
        КонецЕсли;
    КонецЦикла;

    Чтение.Закрыть();
    Возврат Таблица;

КонецФункции

Функция возвращает таблицу значений с колонками «Ид», «Артикул», «Наименование», «Цена». Элемент <name> магазина в шапке файла не попадает в таблицу: он стоит вне <offer>, и в этот момент Строка равна Неопределено. Дальше по таблице ищете номенклатуру по артикулу (Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ...)) и заполняете табличную часть документа цен.

Если у поставщика цены в долларах или евро, в YML это видно по <currencyId>. Загружайте такие цены в отдельный тип цен с валютой поставщика, а не пересчитывайте в рубли в обработке. Курс 1С подставит сама.

5. Обновление цен и настройка типов цен

Тип цен определяет, куда лягут цифры из прайса. В Бухгалтерии 3.0 это справочник «Типы цен номенклатуры», в УТ 11 — «Виды цен». Термины не смешивайте: в инструкциях для одной конфигурации название из другой вас запутает.

Что настроить в типе цен до первой загрузки:

  • 💱 Валюта — в той валюте, в которой присылает поставщик.
  • 🧾 Цена включает НДС — флажок должен совпадать с прайсом. Прайс «с НДС» в тип цен «без НДС» завысит цену на сумму налога: на 22% по основной ставке или на 10% по льготной.
  • 🔄 Округление — если тип цен рассчитывается от другого, задайте порядок округления, чтобы не получить 1 247,83 вместо 1 250.

Схема, которая хорошо работает в небольшой торговле:

  1. Тип цен «Закупочная (поставщик Х)» — сюда загружается прайс как есть.
  2. Тип цен «Розничная» — рассчитывается от закупочной с наценкой. Например, наценка 35%: закупка 1 200 руб. → розница 1 620 руб.
  3. После загрузки нового прайса создаёте документ установки цен по розничному типу и заполняете его расчётом от закупочной.

Дата документа — дата начала действия цен. Если прайс вступает в силу с 1-го числа, а пришёл 25-го, ставьте документу дату 1-го числа. Документы продажи, оформленные до этой даты, подтянут старую цену.

Не меняйте цены перепроведением старого документа установки цен задним числом. Цены в уже проведённых продажах не изменятся, а история цен перестанет совпадать с документами. Создавайте новый документ.

Проверить результат удобно печатной формой «Прайс-лист»: в Бухгалтерии 3.0 она есть рядом с документами цен в разделе Склад. Сформируйте её на дату документа по загруженному типу цен и пролистайте выборочно 10–20 позиций против файла поставщика.

6. Протокол загрузки и разбор ошибок

После загрузки обработка выводит сообщения: какие строки не загружены и почему. Не закрывайте окно сообщений, пока не разберёте каждое. Список удобно скопировать в Excel и отфильтровать по тексту.

Диагностика: выберите симптом

Быстрая сверка после проведения: посчитайте в Excel сумму колонки цен по загруженным строкам и сравните с суммой цен в документе (итог табличной части или вывод списка в таблицу). Расхождение даже в одну копейку означает, что какая-то строка ушла не туда.

7. Автоматизация регулярной загрузки прайсов

Если прайс приходит раз в квартал, ручной загрузки хватает. Если каждый день или от десяти поставщиков сразу, есть смысл автоматизировать.

Варианты по нарастанию сложности:

ВариантЧто делаетКто настраивает
Сохранённые настройки универсальной обработкиЗапоминает сопоставление колонок и режимы поиска для конкретного поставщикаСам пользователь
Дополнительная обработка с расписаниемЗабирает файл из папки и создаёт документ цен по расписаниюПрограммист 1С
Обмен по CommerceML или API поставщикаЦены приходят без файловПрограммист 1С и поставщик

Сохранённые настройки. В универсальной обработке настройку колонок можно сохранить в файл и восстановить при следующей загрузке. Заведите по файлу настроек на каждого поставщика и храните рядом с его прайсами.

Дополнительная обработка с расписанием. Внешнюю обработку регистрируют в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если в обработке есть команда с вызовом серверного метода, в карточке для неё можно задать расписание. Тогда сервер 1С сам заберёт файл из сетевой папки, создаст документ установки цен и запишет его.

Практичный порядок для такой обработки:

  1. Документ создаётся записанным, но непроведённым.
  2. Ответственный получает уведомление (задача или письмо) и смотрит протокол.
  3. Проводит документ вручную после проверки.

Автопроведение без человека включайте, только когда прайс-лист поставщика стабилен по формату хотя бы несколько месяцев. Иначе одна сдвинутая колонка поставит цену в поле артикула, и ошибка уйдёт в продажи.

Перед регулярной загрузкой прайсов
Выполнено: 0 / 6

8. Если загрузка не получается

Бывает, что ни встроенная команда, ни универсальная обработка не справляются: прайс в PDF, у поставщика сотни листов или файл весит сотни мегабайт.

  • 📄 PDF. Попросите у поставщика Excel или YML. Перевод PDF в таблицу конвертером почти всегда ломает колонки, а проверка обходится дороже набора.
  • 🗂️ Много листов. Обработка читает один лист. Соберите листы в один через Power Query в Excel (Данные → Получить данные → Из файла → Из книги, затем добавление запросов).
  • 🐘 Очень большой файл. Режьте на части по 5–10 тысяч строк. Каждую часть грузите в отдельный документ с одной датой.
  • 🔒 Нет прав на внешние обработки. Попросите администратора базы открыть права или зарегистрировать обработку как дополнительную. Обходить ограничения через чужую учётную запись не стоит: изменения цен запишутся на другого пользователя.

Частые вопросы о загрузке прайсов

Можно ли загрузить прайс сразу в несколько типов цен?
Да. В документе установки цен можно выбрать несколько типов цен, каждый станет отдельной колонкой. Сопоставьте каждую колонку прайса со своим типом.
Что будет с товарами, которых нет в новом прайсе?
Ничего. Документ меняет цены только по строкам, которые в нём есть. Старая цена на выбывший товар останется действующей, пока её не изменит другой документ.
Как отменить неудачную загрузку цен?
Отмените проведение документа или пометьте его на удаление. Цены вернутся к значениям из предыдущего документа по этому типу цен.
Почему после загрузки в продаже подставляется старая цена?
Чаще всего у документа продажи дата раньше даты установки цен или в договоре с покупателем указан другой тип цен. Проверьте оба места.
Можно ли загрузить прайс в 1С без внешней обработки?
Да, если цены нужны на уже заведённые товары. Встроенной команды загрузки из файла в табличной части документа цен для этого достаточно.