1С 8.3 Выгрузка табличного документа в таблицу значений - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Выгрузка табличного документа в таблицу значений

Данные > Примеры кода 1С > 1С 8.3 Табличный документ / Макет
Конвертация табличного документа в таблицу значений через ПО в 1С 8.3:
Процедура КонвертацияТаблДокВТаблЗначПО(ИмяОбластиЭксель) // Экспорт

   // Например: ИмяОбластиЭксель = ТабДок.Области["Лист1"];

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

   ТЗ = ПО_данные.Результат.Выгрузить();

КонецПроцедуры
Конвертация табличного документа в таблицу значений через ПЗ в 1С 8.3:
Процедура КонвертацияТаблДокВТаблЗначПЗ(ТабДок) // Экспорт

   ИмяОбластиЭксель = ТабДок.Область(1, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы);

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

   ТабДанные = ПЗ_данные.Результат.Выгрузить();

КонецПроцедуры
Конвертация табличного документа в таблицу значений (устаревшие функции) в 1С 8.3:
// Вариант 1
 // По переданному табличному документу возвращает таблицу значений,
 // при условии что в первой строке таблицы - идентификаторы колонок
 // Автор : dimoff
 Функция ПолучитьТЗИзМакета(ТабДок, КолонкаИндекса = 1) Экспорт

     ТаблицаДанных = Новый ТаблицаЗначений;
     НомерКолонки = 0;
     Пока Истина Цикл
         НомерКолонки = НомерКолонки + 1;
         ИмяКолонки = ТабДок.Область(1, НомерКолонки).Текст;
         Если ПустаяСтрока(ИмяКолонки) Тогда
             Прервать;
         КонецЕсли;
         ТаблицаДанных.Колонки.Добавить(ИмяКолонки);
     КонецЦикла;

     СчетчикКолонок = НомерКолонки - 1;

     НомерСтроки = 1; ФлагПрерывания = Ложь;
     Пока Истина Цикл
         НомерСтроки = НомерСтроки + 1;
         Стр = ТаблицаДанных.Добавить();

         Для А = 1 По СчетчикКолонок Цикл
             ТекстКолонки = ТабДок.Область(НомерСтроки, А).Текст;
             Если ПустаяСтрока(ТекстКолонки) Тогда
                 Если А = КолонкаИндекса Тогда
                     Флагпрерывания = Истина;
                     ТаблицаДанных.Удалить(Стр);
                 КонецЕсли;
             Иначе
                 Стр[А - 1] = ТекстКолонки
             КонецЕсли;

             Если Флагпрерывания Тогда
                 Прервать
             КонецЕсли;
         КонецЦикла;

         Если Флагпрерывания Тогда
             Прервать
         КонецЕсли;
     КонецЦикла;

     Возврат ТаблицаДанных
 КонецФункции

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

                 //Добавляем колонку
                 Если Стр=1 Тогда
                     ТЗ.Колонки.Добавить(Зн);
                 Иначе
                     ТекСтр[Кол-1]=Зн;
                 КонецЕсли;
             КонецЦикла;
         КонецЦикла;
      #КонецЕсли
     Возврат ТЗ;
 КонецФункции
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 13.11.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому