Как выгрузить чеки из ОФД с позициями (наименованиями товаров)
Позиции чеков — это строки «что именно продано»: наименование, количество, цена, сумма и НДС. В личных кабинетах ОФД по умолчанию чаще выгружаются только шапки документов, поэтому в файле есть суммы, но нет товаров. Ниже — почему так происходит, какими способами позиции забирают на самом деле и как проверить, что из ОФД приехали все строки.
Позиции — это отдельный уровень данных. Шапка чека отвечает на вопрос «на сколько», позиция — «за что именно». Если в выгрузке нет наименований, дело обычно не в ошибке, а в выбранном отчёте или ограничении тарифа.
Шапка чека и позиции: в чём разница
Фискальный документ устроен как таблица из двух уровней. Верхний — сам чек: когда и на какой кассе пробит, итоговая сумма, признак расчёта. Нижний — предметы расчёта, то есть то, что реально пробил кассир.
| Что видно в отчёте | Шапка чека | Позиции (предметы расчёта) |
|---|---|---|
| Дата и время | Есть | Наследуются из шапки |
| Касса (РН ККТ), ФН, ФД, ФПД | Есть | Наследуются из шапки |
| Итог чека | Есть | Нет, есть сумма каждой строки |
| Наименование товара | Нет | Есть (тег 1059) |
| Количество, цена, сумма строки | Нет | Есть (теги 1023, 1079, 1043) |
| НДС и признак предмета расчёта | Только итогом по чеку | Есть по каждой строке (1199, 1214) |
Отсюда типичная ситуация: в файле количество строк равно числу чеков, а не числу проданных товаров. Для сверки выручки этого достаточно, для товарного отчёта — нет.
Что считается позицией чека
Позиция — это одна строка чека, описанная набором тегов ФФД. Понимать их полезно: именно по этим полям собирается таблица и проверяется полнота выгрузки.
| Тег ФФД | Поле | Зачем нужно в Excel |
|---|---|---|
| 1059 | Наименование предмета расчёта | Товарный отчёт, поиск по названию |
| 1023 | Количество | Аналитика продаж, весовой товар |
| 1079 | Цена за единицу | Сравнение с прайсом, наценка |
| 1043 | Стоимость позиции | Основа всех сумм по строкам |
| 1199 | Ставка НДС | Разделение выручки по ставкам |
| 1212, 1214 | Мера количества и признак предмета расчёта | Штука или килограмм, товар или услуга |
Четыре способа получить позиции
Способов немного, и отличаются они не «качеством», а количеством ручной работы.
| Способ | Что получаете | Ограничения | Когда подходит |
|---|---|---|---|
| Отчёт в кабинете ОФД с составом чека | Готовый файл Excel или CSV с позициями | Есть не во всех тарифах; период и число строк ограничены | Разовая выгрузка за короткий период |
| API оператора | Документы целиком, включая предметы расчёта | Нужен доступ к API и минимальный навык программирования | Регулярная выгрузка, несколько касс, длинные периоды |
| Товароучётная система или касса | Продажи с товарами, но не фискальные данные | Не заменяет ОФД: нет ФД и ФПД, другой состав полей | Нужна аналитика продаж, а не отчёт для налоговой |
| Сервис-конвертер или подрядчик | Готовый Excel под вашу структуру | Платно; зависит от доступов к кабинету | Нужно один раз и быстро |
Важно не путать две задачи. Отчёт для сверки выручки строится по шапкам: суммы, даты, кассы. Товарный отчёт требует позиций, и брать их нужно из фискальных документов — иначе суммы не сойдутся с данными ОФД.
Пошагово: выгрузка позиций
- Проверьте, есть ли отчёт с составом чека в вашем тарифе. Смотрите не только раздел «Отчёты», но и «Документы», «Аналитика», «Товары»: у операторов это часто разные места.
- Уточните ограничения у поддержки. Один вопрос экономит день: отдаёт ли тариф позиции, за какой период и в каком формате.
- Выгрузите тестовый день. Одна касса, один день с известной выручкой — на маленьком объёме сразу видно, пришли ли наименования и совпадают ли суммы.
- Сверьте: сумма строк внутри чека равна итогу чека. Если не равна, приехали не все предметы расчёта.
- Соберите таблицу. Одна строка — одна позиция; поля шапки (дата, касса, ФД) дублируются в каждой строке, чтобы файл можно было фильтровать и сводить.
- Проверьте дубли и кодировку. Файл приходит в UTF-8 или Windows-1251, а связка ФН + ФД + ФПД должна быть уникальной.
Как должна выглядеть таблица с позициями
Рабочий файл с позициями почти всегда содержит один и тот же набор колонок. Такой структуры достаточно и для Excel, и для загрузки в 1С, и для товарной аналитики:
- дата и время чека;
- название точки и РН ККТ (заводской номер);
- ФН, ФД, ФПД — по ним чек находят в кабинете ОФД;
- признак расчёта: приход, возврат прихода, коррекция;
- номер строки в чеке — он же ключ уникальности позиции;
- наименование товара;
- количество и мера (шт, кг, л);
- цена за единицу и сумма строки;
- ставка и сумма НДС, признак предмета расчёта.
Один чек — это несколько строк, поэтому дата, касса и номера документа повторяются в каждой. Считать «итог чека» по строкам нельзя: сумма строк даёт итог чека, а если сложить эти строки ещё раз на уровне свода, суммы задвоятся. Ошибка кажется очевидной только на словах — в Excel она встречается почти в каждой второй склейке.
Проверка полноты: пять контролей
- Сумма позиций = итог чека. Считается по каждому чеку отдельно, а не по файлу целиком.
- Количество строк = числу предметов расчёта. Если в чеке было три товара, а строк две — одна потерялась.
- Нет дублей по ключу ФН + ФД + ФПД + номер строки.
- Дата последнего чека соответствует концу периода, а не середине.
- ФН и ФПД не испортились: в Excel они должны быть текстом, а не числом вроде
9,96786E+15.
Типичные проблемы
- Позиции приходят в base64 или с неправильной кодировкой. В ответах API часть полей может быть закодирована — их декодируют до сборки таблицы. В CSV проблемы кодировки видны как нечитаемые символы вместо кириллицы.
- Количество пустое или равно нулю. Часто у услуг и сертификатов: сумма есть, количества нет, и такие строки нужно обрабатывать отдельно.
- Весовой товар. Количество приходит дробным (например, 0,355 кг); если Excel округлит колонку до целых, данные испортятся безвозвратно.
- Возвраты с отрицательными суммами. У них другой признак расчёта; если суммировать всё подряд, получится «выручка минус возвраты» вместо двух отдельных показателей.
- Excel «съел» артикулы. Длинные наименования и строки с ведущими нулями портятся при импорте — файл нужно читать как текст.
- Позиции есть не за весь период. Старые документы могут отдаваться частями: проверяйте даты первой и последней строки, а не только итоговую сумму.
Когда проще заказать выгрузку
Своими силами выгрузка с позициями оправдана, когда она разовая и касса одна. Настройка скрипта или работа через API окупается в трёх случаях:
- позиции нужны регулярно — раз в месяц или чаще;
- касс несколько, и файлы приходится склеивать руками;
- нужна конкретная структура файла: для 1С, для товарного отчёта, для собственной таблицы.
Отдельная ситуация — когда отчёт с позициями в кабинете есть, но файл неудобен: колонки не те, суммы не сходятся, наименования обрезаны. Такая задача решается не «новой выгрузкой», а приведением данных к нужному виду: это работа на пару часов, а не на месяц.
Частые вопросы
Отдаёт ли ОФД позиции чеков или только суммы?
Позиции хранятся у оператора: в каждом фискальном документе есть предметы расчёта с наименованием, количеством, ценой и суммой. Вопрос только в способе доступа — отчёт с составом чека или API.
Почему в выгрузке нет наименований товаров?
Скорее всего выбран отчёт по шапкам документов: он есть во всех тарифах и формируется быстрее. Отчёт с позициями может лежать в другом разделе или отсутствовать в вашем тарифе.
Как проверить, что выгружены все позиции?
По каждому чеку: сумма строк равна итогу чека, число строк равно числу предметов расчёта, а связка ФН + ФД + ФПД + номер строки не повторяется.
В каком виде позиции приходят через API?
В структурированном виде с тегами ФФД: 1059 — наименование, 1023 — количество, 1079 — цена, 1043 — стоимость, 1199 — ставка НДС. Часть полей отдаётся в base64, их декодируют перед сборкой таблицы.
Можно ли получить позиции за прошлый год?
Да, фискальные документы хранятся у оператора не менее пяти лет. Крупный период придётся собирать частями — из-за лимитов API и правил тарифа.