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

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

Вставить
				Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1520 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 1520 06.11.19 05:19 Сейчас в теме
(3) понятно у вас нефискальный режим, тогда
в МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента
	// Формируем строки чека.
	Если ПозицииЧека <> Неопределено Тогда
		
		Для ИндексМассива = 0 По ПозицииЧека.Количество() - 1 Цикл
			
			ПозицияЧека = ПозицииЧека[ИндексМассива];
			
			Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
				Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
Показать

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

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

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


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

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


При попытке сохранить, мне выдало вот такую ошибку:
{ОбщийМодуль.МенеджерОборудованияКлиентСервер.Модуль(899,21)}: Переменная не определена (Справочники)
Ном=<<?>>Справочники.Номенклатура.НайтиПоНаименованию("Наименование"); (Проверка: Тонкий клиент)
+
9. independ 1520 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 1520 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 1520 07.11.19 08:39 Сейчас в теме
(12)
Единицы = МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
СтрокаТовара = Формат(Количество, "ЧРД=.;ЧЦ=12;ЧДЦ=3;ЧН=0.000;ЧГ=0") + Единицы + " х " 
                    + Формат(ЦенаДляПечати, ФорматЧисла)+ " руб" + " =" + Формат(Сумма, ФорматЧисла) + " руб";
                ТекстСтроки = ТекстСтроки + ВыстроитьПоля( , СтрокаТовара, ШиринаСтроки) + Символы.ПС;
+
14. KatrinCa 08.11.19 13:53 Сейчас в теме
(13) Попробовала убрать Наименование+ из:
Единицы = Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);

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

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

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

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

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

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

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