Имя: Пароль:
1C
1С v8
Печать чека со сдачей Комплексная автоматизация
0 evorle145
 
20.02.12
18:51
Подскажите, каким образом делают печать чека со сдачей? Макет чека в конфигурации не нашел.
1 maxmb
 
20.02.12
19:03
Кассового чека ?
2 maxmb
 
20.02.12
19:04
сдачу вы где хотите увидеть в макете чека или на кассовом чеке(который вылазит из ККМ) ?
3 evorle145
 
20.02.12
22:38
Спасибо, что откликнулись. Сдача нужна конечно на кассовом чеке. Я пытался найти хотя бы макет. Захожу В ПКО, смотрю что происходит по нажатию кнопки "ЧЕК". Там нахожу только

Результат = ПолучитьСерверТО().ПечатьЧекаПКО(ФР,
                                       "",
                                       НомерЧекаККМ,
                                       НомерСмены,
                                       ТаблицаПлатежей,
                                       СуммаДокумента,
                                       0);

Дальше нахожу ПечатьЧекаПКО. вот такая функция:


Функция ПечатьЧекаПКОРКО(Идентификатор, ЭтоРКО, Пароль, НомерЧека, НомерСмены,
                        ОписаниеПлатежа, СуммаНал, СуммаБезнал)

   Обработка = Неопределено;
   Объект    = Неопределено;
   ВремНомерЧека = 0;
   Результат = ПолучитьОбъектДрайвера(Идентификатор, Обработка, Объект);

   Если НЕ ЗначениеЗаполнено(Результат) Тогда
       НомерОтдела = Неопределено;
       Результат   = Обработка.ПолучитьПараметрыНаличнойОплаты(Объект, НомерОтдела);

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

                   Если ЗначениеЗаполнено(Результат) Тогда
                       Прервать;
                   КонецЕсли;
               КонецЦикла;
               Если НЕ ЗначениеЗаполнено(Результат) Тогда
                   Результат = Обработка.ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал);
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
       мОписаниеОшибки = Объект.ОписаниеОшибки;
   Иначе
       мОписаниеОшибки = ПолучитьТекстОшибкиПодключенияТО("ФР");
   КонецЕсли;

   Если НЕ ЗначениеЗаполнено(Результат) Тогда
       НомерЧека = ВремНомерЧека
   КонецЕсли;
   
   Возврат Результат;

Не могу понять, где здесь обращение к макету... Если макет вообще не используется, то подскажите, как в этом случае подступиться.
4 Мимохожий Однако
 
20.02.12
22:40
Чеком занимается ККМ или фискальный регистратор по командам, переданным при проведении чека.
5 evorle145
 
20.02.12
22:52
Не очень понял. Получается мне нужно найти команду которая бы мне вывела сдачу? Но как? А что имеется ввиду под словом "проведение" чека, это вроде не документ?
6 Reaper_1c
 
20.02.12
23:03
В торговом оборудовании нет макетов, всем заправляет драйвер. Пример смотри в печати чека ККМ из подсистемы розничной торговли. Он умеет, почему не используете?
7 MrStomak
 
20.02.12
23:05
Для ККМ есть разные команды - закрытие чека и закрытие чека со сдачей.
Строчки формируются уже на ней драйвером ККМ.
Можно и вручную там написать любой текст.
Макетов никаких, естественно, не используется, всё на командах драйверу
8 evorle145
 
20.02.12
23:36
Спасибо, позволю себе уточнить, правильно ли понял, что если в команде Обработка.ПечататьСтроку("") - напишу свой текст. Например, буду печатать последней строкой сдачу, то она у меня появится на чеке. Код привел ниже:


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

                   Если ЗначениеЗаполнено(Результат) Тогда
                       Прервать;
                   КонецЕсли;
               КонецЦикла;
//Сдача Начало доработки
Сдача = Обработка.ПечататьСтроку("Текст со сдачей");
//Окончание доработки
               Если (НЕ ЗначениеЗаполнено(Результат)) И (НЕ ЗначениеЗаполнено(Сдача)) Тогда
                   Результат = Обработка.ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал);
               КонецЕсли;
           КонецЕсли;
9 Reaper_1c
 
20.02.12
23:44
(8) И ты успешно вкатишь сдачу в фискальную память как выручку.
10 evorle145
 
20.02.12
23:45
(9) прошу пояснить. Почему последняя строка со сдачей станет выручкой?
11 Fragster
 
гуру
20.02.12
23:46
параметры СуммаНал и СуммаБезнал как бы намекают
12 Fragster
 
гуру
20.02.12
23:46
а также  ТаблицаПлатежей и СуммаДокумента
13 evorle145
 
20.02.12
23:49
Тогда куда же нужно добавить строку со сдачей, посоветуйте?
14 Reaper_1c
 
20.02.12
23:58
(13) В (6) даже написано где списать. Совесть-то имей...
15 evorle145
 
21.02.12
00:00
давно бы уже списал, только нет у меня конфигурации розничной торговли(
16 evorle145
 
21.02.12
00:13
(6) похоже не правильно понял ваш совет. В подсистеме розничной торговли вы имели ввиду чек, который печатается из документа Чек ККМ ?
17 Reaper_1c
 
21.02.12
00:22
(16) Именно.
18 evorle145
 
21.02.12
00:33
(17) Да, изначально я совсем неправильно вас понял) В той печати чека вместо печататьСтроку() используется ПечатьТекста(), в котором вместо строк подставляется массив строк(среди которых есть сдача). Однако не ясно почему в первой случае используется

Результат = Обработка.ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал);
а, во втором:
ПолучитьСерверТО().ЗакрытьЧек(ФР, 0, 0);
Почему параметры СуммаНал и СуммаБезнал во-втором случае нулевые?
19 Mashinist
 
21.02.12
01:18
Если СуммаНал = 0 то считается, что по чеку взято ровно столько сколько пробито
Видимо если будет СуммаНал > СуммыЧека, то ФР сам напечатает сдачу
20 evorle145
 
21.02.12
12:35
Тогда получается достаточно в параметр СуммаНал подставить сумму полученных наличных и сдача должна появится. В мануале к драйверу нашел, что ЗакрытьЧек() сохраняет сумму сдачи  в соответствующий параметр.
21 evorle145
 
21.02.12
14:15
Большое спасибо всем кто откликнулся. Вы вывели меня на правильный путь.
Сдача стала печататься, когда при закрытии чека параметр СуммаНал стал больше чем Итого. Думаю, ветку можно закрыть.
22 evorle145
 
21.02.12
14:36
Если СуммаНал = 0, я так понял, вообще не нужно выводить строку с оплата Наличными.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший