No Image

Табличная часть документа в таблицу значений

СОДЕРЖАНИЕ
1 просмотров
11 марта 2020

Маленький IT блог с характером 1С.

Страницы

Поиск по блогу

среда, 10 августа 2016 г.

Загрузка данных табличного документа в таблицу значений

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

Способ основывается на использовании объекта ПостроительОтчета – это объект, позволяющий на основе заданного текста запроса или источника данных, а так же настроек, получить результат и вывести его в табличный документ или диаграмму.

1. Получаем область ячеек табличного документа, которую требуется поместить в таблицу значений. Получение области нужно задавать таким образом, что бы в неё входила строка заголовков колонок (см. рисунок 1), особенность работы объекта ПостроительОтчета.

ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);

Рисунок 1. Область ячеек табличного документа

2. На основе области ячеек табличного документа создаем описание источника данных.

ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);

3. Создаем объект ПостроительОтчета, указываем источник данных вместо текста запроса и выполняем построение отчета.

ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
ПостроительОтчета.Выполнить();

Результат чтения данных из источника после вызова метода Выполнить() находится в свойстве Результат. Данное свойство содержит объект типа РезультатЗапроса, объект такого же типа возвращается при выполнении запроса.

4. Выгрузим результат в таблицу значений (см. рисунок 2), вызвав метод Выгрузить() объекта типа РезультатЗапроса.

Рисунок 2. Таблица значений, созданная на основании табличного документа

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

Итоговый программный код

Функция ПреобразоватьТабличныйДокументВТаблицуЗначений(ТабДокумент)
ПоследняяСтрока = ТабДокумент.ВысотаТаблицы;
ПоследняяКолонка = ТабДокумент.ШиринаТаблицы;
ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
// Создаем описание источника данных на основании области ячеек табличного документа.
ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
// Создаем объект для интеллектуального построения отчетов,
// указываем источник данных и выполняем построение отчета.
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
ПостроительОтчета.Выполнить();
// Результат выгружаем в таблицу значений.
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
Возврат ТабЗначений
КонецФункции

Читайте также:  Apk файлы что это такое

Обработку с реализацией данного способа можно скачать здесь.

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

Также если у вас есть таблица с таким же набором колонок, как и в табличной части, то данные таблицы значений можно загрузить в табличную часть. Для этого применяется метод Загрузить( ), табличной части. Это может потребоваться в случае, если данные для загрузки получаются запросом. И вместо того чтобы обходить результат запроса в цикле, можно просто загрузить его в табличную часть.

Выгрузить табличную часть 1с. Пример

Допустим, что в переменной Ссылка содержится ссылка на документ у которого есть табличная часть Услуги.

Загрузить табличную часть. Пример

Допустим, что в переменной Объект содержится объект документа у которого есть табличная часть Услуги. А в переменной Запрос, содержится запрос собирающий данные для табличной части.

Среди методов таблицы значений нет одноименного метода, который бы позволял выгрузить таблицу значений. Но

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

Давайте на примерах посмотрим, как работает этот метод. Допустим, у нас есть таблица значений со следующей структурой:

Нам требуется получить таблицу, содержащие номенклатуру с категорией «Товары» и вывести пользователю для выбора. Начинающий программист, вероятнее всего, получит эти данные полным перебором. Правильным же будет использование следующего простого кода:

Читайте также:  Аудио конвектор в формат мр3

Полученную таблицу тзКопия можно использовать в дальнейших алгоритмах

Комментировать
1 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector