1С и 20 онлайн-касс: блокировки
Добрый день! 1С 8.2.
1С расположена на терминальном сервере. Все работают через подключения к удаленному рабочему столу. Фактически получается ситуация что кассовые чеки могут создаваться каждые 30 секунд. В случае, если один из кассиров проводит ПКО и в это время начинает другой кассир проводить ПКО - 1-ый кассовый чек пробивается на ККМ, но возникает блокировка и в ПКО не проводится, в нем не устанавливается признак что чек пробит.
У кого были подобные ошибки как Вы их решали? Онлайн кассы АТОЛ 22/25Ф. В результате его вообще возникают эти ошибки?
Спасибо.
1С расположена на терминальном сервере. Все работают через подключения к удаленному рабочему столу. Фактически получается ситуация что кассовые чеки могут создаваться каждые 30 секунд. В случае, если один из кассиров проводит ПКО и в это время начинает другой кассир проводить ПКО - 1-ый кассовый чек пробивается на ККМ, но возникает блокировка и в ПКО не проводится, в нем не устанавливается признак что чек пробит.
У кого были подобные ошибки как Вы их решали? Онлайн кассы АТОЛ 22/25Ф. В результате его вообще возникают эти ошибки?
Спасибо.
По теме из базы знаний
Найденные решения
(9)
Можно, и после записи. (единственно не скажу, надо проверить, послезаписи() выполняется уже со снятыми блокировками?, а то вдруг ещё нет.)
Можно опять же программно, сначала
1. провести ПКО
2. пробить чек.
3. не знаю записываются у вас реквизиты чека в ПКО если, то установить их
4. Записать ПКО без проведения.
5. закрыть форму программно
6. профит )
Если 2 неудачно, 3 отменить проведение например.
Можно, и после записи. (единственно не скажу, надо проверить, послезаписи() выполняется уже со снятыми блокировками?, а то вдруг ещё нет.)
Можно опять же программно, сначала
1. провести ПКО
2. пробить чек.
3. не знаю записываются у вас реквизиты чека в ПКО если, то установить их
4. Записать ПКО без проведения.
5. закрыть форму программно
6. профит )
Если 2 неудачно, 3 отменить проведение например.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ККТ не может проводить две операции одновременно.
1С ничего не написала для проверки блокировки ККТ, в момент печати чека.
Правильно необходимо править код, что бы перед печатью чека, 1С проверяла доступность (незаблокированность) оборудования , в драйверах, такая команда есть, и если ККТ сейчас занята, обрабатывать данную ситуацию.
1С ничего не написала для проверки блокировки ККТ, в момент печати чека.
Правильно необходимо править код, что бы перед печатью чека, 1С проверяла доступность (незаблокированность) оборудования , в драйверах, такая команда есть, и если ККТ сейчас занята, обрабатывать данную ситуацию.
Насколько я разобрался проблема оказалась в другом:
весь код для проведения чека ККМ запуска из модуля объекта обработки проведения документа (у нас дописанная конфа), так как при проведении документа автоматически заполняется признак пробития, номер чека и смены. В результате этого блокируется таблицы SQL (так как так документ проводился 2 секунды, а теперь 15). Если перенести этот механизм в подписку на событие (обработку проведения) то это поможет или нет? Или что лучше сделать? Отдельную кнопку для пробития чека не хотелось бы выносить.
весь код для проведения чека ККМ запуска из модуля объекта обработки проведения документа (у нас дописанная конфа), так как при проведении документа автоматически заполняется признак пробития, номер чека и смены. В результате этого блокируется таблицы SQL (так как так документ проводился 2 секунды, а теперь 15). Если перенести этот механизм в подписку на событие (обработку проведения) то это поможет или нет? Или что лучше сделать? Отдельную кнопку для пробития чека не хотелось бы выносить.
(6) База клиент-серверная. Большое количество документов может проводиться практически единовременно, в этом проблема. А онлайн-касса только затягивает этот процесс.
А если перенести в после записи, при этом необходимые реквизиты документа заполнил, а документы уже не проводить - а записывать? Или это все равно считается одной транзакцией?
А если перенести в после записи, при этом необходимые реквизиты документа заполнил, а документы уже не проводить - а записывать? Или это все равно считается одной транзакцией?
(7) Я так понял у вас пробитие чека идет в обработке проведения. Естественно это не есть хорошо.
Команду "Провести и закрыть" заменяете командой "пробитие чека"
1. Если надо в обработчике предварительно записываете документ
2. пробиваете чек
3. при удачном пробитии проводите и закрываете форму.
Вот так выглядит код при удачном пробитии чека в Стандартной БП в документе "Розничная продажа".
Посмотрите как там сделано, это самый простой пример.
Теперь пробитие и проведение у вас разделены и "длинных" блокировок не будет.
Команду "Провести и закрыть" заменяете командой "пробитие чека"
1. Если надо в обработчике предварительно записываете документ
2. пробиваете чек
3. при удачном пробитии проводите и закрываете форму.
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Записать(ПараметрыЗаписи);
Если ДополнительныеПараметры.ПечататьТоварныйЧек Тогда
ОбъектыПечати = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка);
УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер("Документ.РозничнаяПродажа", "ТоварныйЧек", ОбъектыПечати, ОбщегоНазначенияБПКлиент.ПолучитьЗаголовокПечатнойФормы(ОбъектыПечати));
КонецЕсли;
ТекстСообщения = НСтр("ru = 'Операция выполнена успешно.'");
ПоказатьОповещениеПользователя(ТекстСообщения);
Закрыть();
ПоказатьВот так выглядит код при удачном пробитии чека в Стандартной БП в документе "Розничная продажа".
Посмотрите как там сделано, это самый простой пример.
Теперь пробитие и проведение у вас разделены и "длинных" блокировок не будет.
(9)
Можно, и после записи. (единственно не скажу, надо проверить, послезаписи() выполняется уже со снятыми блокировками?, а то вдруг ещё нет.)
Можно опять же программно, сначала
1. провести ПКО
2. пробить чек.
3. не знаю записываются у вас реквизиты чека в ПКО если, то установить их
4. Записать ПКО без проведения.
5. закрыть форму программно
6. профит )
Если 2 неудачно, 3 отменить проведение например.
Можно, и после записи. (единственно не скажу, надо проверить, послезаписи() выполняется уже со снятыми блокировками?, а то вдруг ещё нет.)
Можно опять же программно, сначала
1. провести ПКО
2. пробить чек.
3. не знаю записываются у вас реквизиты чека в ПКО если, то установить их
4. Записать ПКО без проведения.
5. закрыть форму программно
6. профит )
Если 2 неудачно, 3 отменить проведение например.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот