Ниже приведено несколько полезных шаблонов кода по работе с табличным документом:
Код 1C v 8.х
ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R1C2" ) . Текст = спрНоменклатура. Наименование;
ПолеТабДок. Область( "R2C2" ) . Текст = "Это Строка" ;
Код 1C v 8.х
Для а = 11 по ТабличныйДокумент. ВысотаТаблицы Цикл
текстЯчейка = ТабличныйДокумент. Область( "R" + а+ "C2" ) . Текст;
Если Строка( ТабличныйДокумент. Область( "R" + а+ "C2" ) . ЦветФона) = "стиль: Фон кнопки" Тогда
ТабличныйДокумент. Область( "R" + а+ "C7" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C11" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C8" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C9" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C10" ) . Текст= "" ;
КонецЕсли ;
КонецЦикла ;
Код 1C v 8.х
ТабДок = ЭлементыФормы. ПолеТабличногоДокумента;
ТабДок. Очистить( ) ;
Макет = ПолучитьМакет( "Макет" ) ;
ОбластьСтрокаТаб = Макет. ПолучитьОбласть( "СтрокаТаб" ) ;
ОбластьСтрокаТаб. Параметры. НашПараметр = 1 ;
ОбластьОформления = ТабДок. Вывести( ОбластьСтрокаТаб) ;
ТабДок. Область( ОбластьОформления. Верх, ОбластьОформления. Лево, ОбластьОформления. Низ, ОбластьОформления. Лево) . ЦветФона = WebЦвета. Красный;
Код 1C v 8.х //Пример изменения цвета текста при выводе данных в табличный документ
Таб.ВывестиСекцию("Контрагент");
// Изменим Текст ячейки, имя которой заранее задали как "ТекстОСостоянии"
Таб.Область("ТекстОСостоянии").Текст = "Хорошо ";
// В зависимости от условия изменим Цвет Текста
Если Раз<0 Тогда
Таб.Область(Таб.ВысотаТаблицы(),9,Таб.ВысотаТаблицы(),9).ЦветТекста(255,0,0);
ИначеЕсли Раз>0 Тогда
Таб.Область(Таб.ВысотаТаблицы(),9,Таб.ВысотаТаблицы(),9).ЦветТекста(0,0,255);
КонецЕсли;
Для того, чтобы появилась возможность использовать свойство "Значение", необходимо явно присвоить свойству ячейки "СодержитЗначение" значение Истина или установить флажок "Содержит значение" в палитре свойств.
Для ячейки, у которой установлен признак "СодержитЗначение", можно задать тип значения, размещаемого в ячейке.
Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х МассивБулево = Новый Массив;
МассивБулево. Добавить( Тип( "Булево" ) ) ;
ОписаниеТиповБулево = Новый ОписаниеТипов( МассивБулево) ;
ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R3C3" ) . СодержитЗначение = Истина ;
ПолеТабДок. Область( "R3C3" ) . ТипЗначения = ОписаниеТиповБулево;
ПолеТабДок. Область( "R3C3" ) . Значение = СпрНоменклатура. Услуга;
Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство "Формат", которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат()
Код 1C v 8.х ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R4C3" ) . ТипЗначения = ОписаниеТиповДата;
ПолеТабДок. Область( "R4C3" ) . Значение = ТекущаяДата( ) ;
ПолеТабДок. Область( "R4C3" ) . Формат = "ДФ=[ггММдд-ЧЧмм]-" ;
Элемент управления в табличном документе
Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.
Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом и в ней отображается флажок:
Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х МассивБулево = Новый Массив;
МассивБулево. Добавить( Тип( "Булево" ) ) ;
ОписаниеТиповБулево = Новый ОписаниеТипов( МассивБулево) ;
. . .
ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R5C3" ) . СодержитЗначение = Истина ;
ПолеТабДок. Область( "R5C3" ) . ТипЗначения = ОписаниеТиповБулево;
ПолеТабДок. Область( "R5C3" ) . Значение = СпрНоменклатура. Услуга;
ПолеТабДок. Область( "R5C3" ) . УстановитьЭлементУправления( Тип( "Флажок" ) ) ;
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Разберем самые важные свойства и методы:
Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
Свойство "Видимость" позволяет показать или скрыть элемент управления.
Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.
Код 1C v 8.х ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R4C3" ) . Защита = Истина ;
Как известно, с помощью языка запросов 1С получить уникальный идентификатор объекта ссылочного типа на данный момент нельзя. Но используя возможность СКД обращаться к внешним функциям можно получить строковое представление уникального идентификатора ссылки. Для этого необходимо использовать глобальную функцию XMLСтрока в вычисляемых полях в макете схемы компоновки.
Далее проведем эксперимент по быстродействию получения результата через запрос с последующей обработкой выборки и вариантов с использованием СКД.
Рассмотрим два случая - вывод в табличный документ и формирование текстового документа.
Так же в случае с СКД мы можем создать схему компоновки программно или использовать готовую. Результат работы СКД так же можно обойти в цикле, либо вывести в таблицу значений с последующей обработкой. Для экспериментов будет использоваться платформа 8.3, конфигурация УТ11 (файловая), справочник "КлассификаторБанковРФ", более 4000 элементов.
Схему компоновки и макет можно посмотреть, скачав обработку (ссылка в конце).
Код 1C v 8.2 УП &НаКлиентеНаСервереБезКонтекста
Функция ПолучитьТекстЗапроса()
Возврат "ВЫБРАТЬ
| КлассификаторБанковРФ.Ссылка,
| КлассификаторБанковРФ.Наименование
|ИЗ
| Справочник.КлассификаторБанковРФ КАК КлассификаторБанковРФ" ;
КонецФункции
&НаСервере
Функция ПолучитьСхемуОбработки()
Возврат РеквизитФормыВЗначение( "Отчет" ) . ПолучитьМакет( "Макет" ) ;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСхемуКомпоновки()
Схема = Новый СхемаКомпоновкиДанных;
ИсточникДанных = Схема. ИсточникиДанных. Добавить( ) ;
ИсточникДанных. Имя = "Источник" ;
ИсточникДанных. ТипИсточникаДанных = "Local" ;
НаборДанных = Схема. НаборыДанных. Добавить( Тип( "НаборДанныхЗапросСхемыКомпоновкиДанных" ) ) ;
НаборДанных. Имя = "НаборДанных" ;
НаборДанных. ИсточникДанных = "Источник" ;
НаборДанных. Запрос = ПолучитьТекстЗапроса( ) ;
НаборСсылка = НаборДанных. Поля. Добавить( Тип( "ПолеНабораДанныхСхемыКомпоновкиДанных" ) ) ;
НаборСсылка. Поле = "Ссылка" ;
НаборСсылка. ПутьКДанным = "Ссылка" ;
НаборНаименование= НаборДанных. Поля. Добавить( Тип( "ПолеНабораДанныхСхемыКомпоновкиДанных" ) ) ;
НаборНаименование. Поле = "Наименование" ;
НаборНаименование. ПутьКДанным = "Наименование" ;
ПолеИД = Схема. ВычисляемыеПоля. Добавить( ) ;
ПолеИД. Выражение = "XMLСтрока(Ссылка)" ;
ПолеИД. Заголовок = "ИД" ;
ПолеИД. ПутьКДанным = "ИД" ;
СтрокаТЗ = Схема. НастройкиПоУмолчанию. Структура. Добавить( Тип( "ГруппировкаКомпоновкиДанных" ) ) ;
СтрокаТЗ. Выбор. Элементы. Добавить( Тип( "АвтоВыбранноеПолеКомпоновкиДанных" ) ) ;
ЭлементыВыбора = Схема. НастройкиПоУмолчанию. Выбор. Элементы;
ПолеСсылка = ЭлементыВыбора. Добавить( Тип( "ВыбранноеПолеКомпоновкиДанных" ) ) ;
ПолеСсылка. Поле = Новый ПолеКомпоновкиДанных( "Ссылка" ) ;
ПолеНаименование = ЭлементыВыбора. Добавить( Тип( "ВыбранноеПолеКомпоновкиДанных" ) ) ;
ПолеНаименование. Поле = Новый ПолеКомпоновкиДанных( "Наименование" ) ;
ПолеИД = ЭлементыВыбора. Добавить( Тип( "ВыбранноеПолеКомпоновкиДанных" ) ) ;
ПолеИД. Поле = Новый ПолеКомпоновкиДанных( "ИД" ) ;
Возврат Схема;
КонецФункции
&НаСервереБезКонтекста
Функция ЗаполнитьПоКомпоновкеПрямойОбход(Схема)
Док = Новый ТекстовыйДокумент;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Схема. НастройкиПоУмолчанию, , , Тип( "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений" ) ) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода. УстановитьОбъект( Новый ТаблицаЗначений) ;
ПроцессорВывода. НачатьВывод( ) ;
Пока Истина Цикл
ЭлементКомпоновки = ПроцессорКомпоновки. Следующий( ) ;
Если ЭлементКомпоновки = Неопределено Тогда
Прервать ;
КонецЕсли ;
ПроцессорВывода. ВывестиЭлемент( ЭлементКомпоновки) ;
Если ЭлементКомпоновки. Макет = "Макет2" И ЭлементКомпоновки. ТипЭлемента = ТипЭлементаРезультатаКомпоновкиДанных. НачалоИКонец Тогда
Док. ДобавитьСтроку( ЭлементКомпоновки. ЗначенияПараметров. П2 . Значение + ";" + ЭлементКомпоновки. ЗначенияПараметров. П3 . Значение) ;
КонецЕсли ;
КонецЦикла ;
ТЗ = ПроцессорВывода. ЗакончитьВывод( ) ;
Возврат Док;
КонецФункции
&НаСервере
Функция ЗаполнитьОбходТЗ(ИспользоватьСхемуОбработки)
Если ИспользоватьСхемуОбработки Тогда
Схема = ПолучитьСхемуОбработки( ) ;
Иначе
Схема = ПолучитьСхемуКомпоновки( ) ;
КонецЕсли ;
Возврат ЗаполнитьПоКомпоновкеОбходТЗ( Схема) ;
КонецФункции
&НаСервере
Функция ЗаполнитьПрямойОбход(ИспользоватьСхемуОбработки)
Если ИспользоватьСхемуОбработки Тогда
Схема = ПолучитьСхемуОбработки( ) ;
Иначе
Схема = ПолучитьСхемуКомпоновки( ) ;
КонецЕсли ;
Возврат ЗаполнитьПоКомпоновкеПрямойОбход( Схема) ;
КонецФункции
&НаСервереБезКонтекста
Функция ЗаполнитьПоКомпоновкеОбходТЗ(Схема)
Док = Новый ТекстовыйДокумент;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Схема. НастройкиПоУмолчанию, , , Тип( "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений" ) ) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода. УстановитьОбъект( Новый ТаблицаЗначений) ;
ТЗ = ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
Для Каждого СтрокаТЗ Из ТЗ Цикл
Док. ДобавитьСтроку( СтрокаТЗ. Наименование + ";" + СтрокаТЗ. ИД) ;
КонецЦикла ;
Возврат Док;
КонецФункции
&НаСервереБезКонтекста
Функция ЗаполнитьПоЗапросу()
Док = Новый ТекстовыйДокумент;
Запрос = Новый Запрос( ПолучитьТекстЗапроса( ) ) ;
Результат = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Результат. Следующий( ) Цикл
Док. ДобавитьСтроку( Результат. Наименование + ";" + XMLСтрока( Результат. Ссылка) ) ;
КонецЦикла ;
Возврат Док;
КонецФункции
&НаСервере
Процедура ЗаполнитьТабДокСхема(ИспользоватьСхемуОбработки)
Если ИспользоватьСхемуОбработки Тогда
Схема = ПолучитьСхемуОбработки( ) ;
ТабДок = ТабДок1 ;
Иначе
Схема = ПолучитьСхемуКомпоновки( ) ;
ТабДок = ТабДок2 ;
КонецЕсли ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Схема. НастройкиПоУмолчанию) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ТабДок) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТабДокЗапрос()
Макет = РеквизитФормыВЗначение( "Отчет" ) . ПолучитьМакет( "Отчет" ) ;
ОбластьСтрока = Макет. ПолучитьОбласть( "Строка" ) ;
Запрос = Новый Запрос( ПолучитьТекстЗапроса( ) ) ;
Результат = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Результат. Следующий( ) Цикл
ОбластьСтрока. Параметры. Заполнить( Результат) ;
ОбластьСтрока. Параметры. ИД = XMLСтрока( Результат. Ссылка) ;
ТабДок3 . Вывести( ОбластьСтрока) ;
КонецЦикла ;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьТабДокСхема( Истина ) ;
ЗаполнитьТабДокСхема( Ложь ) ;
ЗаполнитьТабДокЗапрос( ) ;
Т1 = ЗаполнитьПоЗапросу( ) ;
Т2 = ЗаполнитьОбходТЗ( Ложь ) ;
Т3 = ЗаполнитьОбходТЗ( Истина ) ;
Т4 = ЗаполнитьПрямойОбход( Ложь ) ;
Т5 = ЗаполнитьПрямойОбход( Истина ) ;
КонецПроцедуры
По результатам замера производительности видно, что вывод результата в табличный документ происходит быстрее при использовании СКД, причем вариант с программным созданием схемы отрабатывает несколько быстрее.
В тоже время вывод результатов в текстовый документ отрабатывает быстрее для запроса.
Программное создание схемы компоновки отработало быстрее, чем получение макета схемы.
Источник
Пример кода быстрая Печать таблицы значений
Код 1C v 8.х
ПострПечать = Новый ПостроительОтчета;
ПострПечать. ИсточникДанных = Новый ОписаниеИсточникаДанных( ТПОтчета) ;
ПострПечать. МакетОформления = ПолучитьМакетОформления( СтандартноеОформление. Интерфейс) ;
ПострПечать. Выполнить( ) ;
Для каждого Колонка Из ПострПечать. ВыбранныеПоля Цикл
Колонка. Представление = ТПОтчета. Колонки[Колонка. Имя]. Заголовок;
КонецЦикла ;
ПострПечать. Вывести( ) ;
Пример функций Печать таблицы значений с использованием Макета
Код 1C v 8.х
Процедура УниверсальныйОтчетПоТЗ(ТЗ)
Табл= Новый ТабличныйДокумент;
Макет = ЭтотОбъект. ПолучитьМакет( "Макет" ) ;
ОбластьШапкаОсновной= Макет. ПолучитьОбласть( "Шапка|Основной" ) ;
ОбластьСтрокаОсновной= Макет. ПолучитьОбласть( "Строка|Основной" ) ;
ОбластьИтогОсновной= Макет. ПолучитьОбласть( "Итог|Основной" ) ;
ОбластьШапкаДОП= Макет. ПолучитьОбласть( "Шапка|Показатели" ) ;
ОбластьСтрокаДОП= Макет. ПолучитьОбласть( "Строка|Показатели" ) ;
ОбластьИтогДОП= Макет. ПолучитьОбласть( "Итог|Показатели" ) ;
Табл. Вывести( ОбластьШапкаОсновной) ;
Для Каждого Колонка из Тз. Колонки ЦИКЛ
ОбластьШапкаДОП. Параметры. ИмяПоказателя= Колонка. Имя;
Табл. Присоединить( ОбластьШапкаДОП) ;
КонецЦикла ;
счетчик= 0 ;
Для каждого стр из Тз Цикл
счетчик= счетчик+ 1 ;
ОбластьСтрокаОсновной. Параметры. счетчик= счетчик;
Табл. Вывести( ОбластьСтрокаОсновной) ;
Для Каждого Колонка из Тз. Колонки ЦИКЛ
ОбластьСтрокаДОП. Параметры. ЗначениеКолонки= стр[Колонка. Имя];
Табл. Присоединить( ОбластьСтрокаДОП) ;
КонецЦикла ;
КонецЦикла ;
Табл. Вывести( ОбластьИтогОсновной) ;
Для Каждого Колонка из Тз. Колонки ЦИКЛ
ОбластьИтогДОП. Параметры. Итог= Тз. Итог( Колонка. Имя) ;
Табл. Присоединить( ОбластьИтогДОП) ;
КонецЦикла ;
Табл. Показать( ) ;
КонецПроцедуры
Код 1C v 7.x
Процедура ПечатьТЗвТаб(ТЗ, Заголовок = "" ,КолонкиПоНазваниям = 0) Экспорт
Перем ТТЗ;
ТЗ. Выгрузить( ТТЗ) ;
МаксШирина = 50 ;
СпШирина = СоздатьОбъект( "СписокЗначений" ) ;
Для сч = 1 по ТТЗ. КоличествоКолонок( ) Цикл
Если КолонкиПоНазваниям = 0 Тогда
ИмяРек = ТТЗ. ПолучитьПараметрыКолонки( сч) ;
Иначе
ИмяРек = "" ;
ТТЗ. ПолучитьПараметрыКолонки( сч, , , , ИмяРек, ) ;
КонецЕсли ;
СпШирина. ДобавитьЗначение( СтрДлина( ИмяРек) * 1.2 ) ;
КонецЦикла ;
Таб= СоздатьОбъект( "Таблица" ) ;
Таб. ИсходнаяТаблица( "ПечатьТЗ" ) ;
Если СокрЛП( Заголовок) < > "" Тогда
Таб. ВывестиСекцию( "Шапка" ) ;
КонецЕсли ;
Таб. ВывестиСекцию( "Строка|Общая" ) ;
Для сч= 1 по ТТЗ. КоличествоКолонок( ) Цикл
Если КолонкиПоНазваниям = 0 Тогда
ИмяРек = ТТЗ. ПолучитьПараметрыКолонки( сч) ;
Иначе
ИмяРек = "" ;
Ном = "" ;
ТТЗ. ПолучитьПараметрыКолонки( сч, , , , ИмяРек, ) ;
КонецЕсли ;
Таб. ПрисоединитьСекцию( "Строка|Столбец" ) ;
КонецЦикла ;
ВысотаШапки = Таб. ВысотаТаблицы( ) ;
ТТЗ. ВыбратьСтроки( ) ;
Пока ТТЗ. ПолучитьСтроку( ) = 1 Цикл
Ном = ТТЗ. НомерСтроки;
Таб. ВывестиСекцию( "Строка|Общая" ) ;
Выс = Таб. ВысотаТаблицы( ) ;
Для сч= 1 по ТТЗ. КоличествоКолонок( ) Цикл
ИмяРек= ТТЗ. ПолучитьЗначение( Ном, сч) ;
Таб. ПрисоединитьСекцию( "Строка|Столбец" ) ;
Если ТипЗначения( ИмяРек) = 1 Тогда
Обл = Таб. Область( "R" + Выс+ "C" + ( Сч+ 1 ) ) ;
Обл. ГоризонтальноеПоложение( 2 ) ;
КонецЕсли ;
НачШирина = СпШирина. ПолучитьЗначение( Сч) ;
Ширина = СтрДлина( ИмяРек) ;
СпШирина. УстановитьЗначение( Сч, Макс( НачШирина, Ширина) ) ;
КонецЦикла ;
КонецЦикла ;
Для сч = 1 по СпШирина. РазмерСписка( ) Цикл
Обл = Таб. Область( "R" + ВысотаШапки+ "C" + ( Сч+ 1 ) ) ;
Ширина = Мин( МаксШирина, 2 + СпШирина. ПолучитьЗначение( Сч) ) ;
Обл. ШиринаСтолбца( Ширина) ;
Обл. Полужирный( 1 ) ;
КонецЦикла ;
Таб. Показать( Заголовок) ;
Таб. ТолькоПросмотр( 1 ) ;
КонецПроцедуры
ИЛИ
Код 1C v 7.x Процедура глВывестиТаблицуЗначений(ТаблицаЗначений, Заголовок = "" ) Экспорт
Перем Таб, ИИ, ЖЖ, НазваниеКолонки, ТипКолонки, Ширина, Значение, Сообщение;
Таб = СоздатьОбъект( "Таблица" ) ;
Если ТипЗначенияСтр( ТаблицаЗначений) < > "ТаблицаЗначений" Тогда
Сообщение = "В процедуру "" глВывестиТаблицуЗначений()"" передана переменная не типа "" ТаблицаЗначений"" , " +
"а типа "" " + СокрЛП( ТипЗначенияСтр( ТаблицаЗначений) ) + """ " ;
Таб. Область( 1 , 1 , 1 , 1 ) . Текст = Сообщение;
Таб. Область( 1 , 1 , 1 , 1 ) . ШиринаСтолбца( СтрДлина( Сообщение) ) ;
Таб. ТолькоПросмотр( 1 ) ;
Таб. Показать( "Не таблица значений: " + Заголовок) ;
Возврат ;
КонецЕсли ;
Для ЖЖ = 1 по ТаблицаЗначений. КоличествоКолонок( ) цикл
ТаблицаЗначений. ПолучитьПараметрыКолонки( ЖЖ, , , , НазваниеКолонки) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . Текст = СокрЛП( НазваниеКолонки) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . РамкаОбвести( 5 , 5 , 5 , 5 ) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . ВертикальноеПоложение( 3 ) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . ГоризонтальноеПоложение( 3 ) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . РазмерШрифта( 7 ) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . Полужирный( 1 ) ;
Ширина = Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . ШиринаСтолбца( ) ;
Ширина = Макс( Ширина, СтрДлина( СокрЛП( НазваниеКолонки) ) ) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . ШиринаСтолбца( Ширина) ;
КонецЦикла ;
Для ИИ = 1 по ТаблицаЗначений. КоличествоСтрок( ) цикл
Для ЖЖ = 1 по ТаблицаЗначений. КоличествоКолонок( ) цикл
Значение = ТаблицаЗначений. ПолучитьЗначение( ИИ, ЖЖ) ;
Таб. Область( ИИ+ 1 , ЖЖ, ИИ+ 1 , ЖЖ) . Текст = Значение;
Таб. Область( ИИ+ 1 , ЖЖ, ИИ+ 1 , ЖЖ) . Расшифровка( Значение, 0 ) ;
Таб. Область( ИИ+ 1 , ЖЖ, ИИ+ 1 , ЖЖ) . РамкаОбвести( 3 , 0 , 3 , 0 ) ;
Ширина = Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . ШиринаСтолбца( ) ;
Ширина = Макс( Ширина, СтрДлина( СокрЛП( Строка( Значение) ) ) ) ;
Таб. Область( 1 , ЖЖ, 1 , ЖЖ) . ШиринаСтолбца( Ширина) ;
ТаблицаЗначений. ПолучитьПараметрыКолонки( ЖЖ, ТипКолонки) ; ;
Если ТипКолонки = "Число" тогда
Таб. Область( ИИ+ 1 , ЖЖ, ИИ+ 1 , ЖЖ) . ГоризонтальноеПоложение( 2 ) ;
КонецЕсли ;
Если ИИ = ТаблицаЗначений. ТекущаяСтрока( ) тогда
Таб. Область( ИИ+ 1 , ЖЖ, ИИ+ 1 , ЖЖ) . ЦветФона( 255 , 0 , 0 ) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
Таб. ТолькоПросмотр( 1 ) ;
Таб. Показать( "Таблица значений: " + Заголовок) ;
КонецПроцедуры