Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 мая 2025, 05:09

Не пробивает "Возврат" на чеке ККМ

Автор Yanawerg, 14 мая 2025, 12:38

0 Пользователей и 1 гость просматривают эту тему.

Yanawerg

1С 8.2 УПП 1.3

При попытке сделать ВОЗВРАТ выбивается чек ПРИХОД.

Как только не пробовал выбивать чек Возврата печатается только чек Приход.
Как правильно делать чек ВОЗВРАТА или что нужно сделать что бы 1С начала печатать его ?

sali


Yanawerg

sali, Используется встроенный код 1С.
Процедура ОсновныеДействияФормыЧек(Кнопка)

Если НомерЧекаККМ <> 0 Тогда
Предупреждение("Чек уже пробит на фискальном регистраторе!", 60);
Возврат;
КонецЕсли;

МассивФР = ПолучитьСерверТО().ПолучитьСписокУстройств(
                    Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор,
                    Справочники.КассыККМ.ПустаяСсылка());

ФР            = Неопределено;
СписокФР      = Новый СписокЗначений();
Вид           = Неопределено;
Представление = Неопределено;

Для каждого ФР Из МассивФР Цикл
ПолучитьСерверТО().ПолучитьПредставлениеУстройства(ФР, Вид, Представление);
СписокФР.Добавить(ФР, Представление);
КонецЦикла;

КоличествоФР = СписокФР.Количество();
Если      КоличествоФР = 0 Тогда
Предупреждение("Фискальный регистратор не подключен!");
ФР = Неопределено;
ИначеЕсли КоличествоФР = 1 Тогда
ФР = СписокФР[0].Значение;
Иначе
ФР = СписокФР.ВыбратьЭлемент("Необходимо выбрать фискальный регистратор");
Если ФР = Неопределено Тогда
Предупреждение("Операция отменена пользователем");
Иначе
ФР = ФР.Значение;
КонецЕсли;
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ФР) Тогда
Возврат;
КонецЕсли;

Позиция         = Неопределено;
НомерСмены      = Неопределено;
ТаблицаПлатежей = Новый ТаблицаЗначений();
ТаблицаПлатежей.Колонки.Добавить("Заголовок");
ТаблицаПлатежей.Колонки.Добавить("Сумма");
ТаблицаПлатежей.Колонки.Добавить("НДС");

Для Каждого Позиция Из РасшифровкаПлатежа Цикл
СтрокаТаблицы           = ТаблицаПлатежей.Добавить();
СтрокаТаблицы.Заголовок = "АВАНС";
СтрокаТаблицы.Сумма     = Позиция.СуммаПлатежа;
СтрокаТаблицы.НДС       = УчетНДС.ПолучитьСтавкуНДС(Позиция.СтавкаНДС);
КонецЦикла;

Если ВидОперации = Перечисления.ВидыОперацийОплатаОтПокупателяПлатежнойКартой.ОплатаПокупателя Тогда
Результат = ПолучитьСерверТО().ПечатьЧекаПКО(ФР,
   "",
   НомерЧекаККМ,
   НомерСмены,
   ТаблицаПлатежей,
   0,
   СуммаДокумента);
Основание = ЭтотОбъект.Ссылка;
ПараметрыЧека = СоздатьПробитьЧекККМ(Основание);
ЗаполнитьЧекИзООППК(ПараметрыЧека);
Иначе
Результат = ПолучитьСерверТО().ПечатьЧекаРКО(ФР,
   "",
   НомерЧекаККМ,
   НомерСмены,
   ТаблицаПлатежей,
   0,
   СуммаДокумента);
Основание = ЭтотОбъект.Ссылка;
ПараметрыЧека = СоздатьПробитьЧекККМ(Основание);
    ЗаполнитьЧекИзООППК(ПараметрыЧека);
КонецЕсли;


Если НЕ ЗначениеЗаполнено(Результат) Тогда
Оплачено = Истина;
Иначе
ТекстОшибки = ПолучитьСерверТО().ПолучитьТекстОшибкиФРТО(Результат);
Предупреждение(ТекстОшибки);
КонецЕсли;

КонецПроцедуры

Максим75

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

проще всего запустить в режиме отладки, поставить точку останова и пошагово с заходом в процедуры/функции все пройти.

Yanawerg

Максим75, Эта функция создана для создания документа ЧекККМ что бы можно было понять пробивали ли чек вообще.

Обработка отвечающая за печать называется ТОСервер, где определяется сам ККМ и параметры для его печати.

sali


Максим75

Yanawerg, значит смотрите ПолучитьСерверТО().ПечатьЧекаПКО и ПолучитьСерверТО().ПечатьЧекаРКО.
там где-то и должно быть непосредственно печать чека на регистраторе.
возможно просто в ПечатьЧекаРКО не попадает, там вид операции проверяется, может он у Вас всегда оплата идет

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск