1С:Розница и алкоголь: ускоряем РМК при переходе к оплате

Публикация № 1186753

Учет и отчетность - Розничная торговля

ЕГАИС марка алкоголь Розница

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

В данной статье рассмотрим проблему, с которой обращаются ко мне коллеги на Инфостарте, а также множество клиентов.

Типовое описание, с которым обращаются: "После нажатия на кнопки "Наличная оплата", "Плат. карта" или "Сложная оплата" 1С зависает на N секунд/минут, если в чеке есть алкоголь с марками".

После банального замера производительности выяснилось, что проблема кроется в процедуре "ПроверитьАкцизныеМаркиПередЗаписьюЧека" общего модуля "ПродажиСервер", а именно, в запросе:

 
 Листинг запроса

 

Первое впечатление: а, собственно, зачем все это городить? Есть регистр сведений "Акцизные марки ЕГАИС", почему нельзя использовать запрос к нему для получения статуса марок? Ведь именно для этого он и нужен!

Первый ответ, который пришел в голову: возможно, в 1С решили подстраховаться на случай, если в регистре по какой-то причине нет записи о статусе марки (например, "потерялись" вследствие повреждения базы).

"Пощупав" данный вывод с разных сторон приходим к, как я думаю, реальной причине: этот регистр ввели в конфигурацию только с появлением поддержки новых акцизных марок, поэтому в этом регистре может не быть информации о продажах марок старого формата!

Например, у вас есть недобросовестный кассир, который в "седые" года в старой версии Розницы зарегистрировал продажу некоторой марки старого образца, а по факту отдал клиенту другую бутылку. Поштучного учета по таким маркам нет, расхождений по количеству тоже не будет, поэтому вы подвоха не заметите. Пусть эта бутылка у вас неожиданно пролежала до сегодняшнего дня, когда появился регистр сведений "Акцизные марки ЕГАИС", в котором статуса той формально проданной марки нет. И вот, наконец, кассиру при продаже в руки попадается бутылка с той самой маркой, продажа которой уже зарегистрирована в ЕГАИС. Вот в этом случае 1С уже "на корню" обрубит продажу, так как увидит, что есть в базе чек с этой маркой. С другой стороны, есть УТМ, который со своей стороны также проконтролирует факт повторной продажи, но в том случае, если:

  • у вас во время пробития есть выход в Интернет;
  • УТМ успешно получил результат проверки марки с сервера ФСРАР в течение 3 секунд.

Давайте поразмышляем над тем, как можно повлиять на время выполнения данного запроса. Прежде всего проанализируем, какие таблицы могут привести к увеличению времени выполнения запроса. Конечно же, самые большие таблицы - это:

  • Документ.ЧекККМ
  • РегистрСведений.АкцизныеМаркиЕГАИС

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

Вариант 1: свертка информационной базы (нет ограничений)

Да, действительно, после свертки ожидаем, что количество чеков ККМ у нас значительно сократится и нормализуется скорость работы.

Но, вы должны четко понимать, что в этом случае вы потеряете данные о фактах продажи марок старого образца, которых нет в регистре сведений "Акцизные марки ЕГАИС". К тому же процесс свертки может затянуться и привести к непредвиденным результатам, особенно если были ошибки ведения учета.

Вариант 2: удаление чеков ККМ (нет ограничений)

Данный вариант - это своего рода частный случай первого варианта. Как известно, архивные чеки не делают никаких движений по регистрам. Поэтому можно групповой обработкой в режиме разработчика пометить эти чеки на удаление и потом окончательно удалить.

Риски тут все те же, что и в 1 варианте

Вариант 3: исправление запроса расширением (должна быть ПРОФ-версия платформы)

