Печать ФИО кассира в чеке

1. login1992 19.02.21 23:46 Сейчас в теме
Самописная конфа. Подключил библиотеку, подключаемое оборудование. Настроил чек как фискальный регистратор. Иначе кассовый чек не пробивается (этого я поменять не могу, касса Штрих М Онлайн). Чек пробивает отлично, в ОФД данные попадают. Но в чеке в поле кассир пишет администратор (пробывал менял в драйвере в поле 30 (наверное, не помню) на другое имя, не помогло все равно администратор).
происходит это так:
Срабатывает функция открыть чек. Печатается заголовок чека, все до перечисления номенклатуры. Там и печатается "Кассир: Администратор".
Потом происходит печать всей остальной инфы.
Чек закрывается на функцию "ОбщийМодульОборудования.ЗакрытьЧек".

Вопрос как мне получить имя кассира (например: Иванова Игоря Анатольевича)?

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

Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. PhoenixAOD 62 20.02.21 02:46 Сейчас в теме
(1)Пользователи.ТекущийПользователь(); попробуй
4. login1992 20.02.21 07:12 Сейчас в теме
Я не знаю куда загнать этот параметр что бы ФИО распечатать.
5. Nubsdale 20.02.21 10:01 Сейчас в теме
(4) Нужно поставить точку остановки
(1)
Результат = ОбщийМодульОборудования.ЗакрытьЧек(ОбъектДрайвера, Параметры, ПараметрыПодключения, ТаблицаОплатЧека, ВыходныеПараметры);

Например тут. выделить выделить ВыходныеПараметры и через "Вычислить выражение" посмотреть где заполняется Администратор.
и как написал ( 2 ) присвоить текущего пользователя
3. burgomister 60 20.02.21 04:40 Сейчас в теме
В стандартный конфигурациях в чеке печатается физическое лицо пользователя.
trampsss; GeraltSnow; dchumak; +3 Ответить 1
6. pavel06 2 20.02.21 22:47 Сейчас в теме
(3)
в чеке печатается физическое лицо пользователя.


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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот