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

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Способ 1. Обращение к предопределенному счету через менеджер плана счетов

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

В коде модуля это выглядит следующим образом:

СчетКасса = ПланыСчетов.Хозрасчетный.КассаОрганизации;

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

Если требуется написать универсальный код, который должен отрабатывать как на клиенте, так и на сервере, рекомендуем использовать системную функцию ПредопределенноеЗначение:


СчетКасса = ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.КассаОрганизации");

Способ 2. Поиск счета по коду (метод НайтиПоКоду)

В случаях, когда необходимо получить счет по его строковому представлению (например, "50.01") или когда счет был создан пользователем вручную в режиме «1С:Предприятие», используется метод НайтиПоКоду.

Проанализируем пример кода с поиском счета по маске кода:


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

Важные нюансы метода НайтиПоКоду:

  1. Метод не возвращает Неопределено при отсутствии счета. Вместо этого возвращается пустая ссылка данного плана счетов, поэтому результат поиска всегда нужно проверять методом .Пустая().
  2. Поиск критичен к точному совпадению символов, включая точки, пробелы и разделители субсчетов.
  3. Данный метод выполняет дополнительный запрос к базе данных, поэтому не стоит вызывать его внутри циклов с большим количеством итераций.
  4. Если пользователь изменит код счета в режиме «1С:Предприятие», алгоритм перестанет находить этот счет.

Способ 3. Использование счетов в текстах запросов

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

Вариант А: Использование функции ЗНАЧЕНИЕ в языке запросов

Если требуется жестко зафиксировать предопределенный счет непосредственно в тексте запроса, используется конструкция ЗНАЧЕНИЕ(). Важно помнить, что имя предопределенного счета внутри функции указывается без кавычек:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ХозрасчетныйОстатки.СуммаОстаток Дт КАК ОстатокНаКассе
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КассаОрганизации))) КАК ХозрасчетныйОстатки";

Вариант Б: Передача счета через параметры запроса

Более гибким решением является передача ссылки на счет в качестве параметра. Это позволяет передавать как предопределенные, так и выбранные пользователем счета:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ХозрасчетныйОстатки.СуммаОстатокДт КАК ОстатокНаСчете
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&СчетУчета)) КАК ХозрасчетныйОстатки";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("СчетУчета", ПланыСчетов.Хозрасчетный.КассаОрганизации);

Использование оператора В ИЕРАРХИИ позволяет автоматическки учесть не только сам счет, но и все подчиненные ему субсчета, что особенно критично для групповых счетов верхнего уровня. Для интерактивной проверки и отладки таких запросов с выбором групп в параметрах подойдёт консоль запросов с возможностью выбора групп в параметрах.

← На главную