Допустим, вы решились полностью положиться на УТМ или уверены в своих кассирах на все 101%, а также у вас стоит ПРОФ-версия Розницы (или базовая Розница работает под платформой версии ПРОФ: например, если на том же ПК активирована лицензия на другой ПП 1С уровня ПРОФ). В этом случае вы можете исправить данный запрос расширением. Для этого в расширение перенесите общий модуль "ПродажиСервер" и вставьте следующий код:

 
 С использованием аннотации "ИзменениеИКонтроль" (2.2.13.12)
 
 С использованием аннотации "Вместо" (2.2.13.12)
 
 С использованием аннотации "ИзменениеИКонтроль" (2.3.2.28)
 
 С использованием аннотации "Вместо" (2.3.2.28)

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

 
 Время выполнения типового запроса
 
 Время выполнения отредактированного запроса

Как видим, разница колоссальная! У некоторых время выполнения типового запроса достигала порядка 200-300 сек, в зависимости от "железа" и количества чеков в базе. Только представьте: у вас покупатель будет ждать 3-5 минут, пока кассир сможет принять у него оплату!

Минимизация рисков

Как уже отметил вышел, вы должны четко понимать, какие риски вы принимаете на себя, если будете использовать вышеприведенные варианты. Во-первых, нельзя исключать, что у вас вдруг окажется реализованная ранее марка старого образца, а при продаже УТМ не сможет ее проверить; да, вероятность мизерная, но надо понимать, что она все-таки существует. Во-вторых, при использовании вариантов 1 и 2 вы потеряете архивные чеки: это может создать некоторые неудобства, например, при оформлении возвратов. Для минимизации рисков повторной продажи в любом из приведенных вариантах поможет внесение тем или иным способом статусов реализованных ранее марок старого образца в регистр сведений "Акцизные марки ЕГАИС". Но об этом поговорим позже...

Бонус: к статье прикреплены расширения для реализации 3 варианта с использованием совместно с платформой 8.3.15 для версий 2.3.2.28 и 2.2.13.12

Скачать файлы

Наименование Файл Версия Размер
1С:Розница и алкоголь: ускоряем РМК при переходе к оплате: 2.2.13.12
.cfe 7,28Kb
29.01.20
1
.cfe 7,28Kb 1 Скачать
1С:Розница и алкоголь: ускоряем РМК при переходе к оплате: 2.3.2.28
.cfe 7,34Kb
29.01.20
2
.cfe 7,34Kb 2 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Rustig 1412 30.01.20 03:15 Сейчас в теме
(0) прикольная статья!
Выборку из регистра сведений трогать не стоит, к тому же на нее тратится не так много времени, а вот выборка чеков ККМ как раз и приводит к значительному увеличению времени выполнения. Поэтому сразу на ум приходит первое решение проблемы...

Вариант 1: свертка информационной базы (нет ограничений)

можно провести свертку не всей информационной базы, а только некоторых таблиц - в частности таблицы ЧекККМ
Вариант 2: удаление чеков ККМ (нет ограничений)

При первом и втором варианте, прежде чем удалять чеки ккм, сведения о продажах алкоголя следует перенести в регистр РегистрСведений.АкцизныеМаркиЕГАИС.
Для минимизации рисков повторной продажи в любом из приведенных вариантах поможет внесение тем или иным способом статусов реализованных ранее марок старого образца в регистр сведений "Акцизные марки ЕГАИС". Но об этом поговорим позже...

