Проблема с печатью текста в чеке. Драйвер Атол

1. talych 17 26.03.14 16:40 Сейчас в теме
  • Драйвер для ФР от АТОЛ DTO6_2012_08_23
  • 1С 7
  • обработка для 1С fr_comm.ert
  • Аура-01ФР-KZ
Хочу напечатать обычный чек, но в шапке чека хочу напечатать дополнительные строки текста программно. Использую в начале функции печати чека (ПечататьЧек) следующий код:
	
Объект.Caption="Информационный текст1";
Объект.PrintString();
Объект.Caption="Информационный текст2";
Объект.PrintString();
Объект.Caption="Информационный текст3";
Объект.PrintString();

При выполнении чек бьётся на две части. Одна с моим тесктом, вторая обычный текст. ((
Хочется в таком виде:
  • Шапка чека
  • мой текст
  • данные чека(товары, цена, кол-во)
  • итого
  • рекламный текст
Никто не сталкивался с аналогичной проблемой?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ёпрст 1067 26.03.14 16:53 Сейчас в теме
Дык вроде всё правильно..
смотря, в какое место в коде ты свой бъект.Caption воткнул.
3. talych 17 26.03.14 16:59 Сейчас в теме
(2) Ёпрст,
Функция ПечататьЧек(Объект, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ТипОплаты, СписокРеклТекст, ВключитьРеклЧек)
	Если ПустоеЗначение(Объект) = 1 Тогда
		ОписаниеРезультата = "устройство не подключено";
		Возврат 0;
	КонецЕсли;
	
	// - строка для печати 
	инф = Лев("ФИО кассира:"+СокрЛП(Пользователь.Сотрудник.Наименование), 40);
	Объект.Caption=инф;
	Объект.PrintString();
	
	
	
	// регистрация товаров
	РезРегистрация = 1;
	СписокТоваров.ВыбратьСтроки();
	
	Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
			
		Объект.Name     = Лев(СписокТоваров.ТовНаим, 40);
		Объект.Price    = Окр(СписокТоваров.Цена,2,1);
		Объект.Quantity = СписокТоваров.Количество;
			
		Если ПризнВозврата = 0 Тогда
			Объект.Регистрация();
		Иначе
			Объект.Возврат();
		КонецЕсли;
			
		Если Объект.Результат <> 0 Тогда
			ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		    Возврат 0;
		КонецЕсли;
	КонецЦикла;
		
	Если ПустоеЗначение(Скидка) = 0 Тогда
		// Скидка
		Объект.Destination = 0; //денежная
		Объект.Summ = Скидка;
		Объект.SummDiscount();
				
	КонецЕсли;
	
	Если Объект.Результат <> 0 Тогда
		Объект.Summ = 0; //денежная
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Возврат 0;
	КонецЕсли;
           
	Объект.Department = НомерСекции;

	
	Если ТипОплаты = 1  Тогда //пластик. карта
		Объект.TypeClose = 3;
		Объект.Summ = Окр(Получено, 2, 1);   
		Объект.ЗакрытьЧек();
	Иначе                    
		Если (Получено > 0) И (Получено > СуммаЧека) Тогда
			Объект.Summ = Окр(Получено, 2, 1);
			Объект.ОплатаСоСдачей();
		Иначе
			Объект.ЗакрытьЧек();
		КонецЕсли;
	КонецЕсли;

	
			
	Если Объект.Результат <> 0 Тогда
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Возврат 0;
	КонецЕсли;
	
	Объект.ПолучитьСостояние();
	НомерЧека = Объект.НомерЧека;
	
	Возврат 1;
КонецФункции
Показать
4. talych 17 26.03.14 17:00 Сейчас в теме
Код сырой(копи-паст+тест), не пинать за лишние переменные ))
5. Ёпрст 1067 26.03.14 17:13 Сейчас в теме
У меня вот так печатается ставка НДС...в табличке отключены налоги, товар - передается всегда одна строка.
Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ДлинаСтроки)

Если ПустоеЗначение(Объект) = 1 Тогда
ОписаниеРезультата = "устройство не подключено";
Возврат 0;
ИначеЕсли ПодключитьсяКФР(Объект) = 0 Тогда
Возврат 0;
КонецЕсли;

Объект.Mode = 1; // режим регистрации чеков
Объект.Password = Пароль; // пароль на режим регистрации
Объект.SetMode();
Объект.GetStatus();
Если Объект.СостояниеЧека <> 0 Тогда
Попытка
Объект.CancelCheck();
Исключение
КонецПопытки;
КонецЕсли;

