Самописная конфа. Подключил библиотеку, подключаемое оборудование. Настроил чек как фискальный регистратор. Иначе кассовый чек не пробивается (этого я поменять не могу, касса Штрих М Онлайн). Чек пробивает отлично, в ОФД данные попадают. Но в чеке в поле кассир пишет администратор (пробывал менял в драйвере в поле 30 (наверное, не помню) на другое имя, не помогло все равно администратор).
происходит это так:
Срабатывает функция открыть чек. Печатается заголовок чека, все до перечисления номенклатуры. Там и печатается "Кассир: Администратор".
Потом происходит печать всей остальной инфы.
Чек закрывается на функцию "ОбщийМодульОборудования.ЗакрытьЧек".
Вопрос как мне получить имя кассира (например: Иванова Игоря Анатольевича)?
происходит это так:
Срабатывает функция открыть чек. Печатается заголовок чека, все до перечисления номенклатуры. Там и печатается "Кассир: Администратор".
Потом происходит печать всей остальной инфы.
Чек закрывается на функцию "ОбщийМодульОборудования.ЗакрытьЧек".
Вопрос как мне получить имя кассира (например: Иванова Игоря Анатольевича)?
Функция ПечатьЧекаПоШаблону(ОбщийМодульОборудования, ОбъектДрайвера, Параметры, ПараметрыПодключения, ВходныеПараметры, ВыходныеПараметры) Экспорт
Результат = Истина;
ОбщиеПараметры = ВходныеПараметры[0];
ПозицииЧека = ОбщиеПараметры.ПозицииЧека;
ТаблицаОплат = ОбщиеПараметры.ТаблицаОплат;
Если ОбщиеПараметры.Свойство("ПодписьЧека") Тогда
// Печать чека производиться в 2 этапа. Чека был открыт ранее.
РасширенныеПараметры = ОбщиеПараметры.ПодписьЧека;
// Заполнение выходных параметров.
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(РасширенныеПараметры.НомерСмены);
ВыходныеПараметры.Добавить(РасширенныеПараметры.НомерЧека);
ВыходныеПараметры.Добавить(0); // Номер документа
ВыходныеПараметры.Добавить(МенеджерОборудованияКлиентПереопределяемый.ДатаСеанса());
ВыходныеПараметры.Добавить(Неопределено);
ВыходныеПараметры.Добавить(Неопределено);
ВыходныеПараметры.Добавить(Неопределено);
Иначе
ТипРасчета = МенеджерОборудованияКлиентСервер.ПолучитьКодТипаРасчетаДенежнымиСредствами(ОбщиеПараметры.ТипРасчета);
ТипЧека = ?(ТипРасчета = 1, Ложь, Истина);
// Открываем чек
Результат = ОбщийМодульОборудования.ОткрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, ТипЧека, Истина, ВыходныеПараметры);
КонецЕсли;
// Печатаем строки чека
Если Результат Тогда
ОшибкаПриПечати = Ложь;
// Печатаем позиции чека
Для ИндексМассива = 0 По ПозицииЧека.Количество() - 1 Цикл
ПозицияЧека = ПозицииЧека[ИндексМассива];
Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
Наименование = ?(ПозицияЧека.Свойство("Наименование") , ПозицияЧека.Наименование, "");
Количество = ?(ПозицияЧека.Свойство("Количество") , ПозицияЧека.Количество , 1);
Цена = ?(ПозицияЧека.Свойство("Цена") , ПозицияЧека.Цена , 0);
Сумма = ?(ПозицияЧека.Свойство("Сумма") , ПозицияЧека.Сумма , 0);
НомерСекции = ?(ПозицияЧека.Свойство("НомерСекции") , ПозицияЧека.НомерСекции , 0);
СтавкаНДС = ?(ПозицияЧека.Свойство("СтавкаНДС") , ПозицияЧека.СтавкаНДС , 0);
Если НЕ ОбщийМодульОборудования.НапечататьФискальнуюСтроку(ОбъектДрайвера, Параметры, ПараметрыПодключения,
Наименование, Количество, Цена, Сумма, НомерСекции, СтавкаНДС, ВыходныеПараметры) Тогда
ОшибкаПриПечати = Истина;
Прервать;
КонецЕсли;
ИначеЕсли ПозицияЧека.Свойство("ТекстоваяСтрока") Тогда
Текст = ?(ПозицияЧека.Свойство("Текст"), ПозицияЧека.Текст, "");
Если НЕ ОбщийМодульОборудования.НапечататьНефискальнуюСтроку(ОбъектДрайвера, Параметры, ПараметрыПодключения,
Текст, ВыходныеПараметры) Тогда
ОшибкаПриПечати = Истина;
Прервать;
КонецЕсли;
ИначеЕсли ПозицияЧека.Свойство("Штрихкод") Тогда
ВремВыходныеПараметры = Новый Массив();
ТипШтрихКодаЗнач = ?(ПозицияЧека.Свойство("ТипШтрихКода"), ПозицияЧека.ТипШтрихКода, "");
ШтрихКод = ?(ПозицияЧека.Свойство("ШтрихКод") , ПозицияЧека.ШтрихКод , "");
Если НЕ ОбщийМодульОборудования.ПечатьШтрихкода(ОбъектДрайвера, Параметры, ПараметрыПодключения,
ТипШтрихКодаЗнач, ШтрихКод, ВремВыходныеПараметры) Тогда
Текст = НСтр("ru='<Штрихкод %ТипШтрихКода% не распечатан>'");
Текст = СтрЗаменить(Текст, "%ТипШтрихКода%", ТипШтрихКодаЗнач);
Если НЕ ОбщийМодульОборудования.НапечататьНефискальнуюСтроку(ОбъектДрайвера, Параметры, ПараметрыПодключения,
Текст, ВремВыходныеПараметры) Тогда
ОшибкаПриПечати = Истина;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НЕ ОшибкаПриПечати Тогда
// Закрываем чек
ТаблицаОплатЧека = Новый Массив();
Если ТаблицаОплат <> Неопределено Тогда
СуммаНаличными = 0;
СуммаЭлектронными = 0;
СуммаПостоплатой = 0;
СуммаПредоплатой = 0;
СуммаПредоставлением = 0;
Для ИндексОплаты = 0 По ТаблицаОплат.Количество() - 1 Цикл
Если ТаблицаОплат[ИндексОплаты].ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Электронно") Тогда
СуммаЭлектронными = СуммаЭлектронными + ТаблицаОплат[ИндексОплаты].Сумма;
ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Предоплата") Тогда
СуммаПредоплатой = СуммаПредоплатой + ТаблицаОплат[ИндексОплаты].Сумма;
ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Постоплата") Тогда
СуммаПостоплатой = СуммаПостоплатой + ТаблицаОплат[ИндексОплаты].Сумма;
ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.ВстречноеПредоставление") Тогда
СуммаПредоставлением = СуммаПредоставлением + ТаблицаОплат[ИндексОплаты].Сумма;
Иначе
СуммаНаличными = СуммаНаличными + ТаблицаОплат[ИндексОплаты].Сумма;
КонецЕсли;
КонецЦикла;
СтрокаОплаты = Новый СписокЗначений();
СтрокаОплаты.Добавить(0);
СтрокаОплаты.Добавить(СуммаНаличными);
ТаблицаОплатЧека.Добавить(СтрокаОплаты);
СтрокаОплаты = Новый СписокЗначений();
СтрокаОплаты.Добавить(1);
СтрокаОплаты.Добавить(СуммаЭлектронными + СуммаПредоставлением);
ТаблицаОплатЧека.Добавить(СтрокаОплаты);
СтрокаОплаты = Новый СписокЗначений();
СтрокаОплаты.Добавить(2);
СтрокаОплаты.Добавить(СуммаПостоплатой);
ТаблицаОплатЧека.Добавить(СтрокаОплаты);
СтрокаОплаты = Новый СписокЗначений();
СтрокаОплаты.Добавить(3);
СтрокаОплаты.Добавить(СуммаПредоплатой);
ТаблицаОплатЧека.Добавить(СтрокаОплаты);
КонецЕсли;
Результат = ОбщийМодульОборудования.ЗакрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, ТаблицаОплатЧека, ВыходныеПараметры);
Иначе
Результат = Ложь;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
ПоказатьПрикрепленные файлы:


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