Почему при изменении счета учета в документе тип дополнительных субконто определяется неверно?

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

При доработке конфигураций 1С, когда стандартного количества субконто на счетах учета (обычно трех) становится недостаточно, разработчики увеличивают максимальное количество субконто в плане счетов и добавляют новые реквизиты в документы. Однако при создании интерфейсных элементов для 4-го и 5-го субконто на форме документа (например, в кассовых или банковских ордерах) часто возникает ошибка: при выборе счета учета типы для новых полей ввода подставляются некорректно — например, дублируют тип 3-го субконто.

Разберем причину такого поведения платформы 1С:Предприятие, пошагово устраним ошибку и проанализируем архитектурные последствия расширения субконто.

Причина возникновения проблемы

Проанализируем механику работы полей субконто на форме. В платформе 1С:Предприятие поля ввода для составных типов данных (каковыми являются реквизиты субконто с типом Характеристика.ВидыСубконтоХозрасчетные) динамически ограничивают доступный тип данных в зависимости от выбранного счета учета и конкретного вида субконто, назначенного этому счету.

Когда разработчик добавляет новые элементы на форму путем копирования существующего элемента (например, СубконтоКт3), копируются и все внутренние свойства элемента формы, включая свойство Связи по типу (или СвязьПоТипу). Если в свойствах новых элементов СубконтоКт4 и СубконтоКт5 остается привязка к третьему субконто счета, то платформа автоматически ограничивает тип вводимого значения типом третьего субконто еще до выполнения серверного или клиентского кода процедур формы.

Пошаговое исправление свойства «Связи по типу»

Для исправления ошибки выполним следующую последовательность действий в конфигураторе:

  1. Откроем форму соответствующего документа (например, Приходный кассовый ордер или Списание с расчетного счета).
  2. В дереве элементов формы найдем добавленные элементы управления (например, СубконтоКт4 и СубконтоКт5).
  3. Откроем палитру свойств элемента СубконтоКт4.
  4. Найдем свойство Связи по типу и нажмем кнопку выбора (с многоточием).
  5. В открывшемся окне настройки проверим связь: в поле реквизита должен быть указан соответствующий счет (например, Объект.СчетУчета или Объект.СчетКт), а в параметре выбора номера субконто необходимо указать цифру 4 (для пятого субконто — цифру 5).
  6. Повторим аналогичную настройку для элемента СубконтоКт5, указав соответствующий порядковый номер.
  7. Сохраним изменения и обновим конфигурацию базы данных.

Программное управление доступностью и типами субконто

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


&НаСервере
Процедура УстановитьПараметрыСубконтоНаСервере()
    
    СчетУчета = Объект.СчетУчета;
    
    // Получаем виды субконто, назначенные выбранному счету
    Для НомерСубконто = 1 По 5 Цикл
        ИмяЭлемента = "Субконто" + НомерСубконто;
        ЭлементФормы = Элементы.Найти(ИмяЭлемента);
        
        Если ЭлементФормы <> Неопределено Тогда
            Если ЗначениеЗаполнено(СчетУчета) И СчетУчета.ВидыСубконто.Количество() >= НомерСубконто Тогда
                ВидСубконто = СчетУчета.ВидыСубконто[НомерСубконто - 1].ВидСубконто;
                ЭлементФормы.Видимость = Истина;
                ЭлементФормы.Заголовок = Строка(ВидСубконто);
                ЭлементФормы.ОграничениеТипа = ВидСубконто.ТипЗначения;
            Иначе
                ЭлементФормы.Видимость = Ложь;
                Объект["Субконто" + НомерСубконто] = Неопределено;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

Что еще необходимо учесть при увеличении количества субконто

Расширение аналитики бухгалтерского учета сверх типовых трех субконто требует комплексной доработки всех связанных механизмов конфигурации:

  1. Обработка проведения документов: в типовых модулях проведения движения по регистру бухгалтерии обычно заполняют только первые 3 субконто. Необходимо доработать алгоритмы заполнения наборов записей, чтобы значения Субконто4 и Субконто5 корректно записывались в коллекцию Проводка.СубконтоДт и Проводка.СубконтоКт.
  2. Стандартные отчеты: схемы компоновки данных (СКД) и алгоритмы формирования отчетов (Оборотно-сальдовая ведомость, Карточка счета, Анализ субконто) могут содержать жесткие ограничения на вывод группировок до 3 уровней. Потребуется адаптация общих модулей формирования отчетов.
  3. Производительность базы данных: увеличение максимального количества субконто в плане счетов приводит к модификации таблиц итогов регистра бухгалтерии платформой (добавляются новые поля и индексы). Это может существенно увеличить объем базы данных и время проведения документов.

Альтернативные архитектурные решения

Перед принятием решения об увеличении количества субконто на плане счетов рекомендуется рассмотреть альтернативные варианты реализации учета:

  1. Обособленные регистры накопления: создание нетипового регистра накопления с нужным набором измерений позволяет вести детальный управленческий или финансовый учет без перегрузки таблиц итогов регистра бухгалтерии.
  2. Дополнительные реквизиты (БСП): использование механизма дополнительных реквизитов и сведений подходит для аналитики, по которой не требуется расчет сквозных бухгалтерских сальдо и оборотов.
  3. Иерархия и реквизиты объектов: вывод зависимых данных через реквизиты существующих аналитик (например, статья затрат внутри подразделения или договор внутри контрагента) с помощью разыменования полей в отчетах.
← На главную