Печатаю чек с POS-терминала.
Делаю так:

```1c
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    ДрайверККМ.StringForPrinting=ТЗ.Строка;
    ДрайверККМ.PrintString();
    КонецЦикла;
```

Печатает долго и по одной строке, хотелось бы вот так:

```1c
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    ДрайверККМ.StringForPrinting=ТЗ.Строка;
    КонецЦикла;
    ДрайверККМ.PrintString();
```

Но так не работает.

Кто нить сталкивался с печатью строк на Штрихах?
---
Для того, чтобы задействовать буфер, надо в таблице 1 (через родной тест драйвера) выставить параметры:

19. «Сохранять строки в буфере чека».
Параметр действует в режиме печати чека по закрытию. Если значение параметра равно «0», то строки в буфере чека не сохраняются и на печать не выводятся. Если же значение параметра «1», то строки в буфере чека сохраняются и выводятся на печать по закрытию чека. Строки заносятся в буфер при помощи команд «Печать строки», «Печать жирной строки» и «Печать строки данным шрифтом». Эта настройка действует не только на печать чека по закрытию, но и также на повтор обычного чека. Если установлено "не сохранять строки в буфере чека", то при повторе документа, все принадлежащие ему строки, которые были напечатаны в чеке командами "Печать строки", "Печать жирной строки" и "Печать строки шрифтом" не будут повторяться, потому что не сохранились. Инверсное значение настройки предоставит возможность повторить чек полностью.

20. «Печать чека по закрытию».
Этот параметр переводит ККМ в режим печати чека регистрации по его закрытию, то есть по выполнению операции закрытия чека. Таким образом, если значение параметра равно «0», то каждая операция регистрации чека выводится на печать сразу по её выполнению. Если же значение параметра «1», то операции регистрации сохраняются в буфере, и чек целиком выводится на печать по его закрытию.

32. «Разгон при печати».
Параметр позволяет управлять скоростью печати. Если значение параметра равно 1, то разгон используется. При установке параметра в значение 0 разгон не используется.
---
Увы, но свои хотелки придется засунуть в какое-нибудь место.
Разбирайтесь почему у вас долго печатает. Обычно это довольно быстрый процесс.
---
Роман, добрый день!
В 7.7 печатаете ?
---
Добрый день Рашида, да в 7.7
---
Вопрос как сделать так:
ДрайверККМ.StringForPrinting=ТЗ.Строка1;
ДрайверККМ.StringForPrinting=ТЗ.Строка2;
ДрайверККМ.StringForPrinting=ТЗ.Строка3;
ДрайверККМ.PrintString();

Если так то печатает последнюю.
---
И по каким признакам драйвер должен определить, что вот здесь надо делать накопление, а не переписывать значение свойства? Думать не пробовали?
Еще раз: никак. Не умеет драйвер работать так, как вам хочется. только одну строку. Нет у него места и умения для накопления и вывода нескольких строк. Сам драйвер печатает строки быстро.
---
Не пойму почему чек вылетает за 1 секунду с несколькими позициями (10-20) товара,
А печать обычного текста занимает 3-4 секунды на каждый чек. (их 2). Может надо делать где-то что-то типа OpenCheck, CloseCheck?
---
То есть документацию по драйверу вы вообще не читали?
---
PrintString() печатает только то, что записали в StringForPrinting.
Каждую строку печатаем командой PrintString().

Дрова какие стоят?
---
rintString() печатает только то, что записали в StringForPrinting.
Каждую строку печатаем командой PrintSt
4.14
---
Задержка может быть, если драйвер не родной и работает в тестовом режиме
---
я же пишу что если передавать все параметры чека, Чек вылетает за 1 секунду.
А печать просто строк происходит построчно и при печати каждой строки ККТ тарахтит. )))
Сейчас видео выложу, может понятнее будет.
---
Вопрос как сделать так:
ДрайверККМ.StringForPrinting=ТЗ.Строка1;
ДрайверККМ.StringForPrinting=ТЗ.Строка2;
ДрайверККМ.StringForPrinting=ТЗ.Строка3;
ДрайверККМ.PrintString();

Если хотите сконкатенировать , то, вначале, получите строковую переменную

