Часто возникают ситуации, когда основной учет ведется в устаревших или самописных системах (например, на платформе 1С 7.7), которые технически сложно или дорого адаптировать под требования современного законодательства по онлайн-кассам (54-ФЗ). В таких случаях логичным решением выглядит использование современной конфигурации, такой как 1С:Розница 2.2, в роли промежуточного звена — «виртуальной ККМ». Рассмотрим подробно, как настроить программу для выполнения только фискальных функций, полностью исключив складской и товарный учет.
Основная цель — использовать 1С:Розницу исключительно для взаимодействия с торговым оборудованием. Программа должна выполнять следующие функции:
При этом мы не планируем оформлять документы поступления (приходные накладные) и следить за актуальностью остатков на складе. Главная проблема, с которой мы столкнемся при таком подходе — штатные механизмы контроля 1С, которые по умолчанию запрещают продажу товара, которого нет «в наличии» по данным базы.
Прежде чем приступать к доработке программного кода, проанализируем штатные возможности конфигурации 1С:Розница. В большинстве случаев проблему можно решить на уровне настроек прав пользователя. Разберем шаги, которые необходимо выполнить:
Перейдем в раздел Администрирование, выберем Настройки пользователей и прав, а затем — Дополнительные права пользователей. Здесь нам нужно найти и отключить следующие параметры:
Посмотрим на настройки самой программы. Для того чтобы функционал «виртуальной ККМ» работал корректно, выполним следующие действия:
Проанализируем ситуацию: даже если чеки успешно бьются, при закрытии смены формируется документ ОтчетОРозничныхПродажах. Если настройки прав по какой-то причине не помогают или логика учета требует специфического поведения, нам придется обратиться к конфигуратору. Выясним причину возникновения ошибок проведения.
Основная проверка остатков происходит в модуле объекта документа ОтчетОРозничныхПродажах. Нам необходимо найти процедуру, отвечающую за формирование списка регистров, подлежащих контролю. Обычно это функция СформироватьСписокРегистровДляКонтроля(). Рассмотрим пример того, как можно программно отключить контроль остатков товаров для этого документа:
// В модуле объекта документа ОтчетОРозничныхПродажах
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Отключаем проверку остатков для проведения в минус
ЭтотОбъект.ДополнительныеСвойства.Вставить("ПроверятьОстатки", Ложь);
КонецПроцедуры
Однако более правильным методом в Рознице 2.2 является вмешательство в механизм формирования движений. Проанализируем модуль проведения. Найдем код, который инициализирует проверку по регистру ТоварыНаСкладах. Мы можем закомментировать добавление этого регистра в список контролируемых:
Функция СформироватьСписокРегистровДляКонтроля() Экспорт
СписокРегистров = Новый Массив;
// СписокРегистров.Добавить(Метаданные.РегистрыНакопления.ТоварыНаСкладах);
// Закомментировав строку выше, мы исключаем проверку остатков
Возврат СписокРегистров;
КонецФункции
Рассмотрим, как связать вашу «музейную» программу на 1С 7.7 с новой «Розницей». Самый надежный и простой способ — использование файлов обмена (DBF или текстовых файлов с разделителями).
Алгоритм работы будет выглядеть следующим образом:
tovars.dbf, содержащий артикул, наименование и цену.МенеджерОборудования.otchet.dbf с подтверждением (номер чека, сумма, фискальный признак), который считывается программой 7.7.Для реализации программного пробития чека без участия кассира (в фоновом режиме), воспользуемся объектом МенеджерОборудованияМаркировка или стандартным механизмом БПО. Пример упрощенного кода для печати:
ПараметрыЧека = Новый Структура;
ПараметрыЧека.Вставить("ТипРасчета", ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.Приход"));
ПараметрыЧека.Вставить("Позиции", СписокТоваров); // Массив структур с наименованием и ценой
Результат = МенеджерОборудованияВызовСервера.ПодготовитьДанныеДляПечатиЧека(ПараметрыЧека);
// Вызов команды фискализации
Если Не МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройства, "PrintReceipt", ПараметрыЧека) Тогда
Сообщить("Ошибка печати чека!");
КонецЕсли;
Мы выяснили, что использование 1С:Розница в качестве «чистой» виртуальной ККМ вполне возможно. Главное — правильно настроить Дополнительные права пользователей и отключить контроль остатков в РМК. Если же вы хотите полной автоматизации, лучшим решением будет написание небольшой промежуточной обработки, которая будет «пробрасывать» данные из файлов обмена напрямую в фискальный регистратор через драйвер 1С, минуя стандартные механизмы проведения документов по складским регистрам. Это обеспечит максимальную скорость работы и отсутствие ошибок при закрытии смены.