Как добавить и сохранить поле комментария в отложенном чеке РМК 1С?

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

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

Основная проблема, с которой мы сталкиваемся, заключается в том, что добавление поля комментария просто на форму РМК (Рабочего Места Кассира) с установкой галки "Сохраняемые данные" не приведет к его сохранению. Это происходит потому, что данные формы не всегда напрямую связаны с данными объекта, который сохраняется в базе данных. Отложенные чеки хранятся в специальном хранилище, и для сохранения нашего комментария, его необходимо добавить как реквизит самого объекта, представляющего отложенный чек, а не только как реквизит формы. В нашем случае, наиболее логичным объектом для добавления комментария будет Документ.ЧекККМ, так как именно он формируется при завершении операции, и данные отложенного чека часто преобразуются в него.

Подготовка: Добавление реквизита "Комментарий" к документу

Первым шагом нам необходимо добавить новый реквизит для хранения комментария. Мы будем делать это через расширение конфигурации, что позволит нам не снимать конфигурацию с поддержки и сохранять возможность ее обновления. Добавим реквизит непосредственно в тот объект, который будет хранить этот комментарий постоянно. Исходя из логики работы РМК, это будет Документ.ЧекККМ.

  1. Откройте конфигуратор 1С.
  2. Перейдите в меню "Конфигурация" -> "Расширения конфигурации". Создайте новое расширение, если его еще нет.
  3. Добавьте в расширение объект Документ.ЧекККМ.
  4. В созданном расширении, в ветке Документ.ЧекККМ, создайте новый реквизит.
  5. Назовите реквизит "Комментарий".
  6. Установите тип реквизита "Строка". Мы рекомендуем установить достаточно большую длину строки (например, 250 или 500 символов) для возможности размещения подробных комментариев.
  7. Не забудьте сохранить изменения в расширении.

Таким образом, мы гарантируем, что для каждого чека ККМ (в том числе и для тех, которые формируются из отложенных чеков) будет существовать поле, предназначенное для хранения нашего комментария.

Разработка расширения и обработчиков для работы с комментарием

После того как реквизит добавлен, нам необходимо обеспечить его заполнение и отображение в интерфейсе РМК. Для этого мы будем использовать обработчики событий форм РМК в нашем расширении. Все действия будем выполнять в контексте расширения.

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

Шаг 1: Очистка комментария при создании нового набора товаров

При создании нового чека или очистке РМК важно сбросить значение комментария, чтобы старые данные не переносились в новый чек. Мы можем использовать обработчик события СоздатьНовыйНабор, который обычно вызывается при инициализации нового чека.

Добавим следующий код в модуль формы РабочееМестоКассира вашего расширения:


&НаСервере
&Перед("СоздатьНовыйНабор")
Процедура ВашеРасширение_СоздатьНовыйНабор(ОчиститьДокументОбработки, ОчисткаАвтосохраненныхДанных)
    Объект["Комментарий"] = "";
КонецПроцедуры

В этом коде:

Шаг 2: Ввод комментария при откладывании чека

Нам нужен механизм, который позволит кассиру ввести комментарий непосредственно в момент откладывания чека. Мы можем привязаться к существующему событию, которое происходит в процессе обработки чека. В приведенном примере из форума использован обработчик ОповещениеОткрытьФормуВыбораПричиныВозврата. Хотя его название может показаться не совсем подходящим для отложенного чека, оно, вероятно, является удобной точкой входа в данной конфигурации для запроса дополнительной информации.

Добавим следующий код:


&НаКлиенте
&После("ОповещениеОткрытьФормуВыбораПричиныВозврата")
Процедура ВашеРасширение_ОповещениеОткрытьФормуВыбораПричиныВозврата(РезультатОткрытияФормы, ДополнительныеПараметры)
    ПодсказкаВводаСтроки = "Введите комментарий к чеку:";
    ОписаниеОповещения = Новый ОписаниеОповещения("ВашеРасширение_ПослеВводаСтроки", ЭтотОбъект);
    ПоказатьВводСтроки(ОписаниеОповещения, Объект["Комментарий"], ПодсказкаВводаСтроки, 0, Ложь);
КонецПроцедуры

Здесь:

Шаг 3: Сохранение введенного комментария

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

Добавим следующую процедуру:


&НаКлиенте
Процедура ВашеРасширение_ПослеВводаСтроки(Строка, ДополнительныеПараметры) Экспорт
    Если НЕ Строка = Неопределено Тогда
        Объект["Комментарий"] = Строка;
    КонецЕсли;
КонецПроцедуры

В этой процедуре:

Шаг 4: Восстановление комментария при загрузке отложенного чека

Когда кассир выбирает отложенный чек для продолжения работы, нам необходимо, чтобы сохраненный ранее комментарий был загружен и отображен. Для этого мы используем обработчик события ЗаполнитьДаннымиПоЧекуККМ, который вызывается при загрузке данных чека в форму РМК.

Добавим следующий код:


&НаСервере
&После("ЗаполнитьДаннымиПоЧекуККМ")
Процедура ВашеРасширение_ЗаполнитьДаннымиПоЧекуККМ(ЧекЗаполнения, Отказ)
    Объект["Комментарий"] = ЧекЗаполнения.Комментарий;
КонецПроцедуры

Здесь:

Важные аспекты и рекомендации

  1. Реквизит формы против реквизита объекта: Как мы выяснили, ключевым моментом является добавление реквизита "Комментарий" не только на форму РМК, но и в основной объект, который используется для хранения данных (в нашем случае, Документ.ЧекККМ). Флаг "Сохраняемые данные" на реквизите формы сам по себе не обеспечивает сохранение в базе данных, он лишь указывает, что данные должны быть сохранены при закрытии формы (что не всегда приводит к постоянному хранению, особенно в случае отложенных чеков).
  2. Механизм хранения отложенных чеков: Помните, что отложенные чеки сохраняются в специальном хранилище и не передаются в ОФД или налоговую до их завершения. Срок хранения отложенных чеков можно настроить в разделе НСИ и администрирование -> Продажи -> Розничные продажи -> Хранить отложенные чеки.
  3. Нестандартное использование отложенных чеков: В обсуждаемой теме было упомянуто использование отложенных чеков для выдачи товаров "в долг". Это является нестандартным использованием типового функционала. Отложенные чеки не предназначены для учета дебиторской задолженности. Такое применение может привести к проблемам с контролем долгов, инвентаризацией и отчетностью. Для учета долгов рекомендуется использовать более подходящие механизмы, такие как специализированные документы "Реализация товаров и услуг" с типом операции "Отгрузка без оплаты" или "Перемещение товаров", или специально разработанные регистры. Будьте готовы к возможным сложностям и рассмотрите альтернативные подходы, если такая функциональность критична.
  4. Отображение поля на форме РМК: Хотя приведенный код обеспечивает сохранение и восстановление комментария, для удобства работы кассира вам, возможно, потребуется добавить видимое поле для отображения и редактирования комментария непосредственно на форме РМК через то же расширение. Это может быть обычное поле ввода, связанное с реквизитом Объект.Комментарий.
  5. Версии РМК: В некоторых версиях конфигураций (например, 1С:Розница 2.3.14) кнопка "Отложенные чеки" могла быть изменена или удалена, но функциональность сохранения чека при наличии товаров в РМК обычно остаётся. Важно учитывать эти особенности вашей конфигурации.
  6. Закрытие кассовой смены: Имейте в виду, что закрытие кассовой смены часто возможно даже при наличии неоплаченных отложенных чеков, что может потребовать дополнительных контролей со стороны пользователей или доработок.

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

← На главную