К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как получить основную организацию в 1С

Как получить основную организацию в 1С: через настройки пользователя, функцию БСП ОрганизацияПоУмолчанию и запрос. Примеры кода, ошибки и проверка результата.

Основная организация в 1С — это организация, которая подставляется по умолчанию в новые документы, отчёты и обработки, когда пользователь не выбрал её явно. Механизм встречается почти во всех типовых конфигурациях: «Бухгалтерия предприятия», «Управление торговлей», «Зарплата и управление персоналом», «Комплексная автоматизация» и «ERP». Получить значение основной организации можно двумя путями: через интерфейс персональных настроек пользователя или программно — из кода на встроенном языке.

Проблема обычно возникает в трёх ситуациях: в базе заведено несколько организаций и документы создаются «не от той» фирмы; разработчику нужно получить организацию по умолчанию в собственной обработке или отчёте; после обновления конфигурации подстановка основной организации перестала работать. Ниже разобраны все способы — от установки значения в интерфейсе до обращения через функции Библиотеки стандартных подсистем (БСП) и прямой запрос к данным.

Важно понимать: «основная организация» — это не свойство самой организации в справочнике, а персональная настройка конкретного пользователя. У разных пользователей одной базы основные организации могут отличаться, и это нормальное поведение системы.

Что такое основная организация и где она хранится

В типовых конфигурациях 1С основная организация — это элемент справочника «Организации», сохранённый в настройках пользователя. Физически значение хранится в хранилище общих настроек (системная таблица, доступная программно через объект ХранилищеОбщихНастроек) под ключом вида «ОсновнаяОрганизация» или в регистре сведений настроек — конкретный механизм зависит от конфигурации и версии БСП.

Именно поэтому при смене пользователя меняется и подставляемая по умолчанию организация. Если в справочнике «Организации» всего один элемент, типовые механизмы обычно подставляют его автоматически, даже без явной настройки. Но как только организаций становится две и больше, система начинает опираться на персональную настройку.

Как установить основную организацию через интерфейс

В «1С:Бухгалтерии 8» ред. 3.0 путь такой: откройте «Главное меню» (кнопка с тремя полосами слева вверху) → «Персональные настройки» → в поле «Основная организация» выберите нужную фирму из справочника. После нажатия «ОК» или «Записать» новая настройка вступает в силу сразу, перезапуск программы не требуется.

В «Управлении торговлей» ред. 11 и «Комплексной автоматизации» настройка находится в разделе «НСИ и администрирование» → «Персональные настройки» (или «Мои настройки») → блок «Организации и денежные средства». В «Зарплате и управлении персоналом» ред. 3.1: «Администрирование» → «Персональные настройки». Точное расположение может отличаться в зависимости от релиза, поэтому надёжный ориентир — поиск по слову «настройки» в меню «Все функции».

Установка основной организации в БП 3.0
  1. 1
    Откройте Главное меню → Персональные настройки
  2. 2
    В поле «Основная организация» выберите нужный элемент справочника
  3. 3
    Нажмите «ОК» или «Записать»
  4. 4
    Создайте тестовый документ и проверьте, какая организация подставилась

Если поле недоступно для выбора

Если поле «Основная организация» серое или пустое и не даёт выбрать значение, проверьте права: у пользователя должно быть право чтения справочника «Организации». Также убедитесь, что в самом справочнике есть хотя бы один не помеченный на удаление элемент. В базах с разграничением доступа (RLS) пользователь может видеть не все организации — тогда в списке выбора будут только разрешённые ему фирмы.

Как получить основную организацию программно

Для разработчиков типовой способ — использовать функции Библиотеки стандартных подсистем, а не обращаться к хранилищу настроек напрямую. В конфигурациях на БСП есть переопределяемые функции получения значений по умолчанию. В «1С:Бухгалтерии 8» используется функция:

ОсновнаяОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");

В конфигурациях на базе БСП 3.x (УТ 11, КА 2, ERP) аналогичная роль у общего модуля, отвечающего за персональные настройки. Часто применяется вариант через хранилище общих настроек:

ОсновнаяОрганизация = ХранилищеОбщихНастроек.Загрузить("НастройкиРаботыСДокументами", "Организация");

Если ОсновнаяОрганизация = Неопределено Тогда

ОсновнаяОрганизация = Справочники.Организации.ПустаяСсылка();

КонецЕсли;

Точный ключ настройки зависит от конфигурации, поэтому перед написанием кода посмотрите, как сама типовая подставляет организацию в документ: найдите в конфигураторе обработчик «ОбработкаЗаполнения» любого документа и проследите вызов. Это самый надёжный способ узнать актуальный механизм для вашего релиза.

bsl
// Универсальный вариант для БП 3.0
Орг = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
Если Не ЗначениеЗаполнено(Орг) Тогда
    Сообщить("Основная организация не задана в персональных настройках");
КонецЕсли;

Получение организации для другого пользователя

Стандартные функции возвращают настройку текущего сеанса. Если нужно узнать основную организацию другого пользователя (например, в регламентном задании или при рассылке), загружайте настройку с указанием имени пользователя:

Орг = ХранилищеОбщихНастроек.Загрузить("НастройкиРаботыСДокументами", "Организация", , "ИмяПользователяИБ");

Учтите, что для такого чтения требуются соответствующие права, а в тонком клиенте обращение к хранилищу возможно только в серверном контексте — выносите код в серверную процедуру общего модуля.

Как получить основную организацию запросом

