// Вариант 1 // По переданному табличному документу возвращает таблицу значений, // при условии что в первой строке таблицы - идентификаторы колонок // Автор : dimoff Функция ПолучитьТЗИзМакета(ТабДок, КолонкаИндекса = 1) Экспорт ТаблицаДанных = Новый ТаблицаЗначений; НомерКолонки = 0; Пока Истина Цикл НомерКолонки = НомерКолонки + 1; ИмяКолонки = ТабДок.Область(1, НомерКолонки).Текст; Если ПустаяСтрока(ИмяКолонки) Тогда Прервать; КонецЕсли; ТаблицаДанных.Колонки.Добавить(ИмяКолонки); КонецЦикла; СчетчикКолонок = НомерКолонки - 1; НомерСтроки = 1; ФлагПрерывания = Ложь; Пока Истина Цикл НомерСтроки = НомерСтроки + 1; Стр = ТаблицаДанных.Добавить(); Для А = 1 ПО СчетчикКолонок Цикл ТекстКолонки = ТабДок.Область(НомерСтроки, А).Текст; Если ПустаяСтрока(ТекстКолонки) Тогда Если А = КолонкаИндекса Тогда Флагпрерывания = Истина; ТаблицаДанных.Удалить(Стр); КонецЕсли; Иначе Стр[А - 1] = ТекстКолонки КонецЕсли; Если Флагпрерывания Тогда Прервать КонецЕсли; КонецЦикла; Если Флагпрерывания Тогда Прервать КонецЕсли; КонецЦикла; Возврат ТаблицаДанных КонецФункции // Варинат 2 //Функция загружает весь макет, табличный документ в таблицу значений //Первая строка содержит подписи колонок (должны быть правильные идентификаторы) //Пустые строки (состоящией из пробелов, переводов строки и т.п.) заменяет на Неопределено //Если в ячейке есть значение, в ячейку таблицы значений попадает именно это значение //Автор : Гений1С Функция обМакетВТаблицуЗначений(Макет) Экспорт Перем ТЗ; ТЗ=Новый ТаблицаЗначений(); #Если Клиент Тогда //Считываем колонки Для Стр=1 По Макет.ВысотаТаблицы Цикл Если Стр>1 Тогда ТекСтр=ТЗ.Добавить(); КонецЕсли; ПустаяСтрока=истина; Для Кол=1 По Макет.ШиринаТаблицы Цикл Яч=Макет.Область(Стр, Кол); Если Яч.СодержитЗначение Тогда Зн=Яч.Значение; Иначе Зн=Яч.Текст; КонецЕсли; Если ТипЗнч(Зн)=Тип("Строка") И ПустаяСтрока(Зн) Тогда Зн=Неопределено; КонецЕсли; //Добавляем колонку Если Стр=1 Тогда ТЗ.Колонки.Добавить(Зн); Иначе ТекСтр[Кол-1]=Зн; КонецЕсли; КонецЦикла; КонецЦикла; #КонецЕсли Возврат ТЗ; КонецФункции