ФорматнаяСтрокаУФЭБС (БСП)

Автор: 1С
ОбщийМодуль.УправлениеПечатьюРФ
БСП

Форматная строка. Формирует форматную строку согласно "Унифицированному формату электронных банковских сообщений" для ее отображения в

// Формирует форматную строку согласно "Унифицированному формату электронных банковских сообщений" для ее отображения в
// виде QR-кода.
//
// Параметры:
//  ДанныеДокумента  - Структура - содержит значения полей документа.
//    Данные документа будут закодированы согласно стандарту 
//    "СТАНДАРТЫ ФИНАНСОВЫХ ОПЕРАЦИЙ Символы двумерного штрихового кода для осуществления платежей физических лиц".
//    ДанныеДокумента должны содержать информацию в полях, описанных ниже.
//    Обязательные поля структуры:
//     * ТекстПолучателя             - Наименование получателя платежа         - Макс. 160 символов;
//     * НомерСчетаПолучателя        - Номер счета получателя платежа          - Макс. 20 символов;
//     * НаименованиеБанкаПолучателя - Наименование банка получателя платежа   - Макс. 45 символов;
//     * БИКБанкаПолучателя          - БИК                                     - Макс. 9 символов;
//     * СчетБанкаПолучателя         - Номер к/с банка получателя платежа - Макс. 20 символов;
//    Дополнительные поля структуры:
//     * СуммаЧислом         - Сумма платежа, в рублях                 - Макс. 16 символов.
//     * НазначениеПлатежа   - Наименование платежа (назначение)       - Макс. 210 символов;
//     * ИННПолучателя       - ИНН получателя платежа                  - Макс. 12 символов;
//     * ИННПлательщика      - ИНН плательщика                         - Макс. 12 символов;
//     * СтатусСоставителя   - Статус составителя платежного документа - Макс. 2 символа;
//     * КПППолучателя       - КПП получателя платежа                  - Макс. 9 символов.
//     * КодБК               - КБК                                     - Макс. 20 символов;
//     * КодОКТМО            - Код КодОКТМО                            - Макс. 11 символов;
//     * ПоказательОснования - Основание налогового платежа            - Макс. 2 символа;
//     * ПоказательПериода   - Налоговый период                        - Макс. 10 символов;
//     * ПоказательНомера    - Номер документа                         - Макс. 15 символов;
//     * ПоказательДаты      - Дата документа                          - Макс. 10 символ.
//     * ПоказательТипа      - Тип платежа                             - Макс. 2 символа.
//    Прочие дополнительные  поля.
//     * ФамилияПлательщика               - Фамилия плательщика.
//     * ИмяПлательщика                   - Имя плательщика.
//     * ОтчествоПлательщика              - Отчество плательщика.
//     * АдресПлательщика                 - Адрес плательщика.
//     * ЛицевойСчетБюджетногоПолучателя  - Лицевой счет бюджетного получателя.
//     * ИндексПлатежногоДокумента        - Индекс платежного документа.
//     * СНИЛС                            - № лицевого счета в системе персонифицированного учета в ПФР - СНИЛС.
//     * НомерДоговора                    - Номер договора.
//     * НомерЛицевогоСчетаПлательщика    - Номер лицевого счета плательщика в организации (в системе учета ПУ).
//     * НомерКвартиры                    - Номер квартиры.
//     * НомерТелефона                    - Номер телефона.
//     * ВидПлательщика                   - Вид ДУЛ плательщика.
//     * НомерПлательщик                  - Номер ДУЛ плательщика.
//     * ФИОРебенка                       - Ф.И.О. ребенка/учащегося.
//     * ДатаРождения                     - Дата рождения.
//     * СрокПлатежа                      - Срок платежа/дата выставления счета.
//     * ПериодОплаты                     - Период оплаты.
//     * ВидПлатежа                       - Вид платежа.
//     * КодУслуги                        - Код услуги/название прибора учета.
//     * НомерПрибораУчета                - Номер прибора учета.
//     * ПоказаниеПрибораУчета            - Показание прибора учета.
//     * НомерИзвещения                   - Номер извещения, начисления, счета.
//     * ДатаИзвещения                    - Дата извещения/начисления/счета/постановления (для ГИБДД).
//     * НомерУчреждения                  - Номер учреждения (образовательного, медицинского).
//     * НомерГруппы                      - Номер группы детсада/класса школы.
//     * ФИОПреподавателя                 - ФИО преподавателя, специалиста, оказывающего услугу.
//     * СуммаСтраховки                   - Сумма страховки/дополнительной услуги/Сумма пени (в копейках).
//     * НомерПостановления               - Номер постановления (для ГИБДД).
//     * НомерИсполнительногоПроизводства - Номер исполнительного производства.
//     * КодВидаПлатежа                   - Код вида платежа (например, для платежей в адрес Росреестра).
//     * ИдентификаторНачисления          - Уникальный идентификатор начисления.
//     * ТехническийКод                   - Технический код, рекомендуемый для заполнения поставщиком услуг.
//                                          Может использоваться принимающей организацией для вызова соответствующей
//                                          обрабатывающей ИТ-системы.
//                                          Перечень значений кода представлен ниже.
//
//       Код назначения     Наименование назначения платежа
//       платежа.
//       
//          01              Мобильная связь, стационарный телефон.
//          02              Коммунальные услуги, ЖКХ.
//          03              ГИБДД, налоги, пошлины, бюджетные платежи.
//          04              Охранные услуги
//          05              Услуги, оказываемые УФМС.
//          06              ПФР
//          07              Погашение кредитов
//          08              Образовательные учреждения.
//          09              Интернет и ТВ
//          10              Электронные деньги
//          11              Отдых и путешествия.
//          12              Инвестиции и страхование.
//          13              Спорт и здоровье
//          14              Благотворительные и общественные организации.
//          15              Прочие услуги.
//
// Возвращаемое значение:
//   Строка - строка данных в формате УФЭБС.
//
Функция ФорматнаяСтрокаУФЭБС(ДанныеДокумента) Экспорт
	
	ТекстОшибки = "";
	СтрокаОбязательныхРеквизитов = СтрокаОбязательныхРеквизитов(ДанныеДокумента, ТекстОшибки);
	
	Если ПустаяСтрока(СтрокаОбязательныхРеквизитов) Тогда
		ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , , ,);
		Возврат "";
	КонецЕсли;
	
	СтруктураПредставленийИРеквизитов = СтруктураПредставленийИРеквизитов();
	СтрокаДополнительныхРеквизитов = "";
	ДополнительныеРеквизиты = Новый Структура;
	ДобавитьДополнительныеРеквизиты(ДополнительныеРеквизиты);
	
	Для Каждого Элемент Из ДополнительныеРеквизиты Цикл
		
		Если Не ДанныеДокумента.Свойство(Элемент.Ключ) Тогда
			ДанныеДокумента.Вставить(Элемент.Ключ, "");
			Продолжить;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ДанныеДокумента[Элемент.Ключ]) Тогда
			Если Элемент.Ключ = "СуммаЧислом" Тогда
				ЗначениеСтрокой = Формат(ДанныеДокумента.СуммаЧислом * 100, "ЧГ=");
			Иначе
				ЗначениеСтрокой = СтрЗаменить(СокрЛП(Строка(ДанныеДокумента[Элемент.Ключ])), "|", "");
			КонецЕсли;
			СтрокаДополнительныхРеквизитов = СтрокаДополнительныхРеквизитов + СтруктураПредставленийИРеквизитов[Элемент.Ключ]
			                                 + "=" + ЗначениеСтрокой + "|";
		КонецЕсли;
	КонецЦикла;
	
	Если Не ПустаяСтрока(СтрокаДополнительныхРеквизитов) Тогда
		ДлинаСтроки = СтрДлина(СтрокаДополнительныхРеквизитов);
		СтрокаДополнительныхРеквизитов = Сред(СтрокаДополнительныхРеквизитов, 1, ДлинаСтроки - 1);
	КонецЕсли;

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

Строка в дату по форматной строке

Функция для превращения строки в дату по форматной строке

ФорматированнаяСтрокаИзHTML (БСП)

Определение длины строки в запросе

НормализованнаяСтрокаXML (БСП)

СтрокаИзСтруктурыJSON (БСП)

СтруктураИзСтрокиJSON (БСП)

СтрокаUnicode (БСП)

TurboConf ИР адаптер 1.37