Шаблон чека ККТ. Номер строки товара.

1. KatrinCa 05.11.19 19:41 Сейчас в теме
Здравствуйте.
Конфигурация: Розница.
Добавляю в шаблон чека ККТ строчку "Номер строки товара", при печати чека выходит, что номер над названием товара, как сделать, чтобы они были на одной строчке? Спасибо.
По теме из базы знаний
Найденные решения
5. independ 1528 06.11.19 05:19 Сейчас в теме
(3) понятно у вас нефискальный режим, тогда
в МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента
	// Формируем строки чека.
	Если ПозицииЧека <> Неопределено Тогда
		
		Для ИндексМассива = 0 По ПозицииЧека.Количество() - 1 Цикл
			
			ПозицияЧека = ПозицииЧека[ИндексМассива];
			
			Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
				Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
Показать

Вставить
				Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1528 05.11.19 20:05 Сейчас в теме
Как то по просьбе клиента нужно было обрезать наименование, чтобы влезало в одну строку, пришлось сделать расширение и так как написано в https://infostart.ru/public/977982/

//МенеджерОборудованияКлиентПереопределяемый
&Вместо("СформироватьШаблонЧека")
Функция ЧекККМ_СформироватьШаблонЧека(ВходныеПараметры, ДополнительныйТекст, СтандартнаяОбработка, ТипОборудования)
	ШаблонЧека = МенеджерОборудованияВызовСервераПереопределяемый.ПолучитьСтруктуруШаблонаЧека(ВходныеПараметры, ДополнительныйТекст, ТипОборудования);
	Если ШаблонЧека <> Неопределено Тогда
		СтандартнаяОбработка = Ложь;
		Возврат ШаблонЧека;
	КонецЕсли;
КонецФункции

//МенеджерОборудованияВызовСервераПереопределяемый
&Вместо("ПолучитьСтруктуруШаблонаЧека")
Функция ЧекККМ_ПолучитьСтруктуруШаблонаЧека(ПараметрыШаблонаЧека, ДополнительныйТекст, ТипОборудования)
	Для каждого стр из ПараметрыШаблонаЧека[0].ПозицииЧека Цикл;
		стр.Наименование=Лев(стр.Наименование,32);
	КонецЦикла;	
	Возврат Неопределено;
КонецФункции
Показать
Прикрепленные файлы:
3. KatrinCa 05.11.19 20:45 Сейчас в теме
independ, не ругайте сильно, я в 1с пару дней. Как поняла, то что вы написали нужно было вставить в общие модули, но не помогло, всеравно переносит.

Насколько я поняла чек формируется в модуле МенеджерОборудованияКлиентСервер, а сам код находится в функции "СформироватьТекстНефискальногоДокумента". Я печатаю через принтер чеков. Примерно вот здесь формируется поле с товаром:

ТекстСтроки  = ПостроитьПолеПереносом(Наименование, ШиринаСтроки) + Символы.ПС;
				ЦенаДляПечати = Окр(Сумма / Количество , 2);
								
				СтрокаТовара = Формат(Количество, "ЧРД=.;ЧЦ=12;ЧДЦ=3;ЧН=0.000;ЧГ=0") + " х " 
					+ Формат(ЦенаДляПечати, ФорматЧисла) + " =" + Формат(Сумма, ФорматЧисла);
				ТекстСтроки = ТекстСтроки + ВыстроитьПоля( , СтрокаТовара, ШиринаСтроки) + Символы.ПС;


Может можно, что-то сюда добавить, чтобы рядом с названием стоял номер товара? И очень бы хотелось чтобы рядом с количеством указывалось в чем это (шт., кг и т.д.). Я такое видела в шаблонах ФР, но в ККТ почему то количество без единиц измерения.
4. PhoenixAOD 62 06.11.19 03:20 Сейчас в теме
(3)ну вот найдите от куда берется наименование, посмотрите какие там доступны значения и уже примерно так делается
ТекстСтроки  = ПостроитьПолеПереносом(Наименование, ШиринаСтроки) + Символы.ПС;
                ЦенаДляПечати = Окр(Сумма / Количество , 2);
               ТвойНомерСтроки = НомерСтроки;  
               
                СтрокаТовара = Формат(Количество, "ЧРД=.;ЧЦ=12;ЧДЦ=3;ЧН=0.000;ЧГ=0") + " х " 
                    + Формат(ЦенаДляПечати, ФорматЧисла) + " =" + Формат(Сумма, ФорматЧисла);
                ТекстСтроки = ""+ТвойНомерСтроки+" " + ТекстСтроки + ВыстроитьПоля( , СтрокаТовара, ШиринаСтроки) + Символы.ПС;