Если Объект.Результат <> 0 Тогда
Попытка
Объект.CancelCheck();
Исключение
КонецПопытки;
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
ОтключитьсяОтФР(Объект, 0);
Возврат 0;
КонецЕсли;

// регистрация товаров
РезРегистрация = 1;
СписокТоваров.ВыбратьСтроки();

ДлинаНаименования = Объект.ДлинаСтрокиСимволов; // зависит от модели ФР
Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
//Проверка наличия колонки "НДС" в таблице значений.
НДСЕсть = "";
Попытка
НДС = СписокТоваров.НДС;
НДСЕсть = 1;
Исключение
НДСЕсть = 0;
КонецПопытки;

Если НДСЕсть = 1 Тогда
Объект.Name = "...";
Иначе
Объект.Name = "..."; //Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
КонецЕсли;

Объект.Price = Окр(СписокТоваров.Цена,2,1);
Объект.Quantity = 1; //СписокТоваров.Количество;

//Если ПризнВозврата = 0 Тогда
//
// Если НДСЕсть = 1 Тогда//Печатаем НДС
//
// // В настройках ФР надо настроить ставки:
// // Налог 1 = 18% - НДС 18%
// // Налог 2 = 10% - НДС 10%
// // Налог 3 = 20% - НДС 20%
// // Налог 4 = 0% - без НДС
// // и Тип налога = 2 (Налог на каждую продажу)
//
// Если СписокТоваров.НДС = 18 Тогда
// Объект.Department = 1;
// ИначеЕсли СписокТоваров.НДС = 10 Тогда
// Объект.Department = 2;
// ИначеЕсли СписокТоваров.НДС = 20 Тогда
// Объект.Department = 3;
// Иначе
// Объект.Department = 4;
// КонецЕсли;
// Иначе
// Объект.Department = 4;
// КонецЕсли;
//
// Объект.Регистрация();
//Иначе
// Объект.Возврат();
//КонецЕсли;

Если Объект.Registration() <> 0 тогда
Возврат 0;
КонецЕсли;

Объект.Caption="В т.ч.НДС: "+СокрЛП(Формат(Окр(СписокТоваров.Цена/118*18,2,1),"Ч14.2"));
Объект.PrintString();

//Если чНП <> 0 Тогда
// Объект.Caption="В т.ч.НП: "+СокрЛП(Формат(чНП,"Ч14.2"));
// Объект.PrintString();
//КонецЕсли;

Если Объект.Результат <> 0 Тогда
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
Попытка
Объект.CancelCheck();
Исключение
КонецПопытки;
ОтключитьсяОтФР(Объект, 0);
Возврат 0;
КонецЕсли;

Если НДСЕсть = 1 Тогда
СтрокаДляПечати = "";//СписокТоваров.ТовНаим;
Пока СтрДлина(СтрокаДляПечати)>0 Цикл
Объект.Caption = Лев(СтрокаДляПечати,ДлинаНаименования);
Объект.PrintString();
СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаНаименования+1));
КонецЦикла;
КонецЕсли;

Если Объект.Результат <> 0 Тогда
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
Попытка
Объект.CancelCheck();
Исключение
КонецПопытки;
ОтключитьсяОтФР(Объект, 0);
Возврат 0;
КонецЕсли;

КонецЦикла;

Если ПустоеЗначение(Скидка) = 0 Тогда
Если Скидка < 0 Тогда
// надбавка
Объект.Percents = -Скидка;
Объект.ПроцентнаяНадбавка();
Иначе
// Скидка
Объект.Percents = Скидка;
Объект.ПроцентнаяСкидка();
КонецЕсли;

КонецЕсли;

Если Объект.Результат <> 0 Тогда
Объект.Percents = 0;
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
Попытка
Объект.CancelCheck();
Исключение
КонецПопытки;
ОтключитьсяОтФР(Объект, 0);
Возврат 0;
КонецЕсли;

Объект.Department = НомерСекции;

НомерЧека = Объект.НомерЧека;

Если (Получено > 0) И (Получено > СуммаЧека) Тогда
Объект.Summ = Окр(Получено, 2, 1);
Объект.ОплатаСоСдачей();
Иначе
Объект.ЗакрытьЧек();
КонецЕсли;

