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

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

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

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

В многофирменных базах 1С почти каждый документ, отчёт и обработка требуют указания организации. Чтобы пользователь не выбирал её вручную при каждом действии, в конфигурации предусмотрено понятие «организация по умолчанию» — та, которая подставляется автоматически при создании документов и формировании отчётов. Разработчику и администратору важно уметь получать это значение программно: при заполнении новых объектов, в обменах данными, в регламентных заданиях и внешних обработках.

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

Что такое организация по умолчанию и где она хранится

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

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

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

Получение организации по умолчанию в типовых конфигурациях

В конфигурациях на базе БСП используйте штатные функции — они учитывают и настройку пользователя, и ситуацию с единственной организацией в базе. Конкретная функция зависит от конфигурации и её версии.

В «Бухгалтерии предприятия» традиционно применяется обращение через модуль переопределения значений по умолчанию:

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

В ряде конфигураций и свежих версий БСП доступен метод менеджера справочника:

ОрганизацияПоУмолчанию = Справочники.Организации.ОрганизацияПоУмолчанию();

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

bsl
Организация = Справочники.Организации.ОрганизацияПоУмолчанию();
Если Организация.Пустая() Тогда
    ВызватьИсключение "Не удалось определить организацию по умолчанию";
КонецЕсли;

Проверка наличия механизма в вашей конфигурации

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

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

Если конфигурация самописная или сильно доработанная и штатного механизма нет, переходите к вариантам из следующих разделов.

Маршрут решения

Как выбрать способ получения

Конфигурация типовая на БСП (БП, УТ, ERP, ЗУП)Используйте штатную функцию — ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация") или ОрганизацияПоУмолчанию()
Механизм отсутствует, но настройка пользователя хранится в базеЧитайте значение из хранилища общих настроек или своего регистра сведений
Настроек нет и организация в базе однаПолучайте её запросом как единственный непомеченный элемент справочника
Организаций несколько, а настройки нетДобавьте собственную настройку (константу или регистр сведений) и читайте её

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

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

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

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

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

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

|ИЗ

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

|ГДЕ

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

Результат = Запрос.Выполнить().Выгрузить();

Если Результат.Количество() = 1 Тогда

ОрганизацияПоУмолчанию = Результат[0].Ссылка;

КонецЕсли;

Обратите внимание на «ПЕРВЫЕ 2» и проверку количества: это защита от ситуации, когда организаций несколько. Если их две и более, «по умолчанию» выбрать нельзя — нужна явная настройка. Возвращать первую попавшуюся организацию в многофирменной базе опасно: документы могут без предупреждения создаваться не по той организации, что приведёт к ошибкам в учёте и отчётности.

Если в справочнике есть предопределённый элемент, который по смыслу является основным (например, созданный при первоначальном заполнении), можно получать его по имени предопределённых данных через Справочники.Организации.ИмяПредопределенного. Но полагаться на это стоит только если вы сами контролируете состав предопределённых элементов.

Хранение и чтение настройки пользователя

Если нужна логика «у каждого пользователя своя организация по умолчанию», а типового механизма нет, её несложно реализовать самостоятельно. Два рабочих подхода: хранилище общих настроек и собственный регистр сведений.

Через хранилище общих настроек значение сохраняется и читается так:

// Сохранение

ХранилищеОбщихНастроек.Сохранить("НастройкиУчета", "ОсновнаяОрганизация", ВыбраннаяОрганизация);

// Чтение

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

Если ОрганизацияПоУмолчанию = Неопределено Тогда

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

КонецЕсли;

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

Проверка результата и контроль в разных режимах

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

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

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

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

Возвращаемое значение в сеансе пользователя
Норма

Ссылка на нужную организацию из справочника

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

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

Работа в фоновом задании
Норма

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

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

Значение теряется, документы создаются без организации

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

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

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

Подставляется старое значение — настройка кэшируется или читается не из того места

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

Самая частая ошибка — вызов типовой функции, которой нет в данной версии конфигурации. Код падает с ошибкой «Метод объекта не обнаружен». Лечится поиском актуального имени метода в модулях конфигурации, а не копированием примеров из чужих статей без проверки.

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

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

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

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

Частые вопросы

Почему функция возвращает пустую ссылку, хотя организация в базе есть?

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

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

Опирайтесь не на «текущего пользователя», а на явно заданного: либо передавайте организацию параметром в метод задания, либо читайте настройку конкретного пользователя из регистра сведений или хранилища настроек с указанием имени пользователя.

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

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

Чем отличаются «основная организация» и «организация по умолчанию»?

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

Безопасно ли дорабатывать типовой модуль получения значений по умолчанию?

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