5. independ 1528 06.11.19 05:19 Сейчас в теме
(3) понятно у вас нефискальный режим, тогда
в МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента
	// Формируем строки чека.
	Если ПозицииЧека <> Неопределено Тогда
		
		Для ИндексМассива = 0 По ПозицииЧека.Количество() - 1 Цикл
			
			ПозицияЧека = ПозицииЧека[ИндексМассива];
			
			Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
				Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
Показать

Вставить
				Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;
6. KatrinCa 06.11.19 14:02 Сейчас в теме
(5)
Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;

independ, спасибо, вы настоящий гений. Только я немного изменила код, у меня почему то не хотели приниматься кавычки как у вас.
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;

Скажите, пожалуйста, а не сталкивались ли вы с тем, чтобы добавить напротив количества товаров в чеке единицы измерения (шт., кг и т.д.)? Я такое видела в шаблоне ФР чека, очень информативно смотрится.


PhoenixAOD, спасибо за ваш вариант.
7. independ 1528 06.11.19 14:11 Сейчас в теме
(6) можно после получения наименования
Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "")

Если Наименование<>"" Тогда
    Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Если ЗначениеЗаполнено(Ном) Тогда
         Наименование=Наименование+" ["+Ном. ЕдиницаИзмерения+"]";
    КонецЕсли;
    Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
8. KatrinCa 06.11.19 14:31 Сейчас в теме
(7)
Если Наименование<>"" Тогда
Ном=Справочники.Номенклатура.НайтиПоНаименованию("Наименование");
Если ЗначениеЗаполнено(Ном) Тогда
Наименование=Наименование+" ["+Ном. ЕдиницаИзмерения+"]";
КонецЕсли;
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;


При попытке сохранить, мне выдало вот такую ошибку:
{ОбщийМодуль.МенеджерОборудованияКлиентСервер.Модуль(899,21)}: Переменная не определена (Справочники)
Ном=<<?>>Справочники.Номенклатура.НайтиПоНаименованию("Наименование"); (Проверка: Тонкий клиент)
9. independ 1528 06.11.19 17:52 Сейчас в теме
(8) не заметил, что функция СформироватьТекстНефискальногоДокумента, выполняется на клиенте.
Если Наименование<>"" Тогда
         Наименование=Наименование+ПолучитьЕИ(Наименование);
    Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;


нужно создать отдельную функцию
&НаСервере
Функция ПолучитьЕИ(Наименование)
    Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Если ЗначениеЗаполнено(Ном) Тогда
         Возврат " ["+Ном. ЕдиницаИзмерения+"]";
    КонецЕсли;
    Возврат "";
КонецФункции
10. KatrinCa 06.11.19 18:53 Сейчас в теме
(9)
нужно создать отдельную функцию

Эх, видимо я совсем глупая...но у меня опять выдало ошибку, на этот раз:
{ОбщийМодуль.МенеджерОборудованияКлиентСервер.Модуль(909,43)}: Процедура или функция с указанным именем не определена (ПолучитьЕИ)
                Наименование=Наименование+<<?>>ПолучитьЕИ(Наименование); (Проверка: Тонкий клиент)

Вот ход моих действий:
1. Вы сказали, что необходимо создать функцию. Я посмотрела, что функции в МенеджерОборудованияКлиентСервер размещены по отдельности и я разместила новую прямо перед функцией, которая формирует текст нефискального документа по шаблону:
// Функция - единицы измерения в чеке
&НаСервере
Функция ПолучитьЕИ(Наименование)
    Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Если ЗначениеЗаполнено(Ном) Тогда
         Возврат " ["+Ном. ЕдиницаИзмерения+"]";
    КонецЕсли;
    Возврат "";
КонецФункции