Если Объект.Результат <> 0 Тогда
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
Попытка
Объект.CancelCheck();
Исключение
КонецПопытки;
ОтключитьсяОтФР(Объект, 0);
Возврат 0;
КонецЕсли;

Возврат ОтключитьсяОтФР(Объект);

КонецФункции
Показать
6. Ёпрст 1067 26.03.14 17:14 Сейчас в теме
Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ДлинаСтроки)
	
	Если ПустоеЗначение(Объект) = 1 Тогда
		ОписаниеРезультата = "устройство не подключено";
		Возврат 0;
	ИначеЕсли ПодключитьсяКФР(Объект) = 0 Тогда
		Возврат 0;
	КонецЕсли;
	
	Объект.Mode = 1; // режим регистрации чеков
	Объект.Password = Пароль; // пароль на режим регистрации
	Объект.SetMode();
	Объект.GetStatus();
	Если Объект.СостояниеЧека <> 0 Тогда		
		Попытка
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если Объект.Результат <> 0 Тогда
		Попытка
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		ОтключитьсяОтФР(Объект, 0);
		Возврат 0;
	КонецЕсли;
	
	// регистрация товаров
	РезРегистрация = 1;
	СписокТоваров.ВыбратьСтроки();
	        
	ДлинаНаименования = Объект.ДлинаСтрокиСимволов; // зависит от модели ФР
	Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
		//Проверка наличия колонки "НДС" в таблице значений.
		НДСЕсть = "";
		Попытка
			НДС = СписокТоваров.НДС;
			НДСЕсть = 1;
		Исключение
			НДСЕсть = 0;
		КонецПопытки;
			
		Если НДСЕсть = 1 Тогда
		    Объект.Name       = "...";
		Иначе
			Объект.Name       = "..."; //Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
		КонецЕсли;
				
		Объект.Price      = Окр(СписокТоваров.Цена,2,1);
		Объект.Quantity   = 1; //СписокТоваров.Количество;				

		//Если ПризнВозврата = 0 Тогда			
		//	
		//	Если НДСЕсть = 1 Тогда//Печатаем НДС
		//		
		//	    // В настройках ФР надо настроить ставки:
		//		// Налог 1 = 18% - НДС 18%
		//		// Налог 2 = 10% - НДС 10%
		//		// Налог 3 = 20% - НДС 20%
		//		// Налог 4 =  0% - без НДС
		//		// и Тип налога = 2 (Налог на каждую продажу)
		//
		//		Если СписокТоваров.НДС = 18 Тогда
		//			Объект.Department = 1;
		//		ИначеЕсли СписокТоваров.НДС = 10 Тогда
		//			Объект.Department = 2;
		//		ИначеЕсли СписокТоваров.НДС = 20 Тогда
		//			Объект.Department = 3;
		//		Иначе
		//			Объект.Department = 4;
		//		КонецЕсли;
		//	Иначе
		//		Объект.Department = 4;
		//	КонецЕсли;
		//		
		//	Объект.Регистрация();
		//Иначе
		//	Объект.Возврат();
		//КонецЕсли; 
		
		Если Объект.Registration() <> 0 тогда
			Возврат 0;                    
		КонецЕсли;
		
		Объект.Caption="В т.ч.НДС: "+СокрЛП(Формат(Окр(СписокТоваров.Цена/118*18,2,1),"Ч14.2"));
		Объект.PrintString(); 
		
		//Если чНП <> 0 Тогда
		//	Объект.Caption="В т.ч.НП: "+СокрЛП(Формат(чНП,"Ч14.2"));
		//	Объект.PrintString(); 
		//КонецЕсли;

		Если Объект.Результат <> 0 Тогда
			ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
			Попытка
				Объект.CancelCheck();
			Исключение
			КонецПопытки;
			ОтключитьсяОтФР(Объект, 0);
		    Возврат 0;
		КонецЕсли;
		
		Если НДСЕсть = 1 Тогда
			СтрокаДляПечати = "";//СписокТоваров.ТовНаим;
			Пока СтрДлина(СтрокаДляПечати)>0 Цикл
				Объект.Caption = Лев(СтрокаДляПечати,ДлинаНаименования);
			    Объект.PrintString();
				СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаНаименования+1));
			КонецЦикла;
		КонецЕсли;
		
		Если Объект.Результат <> 0 Тогда
			ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
			Попытка
				Объект.CancelCheck();
			Исключение
			КонецПопытки;
			ОтключитьсяОтФР(Объект, 0);
		    Возврат 0;
		КонецЕсли;
		
	КонецЦикла;
		
	Если ПустоеЗначение(Скидка) = 0 Тогда
	    Если Скидка < 0 Тогда
			// надбавка
			Объект.Percents = -Скидка;
			Объект.ПроцентнаяНадбавка();
		Иначе
			// Скидка
			Объект.Percents = Скидка;
			Объект.ПроцентнаяСкидка();
	    КонецЕсли;
				
	КонецЕсли;
	
	Если Объект.Результат <> 0 Тогда
		Объект.Percents    = 0;
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Попытка
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
		ОтключитьсяОтФР(Объект, 0);
		Возврат 0;
	КонецЕсли;

	Объект.Department = НомерСекции;
	
	НомерЧека = Объект.НомерЧека;
	
	Если (Получено > 0) И (Получено > СуммаЧека) Тогда
		Объект.Summ = Окр(Получено, 2, 1);
		Объект.ОплатаСоСдачей();
	Иначе
		Объект.ЗакрытьЧек();
	КонецЕсли;
	
	Если Объект.Результат <> 0 Тогда
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Попытка
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
		ОтключитьсяОтФР(Объект, 0);
		Возврат 0;
	КонецЕсли;			
	
	Возврат ОтключитьсяОтФР(Объект);

