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