Перебрать ячейки табличного документа 1с

Обновлено: 03.07.2024

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

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

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

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

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

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

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

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


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

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

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


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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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


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

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

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

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

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

    Процедура, которая "примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего:
    Код 1C v 8.х

    Очень полезная штука при условии, что у Вас заранее невозможно определить размер итоговых колонок в печатной форме. А так, надо просто "натравить" процедуру с соответствующими параметрами на нужные ячейки таблицы, и они сами "выровняются" и приобретут необходимый размер (ширину).

    Разместил: E_Migachev  Версии: | 7.x | 8.x |  Дата: 06.12.2009   Прочитано: 61314

    Распечатать

    Похожие FAQ

    1C и Google Maps  20
    была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш Google maps : вывод точек на карту и режим панорамы  7
    В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум)  2
    Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз Библиотека кода: Сравнить две таблицы значений   0
    //Сравнивает две таблицы значений // Функция ТаблицыЗначенийРавны(ТаблицаЗначений1, ТаблицаЗначений2) Экспорт Если ТипЗнч(ТаблицаЗначений1) Тип("ТаблицаЗначений") ИЛИ ТипЗнч(ТаблицаЗначений2) Тип("ТаблицаЗначений") Тогда Возв Быстрая выгрузка отчетов в Excel, наложение Фильта и отображение ярлыка  0
    Вместо Таб.Показать() используем глобальную функцию - и отчет показывается сразу в Excel в удобоваримом виде - с форматированием колонок по ширине, автофильтром и ярлычками листов Процедура глОткрытьВЭкселе(Таб,ИмяФайла=" " ,НеИзменятьВысотуСтроки=0 Посмотреть все результаты поиска похожих

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

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

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

    Рассмотрим некоторые приемы работы с табличными частями.

    Как обойти табличную часть

    Для обхода табличной части можно использовать цикл Для каждого

    Для каждого Строка из ТабличнаяЧасть Цикл

    На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.

    Как получить и обойти выделенные строки табличной части

    Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.

    Работа с табличной частью объектов в 1С

    Для получения перечня выделенных строк используется следующий код:

    ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;

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

    ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;

    Для каждого Строка из ВыделенныеСтроки Цикл

    Как программно выделить строки табличной части (табличного поля) и снять выделение

    Чтобы программно снять выделение строк табличного поля:

    Чтобы программно выделить все строки табличного поля:

    Как очистить табличную часть

    Как получить текущую строку табличной части

    Для обычных форм код будет выглядеть так:

    Для управляемых форм:

    Как добавить новую строку в табличную часть

    Добавление новой строки в конец табличной части:

    Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):

    НоваяСтрока . Реквизит 1 = "Значение" ;

    Как программно заполнить реквизиты строки табличной части

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

    Создаваемая обработчиком процедура имеет три параметра:

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

    //Если пользователь редактирует существующую строку, то ничего не делаем
    Если НЕ НоваяСтрока Тогда
    Возврат ;
    КонецЕсли ;

    //Если же строка новая, устанавливаем счет учета
    ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
    ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
    КонецПроцедуры

    Работа с табличной частью объектов в 1С : 13 комментариев

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

    Спасибо!
    Буду пробовать.

    А может это подойдет?

    Табличная часть (Tabular section)
    Итог (Total)
    Синтаксис:

    Тип: Число; Строка.
    Индекс либо имя колонки, по которой подсчитывается итог.
    Возвращаемое значение:

    Тип: Число; Неопределено.

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

    Сервер, толстый клиент, внешнее соединение.
    Пример:

    Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.

    Добрый день!
    Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?

    Не совсем понял, о чем конкретно вопрос.
    Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.

    Здравствуйте!
    Опишу вкратце ситуацию:
    Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

    &НаСервере
    Функция Заполнялка(ДокСсылка) Экспорт
    ТабДокумент = Новый ТабличныйДокумент;

    ТабДокумент.АвтоМасштаб = истина ;
    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.ТолькоПросмотр = Истина;
    ТабДокумент.ОтображатьЗаголовки = Ложь;

    ЧтоТо = Стр.СерийныйНомер;
    ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;

    Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.

    Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?

    Доброго времени суток!
    Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
    Может у Вас есть видео по данному вопросу?

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