TSDZakazScladVasilek/CommonModules/ОборудованиеЧекопечатающиеУстройстваКлиентСервер/Ext/Module.bsl

2066 lines
156 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#Область ПрограммныйИнтерфейс
// Проверяет соответствие ИНН требованиям.
//
// Параметры:
// ИНН - Строка - проверяемый индивидуальный номер налогоплательщика.
// ЭтоЮридическоеЛицо - Булево - признак, является ли владелец ИНН юридическим лицом.
// ТекстСообщения - Строка - текст сообщения о найденных ошибках.
//
// Возвращаемое значение:
// Булево - Истина, если соответствует.
//
Функция ИННСоответствуетТребованиям(Знач ИНН, ЭтоЮридическоеЛицо, ТекстСообщения) Экспорт
СоответствуетТребованиям = Истина;
ТекстСообщения = "";
ИНН = СокрЛП(ИНН);
ДлинаИНН = СтрДлина(ИНН);
Если ЭтоЮридическоеЛицо = Неопределено Тогда
ТекстСообщения = ТекстСообщения + НСтр("ru = 'Не определен тип владельца ИНН'");
Возврат Ложь;
КонецЕсли;
Если НЕ ОбщегоНазначенияБПОКлиентСервер.ТолькоЦифрыВСтроке(ИНН) Тогда
СоответствуетТребованиям = Ложь;
ТекстСообщения = ТекстСообщения + НСтр("ru = 'ИНН должен состоять только из цифр'");
КонецЕсли;
Если ЭтоЮридическоеЛицо И ДлинаИНН <> 10 Тогда
СоответствуетТребованиям = Ложь;
ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "")
+ НСтр("ru = 'ИНН юридического лица должен состоять из 10 цифр'");
ИначеЕсли НЕ ЭтоЮридическоеЛицо И ДлинаИНН <> 12 Тогда
СоответствуетТребованиям = Ложь;
ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "")
+ НСтр("ru = 'ИНН физического лица должен состоять из 12 цифр'");
КонецЕсли;
Если СоответствуетТребованиям Тогда
Если ЭтоЮридическоеЛицо Тогда
КонтрольнаяСумма = 0;
Для Индекс = 1 По 9 Цикл
Если Индекс = 1 Тогда
Множитель = 2;
ИначеЕсли Индекс = 2 Тогда
Множитель = 4;
ИначеЕсли Индекс = 3 Тогда
Множитель = 10;
ИначеЕсли Индекс = 4 Тогда
Множитель = 3;
ИначеЕсли Индекс = 5 Тогда
Множитель = 5;
ИначеЕсли Индекс = 6 Тогда
Множитель = 9;
ИначеЕсли Индекс = 7 Тогда
Множитель = 4;
ИначеЕсли Индекс = 8 Тогда
Множитель = 6;
ИначеЕсли Индекс = 9 Тогда
Множитель = 8;
КонецЕсли;
Цифра = Число(Сред(ИНН, Индекс, 1));
КонтрольнаяСумма = КонтрольнаяСумма + Цифра * Множитель;
КонецЦикла;
КонтрольныйРазряд = (КонтрольнаяСумма %11) %10;
Если КонтрольныйРазряд <> Число(Сред(ИНН, 10, 1)) Тогда
СоответствуетТребованиям = Ложь;
ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "")
+ НСтр("ru = 'Контрольное число для ИНН не совпадает с рассчитанным'");
КонецЕсли;
Иначе
КонтрольнаяСумма11 = 0;
КонтрольнаяСумма12 = 0;
Для Индекс = 1 По 11 Цикл
// Расчет множителя для 11-го и 12-го разрядов.
Если Индекс = 1 Тогда
Множитель11 = 7;
Множитель12 = 3;
ИначеЕсли Индекс = 2 Тогда
Множитель11 = 2;
Множитель12 = 7;
ИначеЕсли Индекс = 3 Тогда
Множитель11 = 4;
Множитель12 = 2;
ИначеЕсли Индекс = 4 Тогда
Множитель11 = 10;
Множитель12 = 4;
ИначеЕсли Индекс = 5 Тогда
Множитель11 = 3;
Множитель12 = 10;
ИначеЕсли Индекс = 6 Тогда
Множитель11 = 5;
Множитель12 = 3;
ИначеЕсли Индекс = 7 Тогда
Множитель11 = 9;
Множитель12 = 5;
ИначеЕсли Индекс = 8 Тогда
Множитель11 = 4;
Множитель12 = 9;
ИначеЕсли Индекс = 9 Тогда
Множитель11 = 6;
Множитель12 = 4;
ИначеЕсли Индекс = 10 Тогда
Множитель11 = 8;
Множитель12 = 6;
ИначеЕсли Индекс = 11 Тогда
Множитель11 = 0;
Множитель12 = 8;
КонецЕсли;
Цифра = Число(Сред(ИНН, Индекс, 1));
КонтрольнаяСумма11 = КонтрольнаяСумма11 + Цифра * Множитель11;
КонтрольнаяСумма12 = КонтрольнаяСумма12 + Цифра * Множитель12;
КонецЦикла;
КонтрольныйРазряд11 = (КонтрольнаяСумма11 %11) %10;
КонтрольныйРазряд12 = (КонтрольнаяСумма12 %11) %10;
Если КонтрольныйРазряд11 <> Число(Сред(ИНН,11,1)) ИЛИ КонтрольныйРазряд12 <> Число(Сред(ИНН,12,1)) Тогда
СоответствуетТребованиям = Ложь;
ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "")
+ НСтр("ru = 'Контрольное число для ИНН не совпадает с рассчитанным'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат СоответствуетТребованиям;
КонецФункции
#Область Конструкторы
// Заполняет структуру общих параметров фискального накопителя.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыФискальногоНакопителяОбщие() Экспорт
Параметры = Новый Структура();
// ФФД 1.0
Параметры.Вставить("РегистрационныйНомерККТ"); // Регистрационный номер ККТ
Параметры.Вставить("ЗаводскойНомерККТ"); // Заводской номер ККТ
Параметры.Вставить("ЗаводскойНомерФН"); // Заводской номер ФН
Параметры.Вставить("ВерсияФФДФН"); // Версия ФФД ФН (одно из следующих значений "1.0","1.1")
Параметры.Вставить("ВерсияФФДККТ"); // Версия ФФД ККТ (одно из следующих значений "1.0","1.05","1.1")
Параметры.Вставить("ОрганизацияНазвание"); // Название организации
Параметры.Вставить("ОрганизацияИНН"); // ИНН организация
Параметры.Вставить("АдресПроведенияРасчетов"); // Адрес проведения расчетов
Параметры.Вставить("МестоПроведенияРасчетов"); // Место проведения расчетов
Параметры.Вставить("КодыСистемыНалогообложения"); // Коды системы налогообложения
Параметры.Вставить("ПризнакАвтономногоРежима" , Ложь); // Признак автономного режима
Параметры.Вставить("ПризнакШифрованиеДанных" , Ложь); // Признак шифрование данных
Параметры.Вставить("ПризнакРасчетовЗаУслуги" , Ложь); // Признак расчетов за услуги
Параметры.Вставить("ПродажаПодакцизногоТовара" , Ложь); // Продажа подакцизного товара
Параметры.Вставить("ПроведенияАзартныхИгр" , Ложь); // Признак проведения азартных игр
Параметры.Вставить("ПроведенияЛотерей" , Ложь); // Признак проведения лотереи
Параметры.Вставить("ПризнакиАгента"); // Коды признаков агента
Параметры.Вставить("ПризнакФормированияБСО" , Ложь); // Признак формирования АС БСО
Параметры.Вставить("ПризнакРасчетовТолькоВИнтернет", Ложь); // Признак ККТ для расчетов только в Интернет
Параметры.Вставить("УстановкаПринтераВАвтомате" , Ложь); // Признак установки принтера в автомате
Параметры.Вставить("ПризнакАвтоматическогоРежима" , Ложь); // Признак автоматического режима
Параметры.Вставить("НомерАвтоматаДляАвтоматическогоРежима"); // Номер автомата для автоматического режима
Параметры.Вставить("ОрганизацияОФДИНН"); // Название организации ОФД
Параметры.Вставить("ОрганизацияОФДНазвание"); // ИНН организации ОФД
Параметры.Вставить("ОтправительEmail"); // Адрес электронной почты отправителя чека.
Параметры.Вставить("АдресСайтаФНС"); // Адрес сайта уполномоченного органа (ФНС).
// ФФД 1.2
Параметры.Вставить("ПроведенияРасчетаВИнтернет" , Ложь); // Признак ККТ для расчетов в Интернет
Параметры.Вставить("ПродажаМаркированныхТоваров" , Ложь); // Признак ККТ торговли товарами, подлежащими обязательной маркировке средствами идентификации
Параметры.Вставить("ПризнакПримененияЛомбардами" , Ложь); // Признак применения ККТ при осуществлении ломбардами кредитования граждан
Параметры.Вставить("ПризнакДеятельностиПоСтрахованию" , Ложь); // Признак применения при осуществлении деятельности по страхованию
// ФФД 1.2 - Приказ ФНС России от 12.04.2023 N ЕД-7-20/239@
Параметры.Вставить("ПризнакАвтоматическогоТорговогоАвтомата" , Ложь); // Признак применения в автоматическом торговом автомате
Параметры.Вставить("ПризнакОказанииУслугОбщественногоПитания" , Ложь); // Признак применения при оказании услуг общественного питания
Параметры.Вставить("ПризнакОптовойТорговлиСОрганизациями" , Истина); // Признак применения о оптовой торговле с организациями и ИП
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров регистрации ККТ.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыРегистрацииККТ() Экспорт
Параметры = ПараметрыФискальногоНакопителяОбщие();
Параметры.Вставить("ПризнакФискализации"); // Признак регистрации фискального накопителя.
Параметры.Вставить("НомерДокументаФискализации"); // Номер документа регистрация фискального накопителя.
Параметры.Вставить("ДатаВремяФискализации"); // Дата и время операции регистрации фискального накопителя.
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров Фискализации ФН.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыОперацииФискализацииНакопителя() Экспорт
Параметры = ПараметрыФискальногоНакопителяОбщие();
Параметры.Вставить("КодПричиныПеререгистрации");
Параметры.Вставить("КодыПричинИзмененияСведений");
Параметры.Вставить("ТипОперации", 1);
Параметры.Вставить("Кассир" , НСтр("ru='Администратор'")); // Строка,Обязательно - ФИО лица и должность, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек.
Параметры.Вставить("КассирИНН" , Неопределено); // Строка,Необязательно - Идентификационный номер налогоплательщика кассира, при наличии.
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров выполнения операции.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыВыполненияОперации() Экспорт;
ПараметрыОперации = Новый Структура();
ПараметрыОперации.Вставить("Кассир" , НСтр("ru='Администратор'")); // ФИО лица и должность, осуществившего операцию.
ПараметрыОперации.Вставить("КассирИНН" , Неопределено); // Идентификационный номер налогоплательщика кассира, при наличии.
Возврат ПараметрыОперации;
КонецФункции
// Заполняет структуру данных агента.
//
// Возвращаемое значение:
// Структура:
// * ОператорПоПриемуПлатежей - Структура:
// ** Телефон - Неопределено -
// * ОператорПеревода - Структура:
// ** Телефон - Строка -
// ** Наименование - Строка -
// ** Адрес - Строка -
// ** ИНН - Строка -
// * ПлатежныйАгент - Структура:
// ** Операция - Строка -
// ** Телефон - Строка -
//
Функция ПараметрыДанныеАгента() Экспорт
// ФФД - Значения реквизита «данные агента» (тег 1223) указаны в таблице 22.
Параметры = Новый Структура();
ПлатежныйАгент = Новый Структура();
ПлатежныйАгент.Вставить("Операция", Неопределено); // Строка - Операция платежного агента.
ПлатежныйАгент.Вставить("Телефон" , Неопределено); // Строка - Телефон платежного агента. В формате +{Ц}.
Параметры.Вставить("ПлатежныйАгент", ПлатежныйАгент);
ОператорПеревода = Новый Структура();
ОператорПеревода.Вставить("Телефон" , Неопределено); // Строка - Телефон оператора перевода. В формате +{Ц}.
ОператорПеревода.Вставить("Наименование", Неопределено); // Строка - Наименование оператора перевода.
ОператорПеревода.Вставить("Адрес" , Неопределено); // Строка - Адрес оператора перевода.
ОператорПеревода.Вставить("ИНН" , Неопределено); // Строка - ИНН оператора перевода.
Параметры.Вставить("ОператорПеревода", ОператорПеревода);
ОператорПоПриемуПлатежей = Новый Структура();
ОператорПоПриемуПлатежей.Вставить("Телефон", Неопределено); // Строка - Телефон оператора по приему платежей. В формате +{Ц}.
Параметры.Вставить("ОператорПоПриемуПлатежей", ОператорПоПриемуПлатежей);
Возврат Параметры;
КонецФункции
// Заполняет структуру данных поставщика.
//
// Возвращаемое значение:
// Структура - Описание:
// * ИНН - Строка
// * Наименование - Строка
// * Телефон - Строка
//
Функция ПараметрыДанныеПоставщика() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("Телефон"); // Строка - Телефон поставщика. В формате +{Ц}.
Параметры.Вставить("Наименование"); // Строка - Наименование поставщика.
Параметры.Вставить("ИНН"); // Строка - ИНН поставщика.
Возврат Параметры;
КонецФункции
// Заполняет структуру данных кода товарной номенклатуры.
//
// Возвращаемое значение:
// Структура - Описание:
// * ЗначениеКодаТовара - Строка
// * ТипКодаТовара - Строка
// * РеквизитКодаТовара - Строка
// * СерийныйНомер - Строка
// * ГлобальныйИдентификаторТорговойЕдиницы - Строка
// * КонтрольныйИдентификационныйЗнак - СТрока
// * ТипМаркировки - ПеречислениеСсылка.ТипыМаркировкиККТ -
//
Функция ПараметрыДанныеКодаТоварнойНоменклатуры() Экспорт
Параметры = Новый Структура();
// Формирование тэга 1162, для ФФД 1.05, 1.1
Параметры.Вставить("ТипМаркировки"); // Перечисление.ТипыМаркировкиККТ, Необязательно - Тип маркировки.
// Ранее в рамках пилотных проектов (в 2017-2019) по маркировке и регистрации выбытия контрольных марок(КМ)
// через ККТ для каждого вида маркировки ФНС предоставляла отдельный алгоритм для кодирования тега 1162
// содержащий информацию о КМ. Именно для этого было создано данное перечисление - ТипыМаркировкиККТ.
// Но в соответствии с приказом ФНС от 29.08.2019 № ММВ-7-20/434@ "О внесении изменений в приложение №2
// к приказу Федеральной налоговой службы от 21.03.2017 № ММВ-7-20/229@“ зарегистрированному 25.12.2019 №56978
// и вступившему в силу с 01.03.2020г. алгоритм кодирования тега 1162 стал единым для всех типов маркировки.
// Таким образом, данное перечисление и атрибут устарели. Оставлено для совместимости.
Параметры.Вставить("КонтрольныйИдентификационныйЗнак"); // Строка,Необязательно - Контрольный идентификационный знак (КиЗ).
Параметры.Вставить("ГлобальныйИдентификаторТорговойЕдиницы"); // Строка,Необязательно - Глобальный идентификатор торговой единицы (GTIN).
Параметры.Вставить("СерийныйНомер"); // Строка,Необязательно - Серийный номер.
Параметры.Вставить("РеквизитКодаТовара"); // Строка,Необязательно -Значение реквизита кода товара (Значение тэга 1162). Кодируется текстом в кодировке Base64.
// Формирование тэга 1163, для ФФД 1.2
Параметры.Вставить("ТипКодаТовара"); // Строка,Необязательно - Таблица 118
Параметры.Вставить("ЗначениеКодаТовара"); // Строка,Необязательно - Значение кода товара в Base64 (Таблица 118)
Возврат Параметры;
КонецФункции
// Заполняет структуру данных дробное количество для товарной номенклатуры.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыДробноеКоличество() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("Числитель" , Неопределено); // Число,Обязательно - Числитель дробного количества - количество реализуемых товаров из упаковке.
Параметры.Вставить("Знаменатель" , Неопределено); // Число,Обязательно - Знаменатель дробного количества - общее количество товаров в потребительской упаковке.
Возврат Параметры;
КонецФункции
// Заполняет структуру дополнительного реквизита пользователя.
//
// Возвращаемое значение:
// Структура:
// * Наименование - Строка
// * Значение - Строка
//
Функция ПараметрыДополнительногоРеквизитаПользователя() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("Наименование", ""); // Строка,Необязательно - Наименование дополнительного реквизита пользователя (Тег 1085).
Параметры.Вставить("Значение", ""); // Строка,Необязательно - Значение дополнительного реквизита пользователя (Тег 1086).
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров QR кода.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыQRКода() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("ЗначениеКода"); // Строка,Необязательно - Значения QR кода.
Параметры.Вставить("ТекстПользователя", НСтр("ru='Сохраните чек для возврата'")); // Строка,Необязательно - Текст выводимый пользователю.
Возврат Параметры;
КонецФункции
// Заполняет структуру операционного реквизит чека.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыОперационныйРеквизит() Экспорт
// Вложенные тэги 1270
Параметры = Новый Структура();
Параметры.Вставить("ДатаВремяОперации"); // Дата,Необязательно - Тэг 1273 - Дата, время операции
Параметры.Вставить("ИдентификаторОперации"); // Целое,Необязательно - Тэг 1271 - Идентификатор операции.
Параметры.Вставить("ДанныеОперации"); // Строка[64],Необязательно - Тэг 1272 - Данные операции.
Возврат Параметры;
КонецФункции
// Заполняет структуру отраслевого реквизит чека.
// 1260 - отраслевой реквизит предмета расчета.
// 1261 - отраслевой реквизит чека.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыОтраслевойРеквизит() Экспорт
// Вложенные тэги 1260 & 1261
Параметры = Новый Структура();
// Значения реквизита "идентификатор ФОИВ" (тег 1262) приведены в таблице 149.
Параметры.Вставить("ИдентификаторФОИВ"); // Строка[3],Необязательно - Тэг 1262 - Идентификатор ФОИВ.
// Дата нормативного акта федерального органа исполнительной власти, регламентирующего порядок
// заполнения реквизита "значение отраслевого реквизита" (тег 1265)
Параметры.Вставить("ДатаДокументаОснования"); // Дата,Необязательно - Тэг 1263 - Дата документа основания
// Номер нормативного акта федерального органа исполнительной власти, регламентирующего порядок
// заполнения реквизита "значение отраслевого реквизита" (тег 1265)
Параметры.Вставить("НомерДокументаОснования"); // Строка[64],Необязательно - Тэг 1264 - Номер документа основания.
// Состав значений, определенных нормативного актом федерального органа исполнительной власти
Параметры.Вставить("ЗначениеРеквизита"); // Строка[256],Необязательно - Тэг 1265 - Номер документа основания.
Возврат Параметры;
КонецФункции
// Заполняет структуру сведений о покупателей.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыСведенияОПокупателе() Экспорт
// Вложенные тэги 1256 - Сведения о покупателе (клиенте).
Параметры = Новый Структура();
// Реквизиты начиная с ФФД 1.1 (Введены приказом от 09.04.2018 N ММВ-7-20/207@)
// Наименование организации или фамилия, имя, отчество (при наличии)
Параметры.Вставить("Покупатель"); // Строка,Необязательно - Тэг 1227 - Получатель (покупатель)
Параметры.Вставить("ПокупательИНН"); // Строка,Необязательно - Тэг 1228 - ИНН покупателя (клиента)
Параметры.Вставить("ПокупательАдрес"); // Строка,Необязательно - Тэг 1254 - Адрес покупателя (клиента)
Возврат Параметры;
КонецФункции
// Заполняет структуру персональные данные покупателя.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыПерсональныеДанныеПокупателя() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("ИНН"); // Строка,Необязательно - ИНН покупателя (клиента)
Параметры.Вставить("ДатаРождения"); // Дата,Необязательно - Дата рождения покупателя (клиента)
Параметры.Вставить("Гражданство"); // Строка,Необязательно - Гражданство покупателя (клиента)
Параметры.Вставить("ВидДокумента"); // Перечисление,Необязательно - Код вида документа, удостоверяющего личность
Параметры.Вставить("ДанныеДокумента"); // Строка,Необязательно - Данные документа, удостоверяющего личность
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров операции фискализации чека.
//
// Возвращаемое значение:
// Структура - Описание:
// * ДанныеКоррекции - Структура -:
// ** НомерПредписания - Число
// ** ДатаКоррекции - Дата
// ** ОписаниеКоррекции - Строка
// ** ТипКоррекции - Число -
// * НеприменениеККТ - Булево -
// * КорректируемыйДокумент - Произвольный
// * ЕстьПерсональныеДанные - Булево -
// * ИндивидуальныйРежимПодготовкиДанныхКПередачеВОФД - Булево -
// * ДопустимоеРасхождениеФорматноЛогическогоКонтроля - Число -
// * СпособФорматноЛогическогоКонтроля - Неопределено -
// * СформироватьЧекКоррекции - Булево -
// * ДополнительныйРеквизитПользователя - Структура:
// ** Значение - Произвольный
// ** Наименование - Строка
// * ДополнительныйРеквизит - Неопределено -
// * НефискальныеДокументы - Массив Из Строка.
// * КассаККМ - Произвольный -
// * ШаблонЧека - Произвольный
// * ТаблицаОплат - Массив из из см.ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыФискальнойСтрокиЧека.
// * ПозицииЧека - Массив из см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыФискальнойСтрокиЧека.
// * СведенияОБезналичнойОплате - Массив из см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыСведенияОБезналичнойОплате.
// * КопийЧека - Число -
// * ТекстПодвала - Строка -
// * ТекстШапки - Строка -
// * ДатаВремя - Дата -
// * НомерСмены - Число
// * НомерЧека - Строка
// * НомерКассы - Строка
// * НаименованиеМагазина - Строка
// * АдресМагазина - Строка
// * ОрганизацияКПП - Строка
// * ОрганизацияИНН - Строка
// * ОрганизацияНазвание - Строка
// * СерийныйНомер - Строка
// * ПолучательИНН - Строка
// * Получатель - Строка
// * ДанныеПоставщика - Структура:
// ** ИНН - Строка
// ** Наименование - Строка
// ** Телефон - Строка
// * ДанныеАгента - Структура:
// ** ОператорПоПриемуПлатежей - Структура:
// *** Телефон - Неопределено -
// ** ОператорПеревода - Структура:
// *** Телефон - Строка -
// *** Наименование - Строка -
// *** Адрес - Строка -
// *** ИНН - Строка -
// ** ПлатежныйАгент - Структура:
// *** Операция - Строка -
// *** Телефон - Строка -
// * ПризнакАгента - Неопределено -
// * ПокупательНомер - Строка
// * ОтправительEmail - Строка
// * ПокупательEmail - Строка
// * МестоРасчетов - Строка
// * АдресРасчетов - Строка
// * СистемаНалогообложения - ПеречислениеСсылка.ТипыСистемНалогообложенияККТ -
// * Отправляет1СEmail - Булево -
// * Отправляет1СSMS - Булево -
// * ТипРасчета - ПеречислениеСсылка.ТипыРасчетаДенежнымиСредствами -
// * Электронно - Булево -
// * ТорговыйОбъект - Неопределено -
// * Организация - Неопределено -
// * ИдентификаторФискальнойЗаписи - Неопределено -
// * ДокументОснование - Неопределено -
// * КассирИНН - Неопределено -
// * Кассир - Строка -
// * ТекстКороткогоСлипЧека - Строка - текст короткого слип-чека
// * АвтономнаяККТ - Булево - признак не использования ККТ для пробития чека
//
Функция ПараметрыОперацииФискализацииЧека() Экспорт;
ПараметрыЧека = ПараметрыВыполненияОперации();
// Общие реквизиты для всех типов оборудования.
ПараметрыЧека.Вставить("ДокументОснование" , Неопределено); // Ссылка,Обязательно. Документ по которому пробивается чек.
ПараметрыЧека.Вставить("ИдентификаторФискальнойЗаписи", Неопределено); // Строка,Необязательно. Идентификатор фискальной записи.
ПараметрыЧека.Вставить("Организация" , Неопределено); // Ссылка,Обязательно. Организация по которому пробивается чек.
ПараметрыЧека.Вставить("ТорговыйОбъект" , Неопределено); // Ссылка,Необязательно. Объект по которому пробивается чек.
ПараметрыЧека.Вставить("Электронно" , Ложь); // Булево,Обязательно - Чек будет предоставлен в электронной форме, без печати. Ложь-Значение по умолчанию.
ПараметрыЧека.Вставить("ТипРасчета" , ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств")); // Обязательно.
ПараметрыЧека.Вставить("Отправляет1СSMS" , Ложь); // Булево,Обязательно - SMS отправляет средствами 1C. Ложь-Значение по умолчанию.
ПараметрыЧека.Вставить("Отправляет1СEmail" , Ложь); // Булево,Обязательно - Email отправляет средствами 1C. Ложь-Значение по умолчанию.
// Системы налогообложения - "Перечисление.ТипыСистемНалогообложенияККТ"
ПараметрыЧека.Вставить("СистемаНалогообложения", ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ОСН")); // Обязательно. Заполняется значением по умолчанию.
ПараметрыЧека.Вставить("АдресРасчетов" ); // Строка,Необязательно - Адрес расчетов (Тег 1009).
ПараметрыЧека.Вставить("МестоРасчетов" ); // Строка,Необязательно - Место расчетов (Тег 1187).
ПараметрыЧека.Вставить("НомерАвтомата" ); // Строка,Необязательно - Номер автомата (Тег 1036).
ПараметрыЧека.Вставить("ОтправительEmail" ); // Строка,Необязательно - Адрес электронной почты отправителя чека (Тег 1117).
ПараметрыЧека.Вставить("ПокупательEmail" ); // Строка,Необязательно - Адрес электронной почты покупателя.
ПараметрыЧека.Вставить("ПокупательНомер" ); // Строка,Необязательно - Телефонный номер покупателя. В формате +{Ц}.
// Признак агента - "Перечисление.ПризнакиАгента", (ФФД, Тег 1057, Расшифровка - таблица 10)
ПараметрыЧека.Вставить("ПризнакАгента" , Неопределено); // Перечисление - Признак агента (Тег 1057).
ПараметрыЧека.Вставить("ДанныеАгента" , ПараметрыДанныеАгента()); // Структура,Заполнение необязательно - Данные агента.
ПараметрыЧека.Вставить("ДанныеПоставщика" , ПараметрыДанныеПоставщика()); // Структура,Заполнение необязательно - Данные поставщика.
// Реквизиты начиная с ФФД 1.1 (Введены приказом от 09.04.2018 N ММВ-7-20/207@)
ПараметрыЧека.Вставить("Получатель" ); // Строка,Необязательно - Тэг 1227 - Получатель (покупатель)
ПараметрыЧека.Вставить("ПолучательИНН" ); // Строка,Необязательно - Тэг 1228 - ИНН получателя (ИНН покупателя)
// Реквизиты начиная с ФФД 1.2 (Введены приказом от 14.09.2020 N ЕД-7-20/662@)
ПараметрыЧека.Вставить("СубъектПерсональныхДанных"); // Необязательно - Физическое лицо, которое прямо или косвенно определено или определяемо с помощью персональных данных.
ПараметрыЧека.Вставить("ЕстьПерсональныеДанные", Ложь); // Булево,Необязательно - Параметры чека содержат персональные данные.
ПараметрыЧека.Вставить("ТипПерсональныхДанных"); // ПеречислениеСсылка.ТипыПерсональныхДанныеККТ, Необязательно - Тип персональных данных.
ПараметрыЧека.Вставить("СведенияОПокупателе" , ПараметрыСведенияОПокупателе()); // Структура,Заполнение необязательно - Тэг 1256 - Сведения о покупателе (клиенте)
ПараметрыЧека.Вставить("ОперационныйРеквизит", ПараметрыОперационныйРеквизит()); // Структура,Заполнение необязательно - Тэг 1270 -
ПараметрыЧека.Вставить("ОтраслевойРеквизит" , ПараметрыОтраслевойРеквизит()); // Структура,Заполнение необязательно - Тэг 1261 - Отраслевой реквизит чека,
// Параметры необходимые для ФР
ПараметрыЧека.Вставить("СерийныйНомер" ); // Строка,Необязательно - Заводской номер ККМ (совместимость с ФР).
// Параметры необходимые для чека ЕНВД на принтере чеков
ПараметрыЧека.Вставить("ОрганизацияНазвание" ); // Строка,Необязательно - Название организации (Для чека ЕНВД).
ПараметрыЧека.Вставить("ОрганизацияИНН" ); // Строка,Необязательно - ИНН организации (Для чека ЕНВД).
ПараметрыЧека.Вставить("ОрганизацияКПП" ); // Строка,Необязательно - КПП организации (Для чека ЕНВД).
ПараметрыЧека.Вставить("АдресМагазина" ); // Строка,Необязательно - Адрес магазина (Для чека ЕНВД).
ПараметрыЧека.Вставить("НаименованиеМагазина"); // Строка,Необязательно - Наименование магазина (Для чека ЕНВД).
ПараметрыЧека.Вставить("НомерКассы" ); // Строка,Необязательно - Номер кассы (Для чека ЕНВД).
ПараметрыЧека.Вставить("НомерЧека" ); // Число,Необязательно - Номер чека (Для чека ЕНВД).
ПараметрыЧека.Вставить("НомерСмены" ); // Число,Необязательно - Номер смены (Для чека ЕНВД).
ПараметрыЧека.Вставить("ДатаВремя", ОбщегоНазначенияБПОКлиентСервер.ДатаСеанса()); // ДатаВремя, Необязательно - Дата время в чеке (Для чека ЕНВД).
// АПК: 374-выкл сообщение в чеках
ПараметрыЧека.Вставить("ТекстШапки" , НСтр("ru='ДОБРО ПОЖАЛОВАТЬ!'")); // Строка - заполняется значением по умолчанию.
ПараметрыЧека.Вставить("ТекстПодвала" , НСтр("ru='СПАСИБО ЗА ПОКУПКУ!'")); // Строка - заполняется значением по умолчанию.
// АПК: 374-вкл
ПараметрыЧека.Вставить("КопийЧека" , 1); // Число,Необязательно - Сколько печатать копий чеков ЕНВД на принтере чеков.
// Позиции чека для фискализации.
ПараметрыЧека.Вставить("ПозицииЧека" , Новый Массив()); // Массив элементов "Структура". Обязательно.
// Таблица оплаты чека
ПараметрыЧека.Вставить("ТаблицаОплат" , Новый Массив()); // Массив элементов "Структура". Обязательно.
// Пример заполнения строки оплаты:
// СтрокаОплаты = ПараметрыСтрокиОплаты();
// СтрокаОплаты.ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Наличные"); // Наличные
// СтрокаОплаты.Сумма = СуммаВидаОплаты;
// ПараметрыЧека.ТаблицаОплат.Добавить(СтрокаОплаты);
ПараметрыЧека.Вставить("СведенияОБезналичнойОплате" , Новый Массив()); // Массив элементов "Структура". Обязательно.
// Пример заполнения строки оплаты:
// СтрокаОплаты = ПараметрыСведенияОБезналичнойОплате();
// СтрокаОплаты.Сумма = СуммаВидаОплаты;
// ПараметрыЧека.СведенияОБезналичнойОплате.Добавить(СтрокаОплаты);
// Параметры для печати чека по шаблону.
ПараметрыЧека.Вставить("ШаблонЧека" ); // Ссылка,Необязательно - Пользовательский шаблон для формирования чека.
ПараметрыЧека.Вставить("КассаККМ" ); // Ссылка,Необязательно - Касса ККМ.
ПараметрыЧека.Вставить("НефискальныеДокументы" , Новый Массив()); // Массив нефискальных документов. Необязательно.
ПараметрыЧека.Вставить("УстройствоПечати"); // Ссылка, Необязательно - Устройство печати документов. Необязательно.
ПараметрыЧека.Вставить("ПакетДокументов", Новый Соответствие()); // Соответствие дополнительных документов и устройств по чеку для печати. Необязательно.
// Строка,Необязательно - Дополнительный реквизит чека (Тег 1192).
ПараметрыЧека.Вставить("ДополнительныйРеквизит" , Неопределено);
// Структура,Заполнение необязательно - дополнительный реквизит пользователя (Тег 1084).
ПараметрыЧека.Вставить("ДополнительныйРеквизитПользователя", ПараметрыДополнительногоРеквизитаПользователя());
ПараметрыЧека.Вставить("СформироватьЧекКоррекции", Ложь); // Булево,Необязательно - сформировать чек коррекции, только для ФФД 1.1.
ПараметрыЧека.Вставить("СформироватьЧекКоррекцииСторно", Истина); // Булево,Необязательно - Сформировать чеки коррекции сторно по сценариям ФНС.
// Форматно-логический контроль - "ПеречислениеСсылка.СпособыФорматноЛогическогоКонтроля"
ПараметрыЧека.Вставить("СпособФорматноЛогическогоКонтроля", Неопределено); // Перечисление,Необязательно - Способ форматно-логического контроля.
ПараметрыЧека.Вставить("ДопустимоеРасхождениеФорматноЛогическогоКонтроля", 0.01); // Число,Необязательно - устанавливается значение по умолчанию.
ПараметрыЧека.Вставить("ИндивидуальныйРежимПодготовкиДанныхКПередачеВОФД", Ложь); // Булево,Необязательно - устанавливается значение по умолчанию.
ПараметрыЧека.Вставить("ЕдиныйЧек", Ложь); // Булево,Необязательно - Одна фискальная операция привязана к нескольким документам.
// Системе быстрых платежей и сертификаты ФСС
ПараметрыЧека.Вставить("ТипПлатежнойСистемы"); // ПеречислениеСсылка.ТипыПлатежнойСистемыККТ, Необязательно - Тип платежной системы.
ПараметрыЧека.Вставить("ИдентификаторОплатыПлатежнойСистемы"); // Строка,Необязательно - Идентификатор оплаты платежных системы.
ПараметрыЧека.Вставить("QRКод", ПараметрыQRКода()); // Структура,Заполнение необязательно - параметры QR кода в теле чека.
ПараметрыЧека.Вставить("ДетализацияОплаты", Новый Массив()); // Массив элементов "Структура" - ПараметрыДетализацииСтрокиОплаты()
// Короткий слип-чек
ПараметрыЧека.Вставить("ТекстКороткогоСлипЧека", ""); // Строка - текст короткого слип-чека
// Автономные ККТ
ПараметрыЧека.Вставить("АвтономнаяККТ", Ложь);
ПараметрыЧека.Вставить("ОблачнаяККТ", Ложь);
// Признак сворачивание одинаковых строк на печатной форме документа.
ПараметрыЧека.Вставить("СворачиватьОдинаковыеСтрокПриПечати", Ложь);
// Признаки ЕГАИС
ПараметрыЧека.Вставить("ЕстьАлкогольнаяПродукцияЕГАИС", Ложь);
ПараметрыЧека.Вставить("ЕстьРазливнаяПродукцияЕГАИС", Ложь);
Возврат ПараметрыЧека;
КонецФункции
// Заполняет структуру параметров фискальной строки для фискализации чека.
//
// Возвращаемое значение:
// Структура:
// * Штрихкод - Строка
// * НомерСекции - Число -
// * ДополнительныйРеквизит - Произвольный
// * СуммаАкциза - Число
// * НомерТаможеннойДекларации - Строка
// * КодСтраныПроисхожденияТовара - Строка
// * ДанныеКодаТоварнойНоменклатуры - Структура:
// ** СерийныйНомер - Строка
// ** ГлобальныйИдентификаторТорговойЕдиницы - Строка
// ** КонтрольныйИдентификационныйЗнак - Строка
// ** ТипМаркировки - Строка
// * ЕдиницаИзмерения - Произвольный
// * ДанныеПоставщика - Структура:
// ** ИНН - Строка
// ** Наименование - Строка
// ** Телефон - Строка
// * ДанныеАгента - см. ПараметрыДанныеАгента
// * ПризнакАгентаПоПредметуРасчета - Число
// * ПризнакПредметаРасчета - Неопределено -
// * ПризнакСпособаРасчета - Неопределено -
// * СуммаНДС - Неопределено -
// * СтавкаНДС - Неопределено -
// * СуммаСкидок - Число
// * Сумма - Число -
// * ЦенаСоСкидками - Число -
// * Цена - Число -
// * Количество - Число -
// * Наименование - Строка
// * НомерСтрокиТовара - Число
// * ФискальнаяСтрока - Строка.
//
Функция ПараметрыФискальнойСтрокиЧека() Экспорт;
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("ФискальнаяСтрока"); // Строка,Обязательно - Тип строки. Исходящий служебный параметр.
ПараметрыСтроки.Вставить("НомерСтрокиТовара"); // Число,Обязательно - Дополнительный параметр для обработки строк чека для форматно-логического контроля.
// Обязательные реквизиты
ПараметрыСтроки.Вставить("Наименование"); // Строка,Обязательно - Наименование предмета расчета
ПараметрыСтроки.Вставить("Количество" , 0); // Число,Обязательно - Количество предмета расчета
ПараметрыСтроки.Вставить("Цена" , 0); // Число,Обязательно - Цена без учета скидок и наценок (Необходимо для ФР и ФФД 1.0)
ПараметрыСтроки.Вставить("ЦенаСоСкидками" , 0); // Число,Обязательно - Цена с учета скидок и наценок (Необходимо начиная с ФФД 1.05 и выше)
ПараметрыСтроки.Вставить("Сумма" , 0); // Число,Обязательно - Стоимость предмета расчета с учетом скидок и наценок
ПараметрыСтроки.Вставить("СуммаСкидок"); // Число,Необязательно - Сумма скидок и наценок, не входит в ФФД.
ПараметрыСтроки.Вставить("СтавкаНДС" , Неопределено); // Число,Обязательно - Ставка НДС (Значения: Неопределено-БезНДС, 0, 5, 7, 10, 20, 18, 105, 107, 110, 118, 120)
ПараметрыСтроки.Вставить("СуммаНДС" , Неопределено); // Число,Обязательно - Сумма НДС
// Реквизиты начиная с ФФД 1.05
// Перечисление - ПризнакиСпособаРасчета - (ФФД, Тег 1214, Расшифровка - таблица 28)
ПараметрыСтроки.Вставить("ПризнакСпособаРасчета", Неопределено); // Признак способа расчета. Обязательно для ФФД 1.05 и выше.
// Реквизиты начиная с ФФД 1.1
// Перечисление - ПризнакиПредметаРасчета - (ФФД, Тег 1030, Расшифровка - таблица 29)
ПараметрыСтроки.Вставить("ПризнакПредметаРасчета", Неопределено); // Признак предмета расчета. Обязательно для ФФД 1.1 и выше.
// Перечисление - ПризнакиАгента - (ФФД, Тег 1222, Расшифровка - таблица 21)
ПараметрыСтроки.Вставить("ПризнакАгентаПоПредметуРасчета"); // Необязательно, Признак агента по предмету расчета, Тег 1222.
ПараметрыСтроки.Вставить("ДанныеАгента" , ПараметрыДанныеАгента()); // Структура - Данные агента, Тег 1223. Заполнение необязательно.
ПараметрыСтроки.Вставить("ДанныеПоставщика" , ПараметрыДанныеПоставщика()); // Структура - Данные агента, Тег 1224. Заполнение необязательно.
ПараметрыСтроки.Вставить("ЕдиницаИзмерения"); // Необязательно, Единица измерения предмета расчета.
ПараметрыСтроки.Вставить("ДанныеКодаТоварнойНоменклатуры", ПараметрыДанныеКодаТоварнойНоменклатуры()); // Коды товарной номенклатуры.
ПараметрыСтроки.Вставить("КодВидаНоменклатурнойКлассификации"); // Строка,Необязательно - Код вида номенклатурной классификации.
// Реквизиты начиная с ФФД 1.1 (Введены приказом от 9 апреля 2018 г. N ММВ-7-20/207@)
ПараметрыСтроки.Вставить("КодСтраныПроисхожденияТовара"); // Строка,Необязательно - Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира.
ПараметрыСтроки.Вставить("НомерТаможеннойДекларации"); // Строка,Необязательно - Регистрационный номер таможенной декларации.
ПараметрыСтроки.Вставить("СуммаАкциза"); // Число,Необязательно - Сумма акциза, включенная в стоимость предмета расчета.
ПараметрыСтроки.Вставить("ДополнительныйРеквизит"); // Строка,Необязательно - Дополнительный реквизит предмета расчета, Тег 1191.
// Реквизиты начиная с ФФД 1.2
// Дробное количество, рекомендации ЦРПТ "ВЫВОД ТОВАРА ИЗ ОБОРОТА ПРИ РЕАЛИЗАЦИИ КОНЕЧНЫМ ПОТРЕБИТЕЛЯМ (ЧАСТИЧНАЯ ПРОДАЖА)"
// для 1.05 и 1.1 - пишем в 1191, Формирование и передача фискального документа в ГИС МТ
// для 1.2 - пишем в 1291
ПараметрыСтроки.Вставить("ДробноеКоличество", ПараметрыДробноеКоличество());
ПараметрыСтроки.Вставить("КонтрольнаяМарка"); // Строка,Необязательно - Код контрольной марки. Кодируется текстом в кодировке Base64.
ПараметрыСтроки.Вставить("КодЕдиницыИзмерения"); // Строка,Обязательно - Код единицы измерения в соответствии с общероссийским классификатором единиц измерения.
ПараметрыСтроки.Вставить("ОтраслевойРеквизит", ПараметрыОтраслевойРеквизит()); // Структура,Заполнение необязательно - Тэг 1260 - Отраслевой реквизит предмета расчета.
// Дополнительные реквизиты не входящие в ФФД.
ПараметрыСтроки.Вставить("НомерСекции" , 0); // Число,Необязательно - Номер секции ФР (для совместимости), 0-Значение по умолчанию.
ПараметрыСтроки.Вставить("Штрихкод"); // Строка,Необязательно - Штрихкод
ПараметрыСтроки.Вставить("ШтрихкодBase64"); // Строка,Необязательно - Штрихкод, Кодируется текстом в кодировке Base64.
// Продажа товаров при оказании услуг общественного питания (HORECA)
ПараметрыСтроки.Вставить("ОбщественноеПитание", Ложь); // Булево,Необязательно - Признак товара, что он реализуется в общественном питании
// Продажа товаров в объемно-сортовом учете.
ПараметрыСтроки.Вставить("ОбъемноСортовойУчет", Ложь); // Булево,Необязательно - Признак товара, что он подлежит объемно-сортовому учету.
ПараметрыСтроки.Вставить("КоличествоВесовогоТовара", Неопределено); // Число,Необязательно - Количество весового товара при объемно-сортовом учете.
// Дата производства товара для формирования отраслевых тегов при продаже молочной продукции с нечитаемыми DataMatrix.
ПараметрыСтроки.Вставить("ДатаПроизводства"); // Дата,Необязательно - Дата производства товара.
// Продажа ветеринарного лекарственного препарата
ПараметрыСтроки.Вставить("ВетеринарныйПрепарат", Ложь); // Булево,Необязательно - Признак товара, ветеринарный лекарственный препарат.
ПараметрыСтроки.Вставить("ВетеринарноеТребование", Ложь); // Булево,Необязательно - Признак товара, что используется ветеринарное требование.
ПараметрыСтроки.Вставить("РецептНомер"); // Строка,Необязательно - Номер рецепта\требования
ПараметрыСтроки.Вставить("РецептДата"); // Дата,Необязательно - Дата рецепта\требования.
// Разрешительная система проверки кода
ПараметрыСтроки.Вставить("ЗапросПроверкиКода", ПараметрыЗапросПроверкиКода()); // Данные запроса проверки кода для разрешительной системы
// Устарело. Для совместимости.
ПараметрыСтроки.Вставить("NTIN"); // Строка,Необязательно - NTIN идентификаторы товара
Возврат ПараметрыСтроки;
КонецФункции
// Заполняет структуру параметров текстовой строки для фискализации чека.
//
// Параметры:
// Текст - Строка - Текстовая строка
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыТекстовойСтрокиЧека(Текст = Неопределено) Экспорт;
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("ТекстоваяСтрока"); // Тип строки. Исходящий служебный параметр.
ПараметрыСтроки.Вставить("Текст", Текст); // Строка,Обязательно - Текстовая строка
ПараметрыСтроки.Вставить("ПереносСтроки", Ложь); // Булево,Необязательно - Перенос строки, устанавливается значение по умолчанию.
ПараметрыСтроки.Вставить("Выравнивание" , "Лево"); // Строка,Необязательно - Выравнивание текста, Значения: "Лево", "Право", "Центр".
Возврат ПараметрыСтроки;
КонецФункции
// Заполняет структуру параметров штрихкода в строке для фискализации чека.
//
// Параметры:
// ТипШтрихкодаЗнач - Строка - Тип штрихкода.
// ШтрихКодЗнач - Строка - Значение штрихкода.
// ШтрихКодBase64 - Строка - Значение штрихкода в Base64.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыШтрихкодВСтрокеЧека(ТипШтрихкодаЗнач = Неопределено, ШтрихКодЗнач = Неопределено, ШтрихКодBase64 = Неопределено) Экспорт;
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("ТипШтрихкода", ТипШтрихкодаЗнач); // Строка,Обязательно - Тип штрихкода.
ПараметрыСтроки.Вставить("ШтрихКод" , ШтрихКодЗнач); // Строка,Обязательно - Значение штрихкода.
ПараметрыСтроки.Вставить("ШтрихКодBase64", ШтрихКодBase64); // Строка,Обязательно - Значение штрихкода в Base64.
Возврат ПараметрыСтроки;
КонецФункции
// Заполняет структуру параметров строки оплаты.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыСтрокиОплаты(Сумма = 0) Экспорт
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("ТипОплаты", ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Наличные"));
ПараметрыСтроки.Вставить("Сумма" , Сумма);
Возврат ПараметрыСтроки;
КонецФункции
// Заполняет структуру параметров детализации строки оплаты.
//
// Параметры:
// НаименованиеТипаОплаты - Строка
// Сумма - Число
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыДетализацииСтрокиОплаты(НаименованиеТипаОплаты = Неопределено, Сумма = 0) Экспорт
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("НаименованиеТипаОплаты", НаименованиеТипаОплаты); // Строка,Обязательно Текстовая строка
ПараметрыСтроки.Вставить("Сумма", Сумма);
Возврат ПараметрыСтроки;
КонецФункции
// Заполняет структуру параметров сведений о безналичной оплате.
//
// Параметры:
// Сумма - Число - Cумма оплаты безналичными
// ПризнакСпособаОплаты - Число - Признак способа оплаты безналичными
// Идентификаторы - Строка - Идентификаторы безналичной оплаты
// Дополнительныеедения - Строка - Дополнительные сведения о безналичной оплате
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыСведенияОБезналичнойОплате() Экспорт
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("Сумма", 0); // Число,Обязательно - Cумма оплаты безналичными
ПараметрыСтроки.Вставить("ПризнакСпособаОплаты", 0); // Число,Обязательно - Признак способа оплаты безналичными
ПараметрыСтроки.Вставить("Идентификаторы"); // Строка,Необязательно - Идентификаторы безналичной оплаты
ПараметрыСтроки.Вставить("Дополнительныеедения"); // Строка,Необязательно - Дополнительные сведения о безналичной оплате
Возврат ПараметрыСтроки;
КонецФункции
// Заполняет структуру параметров строки оплаты.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыДанныеКоррекции() Экспорт
ДанныеКоррекции = Новый Структура();
ДанныеКоррекции.Вставить("ТипКоррекции", 0); // Число,Обязательно - Тип коррекции: 0-самостоятельно, 1-по предписанию.
ДанныеКоррекции.Вставить("ОписаниеКоррекции"); // Строка,Необязательно - Описание коррекции.
ДанныеКоррекции.Вставить("ДатаКоррекции"); // ДатаВремя,Обязательно - Дата совершения корректируемого расчета.
ДанныеКоррекции.Вставить("НомерПредписания"); // Строка,Обязательно - Номер предписания налогового органа.
Возврат ДанныеКоррекции;
КонецФункции
// Заполняет структуру параметров выполнения операции чека коррекции.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыОперацииЧекаКоррекции() Экспорт;
ПараметрыЧека = ПараметрыОперацииФискализацииЧека();
ПараметрыЧека.Вставить("КорректируемыйДокумент");
ПараметрыЧека.Вставить("НеприменениеККТ", Ложь);
ПараметрыЧека.Вставить("ДанныеКоррекции", ПараметрыДанныеКоррекции());
Возврат ПараметрыЧека;
КонецФункции
// Заполняет структуру параметров открытия и закрытия смены.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыОткрытияЗакрытияСмены() Экспорт;
ПараметрыОперации = ПараметрыВыполненияОперации();
ПараметрыОперации.Вставить("АдресРасчетов"); // Строка,Необязательно - Адрес расчетов (Тег 1009).
ПараметрыОперации.Вставить("МестоРасчетов"); // Строка,Необязательно - Место расчетов (Тег 1187).
ПараметрыОперации.Вставить("КассаККМ"); //ОпределяемыйТип.КассаБПО,Необязательно - касса ккм для закрытия смены.
ПараметрыОперации.Вставить("Печать", Истина); // Булево,Необязательно - Необходима печать требуемого документа.
ПараметрыОперации.Вставить("АвтономнаяККТ", Ложь); // Булево,Необязательно - Признак автономной ККТ.
ПараметрыОперации.Вставить("ОблачнаяККТ", Ложь); // Булево,Необязательно - Признак облачной ККТ.
Возврат ПараметрыОперации;
КонецФункции
// Заполняет структуру параметров инкассацию на фискальном устройстве.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыИнкассации() Экспорт;
ПараметрыОперации = ПараметрыВыполненияОперации();
ПараметрыОперации.Вставить("ДокументОснование" , Неопределено); // Ссылка,Необязательно. Документ по которому формируется операция.
ПараметрыОперации.Вставить("Организация" , Неопределено); // Ссылка,Необязательно. Организация по которой формируется операция.
ПараметрыОперации.Вставить("ТорговыйОбъект" , Неопределено); // Ссылка,Необязательно. Объект по которому формируется операция.
ПараметрыОперации.Вставить("КассаККМ" , Неопределено); // Ссылка,Необязательно. Объект по которому формируется операция.
ПараметрыОперации.Вставить("ТипИнкассации"); // Число,Обязательно - Тип инкассации (1-внесение, 0-выемка)
ПараметрыОперации.Вставить("Сумма", 0); // Число,Обязательно - Сумма инкассации.
Возврат ПараметрыОперации;
КонецФункции
// Заполняет структуру параметров печати копии чека.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыПечатьКопииЧека() Экспорт;
ПараметрыОперации = ПараметрыВыполненияОперации();
ПараметрыОперации.Вставить("ДокументСсылка" , Неопределено); // Ссылка - Документ по которому пробивается чек.
ПараметрыОперации.Вставить("НомерЧекаККТ" , Неопределено); // Строка - Номер фискального чека.
ПараметрыОперации.Вставить("Аппаратно" , Истина); // Булево - Печать копии чека производиться аппаратно по данным ККТ, иначе по регистру фискальных операций.
ПараметрыОперации.Вставить("НомерЧека" , Неопределено); // Строка - Номер чека для аппаратной печати чека на ККТ.
ПараметрыОперации.Вставить("ФискальныйПризнак"); // Строка - Фискальный признак документа.
Возврат ПараметрыОперации;
КонецФункции
// Заполняет структуру параметров аннулирования чека.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыОперацииАннулированияЧека() Экспорт;
ПараметрыОперации = ПараметрыВыполненияОперации();
ПараметрыОперации.Вставить("ТипРасчета" , ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств"));
ПараметрыОперации.Вставить("Фискальный" , Истина);
Возврат ПараметрыОперации;
КонецФункции
// Заполняет структуру печати QR кода на фискальном устройстве.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыПечатиQRКодаНаФискальномУстройстве() Экспорт;
ПараметрыОперации = Новый Структура();
ПараметрыОперации.Вставить("ТипПлатежнойСистемы"); // ПеречислениеСсылка.ТипыПлатежнойСистемыККТ, Необязательно - Тип платежной системы.
ПараметрыОперации.Вставить("ИдентификаторОплатыПлатежнойСистемы"); // Строка,Необязательно - Идентификатор оплаты платежных системы.
ПараметрыОперации.Вставить("QRКод", ПараметрыQRКода()); // Структура,Заполнение необязательно - параметры QR кода в теле чека.
ПараметрыОперации.QRКод.ТекстПользователя = НСтр("ru='Для совершения платежа отсканируйте QR-код'");
ПараметрыОперации.Вставить("СуммаОперации", Неопределено); // Число,Необязательно - Сумма операции.
Возврат ПараметрыОперации;
КонецФункции
// Параметры счетчиков операций.
//
// Возвращаемое значение:
// Структура - Параметры нормализуемых фискальных данных:
// * КоличествоЧеков - Число -
// * СуммаЧеков - Число -
// * КоличествоЧековКоррекции - Число -
// * СуммаЧековКоррекции - Число -
//
Функция ПараметрыСчетчиковОпераций() Экспорт
СтруктураРезультат = Новый Структура();
СтруктураРезультат.Вставить("КоличествоЧеков");
СтруктураРезультат.Вставить("СуммаЧеков");
СтруктураРезультат.Вставить("КоличествоЧековКоррекции");
СтруктураРезультат.Вставить("СуммаЧековКоррекции");
Возврат СтруктураРезультат;
КонецФункции
// Заполняет структуру параметров нормализуемых фискальных данных.
//
// Возвращаемое значение:
// Структура - Параметры нормализуемых фискальных данных:
// * ДатаСменыККТ - Число -
// * НомерСменыККТ - Число -
// * НомерЧекаККТ - Число -
// * НомерЧекаЗаСмену - Число -
// * СтатусСмены - Неопределено -
// * СчетчикиОперацийПриход - Структура -:
// ** КоличествоЧеков - Число.
// ** СуммаЧеков - Число.
// ** КоличествоЧековКоррекции - Число.
// ** СуммаЧековКоррекции - Число.
// * СчетчикиОперацийВозвратПрихода - Структура -:
// ** КоличествоЧеков - Число.
// ** СуммаЧеков - Число.
// ** КоличествоЧековКоррекции - Число.
// ** СуммаЧековКоррекции - Число.
// * СчетчикиОперацийРасход - Структура -:
// ** КоличествоЧеков - Число.
// ** СуммаЧеков - Число.
// ** КоличествоЧековКоррекции - Число.
// ** СуммаЧековКоррекции - Число.
// * СчетчикиОперацийВозвратРасхода - Структура -:
// ** КоличествоЧеков - Число.
// ** СуммаЧеков - Число.
// ** КоличествоЧековКоррекции - Число.
// ** СуммаЧековКоррекции - Число.
// * КоличествоЧеков - Число.
// * ОстатокНаличных - Число.
// * ПревышеноВремяОжиданияОтветаОФД - Булево -
// * КоличествоНепереданныхФД - Неопределено -
// * НомерПервогоНепереданногоФД - Неопределено -
// * ДатаПервогоНепереданногоФД - Неопределено -
// * НеобходимаСрочнаяЗаменаФН - Булево -
// * ПамятьФНПереполнена - Булево -
// * РесурсФНИсчерпан - Булево -
//
Функция ПараметрыНормализуемыхФискальныхДанных() Экспорт
СтруктураРезультат = Новый Структура();
СтруктураРезультат.Вставить("ДатаСменыККТ" , Неопределено); // Дата открытой/закрытой смены.
СтруктураРезультат.Вставить("НомерСменыККТ" , 0); // Номер открытой/закрытой смены.
СтруктураРезультат.Вставить("НомерЧекаККТ" , 0); // Номер последнего фискального чека.
СтруктураРезультат.Вставить("НомерЧекаЗаСмену" , 0); // Номер последнего чека за смену.
СтруктураРезультат.Вставить("СтатусСмены" , Неопределено); // Состояние смены: 1-Закрыта, 2-Открыта, 3-Истекла.
СтруктураРезультат.Вставить("КоличествоЧеков" , 0); // Количество чеков и чеков коррекции со всеми признаками расчетов
СтруктураРезультат.Вставить("СчетчикиОперацийПриход" , ПараметрыСчетчиковОпераций()); // Счетчики операций по типу "приход".
СтруктураРезультат.Вставить("СчетчикиОперацийВозвратПрихода", ПараметрыСчетчиковОпераций()); // Счетчики операций по типу "возврат прихода".
СтруктураРезультат.Вставить("СчетчикиОперацийРасход" , ПараметрыСчетчиковОпераций()); // Счетчики операций по типу "расход".
СтруктураРезультат.Вставить("СчетчикиОперацийВозвратРасхода", ПараметрыСчетчиковОпераций()); // Счетчики операций по типу "возврат расхода".
СтруктураРезультат.Вставить("ОстатокНаличных"); // Остаток наличных денежных средств в кассе
СтруктураРезультат.Вставить("ПревышеноВремяОжиданияОтветаОФД", Ложь);
СтруктураРезультат.Вставить("КоличествоНепереданныхФД" , Неопределено); // Количество непереданных документов.
СтруктураРезультат.Вставить("НомерПервогоНепереданногоФД", Неопределено); // Номер первого непереданного документ.
СтруктураРезультат.Вставить("ДатаПервогоНепереданногоФД" , Неопределено); // Дата и время первого из непереданных документов.
СтруктураРезультат.Вставить("НеобходимаСрочнаяЗаменаФН" , Ложь); // Признак необходимости срочной замены ФН.
СтруктураРезультат.Вставить("ПамятьФНПереполнена" , Ложь); // Признак переполнения памяти ФН.
СтруктураРезультат.Вставить("РесурсФНИсчерпан" , Ложь); // Признак исчерпания ресурса ФН.
СтруктураРезультат.Вставить("СрокДействияФН" , Неопределено); // Срок действия ФН
Возврат СтруктураРезультат;
КонецФункции
// Заполняет структуру параметров печати текста.
//
// Параметры:
// СтрокиТекста - Строка
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыПечатиТекста(СтрокиТекста = Неопределено) Экспорт
Параметры = Новый Структура();
Параметры.Вставить("СтрокиТекста", СтрокиТекста);
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров запрос КМ.
//
// Возвращаемое значение:
// Структура - параметры запроса КМ:
// * ИдентификаторЗапроса - Строка - Уникальный идентификатор запроса
// * ВыполнятьВалидацию - Булево - выполнять проверку кода маркировки средствами БПО
// * ИгнорироватьРезультатПроверкиКМ - Булево - игнорировать результат проверки КМ и автоматически подтверждать продажу товара.
// * ЗапросПроверкиКМСредствамиККТ - Булево - выполнять запрос проверки КМ на удаленном сервере ОИСМ (ИСМП).
// Обычно этот флаг сбрасывается в Ложь при использовании объемно-сортового учета.
// * ОжидатьПолучениеОтветаОИСМ - Булево - Будет ли ожидаться получение ответа от ОИСМ. (ИСМП)
// * ОтправлятьНаСерверОИСМ - Булево - (устарела) Запрос КМ формируется локально или отправляется на сервер ОИСМ.
// * Количество - Число - Количество
// * ДробноеКоличество - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДробноеКоличество.
// * КонтрольнаяМарка - Строка - Код контрольной марки. Кодируется текстом в кодировке Base64.
// * КодЕдиницыИзмерения - Строка - Код единицы измерения в соответствии с общероссийским классификатором единиц
// измерения. Если значение реквизита заполнено, используется он, иначе МераКоличестваПредметаРасчета.
// * МераКоличестваПредметаРасчета - ПеречислениеСсылка.МераКоличестваПредметаРасчетаККТ - Мера количества предмета расчета.
// Тэг 2108. Значение из таблицы 114 (ФФД).
// * ПланируемыйСтатусТовара - ПеречислениеСсылка.
// * Наименование - Строка - строковое наименование предмета расчета, для отображения в журнате операций провенрки кода маркировки
// * ДополнительныеПараметры - Неопределено, Структура - дополнительные параметры которые могут быть переданы в операцию,
// это значение вернется в оповещении при выполнении операции.
// * ЗапросРазрешенияПродажиКМ - Булево - выполнялся запрос разрешения продажи
// * АдресСервераЗапросаРазрешения - Строка - адрес сервера где выполнялся запрос разрешения
// * ТекстЗапросаРазрешения - Строка - текст запроса для получения разрешения
// * КодОтветаРазрешения - Неопределено, Строка - код ответа который получен от удаленного сервера, если код не задан, а значение флага
// ЗапросРазрешенияПродажиКМ установлено в Истина, тогда код будет содержать текст Таймаут.
// * РезультатЗапросаРазрешения - Строка - JSON - строка, ответ от удаленного сервера ГИС МТ
// * ИдентификаторЗапросаРазрешения - Строка - идентификатор запроса полученного разрешения
// * ВремяЗапросаРазрешения - Неопределено, Строка, Дата - таймштамп полученный с удаленого сервера
// * ПродажаРазрешена - Булево - продажа разрешена, на форме записи будет отображение, что продажа разрешена.
// * ПричинаЗапрета - Строка - Причина запрета продажи, для отображения на форме записи
// * ДополнительныеСведения - Массив из см. ДополнительноеСведениеЗапросаКМ
//
Функция ПараметрыЗапросКМ() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("Результат", Истина);
Параметры.Вставить("ТекстОшибки");
Параметры.Вставить("ИдентификаторЗапроса", "");
Параметры.Вставить("ВыполнятьВалидацию", Ложь);
Параметры.Вставить("ИгнорироватьРезультатПроверкиКМ", Ложь);
Параметры.Вставить("ЗапросПроверкиКМСредствамиККТ", Истина);
Параметры.Вставить("ОжидатьПолучениеОтветаОИСМ", Истина);
Параметры.Вставить("ОтправлятьНаСерверОИСМ", Истина);
Параметры.Вставить("Количество", 0);
Параметры.Вставить("ДробноеКоличество", ПараметрыДробноеКоличество());
Параметры.Вставить("КонтрольнаяМарка", "");
Параметры.Вставить("КодЕдиницыИзмерения", "");
Параметры.Вставить("МераКоличестваПредметаРасчета");
Параметры.Вставить("ПланируемыйСтатусТовара");
Параметры.Вставить("Наименование");
Параметры.Вставить("ДополнительныеПараметры", Неопределено);
// запрос к серверу ГИС МТ
Параметры.Вставить("ЗапросРазрешенияПродажиКМ", Ложь);
Параметры.Вставить("АдресСервераЗапросаРазрешения", "");
Параметры.Вставить("ТекстЗапросаРазрешения", "");
Параметры.Вставить("КодОтветаРазрешения", Неопределено);
Параметры.Вставить("РезультатЗапросаРазрешения", "");
Параметры.Вставить("ИдентификаторЗапросаРазрешения", "");
Параметры.Вставить("ВремяЗапросаРазрешения", Неопределено);
Параметры.Вставить("ПродажаРазрешена", Ложь);
Параметры.Вставить("ПричинаЗапрета", "");
Параметры.Вставить("ДополнительныеСведения", Новый Массив);
Возврат Параметры;
КонецФункции
// Дополнительное сведение запроса КМ для отображения на форме записи операции
//
// Возвращаемое значение:
// Структура:
// * Заголовок - Строка - заголовок элемента
// * Значение - Произвольный
Функция ДополнительноеСведениеЗапросаКМ() Экспорт
Результат = Новый Структура;
Результат.Вставить("Заголовок", "");
Результат.Вставить("Значение");
Возврат Результат;
КонецФункции
// Заполняет структуру параметров запрос КМ.
//
// Возвращаемое значение:
// Структура -Параметры проверки КМ:
// * ОтображатьФорму - Булево - отображать форму с прогрессом выполнения средставми библиотеки
// * ОжидатьПолученияОтветаПроверкиКМ - Булево - (не используется) ожидать завершения запроса от удаленного сервера ОИСМ (ИСМП).
// * ЗапросыКМ - Массив из см. ПараметрыЗапросКМ - массив запросов КМ
//
Функция ПараметрыПроверкиКМ() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("ОтображатьФорму", Ложь);
Параметры.Вставить("ОжидатьПолученияОтветаПроверкиКМ", Ложь); // было ОжидатьПолучениеОтветаОИСМ
Параметры.Вставить("ЗапросыКМ", Новый Массив());
Возврат Параметры;
КонецФункции
// Заполняет структуру параметров запрос КМ.
//
// Возвращаемое значение:
// Структура:
// * ИдентификаторЗапроса - Строка - Уникальный идентификатор запроса
//
Функция ПараметрыПодтверждениеКМ() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("ИдентификаторЗапроса"); // Строка,Обязательно - Уникальный идентификатор запроса
Параметры.Вставить("Выбытие", Истина); // Булево,Обязательно - КМ будет реализована в состав документа о реализации маркированного товара.
Возврат Параметры;
КонецФункции
// Заполняет структуру пакетной операции для добавления ее в очередь чеков
//
// Возвращаемое значение:
// Структура:
// * ТипОперации - ПеречислениеСсылка.ТипыПакетнойОперацииВОчередиЧеков
// * ИдентификаторЭТ - СправочникСсылка.ПодключаемоеОборудование - Эквайринговый терминал для обработки операции
// * СлипЧекВТелеФискального - Булево, Неопределено - Выводить слип-чек в теле фискального, Истина - слип-чек будет выведен
// в теле фискального, Ложь - короткий слип-чек не будет выводиться, Неопределено - короткий слип-чек
// будет выводиться если поддерживает драйвер оборудования.
// * ПараметрыЭквайринговойОперации - Структура:
// ** ВидОплаты - Строка -
// ** ПроцентКомиссии - Число -
// ** РеквизитыКартыQR - Строка -
// * ПараметрыПродажаСВыдачейНаличных - Структура:
// ** СуммаВыдачи - Число - сумма выдачи наличных, в случае операции продажа с выдачей наличных
// ** ДанныеАгента - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеАгента
// ** ДанныеПоставщика - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеПоставщика
// ** ДокументОснованиеВыдачи - ОпределяемыйТип.ОснованиеФискальнойОперацииБПО, Неопределено -
// ** ДокументОснованиеВозврата - ОпределяемыйТип.ОснованиеФискальнойОперацииБПО, Неопределено -
//
Функция ПараметрыПакетнойОперацииВОчередиЧеков() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.НеПакетнаяОперация"));
Параметры.Вставить("ИдентификаторЭТ");
Параметры.Вставить("СлипЧекВТелеФискального");
ПараметрыЭквайринговойОперации = Новый Структура();
ПараметрыЭквайринговойОперации.Вставить("ВидОплаты");
ПараметрыЭквайринговойОперации.Вставить("ПроцентКомиссии");
ПараметрыЭквайринговойОперации.Вставить("РеквизитыКартыQR", "");
Параметры.Вставить("ПараметрыЭквайринговойОперации", ПараметрыЭквайринговойОперации);
ПараметрыПродажаСВыдачейНаличных = Новый Структура();
ПараметрыПродажаСВыдачейНаличных.Вставить("СуммаВыдачи");
ПараметрыПродажаСВыдачейНаличных.Вставить("ДанныеАгента", ПараметрыДанныеАгента());
ПараметрыПродажаСВыдачейНаличных.Вставить("ДанныеПоставщика", ПараметрыДанныеПоставщика());
ПараметрыПродажаСВыдачейНаличных.Вставить("ДокументОснованиеВыдачи", Неопределено);
ПараметрыПродажаСВыдачейНаличных.Вставить("ДокументОснованиеВозврата", Неопределено);
Параметры.Вставить("ПараметрыПродажаСВыдачейНаличных", ПараметрыПродажаСВыдачейНаличных);
Возврат Параметры;
КонецФункции
// Параметры фискальной операции.
//
// Возвращаемое значение:
// Структура - Параметры фискальной операции:
// * Кассир - ОпределяемыйТип.СубъектПерсональныхДанныхБПО
// * ДокументОснование - ОпределяемыйТип.ОснованиеФискальнойОперацииБПО
// * Организация - ОпределяемыйТип.ОрганизацияБПО
// * ТорговыйОбъект - ОпределяемыйТип.ТорговыйОбъектБПО
// * НомерСменыККТ - Число -
// * НомерЧекаККТ - Число -
// * СтатусСмены - Число -
// * ДатаВремя - Дата
// * ПараметрыXML - Строка -
// * РезультатXML - Строка -
// * КассоваяСмена - ДокументСсылка.КассоваяСмена
// * ТестовыеЧеки - Булево
// * ТекстЧека - Строка
// * ДополнительныеПараметры - Произвольный
// * Результат - Булево -
// * ТекстОшибки - Строка
//
Функция ПараметрыФискальнойОперации() Экспорт
ДанныеОперации = Новый Структура();
ДанныеОперации.Вставить("Кассир");
ДанныеОперации.Вставить("ДокументОснование");
ДанныеОперации.Вставить("Организация");
ДанныеОперации.Вставить("ТорговыйОбъект");
ДанныеОперации.Вставить("НомерСменыККТ" , 0);
ДанныеОперации.Вставить("НомерЧекаККТ" , 0);
ДанныеОперации.Вставить("СтатусСмены", 0);
ДанныеОперации.Вставить("ДатаВремя");
ДанныеОперации.Вставить("ПараметрыXML", "");
ДанныеОперации.Вставить("РезультатXML", "");
ДанныеОперации.Вставить("КассоваяСмена");
ДанныеОперации.Вставить("ТестовыеЧеки");
ДанныеОперации.Вставить("ТекстЧека");
ДанныеОперации.Вставить("ДополнительныеПараметры");
ДанныеОперации.Вставить("Результат", Истина);
ДанныеОперации.Вставить("ТекстОшибки");
Возврат ДанныеОперации;
КонецФункции
// Заполняет структуру данных запроса проверки кода для разрешительной системы.
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыЗапросПроверкиКода() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("ИдентификаторЗапроса"); // Строка,Обязательно - Уникальный идентификатор запроса.
Параметры.Вставить("ВременнаяМетка"); // Строка,Обязательно - Дата и время с точностью до миллисекунд формирования запроса в текстовом виде.
// Реализация с 1 сентября 2025 года
Параметры.Вставить("ИдентификаторЭкземпляра"); // Строка,Обязательно - Идентификатор экземпляра ЛМ ЧЗ inst
Параметры.Вставить("ВерсияБазы"); // Строка,Обязательно - Версия базы, на которой осуществлялась проверка ver
Возврат Параметры;
КонецФункции
#КонецОбласти
#Область QRКодЧекаККТ
// Функция возвращает структуру параметров QR кода чека ККТ.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыQRКодаЧекаККТ() Экспорт
ПараметрыШтрихкода = Новый Структура();
ПараметрыШтрихкода.Вставить("ДатаВремяРасчета"); // Дата и время осуществления расчета
ПараметрыШтрихкода.Вставить("СуммаРасчета", 0); // Сумма расчета в рублях и копейках
ПараметрыШтрихкода.Вставить("НомерФискальногоНакопителя"); // Заводской номер фискального накопителя
ПараметрыШтрихкода.Вставить("НомерФискальногоДокумента"); // Порядковый номер фискального документа
ПараметрыШтрихкода.Вставить("ФискальныйПризнак"); // Фискальный признак документ
ПараметрыШтрихкода.Вставить("ПризнакРасчета"); // Признак расчета, перечисление
ПараметрыШтрихкода.Вставить("ПризнакРасчетаКод"); // Признак расчета, код
Возврат ПараметрыШтрихкода;
КонецФункции
// Функция расшифровывает QR код для чека ККТ. Структура описана в документе ФФД в разделе 61.
//
// Параметры:
// ЗначениеQRКода - Строка
// Возвращаемое значение:
// Структура.
//
Функция РасшифроватьQRКодЧекаККТ(ЗначениеQRКода) Экспорт
ДанныеШтрихкода = ПараметрыQRКодаЧекаККТ();
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.РасшифроватьQRКодЧекаККТ(ЗначениеQRКода, ДанныеШтрихкода);
Возврат ДанныеШтрихкода;
КонецФункции
// Функция формирует QR код для чека ККТ. Структура описана в документе ФФД в разделе 61.
//
// Параметры:
// ПараметрыQRКода - Структура
// Возвращаемое значение:
// Строка.
//
Функция СформироватьQRКодЧекаККТараметрыQRКода) Экспорт
ДанныеQRКода = "";
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.СформироватьQRКодЧекаККТараметрыQRКода, ДанныеQRКода);
Возврат ДанныеQRКода;
КонецФункции
#КонецОбласти
#Область КодыОФД
///////////////////////////////////////////////////////////////////////////////
// Система налогообложения
// Получить код системы налогообложения ККТ.
//
// Параметры:
// СистемаНалогообложенияККТ - ПеречислениеСсылка.ТипыСистемНалогообложенияККТ - Система налогообложения ККТ.
//
// Возвращаемое значение:
// Произвольный, Число - Код системы налогообложения ККТ
Функция КодСистемыНалогообложенияККТ(СистемаНалогообложенияККТ) Экспорт
Код = 0;
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.КодСистемыНалогообложенияККТ(Код, СистемаНалогообложенияККТ);
Возврат Код;
КонецФункции
// Получить систему налогообложения ККТ по коду
//
// Параметры:
// КодСистемыНалогообложенияККТ - Число - Код системы налогообложения ККТ.
//
// Возвращаемое значение:
// Произвольный, ПеречислениеСсылка.ТипыСистемНалогообложенияККТ - Система налогообложения ККТПо коду
Функция СистемаНалогообложенияККТПоКоду(КодСистемыНалогообложенияККТ) Экспорт
Значение = 0;
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.СистемаНалогообложенияККТПоКоду(Значение, КодСистемыНалогообложенияККТ);
Возврат Значение;
КонецФункции
// Получить наименование системы налогообложения по коду.
//
// Параметры:
// СистемаНалогообложения - Число, Произвольный - Система налогообложения
// Кратко - Булево - Кратко
//
// Возвращаемое значение:
// Строка, Произвольный - Наименование системы налогообложения
Функция НаименованиеСистемыНалогообложения(СистемаНалогообложения, Кратко = Ложь) Экспорт;
Наименование = 0;
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.НаименованиеСистемыНалогообложения(Наименование, СистемаНалогообложения, Кратко);
Возврат Наименование;
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// Коды видов документов
// Возвращает код вида документа удостоверяющего личность ККТ.
//
// Параметры:
// ВидДокументаУдостоверяющегоЛичность - ПеречислениеСсылка - Вид документа удостоверяющего личность
//
// Возвращаемое значение:
// Произвольный, Число - Код вид документа удостоверяющего личность
Функция КодВидДокументаУдостоверяющегоЛичность(ВидДокументаУдостоверяющегоЛичность) Экспорт
Код = 0;
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.КодВидДокументаУдостоверяющегоЛичность(Код, ВидДокументаУдостоверяющегоЛичность);
Возврат Код;
КонецФункции
// Возвращает вида документа удостоверяющего личность ККТ по коду.
//
// Параметры:
// КодВидаДокументаУдостоверяющегоЛичность - Число - Код вида документа удостоверяющего личность.
//
// Возвращаемое значение:
// ПеречислениеСсылка, Произвольный - Вид документа удостоверяющего личность по коду
Функция ВидДокументаУдостоверяющегоЛичностьПоКоду(КодВидаДокументаУдостоверяющегоЛичность) Экспорт
Значение = "";
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.ВидДокументаУдостоверяющегоЛичностьПоКоду(Значение, КодВидаДокументаУдостоверяющегоЛичность);
Возврат Значение;
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// Коды расчетов, признаков расчетов и предметов расчетов
// Получить код расчета денежными средствами.
//
// Параметры:
// ТипРасчета - ПеречислениеСсылка.ТипыРасчетаДенежнымиСредствами - Тип расчета.
//
// Возвращаемое значение:
// Произвольный, Число - Код расчета денежными средствами
Функция КодРасчетаДенежнымиСредствами(ТипРасчета) Экспорт
ТипыРасчета = Новый Соответствие();
ТипыРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств") , 1);
ТипыРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств") , 2);
ТипыРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.РасходДенежныхСредств") , 3);
ТипыРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратРасходаДенежныхСредств"), 4);
Возврат ТипыРасчета.Получить(ТипРасчета);
КонецФункции
// Получить наименование кода расчета денежными средствами по коду.
//
// Параметры:
// КодРасчета - ПеречислениеСсылка.ТипыРасчетаДенежнымиСредствами - Тип расчета.
//
// Возвращаемое значение:
// Строка - Наименование кода расчета денежными средствами
Функция НаименованиеКодаРасчетаДенежнымиСредствами(КодРасчета) Экспорт
ТипыРасчета = Новый Соответствие();
ТипыРасчета.Вставить(1, НСтр("ru='ПРИХОД'")); // Чек продажи
ТипыРасчета.Вставить(2, НСтр("ru='ВОЗВРАТ ПРИХОДА'")); // Чек возврата продажи
ТипыРасчета.Вставить(3, НСтр("ru='РАСХОД'")); // Чек покупки
ТипыРасчета.Вставить(4, НСтр("ru='ВОЗВРАТ РАСХОДА'")); // Чек возврата покупки
Возврат ТипыРасчета.Получить(КодРасчета);
КонецФункции
// Получить типа расчета денежными средствами по коду.
//
// Параметры:
// КодПризнакаРасчета - Число - Код признака расчета.
//
// Возвращаемое значение:
// ПеречислениеСсылка.ТипыРасчетаДенежнымиСредствами, Произвольный - Расчет денежными средствами по коду
Функция РасчетДенежнымиСредствамиПоКоду(КодПризнакаРасчета) Экспорт
ТипыРасчета = Новый Соответствие();
ТипыРасчета.Вставить(1, ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств"));
ТипыРасчета.Вставить(2, ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств"));
ТипыРасчета.Вставить(3, ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.РасходДенежныхСредств"));
ТипыРасчета.Вставить(4, ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратРасходаДенежныхСредств"));
Возврат ТипыРасчета.Получить(КодПризнакаРасчета);
КонецФункции
// Получить код признака способа расчета.
//
// Параметры:
// ПризнакСпособаРасчета - ПеречислениеСсылка.ПризнакиСпособаРасчета - Признак способа расчета.
//
// Возвращаемое значение:
// Произвольный, Число - Код признака способа расчета
Функция КодПризнакаСпособаРасчета(ПризнакСпособаРасчета) Экспорт
ПризнакиСпособаРасчета = Новый Соответствие();
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПредоплатаПолная") , 1);
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПредоплатаЧастичная") , 2);
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.Аванс") , 3);
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаСПолнойОплатой") , 4);
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаСЧастичнойОплатой"), 5);
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаБезОплаты") , 6);
ПризнакиСпособаРасчета.Вставить(ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ОплатаКредита") , 7);
Возврат ПризнакиСпособаРасчета.Получить(ПризнакСпособаРасчета);
КонецФункции
// Получить признак способа расчета по коду.
//
// Параметры:
// КодПризнакаСпособаРасчета - Число - Код признака способа расчета.
//
// Возвращаемое значение:
// Произвольный, ПеречислениеСсылка.ПризнакиСпособаРасчета - Признак способа расчета по коду
Функция ПризнакСпособаРасчетаПоКоду(КодПризнакаСпособаРасчета) Экспорт
ПризнакиСпособаРасчета = Новый Соответствие();
ПризнакиСпособаРасчета.Вставить(1, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПредоплатаПолная"));
ПризнакиСпособаРасчета.Вставить(2, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПредоплатаЧастичная"));
ПризнакиСпособаРасчета.Вставить(3, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.Аванс"));
ПризнакиСпособаРасчета.Вставить(4, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаСПолнойОплатой"));
ПризнакиСпособаРасчета.Вставить(5, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаСЧастичнойОплатой"));
ПризнакиСпособаРасчета.Вставить(6, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаБезОплаты"));
ПризнакиСпособаРасчета.Вставить(7, ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ОплатаКредита"));
Возврат ПризнакиСпособаРасчета.Получить(КодПризнакаСпособаРасчета);
КонецФункции
// Получить наименование признака способа расчета по коду.
//
// Параметры:
// КодПризнакаСпособаРасчета - Число, Произвольный - Код признака способа расчета
//
// Возвращаемое значение:
// Строка, Произвольный - Наименование признака способа расчета
Функция НаименованиеПризнакаСпособаРасчета(КодПризнакаСпособаРасчета) Экспорт;
ПризнакиСпособаРасчета = Новый Соответствие();
ПризнакиСпособаРасчета.Вставить(1, НСтр("ru='ПРЕДОПЛАТА 100%'"));
ПризнакиСпособаРасчета.Вставить(2, НСтр("ru='ПРЕДОПЛАТА'"));
ПризнакиСпособаРасчета.Вставить(3, НСтр("ru='АВАНС'"));
ПризнакиСпособаРасчета.Вставить(4, НСтр("ru='ПОЛНЫЙ РАСЧЕТ'"));
ПризнакиСпособаРасчета.Вставить(5, НСтр("ru='ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ'"));
ПризнакиСпособаРасчета.Вставить(6, НСтр("ru='ПЕРЕДАЧА В КРЕДИТ'"));
ПризнакиСпособаРасчета.Вставить(7, НСтр("ru='ОПЛАТА КРЕДИТА'"));
Возврат ПризнакиСпособаРасчета.Получить(КодПризнакаСпособаРасчета);
КонецФункции
// Получить код признака способа расчета.
//
// Параметры:
// ПризнакПредметаРасчета - ПеречислениеСсылка.ПризнакиПредметаРасчета - Признак предмета расчета.
//
// Возвращаемое значение:
// Произвольный, Число - Код признака предмета расчета
Функция КодПризнакаПредметаРасчета(ПризнакПредметаРасчета) Экспорт
Код = 0;
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.КодПризнакаПредметаРасчета(Код, ПризнакПредметаРасчета);
Возврат Код;
КонецФункции
// Получить признак способа расчета по коду.
//
// Параметры:
// КодПризнакаПредметаРасчета - Число - Код признака предмета расчета.
//
// Возвращаемое значение:
// ПеречислениеСсылка.ПризнакиПредметаРасчета, Произвольный - Признак предмета расчета по коду
Функция ПризнакПредметаРасчетаПоКоду(КодПризнакаПредметаРасчета) Экспорт
Значение = 0;
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.ПризнакПредметаРасчетаПоКоду(Значение, КодПризнакаПредметаРасчета);
Возврат Значение;
КонецФункции
// Получить наименование признака предмета расчета по коду.
//
// Параметры:
// КодПризнакаПредметаРасчета -Число - Код признака предмета расчета.
//
// Возвращаемое значение:
// Строка, Произвольный - Наименование признака предмета расчета
Функция НаименованиеПризнакаПредметаРасчета(КодПризнакаПредметаРасчета) Экспорт
Наименование = "";
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.НаименованиеПризнакаПредметаРасчета(Наименование, КодПризнакаПредметаРасчета);
Возврат Наименование;
КонецФункции
// Возвращает текстовое представление типа оплаты на ККТ по версии ФФД
//
// Параметры:
// ТипОплатыККТ - ПеречислениеСсылка.ТипыОплатыККТ
// ВерсияФФД - Строка - "1.0", "1.1", "1.2"
//
// Возвращаемое значение:
// Строка.
Функция НаименованиеТипаОплатыККТ(ТипОплатыККТ, ВерсияФФД) Экспорт
Наименование = "";
ОборудованиеЧекопечатающиеУстройстваКлиентСерверЛокализация.НаименованиеТипаОплатыККТ(Наименование, ТипОплатыККТ, ВерсияФФД);
Возврат Наименование;
КонецФункции
// Устанавливает признак того что система налогообложения ОСН
//
// Параметры:
// ЭтоОСН - Булево
// СистемаНалогообложения - ПеречислениеСсылка.ТипыСистемНалогообложенияККТ
//
Процедура ЯвляетсяОСН(ЭтоОСН, СистемаНалогообложения) Экспорт
Если СистемаНалогообложения = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ОСН") Тогда
ЭтоОСН = Истина;
Иначе
ЭтоОСН = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область УстаревшиеПроцедурыИФункции
// ++ Локализация
#Область КодыОФД
///////////////////////////////////////////////////////////////////////////////
// Коды признаков агентов
// Устарела: следует использовать ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.КодПризнакаАгента.
// Получить признак агента по коду.
//
// Параметры:
// КодПризнакаАгента - ПеречислениеСсылка.ПризнакиАгента - Код признака агента
//
// Возвращаемое значение:
// Произвольный, Число - Код признака агента
Функция КодПризнакаАгента(КодПризнакаАгента) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.КодПризнакаАгента(КодПризнакаАгента);
КонецФункции
// Устарела: следует использовать ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.ПризнакАгентаПоКоду.
// Получить код типа признака агента.
//
// Параметры:
// ПризнакАгента - Число - Признак агента
//
// Возвращаемое значение:
// ПеречислениеСсылка.ПризнакиАгента, Произвольный - Признак агента по коду
Функция ПризнакАгентаПоКоду(ПризнакАгента) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.ПризнакАгентаПоКоду(ПризнакАгента);
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// Коды изменений сведений ККТ
// Устарела: следует использовать ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.КодПричиныИзмененияСведенийККТ.
// Получить код причины изменения сведений о ККТ.
//
// Параметры:
// ПричинаИзмененияСведенийККТ - ПеречислениеСсылка.ПричиныИзмененияСведенийККТ - Причина изменения сведений ККТ.
//
// Возвращаемое значение:
// Произвольный, Число - Код причины изменения сведений ККТ
Функция КодПричиныИзмененияСведенийККТ(ПричинаИзмененияСведенийККТ) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.КодПричиныИзмененияСведенийККТ(ПричинаИзмененияСведенийККТ);
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// Коды маркировки
// Устарела: следует использовать МенеджерОборудованияМаркировка.КодПланируемыйСтатусМаркируемогоТовара.
// Получить код планируемого статус маркируемого товара
//
// Параметры:
// ПланируемыйСтатусМаркируемогоТовара - ПеречислениеСсылка - Планируемый статус маркируемого товара.
//
// Возвращаемое значение:
// Число - Код планируемого статус маркируемого товара по ОФД
//
Функция КодПланируемыйСтатусМаркируемогоТовара(ПланируемыйСтатусМаркируемогоТовара) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.КодПланируемыйСтатусМаркируемогоТовара(ПланируемыйСтатусМаркируемогоТовара);
КонецФункции
// Устарела: следует использовать МенеджерОборудованияМаркировка.КодОтветаОИСМОСтатусеТовара.
// Получить код ответ ОИСМ о статусе товара
//
// Параметры:
// ОтветОИСМОСтатусеТовара - ПеречислениеСсылка.ОтветОИСМОСтатусеТовара - Ответ от ИСМО.
//
// Возвращаемое значение:
// Число - Ответ ОИСМ о статусе товара по ОФД
//
Функция КодОтветаОИСМОСтатусеТовара(ОтветОИСМОСтатусеТовара) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.КодОтветаОИСМОСтатусеТовара(ОтветОИСМОСтатусеТовара);
КонецФункции
// Устарела: следует использовать МенеджерОборудованияМаркировка.ОтветОИСМОСтатусеТовараПоКоду.
// Получить ответ ОИСМ о статусе товара по коду.
//
// Параметры:
// ОтветОИСМОСтатусеТовара - Число - Ответ от ИСМО.
//
// Возвращаемое значение:
// ПеречислениеСсылка.ОтветОИСМОСтатусеТовара - Ответ ОИСМ.
//
Функция ОтветОИСМОСтатусеТовараПоКоду(ОтветОИСМОСтатусеТовара) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.ОтветОИСМОСтатусеТовараПоКоду(ОтветОИСМОСтатусеТовара);
КонецФункции
// Устарела: следует использовать МенеджерОборудованияМаркировка.КодТипаМаркировкиККТ.
// Получить код типа маркировки ККТ по коду.
//
// Параметры:
// ТипМаркировкиККТ - ПеречислениеСсылка.ТипыМаркировкиККТ - Тип маркировки ККТ.
//
// Возвращаемое значение:
// Строка, Произвольный - Код типа маркировки ККТ
Функция КодТипаМаркировкиККТ(ТипМаркировкиККТ) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.КодТипаМаркировкиККТ(ТипМаркировкиККТ);
КонецФункции
// Устарела: следует использовать МенеджерОборудованияМаркировка.ТипМаркировкиККТПоКоду.
// Получить код типа маркировки ККТ.
//
// Параметры:
// КодТипМаркировкиККТ - Число - Код тип маркировки ККТ
//
// Возвращаемое значение:
// Произвольный, ПеречислениеСсылка.ТипыМаркировкиККТ - Тип маркировки ККТПо коду
Функция ТипМаркировкиККТПоКоду(КодТипМаркировкиККТ) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.ТипМаркировкиККТПоКоду(КодТипМаркировкиККТ);
КонецФункции
// Устарела: следует использовать МенеджерОборудованияМаркировка.СтатусРезультатаЗапросаКМПоКоду.
// Получить статус результата запроса КМ по коду.
//
// Параметры:
// КодСтатуса - Число - Код статуса.
//
// Возвращаемое значение:
// Произвольный, ПеречислениеСсылка.СтатусРезультатаЗапросаКМ - Статус результата запроса КМПо коду
Функция СтатусРезультатаЗапросаКМПоКоду(КодСтатуса) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.СтатусРезультатаЗапросаКМПоКоду(КодСтатуса);
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// Коды единицы измерения
// Устарела: следует использовать ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.КодМерыКоличестваПредметаРасчетаККТ.
// Код меры количества предмета расчета ККТ.
//
// Параметры:
// МераКоличестваПредметаРасчетаККТ - ПеречислениеСсылка.МераКоличестваПредметаРасчетаККТ - Мера количества предмета расчета ККТ
//
// Возвращаемое значение:
// Произвольный, Число - Код меры количества предмета расчета ККТ
Функция КодМерыКоличестваПредметаРасчетаККТ(МераКоличестваПредметаРасчетаККТ) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.КодМерыКоличестваПредметаРасчетаККТ(МераКоличестваПредметаРасчетаККТ);
КонецФункции
// Устарела: следует использовать ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.МераКоличестваПредметаРасчетаККТПоКоду.
// Получить меру количества предмета расчета по коду.
//
// Параметры:
// КодМерыКоличестваПредметаРасчетаККТ - ПеречислениеСсылка.МераКоличестваПредметаРасчетаККТ - Код меры количества предмета расчета ККТ
//
// Возвращаемое значение:
// Произвольный, ПеречислениеСсылка.МераКоличестваПредметаРасчетаККТ - Мера количества предмета расчета ККТПо коду
Функция МераКоличестваПредметаРасчетаККТПоКоду(КодМерыКоличестваПредметаРасчетаККТ) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.МераКоличестваПредметаРасчетаККТПоКоду(КодМерыКоличестваПредметаРасчетаККТ);
КонецФункции
// Устарела: следует использовать ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.МераКоличестваПредметаРасчетаПоКодуЕдиницыИзмерения.
// Получить меру количества предмета расчета по коду единицы измерения.
//
// Параметры:
// КодЕдиницыИзмерения - Число - Код единицы измерения.
//
// Возвращаемое значение:
// ПеречислениеСсылка.МераКоличестваПредметаРасчетаККТ, Произвольный - Мера количества предмета расчета по коду единицы измерения
Функция МераКоличестваПредметаРасчетаПоКодуЕдиницыИзмерения(КодЕдиницыИзмерения) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваРФКлиентСервер.МераКоличестваПредметаРасчетаПоКодуЕдиницыИзмерения(КодЕдиницыИзмерения);
КонецФункции
#Область НефискальныйДокумент
// АПК: 142-выкл обратная совместимость
// Устарела: следует использовать механизм ШаблоныФискальныхДокументов.ШаблонКассовыйЧек.
// Функция формирует текст нефискального документа по шаблону.
//
// Параметры:
// ТипДокумента - Число
// ОбщиеПараметры - Структура - где:
// * ПозицииЧека - Массив из Структура - где:
// ** Наименование - Строка - .
// ** ДанныеПоставщика - Структура - где:
// *** Наименование - Строка - .
// ** ДанныеАгента - Структура - где:
// *** ОператорПеревода - Структура -
// *** Наименование - Строка - .
// * ДанныеПоставщика - Структура - где:
// ** Наименование - Строка - .
// * ДанныеАгента - Структура - где:
// ** ОператорПеревода - Структура -
// ** Наименование - Строка - .
// ШиринаСтроки - Число
// ДополнительныйТекст - Строка
// ФорматФФД - Строка
// ПолеПодписи - Булево - выводить поле подписи
//
// Возвращаемое значение:
// Строка - .
//
Функция СформироватьТекстНефискальногоДокумента(ТипДокумента, ОбщиеПараметры, ШиринаСтроки = 32, ДополнительныйТекст = Неопределено, ФорматФФД = "1.1", ПолеПодписи = Истина) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.СформироватьФискальныйДокументТекст(ТипДокумента, ОбщиеПараметры, Неопределено, ФорматФФД, ШиринаСтроки);
КонецФункции
// АПК: 142-вкл
// Устарела: следует использовать механизм ШаблоныФискальныхДокументов.ШаблонКассовыйЧек.
// Функция формирует текст нефискального чека по шаблону.
//
// Параметры:
// ОбщиеПараметры - Структура - см. СформироватьТекстНефискальногоДокумента()
// ШиринаСтроки - Число
// ФорматФФД - Строка
// ПолеПодписи - Булево - выводить поле подписи
//
// Возвращаемое значение:
// Структура.
//
Функция СформироватьТекстНефискальногоЧека(ОбщиеПараметры, ШиринаСтроки = 32, ФорматФФД = "1.1", ПолеПодписи = Истина) Экспорт
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.СформироватьФискальныйДокументТекст(0, ОбщиеПараметры, Неопределено, ФорматФФД, ШиринаСтроки);
КонецФункции
#КонецОбласти
#КонецОбласти
// -- Локализация
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Возвращает Истина если используется ККТ без подключения оборудования
//
// Параметры:
// ПараметрыОперации - Структура - параметры выполнения операции.
//
// Возвращаемое значение:
// Булево
Функция ЭтоККТБезПодключения(ПараметрыОперации) Экспорт
Возврат ЗначениеЗаполнено(ПараметрыОперации)
И ПараметрыОперации.Свойство("КассаККМ")
И ЗначениеЗаполнено(ПараметрыОперации.КассаККМ);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Выстраивает строку по длине поля, если поле длинное - переносит на следующую строку.
//
// Параметры:
// Текст - Неопределено, Строка - Текст
// ДлинаПоля - Число - Длина поля
// ДобСимвол - Строка - Доб символ
// ПоЦентру - Булево - По центру
//
// Возвращаемое значение:
// Неопределено, Строка - Построить поле переносом
Функция ПостроитьПолеПереносом(Знач Текст, Знач ДлинаПоля, ДобСимвол = "", ПоЦентру = Ложь) Экспорт
ДобСимвол = ?(ПустаяСтрока(ДобСимвол), " ", ДобСимвол);
Если СтрДлина(Текст) > ДлинаПоля Тогда
ТекстПолный = "";
Пока СтрДлина(Текст) > ДлинаПоля Цикл
ТекстПолный = ТекстПолный + ?(ПустаяСтрока(ТекстПолный), "", Символы.ПС) + Лев(Текст, ДлинаПоля);
Текст = Сред(Текст, ДлинаПоля + 1);
КонецЦикла;
ТекстПолный = ТекстПолный + ?(ПустаяСтрока(Текст), "", Символы.ПС + Текст);
Иначе
Если ПоЦентру Тогда
ТекстПолный = Текст;
ДобавлятьСправа = Истина;
Пока СтрДлина(ТекстПолный) < ДлинаПоля Цикл
Если ДобавлятьСправа Тогда
ТекстПолный = ТекстПолный + ДобСимвол;
Иначе
ТекстПолный = ДобСимвол + ТекстПолный;
КонецЕсли;
ДобавлятьСправа = Не ДобавлятьСправа;
КонецЦикла;
Иначе
ТекстПолный = Текст;
КонецЕсли;
КонецЕсли;
Возврат ТекстПолный;
КонецФункции
// Обрезает передаваемую строку по длине поля, если поле слишком короткое - дополняет символами.
//
// Параметры:
// Текст - Строка - Текст
// ДлинаПоля - Число - Длина поля
// ДобСимвол - Строка - Доб символ
// ДобавлятьСправа - Булево - если истина добавлять ДобСимвол справа, иначе слева.
//
// Возвращаемое значение:
// Строка.
//
Функция ПостроитьПоле(Знач Текст, Знач ДлинаПоля, ДобСимвол = "", ДобавлятьСправа = Истина) Экспорт
ДобСимвол = ?(ПустаяСтрока(ДобСимвол), " ", ДобСимвол);
ТекстПолный = Лев(Текст, ДлинаПоля);
Пока СтрДлина(ТекстПолный) < ДлинаПоля Цикл
Если ДобавлятьСправа Тогда
ТекстПолный = ТекстПолный + ДобСимвол;
Иначе
ТекстПолный = ДобСимвол + ТекстПолный;
КонецЕсли;
КонецЦикла;
Возврат ТекстПолный;
КонецФункции
// Формирует строку из двух полей, если передается одно поле дополняет символами до нужного размера.
//
// Параметры:
// Текст1 - Строка
// Текст2 - Строка
// ДлинаПоля - Число
//
// Возвращаемое значение:
// Строка.
//
Функция ВыстроитьПоля(Знач Текст1, Знач Текст2 = "", Знач ДлинаПоля = 32) Экспорт
Если ПустаяСтрока(Текст2) Тогда
ТекстПолный = ПостроитьПоле(Текст1, СтрДлина(Текст1) + Цел((ДлинаПоля - СтрДлина(Текст1))/2), , Ложь);
ТекстПолный = ПостроитьПоле(ТекстПолный, ДлинаПоля);
ИначеЕсли СтрДлина(Текст1) + СтрДлина(Текст2) < ДлинаПоля Тогда
ТекстПолный = ПостроитьПоле(Текст1, ДлинаПоля - СтрДлина(Текст2)) + Текст2;
Иначе
ТекстПолный = ПостроитьПоле(Текст1, ДлинаПоля) + Символы.ПС + ПостроитьПоле(Текст2, ДлинаПоля, ,Ложь)
КонецЕсли;
Возврат ТекстПолный;
КонецФункции
// Выровнять передаваемую строку по длине поля, если поле слишком короткое - дополняет символами.
//
// Параметры:
// Текст - Строка - Текст
// ДлинаПоля - Число - Длина поля
// Выравнивание - Строка - Выравнивание
// ДобСимвол - Строка - Доб символ
//
// Возвращаемое значение:
// Строка - Выровненное поле
Функция ВыровнятьПоле(Знач Текст, Знач ДлинаПоля = 32, Знач Выравнивание = "Лево", ДобСимвол = "") Экспорт
ДобСимвол = ?(ПустаяСтрока(ДобСимвол), " ", ДобСимвол);
НачПозиция = Истина;
ТекстПолный = Лев(Текст, ДлинаПоля);
Пока СтрДлина(ТекстПолный) < ДлинаПоля Цикл
Если Выравнивание = "Лево" Тогда
ТекстПолный = ТекстПолный + ДобСимвол;
ИначеЕсли Выравнивание = "Право" Тогда
ТекстПолный = ДобСимвол + ТекстПолный;
Иначе
Если НачПозиция Тогда
ТекстПолный = ТекстПолный + ДобСимвол;
НачПозиция = Ложь;
Иначе
ТекстПолный = ДобСимвол + ТекстПолный;
НачПозиция = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ТекстПолный;
КонецФункции
#КонецОбласти