СтрокаДляПечати = "";
СтрокаДляПечати = СтрокаДляПечати + ТЗ.Строка1;
СтрокаДляПечати = СтрокаДляПечати + ТЗ.Строка2;
СтрокаДляПечати = СтрокаДляПечати + ТЗ.Строка3;
И уже потом:
ДрайверККМ.StringForPrinting=СтрокаДляПечати;
ДрайверККМ.PrintString();
---
1. Свойство StringForPrinting таки имеет ограничение по длине.
2. Это получится одна строка.
---
Сергей, я указала, что строки конкатенируем, т.е. итог - объединенная строка
---
Вот именно! Одна объединенная. Которая будет для аппарата ОДНОЙ строкой, которую он при печати НЕ будет переносить, а будет обрезать.
---
Так Вы себя читаете или нас?

надо помнить про длину в 249 символов
---
Смысл помнить про эти 249, если напечатаны будут только первые 48/56 символов и остальное будет не перенесено, а обрезано?
---
Вот так печатает, это не совсем нормально
---
Очень познавательно видео, которое, однако, ничего не говорит о том, ЧТО и КАК вы делаете. Мы это все должны угадать?
Запустите Тест драйвера и прогоните один из тестов скорости печати нескольких строк, там есть. Убедитесь, что аппарат печаетает таки быстро. И наконец начните искать тормоза в своем коде.
---
Иначе просто свойство StringForPrinting постоянно меняете , а методом PrintString печатаете последнее.
И надо помнить про длину в 249 символов
---
Не нравится, что стучит как трактор ?
---
Но с чеком оплаты не стучит же. Даже если будет 20 позиций вылетит как пробка на новый год
---
И у меня не стучит, хотя почти весь чек состоит из PrintString на несколько сотен длинных позиций. Длинных означает, что каждую. еще и надо самому разделить на печатамые строки, каждая из которых выводится все тем же PrintString. Будете дальше гадать или таки займетесь делом?
---
перенос для PrintString зависит от модели. ШТРИХ-МИНИ-ФР-К - корректно переносит строки
---
У ТС не такой аппарат и он НЕ переносит.
---
Роман, стучит реально из-за последовательности команд.
Буфер - используете ?
---
Для того, чтобы задействовать буфер, надо в таблице 1 (через родной тест драйвера) выставить параметры:

19. «Сохранять строки в буфере чека».
Параметр действует в режиме печати чека по закрытию. Если значение параметра равно «0», то строки в буфере чека не сохраняются и на печать не выводятся. Если же значение параметра «1», то строки в буфере чека сохраняются и выводятся на печать по закрытию чека. Строки заносятся в буфер при помощи команд «Печать строки», «Печать жирной строки» и «Печать строки данным шрифтом». Эта настройка действует не только на печать чека по закрытию, но и также на повтор обычного чека. Если установлено "не сохранять строки в буфере чека", то при повторе документа, все принадлежащие ему строки, которые были напечатаны в чеке командами "Печать строки", "Печать жирной строки" и "Печать строки шрифтом" не будут повторяться, потому что не сохранились. Инверсное значение настройки предоставит возможность повторить чек полностью.

20. «Печать чека по закрытию».
Этот параметр переводит ККМ в режим печати чека регистрации по его закрытию, то есть по выполнению операции закрытия чека. Таким образом, если значение параметра равно «0», то каждая операция регистрации чека выводится на печать сразу по её выполнению. Если же значение параметра «1», то операции регистрации сохраняются в буфере, и чек целиком выводится на печать по его закрытию.