// Функция формирует текст нефискального документа по шаблону.
//
Функция СформироватьТекстНефискальногоДокумента(ТипДокумента, ОбщиеПараметры, ШиринаСтроки = 32, ДополнительныйТекст = Неопределено, ФорматФФД = "1.1") Экспорт
	
	ПозицииЧека  = ?(ОбщиеПараметры.Свойство("ПозицииЧека"), ОбщиеПараметры.ПозицииЧека, Неопределено);
	ТаблицаОплат = ?(ОбщиеПараметры.Свойство("ТаблицаОплат"), ОбщиеПараметры.ТаблицаОплат, Неопределено);
Показать


Далее уже в функцию, которая формирует чек я добавила:
Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
				Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
				
				Если Наименование<>"" Тогда
                Наименование=Наименование+ПолучитьЕИ(Наименование);
                Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
			    КонецЕсли;
							
				Количество   = ?(ПозицияЧека.Свойство("Количество")  , ПозицияЧека.Количество  , 1);
Показать
11. independ 1528 06.11.19 19:18 Сейчас в теме
(10) согласно https://infostart.ru/public/86838/, вызов серверной функции/процедуры в данном модуле невозможен, функцию ПолучитьЕИ(Наименование) ЭКСПОРТ нужно разместить в любом серверном модуле например МенеджерОборудованияВызовСервера
Наименование=Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
12. KatrinCa 06.11.19 20:36 Сейчас в теме
(11) independ, ура! ошибка пропала. Напротив названия товара в [] стало отпечатывать единицы измерения. Но очень бы хотелось, чтобы они были не возле названия, а возле количества, а к цене я добавлю руб. В результате должно получиться, что-то вроде 1.000 шт x 5 руб =5 руб

Вот как я попробовала (не ругайтесь сильно, я глупая):
нужно заменить
				Если Наименование<>"" Тогда
				Наименование=Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
				Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
				КонецЕсли;

на
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;

чтобы у нас выводились только номера рядом с названиями, далее (ниже) я добавила:
Единицы = Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
, а затем в линию, где выводится количество и цена, я добавила Единицы
СтрокаТовара = Формат(Количество, "ЧРД=.;ЧЦ=12;ЧДЦ=3;ЧН=0.000;ЧГ=0") + Единицы + " х " 
					+ Формат(ЦенаДляПечати, ФорматЧисла)+ " руб" + " =" + Формат(Сумма, ФорматЧисла) + " руб";
				ТекстСтроки = ТекстСтроки + ВыстроитьПоля( , СтрокаТовара, ШиринаСтроки) + Символы.ПС;

но в итоге у меня рядом количеством стало выводится название и без единиц измерения :-(
13. independ 1528 07.11.19 08:39 Сейчас в теме
(12)
Единицы = МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
СтрокаТовара = Формат(Количество, "ЧРД=.;ЧЦ=12;ЧДЦ=3;ЧН=0.000;ЧГ=0") + Единицы + " х " 
                    + Формат(ЦенаДляПечати, ФорматЧисла)+ " руб" + " =" + Формат(Сумма, ФорматЧисла) + " руб";
                ТекстСтроки = ТекстСтроки + ВыстроитьПоля( , СтрокаТовара, ШиринаСтроки) + Символы.ПС;
14. KatrinCa 08.11.19 13:53 Сейчас в теме
(13) Попробовала убрать Наименование+ из:
Единицы = Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);

В результате ничего не добавляется (ни название, ни единицы измерения).

Вот на что обратила внимание.
Если
Единицы = МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);

заменить на
Наименование = Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);

а в цикле, где мы сперва делали нумерацию товаров вот это
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;

заменить назад на
				Если Наименование<>"" Тогда
				Наименование=Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
				Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
				КонецЕсли;

Тогда в строчке товара дублируется название и единицы измерения. По другому не хочет. Может быть нужно, что-то изменить в
МенеджерОборудованияВызовСервера
, где у нас
Функция ПолучитьЕИ(Наименование)
    Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Если ЗначениеЗаполнено(Ном) Тогда
         Возврат " ["+Ном. ЕдиницаИзмерения+"]";
    КонецЕсли;
    Возврат "";
КонецФункции
Оставьте свое сообщение

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