При автоматизации небольших торговых точек на базе программы 1С:Розница (особенно её базовой версии) часто возникает классическая проблема. Нам необходимо организовать регулярный обмен данными между управляющей системой (например, 1С:Управление торговлей) и локальной кассовой базой. При этом за кассой работают продавцы или кассиры, квалификация которых не позволяет им перемещаться по сложным меню программы. Нам нужна максимально простая схема работы: либо полностью автоматическая синхронизация, либо запуск процесса в одно нажатие кнопки.
Проанализируем, почему возникает эта сложность, и разберем по шагам все возможные варианты решения этой задачи, начиная от штатных настроек прав и заканчивая автоматизацией с помощью скриптов и расширений.
Сначала разберем, почему стандартная кнопка обмена в режиме управляемой кассы (РМК) оказывается недоступной. В типовом решении 1С:Розница эта кнопка жестко привязана к механизму Распределенных Информационных Баз (РИБ).
Однако базовая версия платформы «1С:Предприятие» имеет ряд жестких лицензионных ограничений, среди которых:
Поскольку синхронизация между базовой розницей и УТ настраивается через универсальный формат обмена (EnterpriseData), программа не распознает это подключение как РИБ-соединение. Соответственно, кнопка обмена в меню РМК программно блокируется. Включить её стандартными галочками в настройках невозможно. Нам придется использовать альтернативные пути решения.
Прежде чем выводить какие-либо кнопки или настраивать расписание, проанализируем важнейший нюанс, связанный с правами пользователей. По умолчанию у пользователя с ролью «Продавец» или «Кассир» нет прав на инициацию синхронизации данных. Если запустить обмен под его учетной записью, система выдаст ошибку прав доступа.
Настроим права кассира правильно:
Выполнение синхронизации данных.Это самый простой и надежный способ без программирования, который не нарушает лицензионное соглашение базовой версии. Мы можем настроить интерфейс программы так, чтобы при выходе из режима РМК кассир сразу видел кнопку обмена на своем начальном экране.
Разберем процесс настройки по шагам:
Теперь алгоритм работы для кассира выглядит следующим образом:
Рассмотрим ситуацию с регламентными заданиями. Многие администраторы считают, что в базовой версии невозможно настроить автоматический обмен по расписанию из-за отсутствия сервера «1С:Предприятие». Это не так. В файловых базах данных регламентные задания успешно выполняются, но только внутри активного сеанса пользователя. То есть, пока программа кассира запущена в течение дня, обмен может происходить сам по себе в фоновом режиме.
Настроим сценарий синхронизации:
Теперь, пока у кассира открыта программа, каждые полчаса система будет невидимо для него связываться с базой УТ, отправлять чеки и получать новые цены и товары. Это идеальный вариант, полностью исключающий человеческий фактор.
Вопреки распространенному мнению, базовая версия 1С:Розница позволяет подключать расширения конфигурации. Единственное ограничение — расширение не должно менять структуру метаданных (создавать новые справочники, документы или реквизиты). Но добавлять новые элементы интерфейса и программный код в расширении можно!
Программист может создать небольшое расширение, которое добавит кнопку прямо на форму РМК. К этой кнопке можно привязать физическую клавишу на POS-клавиатуре.
При нажатии на эту кнопку в расширении должен выполняться следующий программный код:
// Вызов процедуры обмена через БСП
ПараметрыОбмена = ПолучитьПараметрыОбмена();
Если ПараметрыОбмена <> Неопределено Тогда
ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(ПараметрыОбмена.УзелИнформационнойБазы);
ПоказатьПредупреждение(, "Синхронизация успешно завершена!");
КонецЕсли;
Этот метод полностью решает проблему «бабушек у кассы», так как им вообще не нужно совершать никаких переходов по меню — достаточно нажать назначенную клавишу прямо в процессе работы на кассе.
Рассмотрим вариант, когда обмен нужно гарантированно выполнять при запуске компьютера или перед уходом домой, вообще минуя интерфейс программы для пользователя. Для этого мы можем использовать командный файл Windows (BAT-файл).
Создадим текстовый файл с расширением .bat на рабочем столе кассира. Пропишем в нем сценарий, который сначала запускает «1С» в скрытом режиме выполнения обмена, а затем открывает программу в обычном режиме для работы:
@echo off
echo Запуск синхронизации данных...
"C:\Program Files\1cv8\common\1estart.exe" ENTERPRISE /F "C:\1C_Bases\Retail" /N "Кассир" /P "Пароль" /C "ВыполнитьОбмен" /Out "C:\temp\sync_log.txt" -NoSplash
echo Синхронизация завершена. Запуск рабочей программы...
"C:\Program Files\1cv8\common\1estart.exe" ENTERPRISE /F "C:\1C_Bases\Retail" /N "Кассир" /P "Пароль"
Чтобы этот скрипт сработал, нам нужно в модуле управляемого приложения нашей базы (опять же, через небольшое расширение) прописать обработку параметра запуска в процедуре ПриНачалеРаботыСистемы:
Процедура ПриНачалеРаботыСистемы()
ПараметрыЗапускаСкрипта = ПараметрыЗапуска;
Если ПараметрыЗапускаСкрипта = "ВыполнитьОбмен" Тогда
// Выполняем синхронизацию в тихом режиме
ВыполнитьСинхронизациюВТихомРежиме();
// Завершаем работу сеанса, чтобы bat-файл пошел дальше по коду
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
При таком подходе кассиру достаточно дважды кликнуть по одному ярлыку на рабочем столе Windows. Программа сама запустится, обменяется данными с главным офисом, автоматически закроется и тут же откроет чистое окно РМК для продаж.
Даже при идеальной автоматизации обмена периодически могут возникать технические сбои. Проанализируем наиболее частые проблемы и пути их решения:
1Cv8.lgd или зависший фоновый процесс. Для исправления ситуации необходимо перезагрузить компьютер кассира.Мы подробно рассмотрели все доступные варианты организации синхронизации данных для продавца. Используя предложенные методики, вы сможете настроить стабильный обмен даже на базовых версиях программы «1С:Розница» без нарушения лицензионной политики.