При разработке печатных форм или отчетов в 1С:ЗУП 3.1 часто возникает необходимость вывести КПП организации. Начинающие разработчики часто ищут это поле в справочнике Организации, однако архитектура конфигурации предполагает более гибкую структуру. Давайте вместе разберемся, где на самом деле лежат эти данные и как их правильно извлечь.
В современных конфигурациях, таких как ЗУП 3.1, организация может иметь несколько регистраций в налоговых органах (например, для обособленных подразделений). Поэтому КПП не является простым реквизитом самой организации. Основным объектом метаданных, который хранит эту информацию, является справочник РегистрацииВНалоговомОргане. Именно в нем содержится актуальная информация о налоговом учете, включая код КПП.
Если вы хотите получить КПП с помощью запроса, то обращаться следует напрямую к справочнику РегистрацииВНалоговомОргане. Этот объект является подчиненным справочнику Организации. Рассмотрим пример кода, который позволяет получить необходимые сведения:
ВЫБРАТЬ
РегистрацииВНалоговомОргане.Владелец.Наименование КАК Организация,
РегистрацииВНалоговомОргане.Владелец.ИНН КАК ИНН,
РегистрацииВНалоговомОргане.Владелец.ОГРН КАК ОГРН,
РегистрацииВНалоговомОргане.КПП КАК КПП
ИЗ
Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане
При использовании этого метода важно учитывать, что если у одной организации несколько регистраций (разные КПП), запрос вернет список всех регистраций. Для получения данных конкретной организации необходимо добавить условие в секцию ГДЕ, фильтруя данные по Владельцу (ссылке на организацию) или по другим уникальным идентификаторам, таким как ИНН.
В типовых конфигурациях 1С существуют механизмы, которые позволяют получать сведения об организации «одной строкой», не погружаясь в структуру таблиц базы данных. Это позволяет избежать ошибок, связанных с изменениями в структуре метаданных при обновлении конфигурации. Для этих целей используется общий модуль РегламентированнаяОтчетностьВызовСервера.
Рассмотрим, как правильно подготовить вызов такой функции:
Сведения = Новый СписокЗначений;
Сведения.Добавить("", "НаимЮЛПол");
Сведения.Добавить("", "НаимЮЛСокр");
Сведения.Добавить("", "ИННЮЛ");
Сведения.Добавить("", "КППЮЛ");
Сведения.Добавить("", "ТелОрганизации");
Сведения.Добавить("", "ФаксОрганизации");
УстановитьПривилегированныйРежим(Истина);
ОргСведения = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
Выборка.Организация,
Выборка.Период,
Сведения
);
УстановитьПривилегированныйРежим(Ложь);
Важные замечания по реализации:
УстановитьПривилегированныйРежим(Истина). Это необходимо для того, чтобы у пользователя, формирующего отчет, были права на чтение данных регламентированной отчетности, даже если у него ограничены права доступа (RLS) к некоторым элементам справочников.НаимЮЛПол, КППЮЛ — это не реквизиты в классическом понимании конфигуратора. Это специальные идентификаторы, которые система интерпретирует внутри функции ПолучитьСведенияОбОрганизации.Мы проанализировали два пути решения задачи. Если вы создаете сложный отчет или специализированную печатную форму, всегда старайтесь в первую очередь использовать типовые функции (метод ПолучитьСведенияОбОрганизации). Это стандарт индустрии разработки на платформе 1С. Если же требуется построить выборку по множеству организаций сразу для аналитического отчета, запрос к справочнику РегистрацииВНалоговомОргане будет более производительным решением.
Не забывайте, что структура метаданных может усложняться, и самостоятельное изучение «Практического пособия разработчика» и документации на ИТС поможет вам глубже понимать архитектуру 1С и писать качественный, поддерживаемый код.