КонецФункции
Показать
7. talych 17 27.03.14 07:40 Сейчас в теме
(6) Ёпрст, так будет печататься, но в каждой строке с товаром в чеке. Можно функцию печати строк поставить после НомерЧека = Объект.НомерЧека; но тогда текст печатается после окончания строк с товарами и Итого. Что тоже неудобно.
Нужно, чтобы текст был или в шапке или после всех Итого. В ШтрихМ всё работает нормально. Вот код
Функция ПечататьЧек(Объект, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ТипОплаты, СписокРеклТекст, ВключитьРеклЧек)
	
	Если ПустоеЗначение(Объект) = 1 Тогда
		ОписаниеРезультата = "устройство не подключено";
		Возврат 0;
	КонецЕсли;       
	//печать логотипа
	Объект.НомерПервойЛинии=1;
	Объект.НомерПоследнейЛинии=90;
	Объект.Пароль=глФРПарольПользователя;
	Объект.ПечатьКартинки();
    //печать номера кассы
	Объект.ИспользоватьЧековуюЛенту=1;
	Объект.ИспользоватьПодкладнойДокумент=0;
	Объект.Пароль=глФРПарольПользователя;
	Объект.СтрокаДляПечати=НомерСекции;
	Объект.ПечатьСтроки();
    //печать ФИО кассира
	Объект.ИспользоватьЧековуюЛенту=1;
	Объект.ИспользоватьПодкладнойДокумент=0;
	Объект.Пароль=глФРПарольПользователя;
	Объект.СтрокаДляПечати="ФИО кассира: "+СокрЛП(Пользователь.Сотрудник.Наименование);
	Объект.ПечатьСтроки();
	// регистрация товаров
	РезРегистрация = 1;
	СписокТоваров.ВыбратьСтроки();
	
	Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
			
		Объект.Отдел	 			= 1;
		Объект.СтрокаДляПечати		= Лев(СписокТоваров.ТовНаим, 40);
		Объект.Цена			    	= Окр(СписокТоваров.Цена,2,1);
		Объект.Количество 			= СписокТоваров.Количество;
		
		Если ПризнВозврата = 0 Тогда
			Объект.Продажа();
		Иначе
			Объект.ВозвратПродажи();
		КонецЕсли;
		Если Объект.Результат <> 0 Тогда
			ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		    Возврат 0;
		КонецЕсли;
	КонецЦикла;

