Цены поставщика из Excel, XML и YML в базу 1С 8.3 без ручного набора
Содержание
Чтобы загрузить прайс-лист в 1С 8.3, цены почти всегда заносят через документ «Установка цен номенклатуры»: создают документ на нужный тип цен, а табличную часть заполняют из файла. Заполнить её можно встроенной командой загрузки из файла или универсальной обработкой загрузки данных из табличного документа. Номенклатуру из прайса сопоставляют с вашим справочником по артикулу, коду или штрихкоду. После проведения документа новые цены действуют с его даты.
Типичная ситуация: поставщик раз в месяц присылает прайс на 3 000 позиций, менеджер правит цены руками два дня и всё равно ошибается в десятке строк. Загрузка прайсов в 1С снимает эту работу. Время уходит на одну настройку соответствия колонок, а дальше каждый новый файл ложится за 10–15 минут вместе с проверкой.
1. Подготовка прайса в Excel перед загрузкой
Файл поставщика почти никогда не готов к импорту «как есть». В нём шапка с логотипом, объединённые ячейки, группы товаров строкой-заголовком, цены с пробелами. Обработка загрузки ждёт простую таблицу: одна строка — один товар, одна колонка — одно поле.
Порядок подготовки:
- Сохраните копию файла поставщика. Работайте только с копией.
- Удалите всё над строкой заголовков: логотип, реквизиты, контакты, «Действует с…».
- Снимите объединение ячеек на всём листе.
- Удалите строки-заголовки групп («Крепёж», «Электрика»), если в них нет цены. Если группа нужна, вынесите её в отдельную колонку.
- Оставьте нужные колонки: артикул, наименование, единица измерения, цена. Остальное можно удалить или просто не сопоставлять.
- Приведите цены к числу: уберите «руб.», «р.», пробелы между разрядами, замените точку на запятую, если так настроена система.
- Сохраните результат в
.xlsx. Для старых обработок под обычные формы иногда нужен.xlsили.mxl.
Артикулы и штрихкоды переведите в текстовый формат ДО вставки данных. Иначе Excel срежет ведущие нули (00451 станет 451), а длинный штрихкод превратит в 4,6E+12. Такие строки потом не найдут пару в 1С.
Отдельно проверьте дубли артикулов. Если у поставщика один артикул встречается дважды с разными ценами, программа запишет одну из них, и не факт, что правильную. Условное форматирование «Повторяющиеся значения» в Excel находит такие строки за минуту.
2. Загрузка прайс-листа встроенной командой и универсальной обработкой
Способов два, и они дополняют друг друга.
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Команда загрузки в табличной части документа | Цены на товары, которые уже есть в справочнике | Новую номенклатуру не создаёт или создаёт с минимумом реквизитов |
| Загрузка в список номенклатуры | Нужно завести новые позиции вместе с ценами | Набор колонок ограничен формой загрузки |
| Универсальная обработка загрузки из табличного документа | Нестандартный файл, свои правила поиска, большие объёмы | Нужны права на открытие внешних обработок |
Встроенная загрузка в документ цен
В 1С:Бухгалтерии 3.0 документ находится в разделе Склад → Цены → Установка цен номенклатуры. В 1С:Управление торговлей 11 аналогичный документ ищите в разделе ценообразования (CRM и маркетинг), там же лежит справочник «Виды цен».
- Создайте новый документ и укажите тип цен, который хотите обновить.
- Над табличной частью откройте меню
Ещёи выберите команду загрузки из файла. - Программа покажет шаблон-таблицу. Вставьте в неё колонки из Excel через буфер обмена или укажите файл.
- Сопоставьте колонки: какая — артикул, какая — цена.
- На шаге сопоставления 1С покажет, сколько строк нашла, сколько не распознала и сколько неоднозначных. Нераспознанные можно сопоставить вручную или пропустить.
- Перенесите строки в документ, проверьте несколько цен глазами и проведите его.
Универсальная обработка
Универсальная обработка «Загрузка данных из табличного документа» (файл ЗагрузкаДанныхИзТабличногоДокумента.epf) — внешняя обработка, её берут с диска ИТС. Открывают через Файл → Открыть (в интерфейсе «Такси» — меню с тремя полосками в заголовке окна). Платформа предупредит о безопасности внешнего файла, подтвердите открытие, если доверяете источнику.
В обработке три режима: загрузка в справочник, в табличную часть объекта и в регистр сведений . Для прайса удобнее второй: сначала создайте и запишите пустой документ «Установка цен номенклатуры», затем в обработке выберите его как объект загрузки.
В Бухгалтерии 3.0 регистр «Цены номенклатуры» подчинён документам. Писать цены в него напрямую через режим загрузки в регистр не получится — только через документ. Так даже лучше: у каждой загрузки остаётся документ с датой, и неудачную загрузку легко отменить, сняв проведение.
3. Сопоставление номенклатуры поставщика с вашим справочником
Главный приём практика: решить заранее, по какому полю искать товар. От этого зависит, сколько строк ляжет автоматически.
- 🔑 Артикул — самый надёжный ключ, если вы заводили номенклатуру с артикулом поставщика.
- 🏷️ Штрихкод — хорош для розничных товаров. Требует, чтобы штрихкоды были внесены в базу.
- 🔢 Код 1С — работает, только если поставщик знает ваши коды (обычно это ваш внутренний файл, а не его прайс).
- 📝 Наименование — крайний вариант. «Болт М8х40 оцинк.» и «Болт оцинкованный М8*40» для программы разные строки.
В универсальной обработке для колонки табличной части задаётся режим загрузки: искать значение, установить фиксированное или вычислить выражением. Для колонки «Номенклатура» выберите поиск и укажите поле поиска — артикул или код. Если поиск не дал результата, ячейка останется пустой, а строка попадёт в протокол.
Если артикулы поставщика не совпадают с вашими, заведите «таблицу перевода» один раз:
- Выгрузите из 1С список номенклатуры с кодами в Excel (отчёт или список →
Ещё → Вывести список). - Рядом поставьте артикул поставщика и проставьте пары. Для 3 000 позиций это день работы, но разовый.
- Внесите артикул поставщика в карточки номенклатуры той же загрузкой в режиме справочника: ищем по коду, записываем артикул.
- Дальше каждый новый прайс находит товары по артикулу сам.
В Управлении торговлей 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.
Схема, которая хорошо работает в небольшой торговле:
- Тип цен «Закупочная (поставщик Х)» — сюда загружается прайс как есть.
- Тип цен «Розничная» — рассчитывается от закупочной с наценкой. Например, наценка 35%: закупка 1 200 руб. → розница 1 620 руб.
- После загрузки нового прайса создаёте документ установки цен по розничному типу и заполняете его расчётом от закупочной.
Дата документа — дата начала действия цен. Если прайс вступает в силу с 1-го числа, а пришёл 25-го, ставьте документу дату 1-го числа. Документы продажи, оформленные до этой даты, подтянут старую цену.
Не меняйте цены перепроведением старого документа установки цен задним числом. Цены в уже проведённых продажах не изменятся, а история цен перестанет совпадать с документами. Создавайте новый документ.
Проверить результат удобно печатной формой «Прайс-лист»: в Бухгалтерии 3.0 она есть рядом с документами цен в разделе Склад. Сформируйте её на дату документа по загруженному типу цен и пролистайте выборочно 10–20 позиций против файла поставщика.
6. Протокол загрузки и разбор ошибок
После загрузки обработка выводит сообщения: какие строки не загружены и почему. Не закрывайте окно сообщений, пока не разберёте каждое. Список удобно скопировать в Excel и отфильтровать по тексту.
Быстрая сверка после проведения: посчитайте в Excel сумму колонки цен по загруженным строкам и сравните с суммой цен в документе (итог табличной части или вывод списка в таблицу). Расхождение даже в одну копейку означает, что какая-то строка ушла не туда.
7. Автоматизация регулярной загрузки прайсов
Если прайс приходит раз в квартал, ручной загрузки хватает. Если каждый день или от десяти поставщиков сразу, есть смысл автоматизировать.
Варианты по нарастанию сложности:
| Вариант | Что делает | Кто настраивает |
|---|---|---|
| Сохранённые настройки универсальной обработки | Запоминает сопоставление колонок и режимы поиска для конкретного поставщика | Сам пользователь |
| Дополнительная обработка с расписанием | Забирает файл из папки и создаёт документ цен по расписанию | Программист 1С |
| Обмен по CommerceML или API поставщика | Цены приходят без файлов | Программист 1С и поставщик |
Сохранённые настройки. В универсальной обработке настройку колонок можно сохранить в файл и восстановить при следующей загрузке. Заведите по файлу настроек на каждого поставщика и храните рядом с его прайсами.
Дополнительная обработка с расписанием. Внешнюю обработку регистрируют в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если в обработке есть команда с вызовом серверного метода, в карточке для неё можно задать расписание. Тогда сервер 1С сам заберёт файл из сетевой папки, создаст документ установки цен и запишет его.
Практичный порядок для такой обработки:
- Документ создаётся записанным, но непроведённым.
- Ответственный получает уведомление (задача или письмо) и смотрит протокол.
- Проводит документ вручную после проверки.
Автопроведение без человека включайте, только когда прайс-лист поставщика стабилен по формату хотя бы несколько месяцев. Иначе одна сдвинутая колонка поставит цену в поле артикула, и ошибка уйдёт в продажи.
8. Если загрузка не получается
Бывает, что ни встроенная команда, ни универсальная обработка не справляются: прайс в PDF, у поставщика сотни листов или файл весит сотни мегабайт.
- 📄 PDF. Попросите у поставщика Excel или YML. Перевод PDF в таблицу конвертером почти всегда ломает колонки, а проверка обходится дороже набора.
- 🗂️ Много листов. Обработка читает один лист. Соберите листы в один через Power Query в Excel (
Данные → Получить данные → Из файла → Из книги, затем добавление запросов). - 🐘 Очень большой файл. Режьте на части по 5–10 тысяч строк. Каждую часть грузите в отдельный документ с одной датой.
- 🔒 Нет прав на внешние обработки. Попросите администратора базы открыть права или зарегистрировать обработку как дополнительную. Обходить ограничения через чужую учётную запись не стоит: изменения цен запишутся на другого пользователя.