Как раз такие мысли и возникли сразу, и, возможно, не надо будет использовать расширение конфигурации для ускорения алгоритма продажи. Но я не знаю подводных камней, поэтому предлагаю обсудить их в комментариях, а не "позже" :)
2. al_zzz 160 30.01.20 05:37 Сейчас в теме
(1) По поводу переноса сведений о списанных АМ тоже сразу в голову пришло. Почему бы не обсудить это здесь?
3. RocKeR_13 779 30.01.20 06:29 Сейчас в теме
(1) имелось в виду, что позже будет приведена в рамках статьи реализация соответствующей обработки)
4. RocKeR_13 779 30.01.20 08:43 Сейчас в теме
(1) Подводных камней там нет. "Подвох" можно ожидать только в случае некорректной реализации данной методики. За основу планирую взять все тот же запрос, которым проверяются марки, но условие там поставить только по дате: выборку делать до минимальной даты основания смены статуса в регистре акцизных марок.
5. user1274438 30.01.20 16:24 Сейчас в теме
Вчера, говорят, было обновление, где 1С что-то поправили в этом запросе, как раз.
6. user1274438 30.01.20 16:36 Сейчас в теме
(5) Не поленился, открыл релизы. По факту изменений в релизе не увидел. Везде обман.
7. RocKeR_13 779 30.01.20 16:41 Сейчас в теме
(6) неа, модуль ПродажиСервер вообще даже не изменился
8. *Zed* 278 10.03.20 17:33 Сейчас в теме
(7) в 2.3.3.19 модуль проверки изменен - они исправили данную ошибку или нет?
9. *Zed* 278 12.03.20 14:34 Сейчас в теме
(8) проверил на тестовой базе - все быстро работает, по времени так же как если стоит исправление
10. *Zed* 278 17.03.20 15:43 Сейчас в теме
(9) Рано радовался. Запрос стал выполнятся значительно быстрее, но все равно очень медленно в районе 18-35 секунд стандартный и в районе пары секунд если использовать расширение "вместо".
Так же они поменяли алгоритм использования данной процедуры - раньше проверка шла при сканировании марки, теперь же при нажатии кнопок оплаты. Поэтому на тестовой и не вылезла данная ошибка, в связи с не подключенной кассой.
Данная проблема актуальна не только для алкоголя, но и для табака с новыми КМ
11. RocKeR_13 779 17.03.20 16:41 Сейчас в теме
(10) нет, эту проверку не изменяли. Сейчас обновился на 2.3.3.25 - все без изменений
12. Virus32BioScan 01.04.20 15:05 Сейчас в теме
Доброе время суток. И так есть косяк, не знаю как в новой версии но, в 2.3.3.19 в общем модуле АкцизныеМаркиЕГАИСПереопределяемый есть процедура ПроверитьУникальностьАкцизнойМарки - при добавление позиции алкогольной продукции в РМК или ЧекККМ запрос выполняется 20 сек и более в целях быстроты работы я ее отключил
13. Virus32BioScan 01.04.20 15:11 Сейчас в теме
Если у вас в РМК дублируются позиции алкогольной продукции в 2.3.3.19 - 2.3.3.25 отпишите мне в личку я расскажу в чем проблема и ее решение, отдельную тему создавать не буду
14. tulapc 12.05.20 15:59 Сейчас в теме
2.3.3.31 как с расширением так и без скорость одна - 5 секунд, разницы не увидел
15. RocKeR_13 779 12.05.20 16:44 Сейчас в теме
(14) Здравствуйте! На последних версиях пока не смотрел: вполне возможно, что исправили. До обновления были проблемы со скоростью работы? Может быть у вас в базе небольшое количество документов "ЧекККМ": в этом случае прироста производительности и не увидите
16. tulapc 12.05.20 17:36 Сейчас в теме
(15) Вот это нет, чеков там за три года до бениной мамы))) там правда вэб сервер поднят на I5-9400 и на SSD, а две кассы по тонкому клиенту
18. RocKeR_13 779 12.05.20 17:40 Сейчас в теме
(16) а до обновления-то была проблема с зависанием?)
19. tulapc 12.05.20 17:41 Сейчас в теме
20. RocKeR_13 779 12.05.20 17:45 Сейчас в теме
(19) Ну значит и так справлялось железо) У тех, кто с этой проблемой обращался, зависания были от 1 до, если правильно помню, 5 минут
17. tulapc 12.05.20 17:38 Сейчас в теме
(15) тут уж как говориться купил и купил)))
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.02.2015    99071    96    daMaster    88    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3645    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    3923    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

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

1 стартмани

24.03.2017    7528    6    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

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

26.08.2013    260456    0    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    27912    1    CheBurator    61