*********** и т.д.		
Показать
8. Ёпрст 1067 27.03.14 09:19 Сейчас в теме
Смотреть нужно в описалово драйвера от атолла, там помимо PrintString(); было еще что-то..
9. talych 17 27.03.14 09:49 Сейчас в теме
(8) Ёпрст, весь просмотрел. Ничего нет ((
10. Ёпрст 1067 27.03.14 11:08 Сейчас в теме
У тебя текст меняющийся, или всегда постоянный ? Если последнее, то можешь его в системных таблицах прописать, если фискальник позволяет.
11. talych 17 27.03.14 13:44 Сейчас в теме
(10) Ёпрст, меняющийся. Одна часть текстов это ФИО + ещё одно поле. Вторая часть это рекламный текст из 4 строк
Объектов несколько, по нескольку ККМ. Стрёмно менять вручную везде )))) В версии АТОЛ не может быть дело?
12. talych 17 28.03.14 14:31 Сейчас в теме
В-общем, вывел информацию перед разделом "Итого". Клиент не возражает.
Думаю, проблема в самом устройстве, а не в драйвере АТОЛ.
PS: Если у кого вдруг появится более подходящее решение, просьба поделиться здесь.
13. Studman 10.04.14 08:03 Сейчас в теме
Проблема эта на свежих драйверах Атола! Они там функцию поменяли печати строки с год назад сталкивался с такой проблемой решилась переделкой обработки печати чека! Смотри в документацию по драйверам Атола: http://www.atol.ru/link/file/66/
14. talych 17 10.04.14 08:30 Сейчас в теме
(13) Studman, спасибо за ответ. Можно расшифровать "переделкой обработки печати чека"?
Опишу еще раз проблему "Печать строки возможна только внутри открытого чека. До него и после невозможна."
попробовать откатить драйвера?
15. Studman 10.04.14 08:38 Сейчас в теме
Попробуй откатить! И я конечно точно не помню но вроде PrintString() менял на PrintField(). А на форуме атола не смотрел?
16. talych 17 10.04.14 08:43 Сейчас в теме
(15) Studman, c PrintField() пробовал. То же самое. Попробую откатить
17. Studman 10.04.14 08:52 Сейчас в теме
Я не нашел у тебя команды OpenCheck() или BeginDocument() перед печатью строки!
"BeginDocument()
НачалоДокумента()
Печать нефискального документа на принтере ПД. Метод переводит драйвер в состояние
буферизации данных, добавляемых методами печати
строки и поля.Это означает, что все последующие команды PrintString, AddField
и PrintField помещают данные во временный буфер драйвера (в памяти ПК). Данные будут переданы и
напечатаны на ККМ только по команде EndDocument. Очистка буфера осуществляется командой
ClearOutput."

"OpenCheck()
ОткрытьЧек()
Метод открывает чек соответствующего типа (свойство
CheckType). После успешного выполнения метода состояние чека меняется на соответствующее и на
чековой и контрольной лентах печатается наименование типа чека. Сумма чека при
выполнении данного метода не меняется."
18. talych 17 10.04.14 09:47 Сейчас в теме
(17) Studman, так я же не печатаю нефискальный документ. Можешь в коде выставить, где это нужно ставить? А OpenCheck зачем? У меня же новый чек. Не пойму ход мыслей, пардон.
19. Studman 10.04.14 10:01 Сейчас в теме
Я не помню, говорю же год назад разбирался у меня в начале чека такой код:

Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,ТипОплаты)

Если ПустоеЗначение(Объект) = 1 Тогда
ОписаниеРезультата = "устройство не подключено";
Возврат 0;
КонецЕсли;

Объект.Mode = 1; // режим регистрации чеков
Объект.Password = Пароль; // пароль на режим регистрации
Объект.SetMode();
Объект.GetStatus();
Если Объект.СостояниеЧека <> 0 Тогда
Попытка
Объект.TypeClose=ТипОплаты;
Объект.CancelCheck();
Исключение
КонецПопытки;
КонецЕсли;
Если ПризнВозврата=0 Тогда
Объект.checkType=1;
Иначе
Объект.CheckType=2;
КонецЕсли;

