|
v7: Корректировка чека Атол 11ф | ☑ | ||
---|---|---|---|---|
0
Georg68
21.06.23
✎
07:49
|
Может немного не по теме, но сервисники из Атол послали меня к моей семерке, мол она эту строку печатает, а мы не при делах.
https://cloud.mail.ru/public/ha3A/AfT4MWPtE Как можно убрать эти лишние строки? |
|||
1
big
21.06.23
✎
08:13
|
В обработке надо смотреть ПечатьСтроки(). Вот только не факт, что эти строки "лишние". В них-то как раз и написано всё требуемое по закону: Товар - количество - цена - сумма. ИМХО лишние - это как раз таки другие строки, которые над ними находятся
|
|||
2
Georg68
21.06.23
✎
08:23
|
да не, в шаблоне документа я могу добавить вторую строку, где и будет прописано количество и цена.
А вот первая строка не убирается никак, даже если все галочки в шаблоне снять. |
|||
3
Georg68
21.06.23
✎
08:25
|
Всё бы ничего, но только в этом наименовании товара не печатается артикул товара, а он нужен для быстрой идентификации, ибо частые возвраты и безнальшики еще.
|
|||
4
serpentt
21.06.23
✎
08:42
|
(0) у атола на сайте есть редактор шаблонов чека, пробовал его?
|
|||
5
Georg68
21.06.23
✎
08:48
|
Именно сам редактор не пробовал, больно он замороченный, но в мастере шаблона в настройках Фронтола все галки снимаешь, но эта строка не пропадает.
Она откуда то из другого места подтягивается. |
|||
6
Злопчинский
21.06.23
✎
08:52
|
в клюшках штатно передается в качестве параметров для печати чеков - передается список товаров, в котором наименование товаров. по коду посмотреть где и передать в качестве наименования Артикул+Наименование.
|
|||
7
Злопчинский
21.06.23
✎
08:54
|
Вообще естьподозрение что чек печататется какой-то старой обработкой.
в чеке еще система налогообложения должна выводиться, фискальный номер чека (вроде) и еще куча всего... |
|||
8
MWWRuza
21.06.23
✎
09:03
|
Там было у АТОЛа что-то про этот косяк, вроде где-то нужно пустую строку передать для обнуления этого ненужного блока. Сейчас не вспомню, готового примера нет, ищите сами. Если не найдете - поищу, я хоть представляю, что искать.
|
|||
9
MWWRuza
21.06.23
✎
09:17
|
(8) Нет, пардон... Это все так, только это у Штриха было:
ФискальныйРегистратор.StringForPrinting = " "; // Без этого, печатает повтором последнюю строку наименования товара Сейчас посмотрел по своим конфам, и в АТОЛовских не нашел, зато в Штриховской - вот. Память подвела, но "чуть-чуть" :-) Может и у АТОЛа что-то на подобии есть, не исключено... |
|||
10
Georg68
21.06.23
✎
09:21
|
Чек просто обрезанный, а так там есть все реквизиты, все дела, QR код.
|
|||
11
victuan1
22.06.23
✎
10:22
|
(10) Ну видно, что обработка печатает дополнительно наименование товаров нефискальной строкой. Надо открыть обработку печати чека на ФР и поправить код.
Для более точно диагноза покажи как этот чек выглядит в ЛК ОФД. |
|||
12
Georg68
22.06.23
✎
11:00
|
Как-то так вот выглядит.
https://cloud.mail.ru/public/h3fq/i4ZD5Qnbt |
|||
13
Georg68
22.06.23
✎
11:02
|
||||
14
victuan1
22.06.23
✎
12:08
|
(13) Это явно другой чек, не тот что в (0).
Поэтому мне сравнивать нечего и по существу добавить тоже нечего. |
|||
15
Georg68
22.06.23
✎
13:00
|
||||
16
vladmenleo
22.06.23
✎
13:54
|
(15) поищи в своей обработке что-то типа
Объект.Caption = чемутотам и Объект.PrintString(); это печать нефискальной строки из старой обработки |
|||
17
victuan1
22.06.23
✎
17:50
|
(16) Да, согласен. Про это и писал в (11). Видя фото из ЛК, понимаю, что не ошибся.
|
|||
18
Georg68
22.06.23
✎
19:41
|
////////////////////////////////////////////////////////////////////////////////
// ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ Перем ОписаниеРезультата; Перем мИмяФайлаОтчета; Перем мИмяФайлаТоваров; Перем мИмяФайлаФлагаОтчета; // ??? Перем мИмяФайлаФлагаТоваров; // ??? //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ //****************************************************************************** Функция ПолучитьСуммуЧека(Отчет, ПредыдущийКонЧека) Сумма = 0; Для СчетчикЦикла = ПредыдущийКонЧека + 1 По Отчет.КоличествоСтрок() Цикл Сумма = Сумма + Отчет.ПолучитьЗначение(СчетчикЦикла, "Сумма"); КонецЦикла; Возврат Сумма; КонецФункции // ПолучитьСуммуЧека() // ***************************************************************************** функция ТекущееВремяВСекундах() // ??? Ч = 0; М = 0; С = 0; ТекущееВремя(Ч, М, С); возврат Ч * 60 * 60 + М * 60 + С; конецфункции // ***************************************************************************** функция ТекущееВремяВСекундахМинус(Нач) // ??? Тек = ТекущееВремяВСекундах(); Если (Тек >= Нач) Тогда Рез = Тек - Нач; иначе Рез = Тек + 24 * 60 * 60 - Нач; КонецЕсли; возврат Рез; конецфункции // ***************************************************************************** функция СоздатьФайлФлаг(ПутьФайла, Ждать) // ??? Файл = СоздатьОбъект("Текст"); Попытка Файл.Записать(сокрлп(ПутьФайла)); исключение сообщить("Не удалось создать файл <"+сокрлп(ПутьФайла)+">!"); возврат 0; конецпопытки; Если (Ждать = 1) тогда Пока (1 = 1) цикл Нач = ТекущееВремяВСекундах(); Пока (1 = 1) цикл // ждем минуту Прошло = ТекущееВремяВСекундахМинус(Нач); Состояние("Запрос отчета. Прошло " + Строка(Прошло) + " сек..."); Если Прошло >= 60 Тогда Прервать; КонецЕсли; Если (ФС.СуществуетФайл(сокрлп(ПутьФайла)) = 1) тогда возврат 1; конецесли; конеццикла; Если (Вопрос( "ККМ не ответила в течении 60 секунд! Подождать еще?", "Да+Нет" )="Нет") тогда возврат 0; конецесли; конеццикла; конецесли; возврат 1; конецфункции // ***************************************************************************** Функция ЗакрытьСмену(Объект, НомСекции, НомерККМ, КаталогОбмена, Отчет) //Если СоздатьФайлФлаг(КаталогОбмена + мИмяФайлаФлагаОтчета, 1) = 0 тогда // ??? // ОписаниеРезультата = "Не создан файл флаг " + мИмяФайлаОтчета + " в каталоге " + КаталогОбмена;; // Возврат 0; //КонецЕсли; ФайлОтчета = СоздатьОбъект("Текст"); Если ФС.СуществуетФайл(КаталогОбмена + мИмяФайлаОтчета) = 0 Тогда ОписаниеРезультата = "Отсутствует файл отчета " + мИмяФайлаОтчета + " в каталоге " + КаталогОбмена; Возврат 0; КонецЕсли; ФайлОтчета.Открыть(КаталогОбмена + мИмяФайлаОтчета); // количество строк в файле должно быть как минимум 4 (шапка + 1 строка по товару) Если ФайлОтчета.КоличествоСтрок() < 4 Тогда ОписаниеРезультата = "В файле отчета отсутствует информация о продажах"; Возврат 0; КонецЕсли; // выполним проверку шапки СтрокаОтчета = " "; Пока СтрокаОтчета = " " Цикл СтрокаОтчета = сокрлп(ФайлОтчета.ПолучитьСтроку(1)); КонецЦикла; Если СтрокаОтчета <> "#" Тогда Если СтрокаОтчета = "@" Тогда ОписаниеРезультата = "Отчет № " + ФайлОтчета.ПолучитьСтроку(2) + " уже был загружен."; Иначе ОписаниеРезультата = "Неверный формат файла отчета"; КонецЕсли; Возврат 0; КонецЕсли; ЛогНомерИзОтчета = ФайлОтчета.ПолучитьСтроку(2); Если ЛогНомерИзОтчета <> НомерККМ Тогда ОписаниеРезультата = "Закрытие смены производится для ККМ № " + НомерККМ + ", отчет получен из ККМ № " + ЛогНомерИзОтчета; Возврат 0; КонецЕсли; НомерОтчета = ФайлОтчета.ПолучитьСтроку(3); Состояние("Загружается отчет № " + НомерОтчета + " с POS № " + ЛогНомерИзОтчета + "..."); Отчет = СоздатьОбъект("ТаблицаЗначений"); Отчет.НоваяКолонка("Код" , "Строка"); Отчет.НоваяКолонка("Штрихкод" , "Строка"); Отчет.НоваяКолонка("Цена" , "Число"); Отчет.НоваяКолонка("Количество" , "Число"); Отчет.НоваяКолонка("СуммаБезСкидки", "Число"); Отчет.НоваяКолонка("Сумма" , "Число"); // используется для расчета скидок и надбавок по всем позициям чека ПредыдущийКонЧека = Отчет.КоличествоСтрок(); // используется для расчета скидок и надбавок по всем позициям чека ПослРегистрация = 0; Для Счетчик = 4 По ФайлОтчета.КоличествоСтрок() Цикл Стр = СтрЗаменить( ФайлОтчета.ПолучитьСтроку(Счетчик), ";", РазделительСтрок ); НомерТранзакции = Число( СтрПолучитьСтроку( Стр, 1 ) ); ДатаТранзакции = Дата( СтрПолучитьСтроку( Стр, 2 ) ); ВремяТранзакции = СтрПолучитьСтроку( Стр, 3 ); ТипТранзакции = Число( СтрПолучитьСтроку( Стр, 4 ) ); НомерККМ = Число( СтрПолучитьСтроку( Стр, 5 ) ); НомерЧека = Число( СтрПолучитьСтроку( Стр, 6 ) ); Кассир = СтрПолучитьСтроку( Стр, 7 ); Код = СтрПолучитьСтроку( Стр, 8 ); Секция = СтрПолучитьСтроку( Стр, 9 ); Цена = Число( СтрЗаменить( СтрПолучитьСтроку( Стр, 10 ), ",", "." ) ); Количество = Число( СтрЗаменить( СтрПолучитьСтроку( Стр, 11 ), ",", "." ) ); СуммаБезСкидки = Число( СтрЗаменить( СтрПолучитьСтроку( Стр, 12 ), ",", "." ) ); ТипЧека = Число( СтрПолучитьСтроку( Стр, 13 ) ); Сумма = Число( СтрЗаменить( СтрПолучитьСтроку( Стр, 16 ), ",", "." ) ); Если ТипТранзакции = 11 Тогда // продажа Отчет.НоваяСтрока(); Отчет.Код = Код; Отчет.Штрихкод = ""; Отчет.Цена = Цена; Отчет.Количество = Количество; Отчет.Сумма = Сумма; Отчет.СуммаБезСкидки = СуммаБезСкидки; ПослРегистрация = Отчет.КоличествоСтрок(); ИначеЕсли ТипТранзакции = 12 Тогда // сторно последней регистрации ТекПоз = Отчет.КоличествоСтрок(); Пока ТекПоз >= ПослРегистрация Цикл Отчет.УдалитьСтроку(ТекПоз); ТекПоз = ТекПоз - 1; КонецЦикла; ПослРегистрация = Отчет.КоличествоСтрок(); ИначеЕсли ((ТипТранзакции = 15) или (ТипТранзакции = 17)) И (ПослРегистрация > 0) Тогда // скидка на последнюю позицию ИначеЕсли ((ТипТранзакции = 16) ИЛИ (ТипТранзакции = 18)) И (ПослРегистрация > 0) Тогда // надбавка на последнюю позицию ИначеЕсли (ТипТранзакции = 35) или (ТипТранзакции = 37) Тогда // скидка на чек ИначеЕсли (ТипТранзакции = 36) или (ТипТранзакции = 38) Тогда // надбавка на чек ИначеЕсли ТипТранзакции = 55 Тогда // закрытие чека ПредыдущийКонЧека = Отчет.КоличествоСтрок(); ИначеЕсли ТипТранзакции = 56 Тогда // отмена чека Отчет.КоличествоСтрок(ПредыдущийКонЧека); КонецЕсли; КонецЦикла; // свернем таблицу по товару Отчет.Свернуть("Код,Штрихкод,Цена", "Количество, Сумма, СуммаБезСкидки"); // занесем в файл информацию о том, что отчет загружен. Записано = 0; Пока Записано = 0 Цикл Попытка ФайлОтчета.ЗаменитьСтроку(1,"@"); ФайлОтчета.Записать(КаталогОбмена + мИмяФайлаОтчета); // ??? Если сокрлп(ФайлОтчета.ПолучитьСтроку(1)) = "@" Тогда Записано = 1; КонецЕсли; Исключение ОписаниеРезультата = ОписаниеОшибки(); Возврат 0; КонецПопытки; КонецЦикла; Возврат 1; // успешное завершение КонецФункции // ***************************************************************************** Функция ЗагрузитьТовары(Объект, НомСекции, НомерККМ, КаталогОбмена, СписокТоваров) ФайлЗагрузки = СоздатьОбъект("Текст"); Спр = СоздатьОбъект("Справочник.Номенклатура"); //тщи // сформируем шапку ФайлЗагрузки.ДобавитьСтроку("##@@&&"); // строка инициализации ФайлЗагрузки.ДобавитьСтроку("#"); // признак загрузки ФайлЗагрузки.ДобавитьСтроку("$$$DELETEALLWARES"); // с удалением// ??? СписокТоваров.ВыбратьСтроки(); Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл //[+] тщи ТекТовар = ""; Если Спр.НайтиПоКоду(СписокТоваров.Код,0) = 0 Тогда Если СписокТоваров.Группа = 1 Тогда Сообщить("Не найдена группа с кодом "+СписокТоваров.Код+" "+СписокТоваров.Наименование,"!"); Иначе Сообщить("Не найден товар с кодом "+СписокТоваров.Код+" "+СписокТоваров.Наименование,"!"); КонецЕсли; Продолжить; КонецЕсли; ТекТовар = Спр.ТекущийЭлемент(); ПР = 1; //Товар; Если ТекТовар.аисТипМаркировкиГИСМ <= 3 Тогда //алкоголь, меха, ЛП ТипМарк = ТекТовар.аисТипМаркировкиГИСМ ИначеЕсли ТекТовар.аисТипМаркировкиГИСМ = 4 Тогда //обувь ТипМарк = 5 ИначеЕсли ТекТовар.аисТипМаркировкиГИСМ = 5 Тогда //табак ПР = 2; //подакцизный товар ТипМарк = 4 ИначеЕсли ТекТовар.аисТипМаркировкиГИСМ = 6 Тогда //шины ТипМарк = 10 ИначеЕсли ТекТовар.аисТипМаркировкиГИСМ = 7 Тогда //лег.пром ТипМарк = 11 ИначеЕсли ТекТовар.аисТипМаркировкиГИСМ = 8 Тогда //парфюм ТипМарк = 9 ИначеЕсли ТекТовар.аисТипМаркировкиГИСМ = 9 Тогда //фото ТипМарк = 8 Иначе //иная маркированная продукция ТипМарк = 7 КонецЕсли; //[-] тщи подстр1 = СписокТоваров.Код + ";" + // 1 - код товара СписокТоваров.ШтрихКод + ";" + // 2 - штрихкод товара СокрП(СтрЗаменить(СписокТоваров.Наименование, РазделительСтрок, " ")) + ";" + // 3 - наименование СокрП(СтрЗаменить(СписокТоваров.Наименование, РазделительСтрок, " ")) + ";" + // 4 - наименование для кассы СокрЛП(Формат(СписокТоваров.Цена, "Ч15.2")) + ";" + // 5 - цена СокрЛП(Формат(СписокТоваров.Количество, "Ч10.1")) + ";" + // 6 - количество "0;" + // 7 - вседа 0 "0;" + // 8 - скидка на товар "0;" + // 9 - максимальная скидка "0;" + // 10 - дата начала действия скидки "0;" + // 11 - дата окончания действия скидки "0;" + // 12 - время начала действия скидки "1;" + // 13 - (время окончания действия скидки) тщи ПР = Признак предмета расчета, 2 = АТ (58поле СР 2 - Полный) "1;" + // 14 - коэффициент пересчета всегда 1 "0;" + // 15 - код товара с базовой единицей СписокТоваров.Родитель + ";" + // 16 - код родительской группы ?(СписокТоваров.Группа = 1, "0;", "1;") + // 17 - выгружаем товар (1) или группу (0) СписокТоваров.Уровень + ";" + // 18 - номер уровня иерархического списка "0;" + // 19 - номер секции ";;;;;;;;;;;" + // 20 - СокрЛП(СписокТоваров.Код)+".jpg;" + // 31 - фото ";" + // 32 - описание ";" + // 33 - кратность количества ";" + // 34 - код ценника ";" + // 35 - тип вознаграждения ";" + // 36 - значение вознаграждения НомСекции+";" + // 37 - номер секции ККМ // // ГТД (38) // // Код группы печати чека (39) // // Код группы печати копии (40) // // Код группы печати счета (41) // // Код группы печати марки (42) // // Код предприятия (43) // // Не используется (44) // // Номер сообщения в весах с ПЭ (45) // // Не используется (46) // // Значение флага «Визуальный выбор модификаторов при регистрации» (47) // // Левая граница допустимого суммарного удельного веса модификаторов (48) // // Правая граница допустимого суммарного удельного веса модификаторов (49) // // Текстовое сообщение для весов с ПЭ (50) //53 поле, Необязательное, Целое, Код вида продукции (Значение по умолчанию: 10); //54 поле, Необязательное, Дробное (10.6),Ёмкость тары, л (Значение по умолчанию: 1); //55 поле, Необязательное, Целое, тип номенклатуры (0-обычный товар, 1 - алк.продукция, 2 - мех, 3 - лекарства, 4 - табак, 5 - обувь. Значение по умолчанию: 0) //56 поле, Необязательное, Целое, Маркировка алкогольной продукции (0 – с маркой; 1 – без марки. Значение по умолчанию: 0) //57 поле, Необязательное, Дробное (значение крепости не должно содержать больше трех знаков после десятичного разделителя и не может быть больше 100.), Крепость алкогольной продукции, % (Значение по умолчанию: 0,1). ";;;;;;;;;;;;;;;;;"+ // тщи ТипМарк // 55 - тип номенклатуры //тщи 0-обычный товар, 1 - алк.продукция, 2 - мех, 3 - лекарства, 4 - табак, 5 - обувь. ; ФайлЗагрузки.ДобавитьСтроку(подстр1 ); КонецЦикла; Попытка ФайлЗагрузки.Записать(КаталогОбмена + мИмяФайлаТоваров); Исключение ОписаниеРезультата = ОписаниеОшибки(); Возврат 0; КонецПопытки; Если СоздатьФайлФлаг(КаталогОбмена + мИмяФайлаФлагаТоваров, 1) = 0 тогда // ??? ОписаниеРезультата = ""; Возврат 0; КонецЕсли; Возврат 1; КонецФункции // ***************************************************************************** // Описание: // обмен данными производится при помощи текстовых файлов, поэтому внешняя // компонента не используется и подключать ничего не нужно Функция Подключить(Компонента, ПрогИд, Объект) Возврат 1; КонецФункции // ***************************************************************************** // Описание: // обмен данными производится при помощи текстовых файлов, поэтому внешняя // компонента не используется и отключать ничего не нужно Функция Отключить(Объект) Возврат 1; КонецФункции // ***************************************************************************** Процедура ПриОткрытии() Перем Объект, Парам, Отчет, Данные; СтатусВозврата(0); Форма.Параметр.Выгрузить(Парам); Форма.Параметр.УдалитьВсе(); Если Парам.РазмерСписка() = 0 Тогда Рез = 0; ОписаниеРезультата = "в обработку не переданы параметры"; Иначе Процесс = НРег(Парам.Получить("Процесс")); Если Процесс = "подключить" Тогда Компонента = Парам.Получить("Компонента"); ПрогИд = Парам.Получить("ПрогИд"); Рез = Подключить(Объект, Компонента, ПрогИд); Форма.Параметр.Установить("Объект", Объект); ИначеЕсли Процесс = "отключить" Тогда Объект = Парам.Получить("Объект"); Рез = Отключить(Объект); ИначеЕсли Процесс = "загрузить_товары" Тогда Объект = Парам.Получить("Объект"); СписокТоваров = Парам.Получить("СписокТоваров"); НомСекции = Парам.Получить("НомерСекции"); НомерККМ = Парам.Получить("НомерККМ"); КаталогОбмена = СокрЛП(Парам.Получить("КаталогОбмена")); Если Прав(КаталогОбмена, 1) <> "\" Тогда КаталогОбмена = КаталогОбмена + "\"; КонецЕсли; Рез = ЗагрузитьТовары(Объект, НомСекции, НомерККМ, КаталогОбмена, СписокТоваров); ИначеЕсли Процесс = "закрыть_смену" Тогда Объект = Парам.Получить("Объект"); НомСекции = Парам.Получить("НомерСекции"); НомерККМ = Парам.Получить("НомерККМ"); КаталогОбмена = СокрЛП(Парам.Получить("КаталогОбмена")); Если Прав(КаталогОбмена, 1) <> "\" Тогда КаталогОбмена = КаталогОбмена + "\"; КонецЕсли; Рез = ЗакрытьСмену(Объект, НомСекции, НомерККМ, КаталогОбмена, Отчет); Форма.Параметр.Установить("Отчет", Отчет); Иначе ОписаниеРезультата = "Передан неизвестный процесс"; Рез = 0; КонецЕсли; КонецЕсли; Форма.Параметр.Установить("Результат" , Рез); Форма.Параметр.Установить("ОписаниеРезультата", ОписаниеРезультата); КонецПроцедуры // ***************************************************************************** // ТЕЛО МОДУЛЯ мИмяФайлаОтчета = "report.txt"; мИмяФайлаТоваров = "goods.txt"; мИмяФайлаФлагаОтчета = "report.flg"; // ??? мИмяФайлаФлагаТоваров = "goods.flg"; // ??? |
|||
19
Georg68
22.06.23
✎
19:42
|
Не нашел, что исправить чёт.
|
|||
20
victuan1
22.06.23
✎
20:55
|
(18) А это код обработки обмена в оффлайн-режиме. Например, со Фронтолом.
А из (0) я понял, что печать чека идет на ФР напрямую из 1С 7.7. Если понял правильно, то нужен код другой обработки: ее можно увидеть в 1С - Сервис - Настройка торгового оборудования - Фискальный регистратор - кнопка "О" справа от модели регистратора - будет написано имя файла внешней обработки обслуживания. |
|||
21
Georg68
23.06.23
✎
04:38
|
Чек печатается на Фронтоле 5.26. Я на него и грешу. 1ска обменивается с фронтолом txt файлом, у неё алиби, я думаю.
|
|||
22
vladmenleo
23.06.23
✎
05:12
|
(20) По моему все так думали, что речь о прямой печати чека из 1с. правильное ТЗ - 50% правильного решения задачи.
(21) Вам видимо надо обращатся не к сервисникам атол по ккм, а к сервисникам по фронтолам, типа какого ваш фронтол что-то левое отправляет на ккм. При условии конечно-же, что сам фронтол вами не допилен |
|||
23
big
23.06.23
✎
06:34
|
(21) Во Фронтоле в настройках документа "ЧЕК" есть подключенные скрипты, которыми и печатается чек. Надо его смотреть. Там несложно, но опыт иметь надо ;)
|
|||
24
Georg68
23.06.23
✎
08:47
|
Так за неимением в нашей деревне нормальных спецов, всё приходится осваивать самому.
Шаблон чеков во Фронтоле я могу править конечно, но это не помогает. Даже если снять там ВСЕ галки, то есть отказаться от печати всего, строка с наименованием всё равно печатается. |
|||
25
victuan1
23.06.23
✎
09:18
|
(21) Тогда это высказывание ложно:
"но сервисники из Атол послали меня к моей семерке, мол она эту строку печатает" Т.к в этом случае 1С сама ничего не печатает при пробитиии чека. |
|||
26
victuan1
23.06.23
✎
09:22
|
(24) У меня в личке указан емайл, могу свести со спецом по Фронтолам.
|
|||
27
big
23.06.23
✎
09:29
|
(24) Посмотри что в скрипте делается, жмешь кнопку "Тест" и проверяешь результат
https://disk.yandex.ru/i/K7Gp-i-c2A8tCQ |
|||
28
Georg68
23.06.23
✎
10:03
|
Всё верно, это шаблон чеков, где я и снимаю все галки, но наименование остаетя
|
|||
29
big
23.06.23
✎
10:11
|
(28) Я же говорю не про галки, а про скрипт. Смотри что в скрипте написано, пробуй изменять.
|
|||
30
Georg68
23.06.23
✎
11:02
|
Пробовал закомментировать в скрипте отдельно печать наименования, ошибка выскакивает при тесте. Может так просто нельзя это сделать, нужны более глубокие познания)
|
|||
31
big
23.06.23
✎
11:15
|
Тогда выкладывай сюда скрипт )
|
|||
32
Georg68
23.06.23
✎
11:56
|
||||
33
big
23.06.23
✎
12:10
|
(32) Шо это было? ))) Не знаю чем открыть
|
|||
34
vladmenleo
23.06.23
✎
12:26
|
(33) Far foreva!
function printHeader(print) { print.printLRStringLF(frontol.currentDocument.type.name+" №"+print.addCharLeft(frontol.currentDocument.number,0,8), "Смена №"+print.addCharLeft(frontol.currentDocument.sessionNumber,0,4)," "); } function printPosition(print) { if (frontol.currentDocument.position.storno == 1) print.printCenterString("СТОРНО"," "); print.printStringWordWrap(frontol.currentDocument.position.number+". "+frontol.currentDocument.position.ware.code+" "+frontol.currentDocument.positi on.ware.mark+" "+frontol.currentDocument.position.ware.text); if (frontol.currentDocument.position.storno == 0) { print.printLRStringLF(" "+(frontol.currentDocument.position.fracSale?print.formatQuantity(frontol.currentDocument.position.quantity):frontol.curr entDocument.position.quantity)+"*"+ print.formatCurrency(frontol.currentDocument.position.priceWithDiscs), print.formatCurrency(frontol.currentDocument.position.sumWithDiscs),"_"); if (frontol.currentDocument.position.totalSumDiscount != 0) if (frontol.currentDocument.position.totalSumDiscount < 0) print.printLRStringLF(" "+"+"+print.formatPercent(-frontol.currentDocument.position.totalPercentDiscount)+"%", print.formatCurrency(-frontol.currentDocument.position.totalSumDiscount),"_"); else print.printLRStringLF(" "+"-"+print.formatPercent(frontol.currentDocument.position.totalPercentDiscount)+"%", print.formatCurrency(frontol.currentDocument.position.totalSumDiscount),"_"); if (frontol.currentDocument.position.number != frontol.currentDocument.position.count) print.printLRStringLF("-","-","-"); } } function printFooter(print) { { for(frontol.currentDocument.servicePrintInfo.index = 1; frontol.currentDocument.servicePrintInfo.index <= frontol.currentDocument.servicePrintInfo.count; frontol.currentDocument.servicePrintInfo.index++) if (frontol.currentDocument.servicePrintInfo.printGroup.code == print.printGroup.code) { } } } |
|||
35
vladmenleo
23.06.23
✎
12:30
|
(32)(33) судя по этим скриптам они больше похожи на печать чека который отправляется в ОФД, т.к. есть строки if (frontol.currentDocument.position.number != frontol.currentDocument.position.count)
print.printLRStringLF("-","-","-"); которые печатают тире после каждой позиции кроме последней, а на чеке из (0) этих тире нет |
|||
36
big
23.06.23
✎
13:11
|
(35) Не, Володя, не в ОФД. Скрипт рабочий вполне, только что во Фронтоле протестил )) А вот то, что он не имеет отношения к картинке в (0) - это однозначно!! )))
|
|||
37
vladmenleo
23.06.23
✎
13:25
|
(36) Ну я собственно и имел ввиду, что чек в (0) не этим скриптом печатается
|
|||
38
Georg68
23.06.23
✎
17:10
|
Да, ничего от вас не скроешь, этот скрипт с другой кассы, но они идентичны.
Завтра скачаю с правильного Фронтола. Там просто одна касса осталась, вторая вылетела, сбились настройки, вторую неделю сервис сделать не может. |
|||
39
vladmenleo
24.06.23
✎
04:08
|
(38) Ну если для вас проблема выгрузить настройки одной кассы и загрузить в другую, что занимает примерно 5 минут, то проблема с кривым чеком скорее всего для вас нерешаема :-(
|
|||
40
Georg68
24.06.23
✎
05:20
|
Шаблон чека абсолютно идентичен, на ВСЕХ кассах печатается двойная строка, так что хоть завыгружайся. От перестановки шаблона результат не изменится.
|
|||
41
vladmenleo
24.06.23
✎
06:28
|
(40) На образце чека, что вы представили в (0) нет строки тире, которая печатается скриптом из (32) Так-что что-то вы путаете, или умалчиваете
|
|||
42
Georg68
24.06.23
✎
07:56
|
https://cloud.mail.ru/public/GFs4/KGpy9wsRS
Вот этот шаблон с этой кассы точно и работает с Атол 11ф. |
|||
43
vladmenleo
24.06.23
✎
10:29
|
(42) Ну вопрос-то прежний, где на чеке из (0) строка печатаемая вот этой частью скрипта
if (frontol.currentDocument.position.number != frontol.currentDocument.position.count) print.printLRStringLF("-","-","-"); |
|||
44
Georg68
26.06.23
✎
06:18
|
https://cloud.mail.ru/public/ha3A/AfT4MWPtE
Синим маркером обведено. Это печатается скриптом. Зачеркнутое красным печатается, видимо, Фронтолом или ккм. Вопрос остается прежним, где это убрать.) |
|||
45
vladmenleo
26.06.23
✎
08:44
|
(44) Вот эта строка скрипта print.printLRStringLF("-","-","-"); печатает ПУНКТИР и именно про него я и спрашиваю, где он на чеке?
|
|||
46
Злопчинский
26.06.23
✎
08:45
|
(44) читай выше, у тебя тараканы.
Чек с синим и убраным красным будет неправильными. Так как красным будет убрано цена, количество и сумма. |
|||
47
Злопчинский
26.06.23
✎
08:47
|
(44) убери то что обведено синим.
Для печати красного в ка, естве наименования товара передавай артикул+наименование. |
|||
48
Georg68
26.06.23
✎
09:11
|
Да блин. Я могу в чеке сделать скриптом вторую строку, где будет цена и количество, но тогда у меня будет ТРИ строки на один товар, а то и больше если переносится информация.
Можно было бы подставить артикул в первую строку - я бы её оставил, а остальное убрал. |
|||
49
Georg68
26.06.23
✎
09:13
|
Откуда формируется строка, что зачеркнута красным выяснить не могу, уж не говоря о том, что артикул в неё подставить.
|
|||
50
Злопчинский
26.06.23
✎
09:17
|
А при чем здесь упоминается Фронтол?
ККМ к 1с подключена или автономно работает? |
|||
51
big
26.06.23
✎
09:37
|
Уже давай конфиг с Фронтола, а то похоже бестолку тут беседовать ) Лучше глазками поглядеть
|
|||
52
Georg68
26.06.23
✎
11:13
|
В смысле файлы базы выложить?
Фронтол 5.26 |
|||
53
big
26.06.23
✎
11:16
|
(52) Лучше саму базу. Чтобы не особо мучаться с конвертацией
|
|||
54
Georg68
26.06.23
✎
13:35
|
Там больше двух гигов, не реально.
|
|||
55
Злопчинский
26.06.23
✎
13:52
|
(54) чего больше двух гигов? берешь - делаешь копию папки с базой (если база файловая). удаляешь файлы с расширением *.cdx? заворачиваешь в архив. папка с общим размером в 2 гига ужмется до 150-200 мегабайт. выкладываешь на файлообменник или иным способом пересылаешь заинтересованному лицу
|
|||
56
Злопчинский
26.06.23
✎
13:57
|
ну и вопрос (50) остался неотвеченным, желательно все-таки ответить...
насколько я помню если не путаю - кассы у тебя работают автономно, обмен списокм товаров файловый. и если обмен файловый - все что надо посмотреть/подправить как выгружается наименование товара. а уж как печатается чек - фрронтолом или иным софтом - это уже к "фронтолу" надо идти... если посмотреть как формируется файл с наименованиями товаров и подправить - это и по удаленке можно, если недолго/просто (а должно быть именно так), стучись |
|||
57
big
26.06.23
✎
14:00
|
(54) Она хорошо сжимается. Архивируй main.gdb и выкладывай куда-нибудь
(56) Ты бы хотя бы ветку выше почитал)) Именно об этом уже и идёт речь )) |
|||
58
Злопчинский
26.06.23
✎
14:18
|
(57) ну тады ок.
|
|||
59
Злопчинский
26.06.23
✎
14:21
|
(57) правда непонятно из (0) "но сервисники из Атол послали меня к моей семерке, мол она эту строку печатает, а мы не при делах."
... как 7.7 может ПЕЧАТАТЬ в !!автономную!! кассу? или тут речь должна идти о том, что 7.7 формирует "неправильный" файл обмена? |
|||
60
Georg68
26.06.23
✎
14:28
|
||||
61
Злопчинский
26.06.23
✎
19:09
|
(60) какой обработкой в 77 формируется, файл выгрузки для ккм?
|
|||
62
Харлампий Дымба
27.06.23
✎
00:36
|
Если используется именно обработка из (18), то я бы просто для начала попробовал понять откуда какая строка печатается, может одна из 3го поля (Наименование товара), а вторая из 4го (Наименование для кассы). Проверить так: делаешь выгрузку товаров в кассу, открываешь получившийся txt, правишь первый попавшийся дешевый товар - добавляешь лишний символ в наименование товара, добавляешь другой лишний символ в наименование для кассы, если в этой строке попадётся наименование ещё раз в каком-то поле - добавляешь и туда. Прогружаешь обработанный файл в кассу. Пробиваешь нужный товар. Смотришь на чек. Наименования совпали - скорее всего, проблема в шаблоне чека. Наименование не совпали - проблема в шаблоне чека или где-то есть галочка типа "Выводить пользовательское наименование товара" (в дополнение к "наименование для чека", например). В этом случае может поможет выгрузка пустоты вместо проблемного реквизита. Проблема вряд ли в 1С всё-таки. Скорее в настройках чека.
Но в принципе, тут хорошая компания подобралась, я думаю порешают) И ещё к (18) - всегда эти обработки с разделителем ";" меня умиляют отсутствием проверки на наличие точки с запятой в наименовании товара и прочих строковых реквизитах. Ну хоть на РазделительСтрок проверяют. |
|||
63
Харлампий Дымба
27.06.23
✎
00:40
|
К (3) ну и непонятно - а что мешает делать выгрузку наименования товаров добавляя артикул? Типа
СокрП(СтрЗаменить(СписокТоваров.Наименование, РазделительСтрок, " ")) + " Арт." + СокрЛП(СписокТоваров.Артикул) + ";" + // 4 - наименование для кассы |
|||
64
Злопчинский
27.06.23
✎
01:22
|
(63) ну так я в (6) еще написал. а с учетом (62) - все должно не сильно долго решаться...
|
|||
65
big
27.06.23
✎
04:29
|
(62)(63) Парни, во Фронтоле делается немного не так. Наименование - это наименование, артикул - это артикул. Правится не выгрузка, а скрипт (в самом Фронтоле), который печатает всё, что душе угодно. Правда у ТС Фронтол довольно старенький, но это пофих.
(62) Разделитель ";" это стандарт от Атола, а на символы при выгрузке конечно проверяется. И ещё код номенклатуры приводится в числовому значению, отсекая префиксы и т.п. |
|||
66
big
27.06.23
✎
05:19
|
(60) Базу посмотрел - действительно, скрипт отрабатывает немного неверно. Под каждой позицией должна быть строка "-----------------------". Как вариант это сделать fixbase и посмотреть как будет работать.
И похоже, что ККМ печатает по шаблону, который в ней зашит. Тут я не в теме, по идее на ККМ шаблон не должен печатать строки вообще (только шапку и подвал чека), т.к. печать идёт из Фронтола. Надо разобраться какой шаблон загружен в ККМ. Повторюсь - я не полностью в теме, ИМХО надо в ЦТО вопрос задавать. |
|||
67
vladmenleo
27.06.23
✎
05:49
|
(66) Наверно надо запустить атоловский редактор шаблонов, считать с кассы и посмотреть что в нем, может кто нарукосуйничал
|
|||
68
big
27.06.23
✎
06:33
|
(67) Да, Володя, примерно так я это и вижу )
|
|||
69
serpentt
27.06.23
✎
11:19
|
(68) об Атоловском редакторе тебе писали еще в начале поста, но ты сказал что для тебя это сложно. (
|
|||
70
big
27.06.23
✎
11:50
|
(69) Хммм... Это точно был я?
|
|||
71
serpentt
27.06.23
✎
14:46
|
(70) сори , нет конечно, это я топикстартеру писал
|
|||
72
victuan1
28.06.23
✎
06:56
|
(50) Читай тему с начала!!!
|
|||
73
victuan1
28.06.23
✎
07:01
|
(62) В обработке всё правильно - это штатная обработка от типовой ТИС, доработанная мною для поддержки маркированных товаров (комментарии //тщи).
Что касается наименования товара - всё как у всех у него в обработке. Проблема именно на стороне Фронтола. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |