При проведении банковских выписок с операцией «Комиссия банка» в документе «Списание с расчетного счета» пользователи нередко сталкиваются с ситуацией, когда проводка по дебету счета 91.02 формируется с пустым субконто. В типовых решениях программа ожидает наличие системного предопределенного элемента справочника ПрочиеДоходыИРасходы (как правило, с именем РасходыНаУслугиБанков). Если связь с ним нарушена или элемент не был создан, автоподстановка перестает работать.
Разберем подробнее, почему предопределенные данные могут отсутствовать в информационной базе, к каким последствиям это приводит и как восстановить корректное заполнение аналитики.
Проанализируем ситуацию с точки зрения архитектуры платформы 1С:Предприятие 8.3:
ИмяПредопределенныхДанных. Если этот реквизит пуст, платформа считает элемент обычным пользовательским, даже если его наименование полностью совпадает с предопределенным.В результате при формировании проводки по комиссии банка программа пытается обратиться к предопределенному значению, получает пустую ссылку и оставляет субконто незаполненным. Это приводит к искажению оборотов по счету 91.02 и ошибкам в расчете налога на прибыль.
В типовых конфигурациях 1С присутствуют встроенные процедуры инициализации системных данных. Если предопределенный элемент не появился из-за сбоя при обновлении, выполним его принудительное создание через внешнюю обработку или консоль кода:
Справочники.ПрочиеДоходыИРасходы.ОбновитьПредопределенныйЭлементРасходыНаУслугиБанков();
Данный метод проверяет наличие элемента в базе и корректно связывает его с метаданными конфигурации.
Если в базе уже есть нужная статья расходов, созданная пользователями вручную, ее можно назначить предопределенной без удаления и повторного ввода. Для этого достаточно заполнить стандартный реквизит ИмяПредопределенныхДанных:
ПрочиеДоходыИРасходы.
СсылкаНаЭлемент = Справочники.ПрочиеДоходыИРасходы.НайтиПоНаименованию("Расходы на услуги банков");
Если ЗначениеЗаполнено(СсылкаНаЭлемент) Тогда
Объект = СсылкаНаЭлемент.ПолучитьОбъект();
Объект.ИмяПредопределенныхДанных = "РасходыНаУслугиБанков";
Объект.Записать();
КонецЕсли;
После записи элемент получит признак предопределенного (в интерфейсе появится соответствующая пиктограмма с точкой), и типовые алгоритмы проведения документов начнут использовать его автоматически.
Если проблема носит массовый характер после масштабного обновления конфигурации или синхронизации узлов РИБ, воспользуемся платформенным методом принудительного обновления:
ПланыОбмена.ОбновитьПредопределенныеДанные();
Этот вызов заставляет платформу сопоставить все элементы метаданных со справочниками и планами счетов базы данных и создать недостающие предопределенные записи.
Если нет возможности выполнять программный код, настроим поведение программы через пользовательский интерфейс:
После сохранения настройки при проведении банковских выписок программа будет подставлять указанную статью независимо от статуса предопределенности.
Когда предопределенный элемент восстановлен, в базе могут остаться лишние пользовательские копии статьи расходов. Чтобы в учете не возникало разрывов аналитики, выполним слияние: