При разработке внешних обработок или интеграций часто возникает необходимость автоматизировать выбор типа организации — бюджетной или коммерческой. Это критически важно, например, при формировании заявок на открытие лицевых счетов, где от типа организации зависят банковские реквизиты или структура данных. Разберем, как эффективно решить эту задачу средствами платформы 1С.
Самый надежный способ определить тип системы, в которой работает ваш код, — это проанализировать саму конфигурацию. В платформе 1С 8.3 для этого следует использовать объект Метаданные. Этот метод позволяет однозначно идентифицировать прикладное решение.
Рассмотрим, как это можно реализовать. Мы можем проверять имя конфигурации, чтобы понять, предназначена ли она для бюджетного сектора. Например:
Функция ОпределитьТипОрганизацииПоКонфигурации()
ИмяКонфы = Метаданные.Имя;
Если Найти(ВРЕГ(ИмяКонфы), "BUDGET") > 0 Или Найти(ВРЕГ(ИмяКонфы), "GOV") > 0 Тогда
Возврат 1; // Бюджетная организация
Иначе
Возврат 2; // Коммерческая организация
КонецЕсли;
КонецФункции
Использование Метаданные.Имя и Метаданные.Синоним является предпочтительным, так как данные свойства задаются разработчиком конфигурации на этапе ее создания и не меняются в процессе эксплуатации пользователем.
Если вы пишете универсальную обработку и не можете опираться только на идентификатор (например, если используется отраслевая надстройка), стоит проанализировать план счетов. Бюджетный учет кардинально отличается от коммерческого по своей структуре и принципам формирования проводок.
Для определения типа организации можно проверить наличие специфических счетов, характерных для бюджетных учреждений (например, счета начинающиеся на определенные префиксы в ПланСчетов.Хозрасчетный или ПланСчетов.Бюджетный). Однако помните, что этот метод является косвенным и требует аккуратности в реализации.
Как показывает практика, попытка 100% автоматического определения не всегда дает верный результат, так как встречаются некоммерческие организации (НКО), которые ведут учет в обычной Бухгалтерии предприятия. Чтобы исключить ошибки пользователей, мы рекомендуем внедрить механизм «обучаемого» выбора.
Разберем алгоритм по шагам:
РегистрСведений или ХранилищеНастроекПользователей с привязкой к конкретной Организации.Такой подход защитит от ошибок, связанных с человеческим фактором, и позволит системе «адаптироваться» под специфику внешних баз данных, с которыми вы работаете.
Часто возникает искушение определять тип организации через ИНН или другие реквизиты контрагента. Мы проанализировали этот вариант и пришли к выводу, что это ненадежно. ИНН указывает лишь на организационно-правовую форму, но не дает понимания того, какой план счетов и какую логику учета использует данная база 1С. Всегда отдавайте приоритет проверке параметров самой конфигурации.
Подводя итог, для реализации максимально стабильного решения мы рекомендуем:
Метаданные.Имя как основной идентификатор типа системы.Заявкам на открытие лицевых счетов.Помните, что универсального способа, работающего для всех версий 1С (включая старые 7.7), не существует, поэтому лучшей стратегией будет комбинация методов: проверка конфигурации в первую очередь и пользовательская настройка — во вторую.