Объект.OpenCheck();
20. Studman 10.04.14 10:05 Сейчас в теме
Ход мыслей очень прост! Если он тебе выдает ошибку что "Печать строки возможна только внутри открытого чека. До него и после невозможна.", то видимо ему надо как то открыть чек и показать что ты добавляеш строки в уже открытый документ.
21. talych 17 10.04.14 10:08 Сейчас в теме
А после
Объект.OpenCheck();
? ЧТо у вас там в коде? Выкладывайте, не стесняйтесь ))) Ход мыслей тепреь понятен.
PS: там описание проблемы, это не сообщение ФР ))
22. Studman 10.04.14 10:16 Сейчас в теме
Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,ТипОплаты)
	
	Если ПустоеЗначение(Объект) = 1 Тогда
		ОписаниеРезультата = "устройство не подключено";
		Возврат 0;
	КонецЕсли;
	
	Объект.Mode = 1; // режим регистрации чеков
	Объект.Password = Пароль; // пароль на режим регистрации
	Объект.SetMode();
	Объект.GetStatus();
	Если Объект.СостояниеЧека <> 0 Тогда		
		Попытка 
			Объект.TypeClose=ТипОплаты;
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если Объект.Результат <> 0 Тогда
		Попытка
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Возврат 0;
	КонецЕсли;
	Объект.OpenCheck();
	Объект.Caption= " ";
	Объект.TextWrap=1;
	Объект.Alignment=1;
	Объект.PrintString();
	Объект.FontItalic =0; 
	РезРегистрация = 1;
	ДлинаНаименования = Объект.ДлинаСтрокиСимволов; // зависит от модели ФР
	СписокТоваров.ВыбратьСтроки(); 
	
	Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
		Если СписокТоваров.Количество=0 Тогда
			Если СписокТоваров.ДвойнойРазмер=0 Тогда
				Если СписокТоваров.ТовНаим<>"" Тогда  
					Объект.FontDblHeight=-1;
					Объект.Caption= СписокТоваров.ТовНаим;
					Объект.TextWrap=1;
					Объект.FontBold = -1;
					Объект.Alignment=СписокТоваров.Ориентация;
					Объект.PrintString();
				КонецЕсли;
			Иначе
				Если СписокТоваров.ТовНаим<>"" Тогда  
					Объект.FontBold = -1;
				    Объект.Caption= СписокТоваров.ТовНаим;
					Объект.Alignment=СписокТоваров.Ориентация;
					Объект.PrintField();
				КонецЕсли;
			КонецЕсли;
		Иначе
		   	Объект.Name     = Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
			Объект.Price    = Окр(СписокТоваров.Цена,2,1);
			Объект.Quantity = СписокТоваров.Количество;
			Если ПризнВозврата = 0 Тогда
			        Объект.Регистрация();
			Иначе
				Объект.Возврат();
			КонецЕсли;		
	
		КонецЕсли;
				
		Если Объект.Результат <> 0 Тогда
			ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
			Попытка
				Объект.CancelCheck();
			Исключение
			КонецПопытки;
		    Возврат 0;
		КонецЕсли;
	КонецЦикла;

	Если ПустоеЗначение(Скидка) = 0 Тогда
	    Если Скидка < 0 Тогда
			// надбавка
			Объект.Percents = -Скидка;
			Объект.ПроцентнаяНадбавка();
		Иначе
			// Скидка
			Объект.Percents = Скидка;
			Объект.ПроцентнаяСкидка();
	    КонецЕсли;
				
	КонецЕсли;
	
	Если Объект.Результат <> 0 Тогда
		Объект.Percents    = 0;
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Попытка
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
		Возврат 0;
	КонецЕсли;


	НомерЧека = Объект.НомерЧека;
	
	Если (Получено > 0) И (Получено > СуммаЧека) Тогда
		Объект.Summ = Окр(Получено, 2, 1);
		Объект.ОплатаСоСдачей();
	Иначе
		Объект.TypeClose=ТипОплаты;
		Объект.ЗакрытьЧек();
	КонецЕсли;
			
	Если Объект.Результат <> 0 Тогда
		ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
		Попытка 
			Объект.TypeClose=ТипОплаты;
			Объект.CancelCheck();
		Исключение
		КонецПопытки;
		Возврат 0;
	КонецЕсли;
	Возврат 1;
КонецФункции
Показать
23. Studman 10.04.14 10:18 Сейчас в теме
А что за ошибка 1С выдаёт?
24. talych 17 10.04.14 11:09 Сейчас в теме
(23) Studman, ошибки не выдаёт. Он просто чек режет после текста.
25. talych 17 10.04.14 16:04 Сейчас в теме
(23) Studman, добавил OpenCheck и как бабка отшептала! Спасибо друг, с меня пиво при встрече!! :-))
26. Studman 10.04.14 19:40 Сейчас в теме
Не за что! Если что обращайся!
27. pakko 10 02.07.18 09:44 Сейчас в теме
Здравствуйте, хоть тема и стара, но всё-таки.. хочется немного поспрашивать:
1) Как вы сделали "оплата подарочными картами"
2) Я не совсем понял, может ли быть в одном чеке и регистрация и возврат. Т.е. Продали товар +1 и тут же в этом чеке возврат подарочная карта - так это возможно?
3) Объект.ЗакрытьЧек(); - тут без разницы, мы возвращаем деньги клиенту (возврат) или он нам платит? ККМ сам определяет?
lsk.mask; +1 Ответить
Оставьте свое сообщение

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