Напрямую запросом к таблице хранилища настроек обратиться нельзя — она недоступна языку запросов. Но если в вашей конфигурации настройки дублируются в регистре сведений (так делают некоторые отраслевые решения), запрос возможен. В типовых же конфигурациях распространён другой приём: если настройка не задана, берётся первая по коду (или единственная) организация из справочника:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ ПЕРВЫЕ 1

| Организации.Ссылка КАК Организация

|ИЗ

| Справочник.Организации КАК Организации

|ГДЕ

| НЕ Организации.ПометкаУдаления

|УПОРЯДОЧИТЬ ПО

| Организации.Код";

Такой запрос полезен как запасной вариант в собственных обработках: сначала пытаетесь получить настройку пользователя, а если она пустая — подставляете результат запроса. Это повторяет логику типовых конфигураций и делает поведение вашего кода предсказуемым для пользователей.

Как проверить, что всё работает правильно

После установки или программного получения основной организации проверьте результат на практике. Создайте новый документ, например «Реализация (акты, накладные)» или «Поступление товаров и услуг», — поле «Организация» должно заполниться выбранной фирмой автоматически. Откройте оборотно-сальдовую ведомость: если в конфигурации предусмотрено, организация в шапке отчёта также должна подставиться по умолчанию.

Для программной проверки выполните код в консоли кода (обработка «Консоль кода» из инструментов разработчика или внешняя обработка) и убедитесь, что возвращается заполненная ссылка, а не Неопределено или пустая ссылка. Пустое значение — признак того, что настройка не задана или вы обращаетесь не к тому ключу хранилища.

Контрольные точки

Как проверить результат

Новый документ
Норма

Поле «Организация» заполнено основной фирмой

Тревожный признак

Поле пустое или подставилась другая организация

Код в консоли
Норма

Возвращается заполненная ссылка на справочник

Тревожный признак

Неопределено или пустая ссылка

Другой пользователь
Норма

У него может быть своя основная организация

Тревожный признак

Ожидание, что настройка едина для всех

Типичные ошибки и ограничения

Самая частая ошибка разработчиков — обращение к устаревшим функциям. В старых релизах использовались функции вида УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(), в новых они могут быть удалены или переименованы. Если после обновления конфигурации ваш код перестал компилироваться, найдите актуальный аналог через глобальный поиск по строке «ОсновнаяОрганизация» в конфигураторе.

Вторая ошибка — ожидание, что основная организация общая для всей базы. Настройка персональная: администратор установил её себе, а у менеджера осталась пустой, и его документы создаются без организации. В многофирменных базах имеет смысл контролировать заполнение настройки у всех пользователей или реализовать запасную логику в коде.

Третья проблема — права и RLS. Если пользователю запрещён доступ к организации, которая записана у него в настройках, документы могут создаваться с ошибками или с пустым полем. После изменения прав проверяйте, что настройка пользователя согласуется с его доступом.

Типичные ошибки
01
Обращение к хранилищу настроек напрямую с неправильным ключом — возвращается Неопределено, а код молча работает дальше
02
Использование функции без проверки на пустое значение — документы и отчёты создаются без организации
03
Ожидание единой настройки на всю базу — у каждого пользователя своя основная организация
04
Вызов серверной функции из клиентского контекста тонкого клиента — ошибка выполнения

Часто задаваемые вопросы

Почему в новом документе подставляется не та организация?

Проверьте персональную настройку основной организации у текущего пользователя — скорее всего, там выбрана другая фирма или настройка пуста, а система подставляет первую по коду организацию из справочника. Также в некоторых конфигурациях документ может копировать организацию из документа-основания, если он создаётся вводом на основании.

Можно ли задать основную организацию сразу для всех пользователей?

Штатного централизованного механизма в типовых конфигурациях нет — настройка персональная. Варианты обхода: написать обработку, которая программно записывает настройку каждому пользователю через ХранилищеОбщихНастроек с указанием имени пользователя, либо реализовать в расширении логику подстановки организации по умолчанию при создании документов.

Что возвращает функция, если организация в базе всего одна?

Если настройка не задана, многие типовые механизмы самостоятельно находят единственную организацию в справочнике и подставляют её. Но это поведение зависит от конфигурации и релиза, поэтому в собственном коде всегда делайте проверку на пустое значение и запасной вариант через запрос.

Как получить основную организацию в регламентном задании?

В регламентных заданиях сеанс выполняется без конкретного пользователя или под служебным пользователем, поэтому персональная настройка обычно пуста. Решение — либо явно загружать настройку нужного пользователя по имени, либо хранить организацию для задания в отдельном параметре (константе, регистре сведений), либо брать единственную организацию запросом.

Где искать ключ настройки для ХранилищеОбщихНастроек в моей конфигурации?

Откройте конфигуратор, выполните глобальный поиск (Ctrl+Shift+F) по строке «ОсновнаяОрганизация» по всей конфигурации и посмотрите, с какими ключами объекта и настройки вызывается ХранилищеОбщихНастроек.Загрузить и Сохранить в типовом коде. Используйте те же ключи в своём коде.

Итог

Что важно запомнить

Основная организация — персональная настройка пользователя, а не свойство справочника. Устанавливается через «Персональные настройки», программно получается функциями типовой конфигурации или через ХранилищеОбщихНастроек. Всегда проверяйте результат на пустое значение и предусматривайте запасной вариант через запрос к справочнику «Организации», особенно в фоновых заданиях.