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