Возможно ли использование 1С:Розница в качестве виртуальной ККМ без ведения учета

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

Часто возникают ситуации, когда основной учет ведется в устаревших или самописных системах (например, на платформе 1С 7.7), которые технически сложно или дорого адаптировать под требования современного законодательства по онлайн-кассам (54-ФЗ). В таких случаях логичным решением выглядит использование современной конфигурации, такой как 1С:Розница 2.2, в роли промежуточного звена — «виртуальной ККМ». Рассмотрим подробно, как настроить программу для выполнения только фискальных функций, полностью исключив складской и товарный учет.

Постановка задачи и общая логика процесса

Основная цель — использовать 1С:Розницу исключительно для взаимодействия с торговым оборудованием. Программа должна выполнять следующие функции:

  1. Подключение и обслуживание фискального регистратора (ФР).
  2. Открытие и закрытие кассовых смен.
  3. Печать чеков на основе данных, полученных из внешней системы.
  4. Отправка данных в ОФД и налоговую.
  5. Отражение операций выемки и внесения денежных средств.

При этом мы не планируем оформлять документы поступления (приходные накладные) и следить за актуальностью остатков на складе. Главная проблема, с которой мы столкнемся при таком подходе — штатные механизмы контроля 1С, которые по умолчанию запрещают продажу товара, которого нет «в наличии» по данным базы.

Настройка прав доступа для отключения контроля остатков

Прежде чем приступать к доработке программного кода, проанализируем штатные возможности конфигурации 1С:Розница. В большинстве случаев проблему можно решить на уровне настроек прав пользователя. Разберем шаги, которые необходимо выполнить:

Перейдем в раздел Администрирование, выберем Настройки пользователей и прав, а затем — Дополнительные права пользователей. Здесь нам нужно найти и отключить следующие параметры:

Настройка параметров учета и РМК

Посмотрим на настройки самой программы. Для того чтобы функционал «виртуальной ККМ» работал корректно, выполним следующие действия:

  1. В настройках параметров учета (раздел Продажи) найдем пункт Контроль остатков при продаже. Если в вашей версии конфигурации этот флаг является глобальным, его следует снять.
  2. Для каждого конкретного магазина в справочнике «Магазины» также следует убедиться, что не установлены жесткие ограничения на отрицательные остатки.
  3. При использовании режима РМК (Рабочее место кассира) убедимся, что цены могут устанавливаться в момент продажи, если они не выгружаются из основной системы заранее. Для этого в дополнительных правах должна быть активна опция Редактирование цен в РМК.

Обход ошибок при закрытии смены в программном коде

Проанализируем ситуацию: даже если чеки успешно бьются, при закрытии смены формируется документ ОтчетОРозничныхПродажах. Если настройки прав по какой-то причине не помогают или логика учета требует специфического поведения, нам придется обратиться к конфигуратору. Выясним причину возникновения ошибок проведения.

Основная проверка остатков происходит в модуле объекта документа ОтчетОРозничныхПродажах. Нам необходимо найти процедуру, отвечающую за формирование списка регистров, подлежащих контролю. Обычно это функция СформироватьСписокРегистровДляКонтроля(). Рассмотрим пример того, как можно программно отключить контроль остатков товаров для этого документа:


// В модуле объекта документа ОтчетОРозничныхПродажах
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    // Отключаем проверку остатков для проведения в минус
    ЭтотОбъект.ДополнительныеСвойства.Вставить("ПроверятьОстатки", Ложь);
КонецПроцедуры

Однако более правильным методом в Рознице 2.2 является вмешательство в механизм формирования движений. Проанализируем модуль проведения. Найдем код, который инициализирует проверку по регистру ТоварыНаСкладах. Мы можем закомментировать добавление этого регистра в список контролируемых:


Функция СформироватьСписокРегистровДляКонтроля() Экспорт
    СписокРегистров = Новый Массив;
    // СписокРегистров.Добавить(Метаданные.РегистрыНакопления.ТоварыНаСкладах); 
    // Закомментировав строку выше, мы исключаем проверку остатков
    Возврат СписокРегистров;
КонецФункции

Организация файлового обмена между системами

Рассмотрим, как связать вашу «музейную» программу на 1С 7.7 с новой «Розницей». Самый надежный и простой способ — использование файлов обмена (DBF или текстовых файлов с разделителями).

Алгоритм работы будет выглядеть следующим образом:

  1. Программа 7.7 выгружает файл tovars.dbf, содержащий артикул, наименование и цену.
  2. В 1С:Розница создается регламентное задание или обработка, работающая в режиме «ожидания», которая сканирует папку обмена.
  3. При обнаружении файла обработка создает или обновляет номенклатуру в Рознице и программно открывает форму чека или сразу пробивает его через объект МенеджерОборудования.
  4. После печати Розница выгружает файл otchet.dbf с подтверждением (номер чека, сумма, фискальный признак), который считывается программой 7.7.

Для реализации программного пробития чека без участия кассира (в фоновом режиме), воспользуемся объектом МенеджерОборудованияМаркировка или стандартным механизмом БПО. Пример упрощенного кода для печати:


ПараметрыЧека = Новый Структура;
ПараметрыЧека.Вставить("ТипРасчета", ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.Приход"));
ПараметрыЧека.Вставить("Позиции", СписокТоваров); // Массив структур с наименованием и ценой

Результат = МенеджерОборудованияВызовСервера.ПодготовитьДанныеДляПечатиЧека(ПараметрыЧека);
// Вызов команды фискализации
Если Не МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройства, "PrintReceipt", ПараметрыЧека) Тогда
    Сообщить("Ошибка печати чека!");
КонецЕсли;

Выводы и рекомендации

Мы выяснили, что использование 1С:Розница в качестве «чистой» виртуальной ККМ вполне возможно. Главное — правильно настроить Дополнительные права пользователей и отключить контроль остатков в РМК. Если же вы хотите полной автоматизации, лучшим решением будет написание небольшой промежуточной обработки, которая будет «пробрасывать» данные из файлов обмена напрямую в фискальный регистратор через драйвер 1С, минуя стандартные механизмы проведения документов по складским регистрам. Это обеспечит максимальную скорость работы и отсутствие ошибок при закрытии смены.

← На главную