Нумерация колонок субконто при выгрузке набора записей регистра бухгалтерии в таблицу значений

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

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

Создает таблицу значений и копирует в нее записи набора. Структура полученной таблицы совпадает со структурой набора записей. Значения субконто выгружаются вместе с видами субконто. Для каждого субконто создается пара колонок с идентификаторами вида ВидСубконто<Номер>, Субконто<Номер>, для регистра не поддерживающего корреспонденцию, и ВидСубконтоДт<Номер>, СубконтоДт<Номер>, ВидСубконтоКт<Номер>, СубконтоКт<Номер>, для регистра поддерживающего корреспонденцию.

При этом номера <Номер> могут не совпадать с номерами видов субконто на соответствующем счете.

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

Процедура УстановитьСубконтоПоНомерам(Таблица)
Для Каждого Строка Из Таблица Цикл
СоответствиеСубконто=Новый Соответствие;
Для Сч=1 По Строка.СчетКт.ВидыСубконто.Количество() Цикл
СоответствиеСубконто.Вставить(Строка["ВидСубконтоКт"+Сч],Строка["СубконтоКт"+Сч]);
КонецЦикла;
Для Сч=1 По Строка.СчетДт.ВидыСубконто.Количество() Цикл
СоответствиеСубконто.Вставить(Строка["ВидСубконтоДт"+Сч],Строка["СубконтоДт"+Сч]);
КонецЦикла;


ТаблицаСубконто = Строка.СчетДт.ВидыСубконто;
Ном=0;
Для Каждого ТекущаяСтрока Из ТаблицаСубконто Цикл
Ном=Ном+1;
Строка["ВидСубконтоДт"+Ном]=ТекущаяСтрока.ВидСубконто;
Строка["СубконтоДт"+Ном]=СоответствиеСубконто.Получить(ТекущаяСтрока.ВидСубконто);
КонецЦикла;

ТаблицаСубконто = Строка.СчетКт.ВидыСубконто;
Ном=0;
Для Каждого ТекущаяСтрока Из ТаблицаСубконто Цикл
Ном=Ном+1;
Строка["ВидСубконтоКт"+Ном]=ТекущаяСтрока.ВидСубконто;
Строка["СубконтоКт"+Ном]=СоответствиеСубконто.Получить(ТекущаяСтрока.ВидСубконто);
КонецЦикла;


КонецЦикла;

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

 

4 Comments

  1. Alex1Cnic

    Актуально… у меня такая же петрушка…..

    Reply
  2. asbest

    Огромное спасибо!

    Reply
  3. deeper187

    Спасибо!

    Reply
  4. Teruzbat

    Спасибо!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *