При работе в программе 1С:Управление торговлей 11 (а также в других типовых решениях, таких как 1С:ERP, 1С:Комплексная автоматизация или 1С:Бухгалтерия) пользователи часто сталкиваются с ситуацией, когда для оформления договоров, актов или сверок требуются налоговые реквизиты обслуживающего банка — ИНН и КПП. Однако при открытии справочников Классификатор банков или Банковские счета нужные поля обнаружить не удается.
Разберем подробно, почему разработчики типовых конфигураций не включили эти реквизиты в справочник банков, и рассмотрим все практические способы решения этой задачи в системе.
Выясним причину такого архитектурного решения. Справочник Классификатор банков РФ в программах 1С формируется и обновляется на основе официального Справочника БИК Банка России (альбомы УФЭБС / ED807). В соответствии с банковскими стандартами платежной системы РФ для проведения безналичных расчетов и однозначной идентификации кредитной организации используются исключительно:
Нормативные требования ЦБ РФ к структуре классификатора БИК не предусматривают передачу кодов ИНН и КПП. Поэтому в структуре метаданных справочника Классификатор банков данные реквизиты изначально отсутствуют. Кроме того, важно помнить об особенности структуры банков: банк представляет собой единое юридическое лицо с одним ИНН, однако его филиалы и расчетно-кассовые центры, имеющие различные БИК, обладают разными КПП по месту нахождения обособленных подразделений.
Проанализируем типовой сценарий, когда банк выступает для организации поставщиком услуг (расчетно-кассовое обслуживание, аренда сейфовых ячеек, эквайринг, факторинг или кредитование). В этом случае банк является полноценным участником хозяйственных взаимоотношений.
Разберем по шагам, как правильно оформить банк в системе:
Классификатор банков.Такой подход позволяет корректно формировать первичные документы, акты взаимозачета, проводить коммерческие взаиморасчеты и получать полные налоговые реквизиты в отчетах.
Если банк не выступает контрагентом по договорам, но его ИНН и КПП требуются в печатных формах или специфических отчетах, рассмотрим настройку без доработки конфигурации средствами Библиотеки стандартных подсистем (БСП).
Для добавления реквизитов выполним следующие действия:
Дополнительные реквизиты и Дополнительные сведения.Банковские счета организаций или Банковские счета контрагентов).Строка (длина 10 символов).Строка (длина 9 символов).Когда требуется программный доступ к реквизитам в запросах и коде без снятия конфигурации с типовой поддержки, используем расширение конфигурации. Рассмотрим, как это реализовать.
Разберем шаги создания расширения:
КлассификаторБанков (или БанковскиеСчетаОрганизаций).ИНН (тип Строка, длина 10) и КПП (тип Строка, длина 9).Посмотрим на пример обращения к добавленным реквизитам в программном коде при формировании печатной формы или выгрузки:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Банки.Ссылка КАК Банк,
| Банки.Код КАК БИК,
| Банки.КоррСчет КАК КоррСчет,
| Банки.ИНН КАК ИНН,
| Банки.КПП КАК КПП
|ИЗ
| Справочник.КлассификаторБанков КАК Банки
|ГДЕ
| Банки.Ссылка = &Банк";
Запрос.УстановитьПараметр("Банк", СсылкаНаБанк);
РезультатЗапроса = Запрос.Выполнить();
Для автоматизации заполнения реквизитов при импорте или создании банковских счетов можно настроить фоновый опрос внешних веб-сервисов по БИК с помощью протокола HTTP. Рассмотрим пример программного запроса к сервису стандартизации реквизитов:
Функция ПолучитьРеквизитыБанкаПоБИК(Знач БИКБанка, Знач ТокенАвторизации)
HTTPСоединение = Новый HTTPСоединение("suggestions.dadata.ru", 443, , , , 10, Новый ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Accept", "application/json");
Заголовки.Вставить("Authorization", "Token " + ТокенАвторизации);
HTTPЗапрос = Новый HTTPЗапрос("/suggestions/api/4_1/rs/findById/bank", Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки("{""query"": """ + БИКБанка + """}", КодировкаТекста.UTF8);
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(HTTPОтвет.ПолучитьТелоКакСтроку());
СтруктураДанных = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Возврат СтруктураДанных;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Подведем итоги выбора подходящего решения:
Контрагенты.