Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ДлинаСтроки,ИннПродавца)
// Если ПустоеЗначение(Объект) = 1 Тогда
// ОписаниеРезультата = "устройство не подключено";
// Возврат 0;
// ИначеЕсли ПодключитьсяКФР(Объект) = 0 Тогда
// Возврат 0;
// КонецЕсли;
//
// //Объект.Mode = 1; // режим регистрации чеков
// Объект.Password = Пароль;// пароль на режим регистрации
// //Объект.SetMode();
// //Объект.GetStatus();
// Объект.TaxType = ТипНалогов;
//
// //Если Объект.СостояниеЧека <> 0 Тогда
// // Попытка
// // Объект.CancelCheck();
// // Исключение
// // КонецПопытки;
// //КонецЕсли;
// //
// //Если Объект.Результат <> 0 Тогда
// // Попытка
// // Объект.CancelCheck();
// // Исключение
// // КонецПопытки;
// // ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
// // ОтключитьсяОтФР(Объект, 0);
// // Возврат 0;
// //КонецЕсли;
//
// // регистрация товаров
// РезРегистрация = 1;
// СписокТоваров.ВыбратьСтроки();
//
// ДлинаНаименования =48;//Объект.ДлинаСтрокиСимволов; // зависит от модели ФР
// Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
// //СтрокаДляПечати = СписокТоваров.ТовНаим;
// //Объект.Password = Пароль;
// //Объект.StringForPrinting = Лев(СтрокаДляПечати,48);
//
//
//
//
// //Проверка наличия колонки "НДС" в таблице значений.
// НДСЕсть = "";
// Попытка
// НДС = СписокТоваров.НДС;
// НДСЕсть = 1;
// Исключение
// НДСЕсть = 0;
// КонецПопытки;
//
// //Если НДСЕсть = 1 Тогда
// // Объект.Name = "";
// //Иначе
// // Объект.Name = Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
// //КонецЕсли;
// СтрокаДляПечати = СписокТоваров.ТовНаим;
// Объект.Password = Пароль;
// Объект.StringForPrinting = Лев(СтрокаДляПечати,48);
//
// Объект.Price = Окр(СписокТоваров.Цена,2,1);
// Объект.Quantity = СписокТоваров.Количество;
//
// Если ПризнВозврата = 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;
// КонецЕсли;
//
// //Если ПризнВозврата = 0 Тогда
// Объект.Sale();
// Иначе
// Объект.ReturnSale();
// КонецЕсли;
//
// Если Объект.Результат <> 0 Тогда
// ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
// Попытка
// Объект.CancelCheck();
// Исключение
// КонецПопытки;
// ОтключитьсяОтФР(Объект, 0);
// Возврат 0;
// КонецЕсли;
//
// Если НДСЕсть = 1 Тогда
// СтрокаДляПечати = СписокТоваров.ТовНаим;
// Пока СтрДлина(СтрокаДляПечати)>0 Цикл
// Объект.Caption = Лев(СтрокаДляПечати,ДлинаНаименования);
// Объект.PrintString();
// СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаНаименования+1));
// КонецЦикла;
// КонецЕсли;
//
// Если Объект.Результат <> 0 Тогда
// ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
// Попытка
// Объект.CancelCheck();
// Исключение
// КонецПопытки;
// ОтключитьсяОтФР(Объект, 0);
// Возврат 0;
// КонецЕсли;
//
// КонецЦикла;
//
// Если ПустоеЗначение(Скидка) = 0 Тогда
// Если Скидка < 0 Тогда
// // надбавка
// Объект.Percents = -Скидка;
// Объект.ПроцентнаяНадбавка();
// Иначе
// // Скидка
// Объект.Percents = Скидка;
// Объект.ПроцентнаяСкидка();
// КонецЕсли;
//
// КонецЕсли;
//
// Если Объект.Результат <> 0 Тогда
// Объект.Percents = 0;
// ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
// Попытка
// Объект.CancelCheck();
// Исключение
// КонецПопытки;
// ОтключитьсяОтФР(Объект, 0);
// Возврат 0;
// КонецЕсли;
//
// Объект.Department = НомерСекции;
//
// НомерЧека = Объект.НомерЧека;
// Объект.Summ1 = Окр(Получено, 2, 1);
//
// Объект.FNCloseCheckEx();
//
// Объект.ЗакрытьЧек();
//
//
// //Если (Получено > 0) И (Получено > СуммаЧека) Тогда
// // Объект.Summ = Окр(Получено, 2, 1);
// // Объект.ОплатаСоСдачей();
// //Иначе
// // Объект.FNCloseCheckEx();
// //
// // Объект.ЗакрытьЧек();
// //КонецЕсли;
//
// Если Объект.Результат <> 0 Тогда
// ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
// Попытка
// Объект.CancelCheck();
// Исключение
// КонецПопытки;
// ОтключитьсяОтФР(Объект, 0);
// Возврат 0;
// КонецЕсли;
//
// Возврат ОтключитьсяОтФР(Объект);
//Если ПустоеЗначение(Объект) = 1 Тогда
// ОписаниеРезультата = "устройство не подключено";
// Возврат 0;
//ИначеЕсли ПодключитьсяКФР(Объект, Пароль) = 0 Тогда
// Возврат 0;
//КонецЕсли;
// регистрация товаров
КорректноКудаОтправитьЧек = -1//-1 не ввден, 1- корректно,0 не корректно
Если ПустоеЗначение(КудаОтправитьЧек) = 0 Тогда
Если Найти(СокрЛП(КудаОтправитьЧек),"@") <> 0 Тогда
КорректноКудаОтправитьЧек = 1;
ИначеЕсли Лев(СокрЛП(КудаОтправитьЧек),2) = "+7" Тогда
КорректноКудаОтправитьЧек = 1;
Иначе
КорректноКудаОтправитьЧек = 0;
Если Вопрос("Не корректно введен email или номер телефона клиента, пробить обычный чек?",4) = 6 Тогда
КорректноКудаОтправитьЧек = -1;
Иначе
Предупреждение("Проверте email или номер телефона клиента, номер телефона должен начинаться на +7");
Возврат 0;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Объект.TaxType = ТипНалогов;
РезРегистрация = 1;
// СписокТоваров.ВыбратьСтроки();
Получено1 = 0;
// Если СуммаСкидки <> 0 Тогда
// СуммаВсего1 = СписокТоваров.Итог("Сумма");
// СписокТоваров.ВыбратьСтроки();
// Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
// СписокТоваров.Сумма = СписокТоваров.Сумма - СписокТоваров.Сумма/СуммаВсего1*100 * СуммаСкидки/100;
// КонецЦикла;
// КонецЕсли;
//
СуммаСкидкиНаЧек = СписокТоваров.Итог("СуммаСкидки");
Если СокрЛП(ИННПродавца) <> "" Тогда
Объект.TagNumber = 1203;
Объект.TagType = 7;
Объект.TagValueStr = СокрЛП(ИННПродавца);
Объект.FNSendTag();
КонецЕсли;
// СписокТоваров.НоваяКолонка("ПолнСумма","Число",15,2);
// СписокТоваров.НоваяКолонка("СуммаСкидки","Число",15,2);
//
//
//
// СписокТоваров.ВыбратьСтроки();
//
// Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
// СписокТоваров.ПолнСумма = СписокТоваров.Цена*СписокТоваров.Количество;
// СписокТоваров.СуммаСкидки = СписокТоваров.ПолнСумма-СписокТоваров.Сумма;
//
// КонецЦикла;
СписокТоваров.ВыбратьСтроки();
Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
СтрокаДляПечати = СписокТоваров.ТовНаим;
Объект.Password = Пароль;
Объект.StringForPrinting = Лев(СтрокаДляПечати,48);
Если СписокТоваров.СуммаСкидки = 0 Тогда
//ЦенаЦены = СписокТоваров.Цена;
Объект.Price = СписокТоваров.Цена;
Получено1 = Получено1+ СписокТоваров.Цена * СписокТоваров.Количество;
Иначе
//СуммаСкидкиНаЧек =СуммаСкидкиНаЧек +(СписокТоваров.Цена * СписокТоваров.Количество - СписокТоваров.Сумма);
//ЦенаЦены = СписокТоваров.Сумма/СписокТоваров.Количество;
//ЦенаЦены =Окр(СписокТоваров.Сумма/СписокТоваров.Количество,2);
Объект.Price = СписокТоваров.Сумма/СписокТоваров.Количество;
Получено1 = Получено1+ СписокТоваров.Сумма/СписокТоваров.Количество;;
КонецЕсли;
//Объект.Price = СписокТоваров.Цена;
Объект.Quantity = СписокТоваров.Количество;
Объект.Department = НомерСекции;
//Объект.DiscountValue = Скидка;
//Объект.FNDiscountOperation();
//Объект.FNOperation();
//Проверка наличия колонки "НДС" в таблице значений.
НДСЕсть = "";
Попытка
НДС = СписокТоваров.НДС;
НДСЕсть = 1;
Исключение
НДСЕсть = 0;
КонецПопытки;
Если НДСЕсть = 1 Тогд�//Печатаем НДС
// В настройках ФР надо настроить ставки:
// Налог 1 = 18% - НДС 18%
// Налог 2 = 10% - НДС 10%
// Налог 3 = 20% - НДС 20%
Если СписокТоваров.НДС = 18 Тогда
Объект.Tax1 = 1;
ИначеЕсли СписокТоваров.НДС = 10 Тогда
Объект.Tax1 = 2;
ИначеЕсли СписокТоваров.НДС = 20 Тогда
Объект.Tax1 = 3;
Иначе
Объект.Tax1 = 0;
КонецЕсли;
Объект.Tax2 = 0;
Объект.Tax3 = 0;
Объект.Tax4 = 0;
ДлинаСтроки = 36;
Иначе
ДлинаСтроки = 0;
КонецЕсли;
Если ПризнВозврата = 0 Тогда
Объект.Sale();
Иначе
Объект.ReturnSale();
КонецЕсли;
// СтрокаДляПечати = СписокТоваров.ТовНаим;
//
//
// Если ПустоеЗначение(ДлинаСтроки) = 1 Тогда
// Объект.StringForPrinting = СтрокаДляПечати;
// //Объект.FNOperation();
//
// Объект.PrintString();
//
// Иначе
// Пока СтрДлина(СтрокаДляПечати)>0 Цикл
// Объект.StringForPrinting = Лев(СтрокаДляПечати,ДлинаСтроки);
// //Объект.FNOperation();
//
// Объект.PrintString();
// СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаСтроки+1));
// КонецЦикла;
// КонецЕсли;
Если Объект.ResultCode <> 0 Тогда
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
АннулированиеЧека(Объект, Пароль);
//ОтключитьсяОтФР(Объект, Пароль, 0);
Возврат 0;
КонецЕсли;
КонецЦикла;
Если константа.ПисатьСуммуСкидкиВЧеке = 1 тогда
СтрокаДляПечати = "Сумма скидки на чек:" + Строка(глФРМ(СуммаСкидкиНаЧек));
Объект.Password = Пароль;
Объект.StringForPrinting = Лев(СтрокаДляПечати,48);
Иначе
СтрокаДляПечати = "__________________________";//+ Строка(глФРМ(СуммаСкидки,Валюта,1));
Объект.Password = Пароль;
Объект.StringForPrinting = Лев(СтрокаДляПечати,48);
КонецЕсли;
Объект.Password = Пароль;
Если ПустоеЗначение(ВидОплаты) = 0 Тогда
Если ВидОплаты = перечисление.ВидыОплаты.Наличными тогда
Если (Получено = 0) или (Получено <Получено1) Тогда
Объект.Summ1 = Получено1;
Объект.Summ2 = 0;
Иначе
Объект.Summ1 = Получено;
Объект.Summ2 = 0;
КонецЕсли;
Иначе
Объект.Summ1 = 0;
Объект.Summ2 = Получено1;
//
//
КонецЕсли;
Иначе
Объект.Summ1 = Получено1;
Объект.Summ2 = 0;
КонецЕсли;
//Объект.Summ2 = 0;
Объект.Summ3 = 0;
Объект.Summ4 = 0;
//Объект.StringForPrinting="Масло";
//Объект.DiscountOnCheck=Скидка;
//Объект.FNOperation();
Если ПустоеЗначение(КудаОтправитьЧек) = 0 Тогда
Объект.CustomerEmail = СокрЛП(КудаОтправитьЧек);
Объект.FNSendCustomerEmail();
КонецЕсли;
Объект.FNCloseCheckEx();
//Объект.CloseCheck();
Если Объект.ResultCode <> 0 Тогда
//Сообщить(Объект.ResultCode);
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
АннулированиеЧека(Объект, Пароль);
//ОтключитьсяОтФР(Объект, Пароль, 0);
Возврат 0;
КонецЕсли;
Объект.Password = Пароль;
Объект.GetECRStatus();
Если Объект.ResultCode <> 0 Тогда
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
//ОтключитьсяОтФР(Объект, Пароль, 0);
Возврат 0;
КонецЕсли;
НомерЧека = Объект.OpenDocumentNumber+?(Объект.ECRAdvancedMode=5,1,0);
Возврат ОтключитьсяОтФР(Объект, Пароль);
КонецФункции