Здравствуйте.
Конфигурация: Розница.
Добавляю в шаблон чека ККТ строчку "Номер строки товара", при печати чека выходит, что номер над названием товара, как сделать, чтобы они были на одной строчке? Спасибо.
(3) понятно у вас нефискальный режим, тогда
в МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента
// Формируем строки чека.
Если ПозицииЧека <> Неопределено Тогда
Для ИндексМассива = 0 По ПозицииЧека.Количество() - 1 Цикл
ПозицияЧека = ПозицииЧека[ИндексМассива];
Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
Показать
Вставить
Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;
Как то по просьбе клиента нужно было обрезать наименование, чтобы влезало в одну строку, пришлось сделать расширение и так как написано в https://infostart.ru/public/977982/
//МенеджерОборудованияКлиентПереопределяемый
&Вместо("СформироватьШаблонЧека")
Функция ЧекККМ_СформироватьШаблонЧека(ВходныеПараметры, ДополнительныйТекст, СтандартнаяОбработка, ТипОборудования)
ШаблонЧека = МенеджерОборудованияВызовСервераПереопределяемый.ПолучитьСтруктуруШаблонаЧека(ВходныеПараметры, ДополнительныйТекст, ТипОборудования);
Если ШаблонЧека <> Неопределено Тогда
СтандартнаяОбработка = Ложь;
Возврат ШаблонЧека;
КонецЕсли;
КонецФункции
//МенеджерОборудованияВызовСервераПереопределяемый
&Вместо("ПолучитьСтруктуруШаблонаЧека")
Функция ЧекККМ_ПолучитьСтруктуруШаблонаЧека(ПараметрыШаблонаЧека, ДополнительныйТекст, ТипОборудования)
Для каждого стр из ПараметрыШаблонаЧека[0].ПозицииЧека Цикл;
стр.Наименование=Лев(стр.Наименование,32);
КонецЦикла;
Возврат Неопределено;
КонецФункции
independ, не ругайте сильно, я в 1с пару дней. Как поняла, то что вы написали нужно было вставить в общие модули, но не помогло, всеравно переносит.
Насколько я поняла чек формируется в модуле МенеджерОборудованияКлиентСервер, а сам код находится в функции "СформироватьТекстНефискальногоДокумента". Я печатаю через принтер чеков. Примерно вот здесь формируется поле с товаром:
Может можно, что-то сюда добавить, чтобы рядом с названием стоял номер товара? И очень бы хотелось чтобы рядом с количеством указывалось в чем это (шт., кг и т.д.). Я такое видела в шаблонах ФР, но в ККТ почему то количество без единиц измерения.
(3) понятно у вас нефискальный режим, тогда
в МенеджерОборудованияКлиентСервер.СформироватьТекстНефискальногоДокумента
// Формируем строки чека.
Если ПозицииЧека <> Неопределено Тогда
Для ИндексМассива = 0 По ПозицииЧека.Количество() - 1 Цикл
ПозицияЧека = ПозицииЧека[ИндексМассива];
Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
Показать
Вставить
Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;
Наименование = Формат(ИндексМассива+1,"ЧГ="")+"."+Наименование;
independ, спасибо, вы настоящий гений. Только я немного изменила код, у меня почему то не хотели приниматься кавычки как у вас.
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
Скажите, пожалуйста, а не сталкивались ли вы с тем, чтобы добавить напротив количества товаров в чеке единицы измерения (шт., кг и т.д.)? Я такое видела в шаблоне ФР чека, очень информативно смотрится.
Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "")
Если Наименование<>"" Тогда
Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
Если ЗначениеЗаполнено(Ном) Тогда
Наименование=Наименование+" ["+Ном. ЕдиницаИзмерения+"]";
КонецЕсли;
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
Если Наименование<>"" Тогда
Ном=Справочники.Номенклатура.НайтиПоНаименованию("Наименование");
Если ЗначениеЗаполнено(Ном) Тогда
Наименование=Наименование+" ["+Ном. ЕдиницаИзмерения+"]";
КонецЕсли;
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
При попытке сохранить, мне выдало вот такую ошибку:
{ОбщийМодуль.МенеджерОборудованияКлиентСервер.Модуль(899,21)}: Переменная не определена (Справочники)
Ном=<<?>>Справочники.Номенклатура.НайтиПоНаименованию("Наименование"); (Проверка: Тонкий клиент)
(8) не заметил, что функция СформироватьТекстНефискальногоДокумента, выполняется на клиенте.
Если Наименование<>"" Тогда
Наименование=Наименование+ПолучитьЕИ(Наименование);
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
нужно создать отдельную функцию
&НаСервере
Функция ПолучитьЕИ(Наименование)
Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
Если ЗначениеЗаполнено(Ном) Тогда
Возврат " ["+Ном. ЕдиницаИзмерения+"]";
КонецЕсли;
Возврат "";
КонецФункции
Эх, видимо я совсем глупая...но у меня опять выдало ошибку, на этот раз:
{ОбщийМодуль.МенеджерОборудованияКлиентСервер.Модуль(909,43)}: Процедура или функция с указанным именем не определена (ПолучитьЕИ)
Наименование=Наименование+<<?>>ПолучитьЕИ(Наименование); (Проверка: Тонкий клиент)
Вот ход моих действий: 1. Вы сказали, что необходимо создать функцию. Я посмотрела, что функции в МенеджерОборудованияКлиентСервер размещены по отдельности и я разместила новую прямо перед функцией, которая формирует текст нефискального документа по шаблону:
// Функция - единицы измерения в чеке
&НаСервере
Функция ПолучитьЕИ(Наименование)
Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
Если ЗначениеЗаполнено(Ном) Тогда
Возврат " ["+Ном. ЕдиницаИзмерения+"]";
КонецЕсли;
Возврат "";
КонецФункции
// Функция формирует текст нефискального документа по шаблону.
//
Функция СформироватьТекстНефискальногоДокумента(ТипДокумента, ОбщиеПараметры, ШиринаСтроки = 32, ДополнительныйТекст = Неопределено, ФорматФФД = "1.1") Экспорт
ПозицииЧека = ?(ОбщиеПараметры.Свойство("ПозицииЧека"), ОбщиеПараметры.ПозицииЧека, Неопределено);
ТаблицаОплат = ?(ОбщиеПараметры.Свойство("ТаблицаОплат"), ОбщиеПараметры.ТаблицаОплат, Неопределено);
Показать
Далее уже в функцию, которая формирует чек я добавила:
Если ПозицияЧека.Свойство("ФискальнаяСтрока") Тогда
Наименование = ?(ПозицияЧека.Свойство("Наименование"), ПозицияЧека.Наименование, "");
Если Наименование<>"" Тогда
Наименование=Наименование+ПолучитьЕИ(Наименование);
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
Количество = ?(ПозицияЧека.Свойство("Количество") , ПозицияЧека.Количество , 1);
(10) согласно https://infostart.ru/public/86838/, вызов серверной функции/процедуры в данном модуле невозможен, функцию ПолучитьЕИ(Наименование) ЭКСПОРТ нужно разместить в любом серверном модуле например МенеджерОборудованияВызовСервера
(11) independ, ура! ошибка пропала. Напротив названия товара в [] стало отпечатывать единицы измерения. Но очень бы хотелось, чтобы они были не возле названия, а возле количества, а к цене я добавлю руб. В результате должно получиться, что-то вроде 1.000 шт x 5 руб =5 руб
Вот как я попробовала (не ругайтесь сильно, я глупая): нужно заменить
Если Наименование<>"" Тогда
Наименование=Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
на
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
чтобы у нас выводились только номера рядом с названиями, далее (ниже) я добавила:
Наименование = Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
а в цикле, где мы сперва делали нумерацию товаров вот это
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
заменить назад на
Если Наименование<>"" Тогда
Наименование=Наименование+МенеджерОборудованияВызовСервера.ПолучитьЕИ(Наименование);
Наименование = Формат(ИндексМассива+1,"ЧГ=")+". "+Наименование;
КонецЕсли;
Тогда в строчке товара дублируется название и единицы измерения. По другому не хочет. Может быть нужно, что-то изменить в
МенеджерОборудованияВызовСервера
, где у нас
Функция ПолучитьЕИ(Наименование)
Ном=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
Если ЗначениеЗаполнено(Ном) Тогда
Возврат " ["+Ном. ЕдиницаИзмерения+"]";
КонецЕсли;
Возврат "";
КонецФункции