Прайс-лист из 1С в Excel: отчёт, список цен, рассылка и обработка
Содержание
Чтобы выгрузить прайс из 1С 8.3 в Excel, сформируйте отчёт «Прайс-лист» с нужным типом цен и нажмите кнопку сохранения (значок дискеты) или Ctrl+S. В поле «Тип файла» выберите Лист Excel 2007-... (*.xlsx), укажите папку и имя файла. Через минуту у вас готовый файл, который открывается в Excel без конвертации.
Так работает любой отчёт в 1С:Предприятии 8.3: всё, что выводится в табличный документ, сохраняется в XLSX. Отличаются только способы собрать нужные колонки — артикул, остаток, несколько колонок цен, картинки. Ниже — пять рабочих способов, от стандартной кнопки до выгрузки по расписанию.
Встроенный отчёт «Прайс-лист» и сохранение в XLSX
В типовых конфигурациях есть готовый отчёт для прайса. Где его искать:
| Конфигурация | Где находится | Что важно |
|---|---|---|
| Бухгалтерия предприятия 3.0 | Склад → Цены → Прайс-лист | Цены берутся из документов «Установка цен номенклатуры» по типу цен |
| Управление торговлей 11, КА 2, ERP | Раздел с ценообразованием (CRM и маркетинг или Продажи, по релизу) | Работает с видами цен, умеет выводить цены по характеристикам |
Если не видите отчёт в меню, наберите «прайс» в строке поиска по интерфейсу — она открывается по Shift+F3 или кнопкой с лупой в верхней панели.
Пошагово
- Откройте отчёт «Прайс-лист».
- Выберите тип (вид) цен. Можно отметить несколько — каждый станет отдельной колонкой.
- Задайте дату, на которую нужны цены. По умолчанию стоит текущая.
- При необходимости отфильтруйте номенклатуру по группе или складу.
- Нажмите
Сформировать. - Нажмите значок дискеты на панели отчёта или
Ctrl+S. - В окне сохранения выберите тип файла
Лист Excel 2007-... (*.xlsx)и нажмитеСохранить.
Если нужна не таблица, а просто «отправить клиенту», в окне сохранения выбирайте XLSX, а не PDF. Клиенту часто нужно отфильтровать прайс или посчитать сумму заказа прямо в файле.
Формат Лист Excel 97 (*.xls) тоже есть, но он ограничен 65 536 строками и хуже переносит форматирование. Для прайса на несколько тысяч позиций берите XLSX.
Альтернатива: «Сохранить как» из главного меню
Если панель отчёта урезана настройками прав, используйте главное меню (кнопка с тремя полосками слева вверху): Файл → Сохранить как.... Окно и список форматов будут те же.
Универсальный отчёт: прайс с любыми колонками
Стандартный прайс-лист не всегда показывает то, что нужно: например, остаток, единицу измерения, страну происхождения или штрихкод. Тогда помогает «Универсальный отчёт» — он строит таблицу по любому регистру.
В БП 3.0 он лежит в Отчеты → Стандартные отчеты → Универсальный отчет. В УТ 11 его проще найти поиском по интерфейсу.
Как собрать прайс в универсальном отчёте
- В поле «Тип объекта» выберите
Регистр сведений. - В поле «Объект» — регистр с ценами номенклатуры (в БП он называется «Цены номенклатуры»).
- В поле таблицы выберите
Срез последних— так вы получите действующие цены, а не всю историю изменений. - Откройте настройки отчёта (кнопка
Настройки, режим «Расширенный»). - На вкладке «Отборы» задайте тип цен — иначе в таблицу попадут все типы вперемешку.
- На вкладке «Поля и сортировки» добавьте нужные поля. Через «плюс» у поля «Номенклатура» доступны её реквизиты: артикул, единица, группа.
- Сформируйте отчёт и сохраните его в XLSX, как в предыдущем разделе.
Настройку можно сохранить под своим именем: Ещё → Сохранить вариант отчета. В следующий раз прайс собирается в два клика.
Срез последних берёт последнюю цену на дату отчёта. Если вы уже завели документ установки цен будущей датой, а дату отчёта не меняли, в прайс попадут текущие цены, а не новые. Проверьте поле с датой среза перед выгрузкой.
Когда какой способ выбрать
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Отчёт «Прайс-лист» | Обычный прайс по одному-двум типам цен | Набор колонок ограничен вариантами отчёта |
| Универсальный отчёт | Нужны нестандартные реквизиты или остатки | Требует один раз настроить поля |
| Вывод списка | Быстро выгрузить то, что видно в справочнике | Только колонки списка, без расчётов |
| Внешняя обработка | Сложный формат, картинки, регулярная выгрузка | Нужен программист или готовое решение |
Вывод списка, обработки и сторонние инструменты
Вывод списка из справочника или документа
Любой список в 1С можно превратить в табличный документ. Откройте, например, справочник номенклатуры или документ установки цен, затем выберите Ещё → Вывести список.... Отметьте колонки, нажмите ОК — откроется таблица, которую сохраняют в XLSX обычным способом.
Этим же приёмом удобно выгрузить табличную часть документа «Установка цен номенклатуры»: в нём уже есть номенклатура и новые цены, то есть готовый прайс по изменённым позициям.
Ещё проще: выделите строки списка (Ctrl+A), скопируйте Ctrl+C и вставьте в Excel. Для пары сотен строк это самый быстрый путь, но форматирование при этом теряется.
Внешние обработки
Внешняя обработка — файл .epf, который подключают через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Её используют, когда прайс нужен в фиксированном формате: с логотипом, шапкой, картинками товаров, группировкой по категориям.
Перед подключением чужой обработки проверьте её у программиста или на копии базы. Обработка выполняет код с правами пользователя и может изменять данные, не только читать их.
Не подключайте обработки из случайных источников к рабочей базе. Сначала проверьте их на копии.
Выгрузка через обмен с сайтом
Если прайс нужен для интернет-магазина, Excel — лишний посредник. В типовых конфигурациях есть обмен с сайтом в формате CommerceML: он передаёт товары и цены напрямую. Excel имеет смысл, когда прайс уходит людям — клиентам, менеджерам, партнёрам.
Настройка колонок и формата прайса перед выгрузкой
Готовый файл удобнее, если подготовить его ещё в 1С. Что стоит настроить в форме отчёта (через Настройки):
- 📋 Порядок колонок. Артикул и наименование слева, цена справа. Перетаскивайте поля на вкладке «Поля и сортировки».
- 🔤 Сортировка. По группе, затем по наименованию — так покупатель быстрее найдёт нужное.
- 🗂 Группировки. Если включить группировку по родителю номенклатуры, в Excel получатся заголовки разделов. Для фильтров в Excel группировки лучше отключить: плоская таблица фильтруется чище.
- 🔢 Формат цены. В свойствах поля задайте формат с двумя знаками после запятой. Иначе 1250 и 1250,50 будут выглядеть по-разному.
- 🚫 Нулевые цены. Отберите строки с ценой больше нуля, чтобы в прайс не попали позиции без цены.
- 📦 Остаток. Если хотите показывать «в наличии», добавьте отбор по остатку больше нуля.
Пример: прайс с двумя ценами
Допустим, у вас два типа цен: «Розничная» и «Оптовая», скидка опта — 15 %. Товар стоит в рознице 2 400 руб. Опт в прайсе должен показать 2 040 руб. (2 400 × 0,85 = 2 040). Если в Excel вы видите другую цифру, значит в 1С на дату отчёта не установлена оптовая цена и программа берёт старую. Это сигнал проверить документы установки цен, а не формулы в Excel.
Кракозябры и числа-текст: проблемы кодировки при выгрузке в Excel
При сохранении в XLSX кодировка проблем не создаёт: формат хранит текст в Юникоде. Сбои бывают в трёх случаях.
Файл сохранён в CSV или TXT
Excel по двойному щелчку открывает CSV в кодировке системы. Если 1С записала файл в UTF-8, вместо кириллицы будут символы вида Товар. Что делать:
- Откройте пустую книгу Excel.
- Выберите
Данные → Из текста/CSVи укажите файл. - В поле «Источник файла» выберите
65001: Юникод (UTF-8). - Проверьте разделитель (обычно точка с запятой) и нажмите
Загрузить.
Надёжнее вообще не использовать CSV для прайса и сохранять сразу в XLSX.
Цены сохранились как текст
Признак: Excel не суммирует колонку, а в углу ячеек зелёные треугольники. Причина — разделитель тысяч. 1С выводит число как 1 250,00 с неразрывным пробелом, и Excel не всегда распознаёт его как число.
Решения:
- в 1С задайте для поля цены формат без разделения групп (
ЧГ=0); - в Excel выделите колонку, нажмите
Ctrl+H, в поле «Найти» введите неразрывный пробел (Alt+0160на цифровой клавиатуре), поле «Заменить» оставьте пустым.
Пропали ведущие нули в артикуле
Артикул 00125 превращается в 125, если Excel решил, что это число. В XLSX из 1С такое бывает редко, чаще — при вставке через буфер обмена или при открытии CSV. Перед вставкой задайте колонке в Excel текстовый формат, а при импорте CSV укажите для неё тип «Текстовый».
Автоматическая выгрузка прайс-листа по расписанию
Если прайс уходит клиентам каждую неделю, ручную выгрузку можно заменить автоматикой.
Рассылка отчётов
В типовых конфигурациях на базе БСП (БП 3.0, УТ 11, КА, ERP) есть механизм «Рассылки отчетов». Он формирует отчёт по расписанию и отправляет его по почте или кладёт в сетевую папку.
Как настроить:
- Сначала подключите почтовую учётную запись в
Администрирование → Органайзер(или в разделе общих настроек, в зависимости от релиза). - Откройте отчёт «Прайс-лист» с нужными настройками и сохраните их как вариант.
- Создайте рассылку из формы отчёта: в командной панели найдите команду отправки или рассылки.
- Укажите получателей, формат вложения
XLSXи расписание — например, каждый понедельник в 8:00. - Включите флажок использования расписания и сохраните.
Чтобы рассылка срабатывала, в файловой базе кто-то должен быть запущен в 1С (регламентные задания выполняет сеанс пользователя). В клиент-серверной базе задания выполняет сервер.
Код для своей обработки
Если нужен свой формат, программист пишет обработку, которая собирает табличный документ и записывает его методом Записать с типом ТипФайлаТабличногоДокумента.XLSX. Пример для БП 3.0 (регистр «Цены номенклатуры», измерение «Тип цен»):
Функция ВыгрузитьПрайс(ТипЦен, ПутьКФайлу) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Цены.Номенклатура.Артикул КАК Артикул,
| Цены.Номенклатура.Наименование КАК Наименование,
| Цены.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК Цены
|ГДЕ
| Цены.Цена > 0
|УПОРЯДОЧИТЬ ПО
| Наименование";
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область(1, 1, 1, 1).Текст = "Артикул";
ТабДок.Область(1, 2, 1, 2).Текст = "Наименование";
ТабДок.Область(1, 3, 1, 3).Текст = "Цена";
НомерСтроки = 1;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Выборка.Артикул;
ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст = Выборка.Наименование;
ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3).Текст = Формат(Выборка.Цена, "ЧДЦ=2; ЧГ=0");
КонецЦикла;
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
Возврат НомерСтроки - 1;
КонецФункции
В УТ 11 и ERP регистр цен устроен иначе: измерение называется «Вид цены», есть характеристики. Запрос под эти конфигурации нужно переписать.
Функцию можно вызвать из регламентного задания в расширении конфигурации — тогда типовая конфигурация остаётся без изменений и обновляется как обычно. Путь к файлу при выполнении на сервере указывается относительно сервера, а у службы 1С должны быть права записи в эту папку.