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

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

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

Понимание структуры коллекции Субконто

Первое, что необходимо усвоить — это то, как устроена коллекция Субконто в объекте ЗаписьРегистраБухгалтерии. Многие совершают ошибку, пытаясь обратиться к ней по строковому имени, например: Запись.СубконтоДт[\"СтатьиЗатрат\"]. Такой код не сработает, так как ключом в коллекции является не имя, а ссылка на вид субконто из Плана видов характеристик.

Поскольку один и тот же счет может иметь разный набор аналитики, обращаться к субконто следует через перебор коллекции ВидыСубконто, которая принадлежит конкретному счету. Давайте рассмотрим, как это сделать правильно.

Способ 1: Прямое обращение через виды субконто счета

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

  1. Определяем счет, с которым работаем (например, Запись.СчетДт).
  2. Получаем доступ к коллекции ВидыСубконто этого счета.
  3. Используем свойство ВидСубконто каждого элемента коллекции как ключ для обращения к СубконтоДт или СубконтоКт.

Посмотрим на пример кода, который реализует такой подход:


// Перебор всех видов субконто, настроенных для счета
Для каждого ВидСубконто Из Запись.СчетДт.ВидыСубконто Цикл
    // ВидСубконто.ВидСубконто — это ссылка на ПВХ, выступающая ключом
    ЗначениеСубконто = Запись.СубконтоДт[ВидСубконто.ВидСубконто];
    
    Если ЗначениеЗаполнено(ЗначениеСубконто) Тогда
        // Здесь мы можем производить любые манипуляции с полученным значением
        Сообщить("Найдено значение: " + ЗначениеСубконто);
    КонецЕсли;
КонецЦикла;

Способ 2: Использование типовых процедур общего модуля

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

Чаще всего для этих целей используется общий модуль БухгалтерскийУчет и процедура УстановитьСубконто. Рассмотрим, как это выглядит в коде:


// Установка субконто с использованием типового метода
// Параметры: счет, коллекция субконто, номер или вид субконто, значение
БухгалтерскийУчет.УстановитьСубконто(
    НоваяЗапись.СчетДт, 
    НоваяЗапись.СубконтоДт, 
    НомерСубконто, 
    ЗначениеСубконто
);

Преимущества использования типовых функций:

Подводим итоги

При работе с субконто в 1С всегда помните о том, что система ожидает получения ссылки на ПВХ в качестве ключа. Если вы пишете универсальную обработку, всегда опирайтесь на метаданные счета через Счет.ВидыСубконто. Это позволит вашему коду оставаться работоспособным даже при смене настроек учета или добавлении новых видов аналитики на счета.

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

← На главную