В практике автоматизации торговых предприятий на базе 1С:Управление торговлей 11 (УТ 11) часто возникает запрос: «Как сделать так, чтобы продавец мог выписать и обычный чек, и оптовую накладную (Реализацию) из одного окна?». Это актуально для магазинов, которые работают как с физическими лицами, так и с юридическими. Традиционно в типовых конфигурациях эти процессы разделены: кассир работает в РМК, а менеджер — в журнале документов продажи. Разберем, как скрестить эти два мира, с какими трудностями придется столкнуться и какие пути решения существуют.
Проанализируем ситуацию с точки зрения архитектуры 1С. Документы ЧекККМ и РеализацияТоваровУслуг (РТУ) имеют принципиально разную природу:
Попытка объединить их в одном интерфейсе заставляет систему решать конфликты прав доступа, видов цен и схем налогообложения в режиме реального времени, что значительно усложняет код РМК.
Рассмотрим вариант полной переработки рабочего места кассира. Основная цель здесь — создать единую «корзину» товаров, которая в конце оформления может превратиться либо в ЧекККМ, либо в РеализациюТоваровУслуг.
Для реализации такого механизма нам потребуется вмешаться в логику обработки команды завершения продажи. Проанализируем примерный алгоритм:
РеализацияТоваровУслуг, заполняет его данными из корзины и проводит.Особое внимание стоит уделить вводу данных. Опытные разработчики рекомендуют заменять стандартные поля выбора справочника Контрагенты на текстовый поиск. Это позволяет кассиру быстро вбить ФИО или телефон, а системе — автоматически найти или создать карточку, не прерывая процесс продажи. Рассмотрим фрагмент кода для программного создания РТУ на основании данных из временной таблицы товаров:
// Пример заполнения Реализации из данных корзины
НоваяРеализация = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НоваяРеализация.Дата = ТекущаяДата();
НоваяРеализация.Партнер = ВыбранныйПартнер;
НоваяРеализация.Контрагент = ВыбранныйКонтрагент;
НоваяРеализация.Организация = Объект.Организация;
НоваяРеализация.Склад = Объект.Склад;
НоваяРеализация.Валюта = Константы.ВалютаУправленческогоУчета.Получить();
Для Каждого СтрокаТовара Из Объект.Товары Цикл
НоваяСтрока = НоваяРеализация.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовара);
// Дополнительная логика пересчета цен под вид цен контрагента
ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииНоменклатурыВТабличнойЧасти(НоваяСтрока, НоваяРеализация);
КонецЦикла;
НоваяРеализация.Записать(РежимЗаписиДокумента.Проведение);
Если разработка собственного РМК кажется слишком трудоемкой (а на форумах отмечают, что на полную отладку такого решения может уйти до года), стоит рассмотреть схему «Заказ как основа». Этот метод считается более стабильным для УТ 11.
Суть метода заключается в том, что в РМК добавляется возможность создания Заказа клиента. В современных версиях 1С:Управление торговлей (начиная с 11.5) этот функционал частично присутствует в «Новом РМК».
Рассмотрим шаги этого процесса:
Реализацию товаров и услуг.Преимущество этого подхода в том, что сохраняется вся типовая логика учета: контроль остатков, работа с договорами и зачет авансов. Нам не нужно «изобретать велосипед» в части проведения документов.
Выясним причину, по которой просто выписать накладную недостаточно. Согласно 54-ФЗ, при расчетах между организациями наличными или по карте, кассир обязан выдать чек, в котором указаны ИНН и наименование покупателя-организации (теги 1227 и 1228).
При реализации этой задачи в РМК необходимо предусмотреть передачу этих данных в фискальный регистратор. В коде это выглядит примерно так:
// Добавление данных покупателя для чека (ФФД 1.1)
ПараметрыЧека = Новый Структура;
ПараметрыЧека.Вставить("Покупатель", СокрЛП(Объект.Контрагент.НаименованиеПолное));
ПараметрыЧека.Вставить("ИННПокупателя", Объект.Контрагент.ИНН);
// Далее эти параметры передаются в типовой механизм печати чека
МенеджерОборудованияКлиент.ВыполнитьКомандуПечатиЧека(УникальныйИдентификатор, ПараметрыЧека);
Важный момент: Если вы оформляете РТУ, то чек должен пробиваться не как «Чек ККМ», а как фискальный чек на основании документа расчетов (Реализации). В УТ 11 для этого используется механизм «Предъявление чека к оплате».
Проанализируем основные сложности, с которыми сталкиваются программисты при реализации единого РМК:
Контрагенты быстро заполнится дублями («Иванов И.И.», «Иванов Иван», «Иванов Иван Иванович»). Необходимо внедрять алгоритмы нечеткого поиска.Подведем итог. Если перед вами стоит задача объединить РТУ и чеки в одном окне, придерживайтесь следующего плана:
Разработка единого РМК — это не просто «добавление кнопки», а серьезное изменение бизнес-процесса. Однако при правильном подходе это позволяет значительно сократить расходы на обучение персонала и ускорить обслуживание клиентов в торговых точках смешанного типа.