32. «Разгон при печати».
Параметр позволяет управлять скоростью печати. Если значение параметра равно 1, то разгон используется. При установке параметра в значение 0 разгон не используется.
---
Иначе - команда исполняется на ФР сразу по приходу. Время исполнения команды=Время записи в память + Время реакции принтера.
---
Х-отчет, кстати, использует, поэтому выдает на печать "сразу". Просто печатает из буфера
---
вот ссылка по Таблице 1 - https://zipstore.ru/auxpage_nastroika_kkm_shtrih_m_fr_k
---
Таких кассовых аппаратов уже год как не существует. Прошивки сейчас другие и параметры в таблицах тоже. Штрих-ФР-К(с ЭКЛЗ) теперь уже Штрих-ФР-01Ф(с ФН). У штрихов есть такая проблема медленной печати. Если печатается через удаленный рабочий стол, так это вообще очень грустно. У штриха, если печатаешь через драйвер, а не через компоненту 1С, тогда там была функция буферезации чека. Я раньше таким образом решал такую проблему. Сейчас, на новых аппаратах, не разбирался ещё. Опять же печать строки идёт в чеке, или просто на ленту. Если печать не в чеке, тогда вряд ли буферезация поможет.
---
Что сделать, если марка принтера прояснилась к середине темы ? Спрашивать ТС, читал он документацию или нет ?
Обсуждаем же, думаем
---
У меня вот так вот, печатает быстро.

```1c
    FR.DocumentName = "Копия чека";
    FR.PrintDocumentTitle();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    FR.StringForPrinting=" Рога и копыта";
    FR.UseReceiptRibbon=1;
    FR.PrintWideString();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    FR.StringForPrinting="------------------------------------";
    FR.UseReceiptRibbon=1;
    FR.PrintString();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    FR.StringForPrinting=Номенклатура.Наименование;;
    FR.UseReceiptRibbon=1;
    FR.PrintString();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    Пробелы = " ";
    СтрЦена = СокрЛП(Формат(Цена,"Ч015"));
    ДлинаЦена = СтрДлина(СтрЦена);

    FR.StringForPrinting=Лев(Пробелы,35-ДлинаЦена)+"="+СтрЦена;
    FR.UseReceiptRibbon=1;
    FR.PrintString();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    FR.StringForPrinting="====================================";
    FR.UseReceiptRibbon=1;
    FR.PrintString();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    Пробелы = " ";

    FR.StringForPrinting="ИТОГ"+Лев(Пробелы,13-ДлинаЦена)+"="+СтрЦена;;
    FR.UseReceiptRibbon=1;
    FR.PrintWideString();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();

    FR.CutType=1;
    FR.CutCheck();
    FR.WaitForPrintingDelay = 100;
    FR.WaitForPrinting();
    ОтветДрайвера();
```
---
Интересно, зачем столько раз переустанавливать одни и те же значения перед каждой строкой? Чтобы медленнее работало?
 FR.UseReceiptRibbon=1;
 FR.WaitForPrintingDelay = 100;
Кстати, совершенно не вижу необходимости в FR.WaitForPrintingDelay = 100; и FR.WaitForPrinting();
---
была проблема при печати, Следующая команда посылалась на ккм, когда ещё не была отработана предыдущая, и вылетела ошибка. Поэтому мы ждём, пока не напечатается строка. Задержек здесь нет. Это время ожидания конца печати строки. FR.WaitForPrinting() ждёт мало и поэтому, проблему не решает. FR.WaitForPrintingDelay = 100 задаёт время ожидания а FR.WaitForPrinting() ждёт.
---
Ладно, допустим, что вам эта задержка нужна. Но зачем переустнавливать значения каждый раз?
---
Так не работает, иначе, это чудо. Правда это писалось в 1с77 и лет 6 назад, но думаю вряд ли чего изменилось у штриха.
---
Все время. что я работаю со штрихами такая перезапись была не нужна.
---
Никто не говорит, что такая запись нужна и без неё не будет работать. Это всего лишь решение конкретной проблемы на конкретном оборудовании. Работая со штрихами, могу сказать, что всегда всё по разному получается и часто возникают проблемы, которые как правило не возникают. И приходиться их оперативно решать не вдаваясь в подробности. В большинстве случаев, такой подход, конечно, не используется. Предложенный вариант, это как возможное решение проблемы медленной печати и ошибок при печати, которые и были решены таким образом.
---
Штрих ещё рекомендует Таймаут в драйвере большой ставить.
---
Блин вроде ответил, но своего ответа не вижу)))
Проблема решена!!!
Всем большое человеческое спасибо!!!
Проблема решилась подключением ККТ по USB, до этого было подключение по COM.
Перепрошивал тестовый кассовый аппарат и перерегистрировал и забыл что, по COM-порту работаю.
Хотя даже и предположить не мог до этого что есть разница.