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

Публикация № 978971

Программирование - Универсальные функции

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

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

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

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

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

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

 

5

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Alex1Cnic 125 24.01.19 16:57 Сейчас в теме
Актуально... у меня такая же петрушка.....
2. asbest 27.06.19 01:52 Сейчас в теме
Оставьте свое сообщение