1с получить данные из табличного документа

Обновлено: 07.07.2024

Значения ячеек и элементы управления в табличном документе

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

Ниже рассмотрены следующие темы:

  • Свойства "Текст" и "Значение"
  • Свойство "Формат"
  • Элементы управления
    • Элементы управления, встроенные в ячейку
    • Элементы управления, не встроенные в ячейку
    • Расширение элементов управления, расположенных в поле табличного документа

    Свойства "Текст" и "Значение" ячейки табличного документа

    Основные свойства у каждой ячейки табличного документа — это Текст и Значение , причем по умолчанию доступно свойство Текст , а свойство Значение заблокировано.

    ВАЖНО! Свойства Текст и Значение не могут быть использованы одновременно! Если свойство-признак СодержитЗначение установлено в значение Истина , то свойство Текст недоступно, и наоборот, если свойство-признак СодержитЗначение равно Ложь , то свойство Значение недоступно, а также все связанные другие свойства, например, ТипЗначения и ЭлементУправления .

    Ниже на рисунке показана палитра свойств для ячейки табличного документа. Обратите внимание, что флажок Содержит значение не установлен, поэтому данная ячейка будет отображать Текст .


    Свойство Текст имеет тип Строка . Если в ячейке необходимо разместить какую-либо текстовую информацию, необходимо использовать именно свойство Текст , например:

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

    Для того чтобы появилась возможность использовать свойство Значение , необходимо явно присвоить свойству ячейки СодержитЗначение значение Истина или установить флажок Содержит значение в палитре свойств, как это показано на следующем рисунке:


    Для ячейки, у которой установлен признак СодержитЗначение , можно задать тип значения, размещаемого в ячейке. На следующем рисунке указан тип Строка , но есть также возможность указать несколько возможных типов, используя составной тип данных:


    Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка:

    Свойство "Формат" ячейки табличного документа

    Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство Формат , которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат() системы "1С:Предприятие 8". Свойство Формат может быть установлено как интерактивно — через палитру свойств, так и программно — из встроенного языка, например:

    Элемент управления в табличном документе

    Элементы управления, встроенные в ячейку

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

    Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода УстановитьЭлементУправления() . Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство ЭлементУправления , которое возвращает элемент управления, назначенный для ячейки.

    Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом, и в ней отображается флажок:


    Ниже показан пример установки элемента управления типа Флажок из встроенного языка:

    Элементы управления, не встроенные в ячейку

    Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его "привязка" к нужной ячейке. В этом случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.


    Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):

    В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:

    Расширение элементов управления, расположенных в поле табличного документа

    Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:


    Разберем самые важные свойства и методы:

    • Свойство ВстроенВЯчейку имеет тип Булево и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
    • Свойство Видимость позволяет показать или скрыть элемент управления.
    • Свойство Значение предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
    • Метод Расположить позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.

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

    Свойство "Защита" ячейки табличного документа

    Это свойство имеет тип Булево и содержит признак защиты ячейки от редактирования. В режиме просмотра в табличном документе недоступны для редактирования ячейки и рисунки, у которых установлено свойство Защита .

    Обработка "Обработка чтения табличного документа" - предназначена для перевода данных из табличного документа в таблицу значений. Основное назначение для программиста и обращение подразумевается на сервере как к встроенной обработке. Для проверки работоспособности реализована управляемая форма обработки.

    Возможности:

    • Чтение табличного документа из файлов (без использования стороннего ПО и API);
    • Чтение табличного документа загружаемого в реквизит обработки.

    Реквизиты обработки, которые заполняются при вызове основной функции «ЗагрузитьДокументВТаблицуНаСервере»:

    • Путь к файлу – указывается путь к файлу табличного документа (например, Таблица Excel);
    • Табличный документ – заполняется табличным документов, который нужно прочитать (например, макет объекта или уже ранее считанный табличный документ из файла;
    • Строка начала данных – строка табличного документа, с которой начинаются данные. Как правило это 2-ая строка, по строке, предшествующей указанной будет сформирована шапка таблицы значения;
    • Таблица значений – результат чтения табличного документа.

    Уникальностью данной обработки является простота чтения табличного документа.

    Код модуля обработки отвечающий за чтение табличного документа и формирования таблицы значений

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

    Процедура ПрочитатьТабДокВТЗ(Кнопка) // Определение таблицы значений ТЗизТабДока = Новый ТаблицаЗначений; ТЗизТабДока.Колонки.Добавить("Наименование"); ТЗизТабДока.Колонки.Добавить("Код"); // Чтение табличного документа (например файл Excel) ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Текст); мВысотаТабличногоДокумента = ТабДок.ВысотаТаблицы; // Обход строк табличного документа и заполнение таблицы значений Для Строка = 2 По мВысотаТабличногоДокумента Цикл НоваяСтр = ТЗизТабДока.Добавить(); НоваяСтр.Наименование = ПолучитьСодержаниеЯчейки(ТабДок, Строка, 1); НоваяСтр.Код = ПолучитьСодержаниеЯчейки(ТабДок, Строка, 2); КонецЦикла; КонецПроцедуры Функция ПолучитьСодержаниеЯчейки(пТабличныйДокумент, Строка, Колонка) Если Колонка = 0 Тогда Возврат ""; КонецЕсли; мСодержание = пТабличныйДокумент.Область("R" + Формат(Строка,"ЧГ=") + "C" + Формат(Колонка,"ЧГ soc-butt-wrap centered">

    Распечатать

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

    Еще в этой же категории

    Вывод картинки (изображения) на печать, в макет (табличный документ)  32
    // 1-й вариант //Как вывести картинку в табличный документ? ТабДок = Новый ТабличныйДокумент; Макет = ОбработкаОбъект.ПолучитьМакет(" Макет" ); ОбластьКартинки = Макет.ПолучитьОбласть(" ОбластьСКартинкой" ); Картинка = Новый Картинка(ПутьККа Вывести табличный документ в PDF  18
    Данный пример работает на платформе выше 8.2.13 Макет = ПолучитьМакет(" Макет" ); ОбластьШапка = Макет.ПолучитьОбласть(" Шапка" ); ТабДок = Новый ТабличныйДокумент; ОбластьШапка.Параметры.НомерДок = Номер; ОбластьШапка.Параметры.ДатаДок = Как в отобразить картинку в табличной части  7
    В табличной части есть документы заявки от покупателя, нам нужно добавить картинку для отображения статуса документов заявка - проведен , не проведен, помечен на удаление. //Отобразим картинку Процедура СписокПриВыводеСтроки(Элемент, Оформление Вывод колонтитулов программно ВерхнийКолонтитул, НижнийКолонтитул  6
    Колонтитул является специальным текстом, выводимым вверху или внизу каждой страницы при выводе документа на печать. В тексте колонтитула можно использовать следующие управляющие конструкции: > ( >) - при печати в данном месте будет выведен номер ст Как программно изменить текст, цвет, фон ячейки или области табличного документа?  6
    Ниже приведено несколько полезных шаблонов кода по работе с табличным документом: //Пример получения текста ячейки ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование; ПолеТабДок Посмотреть все в категории Табличный документ

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

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

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


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

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

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

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


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

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

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

    Читайте также: