Как программно получить номер колонки в скд?

1. Aleksey_Abramov 16.05.24 07:58 Сейчас в теме
Есть отчёт на СКД, в процедуре ПриКомпоновкеРезультата произвожу заполнение табличного документа.
Есть поля: Наименование, Количество, Код и т. д.
Как получить номер колонки табличного документа, в которой находится поле "Код"?

Само собой, в наличии имеется: ДокументРезультат, ДанныеРасшифровки.
По теме из базы знаний
Найденные решения
2. Aleksey_Abramov 16.05.24 10:21 Сейчас в теме
Разобрался сам. Вот пример кода:
// Находим номера необходимых колонок

КоличествоКолонокТаблицы = ДокументРезультат.ШиринаТаблицы;
КоличествоСтрокТаблицы = ДокументРезультат.ВысотаТаблицы;

НомерКолонки_Код = Неопределено;
НомерКолонки_Производитель = Неопределено;
НомераКолонокКодИПроизводительНайдены = Ложь;

Для НомерТекущейСтроки = 1 По КоличествоСтрокТаблицы Цикл
	Для НомерТекущейКолонки = 1 По КоличествоКолонокТаблицы Цикл
		ТекущаяОбласть = ДокументРезультат.Область(НомерТекущейСтроки, НомерТекущейКолонки);
		
		// Если имеется расшифровка ячейки, то проверям наличие полей расшифровки
		Если ТекущаяОбласть.Расшифровка <> Неопределено Тогда
			ПоляРасшифровки = ДанныеРасшифровки.Элементы[ТекущаяОбласть.Расшифровка].ПолучитьПоля();
			Если ПоляРасшифровки.Количество() > 0 Тогда
				ИмяТекущегоПоля = ПоляРасшифровки.Получить(0).Поле;
				Если ИмяТекущегоПоля = "Код" Тогда
					НомерКолонки_Код = НомерТекущейКолонки;
				ИначеЕсли ИмяТекущегоПоля = "Производитель" Тогда
					НомерКолонки_Производитель = НомерТекущейКолонки;
				КонецЕсли;
				
				Если ЗначениеЗаполнено(НомерКолонки_Код) И ЗначениеЗаполнено(НомерКолонки_Производитель) Тогда
					НомераКолонокКодИПроизводительНайдены = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
	КонецЦикла;
	
	Если НомераКолонокКодИПроизводительНайдены Тогда
		Прервать;
	КонецЕсли;
КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Aleksey_Abramov 16.05.24 10:21 Сейчас в теме
Разобрался сам. Вот пример кода:
// Находим номера необходимых колонок

КоличествоКолонокТаблицы = ДокументРезультат.ШиринаТаблицы;
КоличествоСтрокТаблицы = ДокументРезультат.ВысотаТаблицы;

НомерКолонки_Код = Неопределено;
НомерКолонки_Производитель = Неопределено;
НомераКолонокКодИПроизводительНайдены = Ложь;

Для НомерТекущейСтроки = 1 По КоличествоСтрокТаблицы Цикл
	Для НомерТекущейКолонки = 1 По КоличествоКолонокТаблицы Цикл
		ТекущаяОбласть = ДокументРезультат.Область(НомерТекущейСтроки, НомерТекущейКолонки);
		
		// Если имеется расшифровка ячейки, то проверям наличие полей расшифровки
		Если ТекущаяОбласть.Расшифровка <> Неопределено Тогда
			ПоляРасшифровки = ДанныеРасшифровки.Элементы[ТекущаяОбласть.Расшифровка].ПолучитьПоля();
			Если ПоляРасшифровки.Количество() > 0 Тогда
				ИмяТекущегоПоля = ПоляРасшифровки.Получить(0).Поле;
				Если ИмяТекущегоПоля = "Код" Тогда
					НомерКолонки_Код = НомерТекущейКолонки;
				ИначеЕсли ИмяТекущегоПоля = "Производитель" Тогда
					НомерКолонки_Производитель = НомерТекущейКолонки;
				КонецЕсли;
				
				Если ЗначениеЗаполнено(НомерКолонки_Код) И ЗначениеЗаполнено(НомерКолонки_Производитель) Тогда
					НомераКолонокКодИПроизводительНайдены = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
	КонецЦикла;
	
	Если НомераКолонокКодИПроизводительНайдены Тогда
		Прервать;
	КонецЕсли;
КонецЦикла;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот