helpf.pro
Регистрация
 +6 
Распечатать

Функция загружает весь табличный документ в таблицу значений

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

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

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

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

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

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

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

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

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

//Добавляем колонку
Если Стр=1 Тогда
ТЗ.Колонки.Добавить(Зн);
Иначе
ТекСтр[Кол-1]=Зн;
КонецЕсли;
КонецЦикла;
КонецЦикла;
#КонецЕсли
Возврат ТЗ;
КонецФункции
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 60517
 +6 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э
Посмотреть все результаты поиска похожих
Комментарии
fixin
29.05.2023 08:27Комментарий: 1
fixin

Немного доработал, чтобы можно было добавлять колонки с именами не-идентификаторами, а также с заданной строки с шапкой.

Код 1C v 8.3
 Функция ПолучитьТЗИзМакета(ТабДок, НомерСтрокиШапки, КолонкаИндекса = Неопределено) Экспорт

    ТаблицаДанных = Новый ТаблицаЗначений;

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

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


Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.