Меню Закрыть

1С перебор строк таблицы формы

Содержание

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

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

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

Справка

УправляемаяФорма.ИзменитьРеквизиты()

  • ДобавляемыеРеквизиты (необязательный, тип Массив ). Массив, содержащий объекты типа РеквизитФормы . Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками. К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтотОбъект .
  • УдаляемыеРеквизиты (необязательный, тип Массив ). Массив, содержащий строки, описывающие пути к удаляемым реквизитам. Удалять можно только ранее программно добавленные реквизиты.
  • Изменяет структуру реквизитов формы. Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём.
  • Внимание! Действия добавления и удаления выполняются за один вызов. Следует учитывать, что операция изменения состава реквизитов является ресуркоемкой, поэтому операции изменения состава реквизитов формы выполняются пакетным образом.
  • Сервер, мобильное приложение (сервер).

ВсеЭлементыФормы.Добавить()

  • Имя (обязательный, тип Строка ). Уникальное имя добавляемого элемента.
  • ТипЭлемента (обязательный, тип Тип ). Тип добавляемого элемента.
  • Родитель (необязательный, тип: ГруппаФормы ; ТаблицаФормы ; УправляемаяФорма ). Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.
  • Тип: ДекорацияФормы ; ГруппаФормы ; КнопкаФормы ; ТаблицаФормы ; ПолеФормы .
  • Добавляет элемент в коллекцию.
  • Сервер, мобильное приложение (сервер).

Nav view search

Navigation

Search

Обработка табличных частей для 1с 8.3

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

Читайте также:  Nfs pro street вылетает

Создадим новую обработку через конфигуратор.

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

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

Вид — в зависимости от предназначения обработки может принимать значения:

  • Отчет
  • ЗаполнениеОбъекта
  • Печатная форма
  • Дополнительная обработка
  • СозданиеСвязанныхОбъектов
  • Дополнительный отчет

В нашем случае для обработки заполнения табличной части нам необходим вид обработки «ЗаполнениеОбъекта»

Назначение — в этом поле перечисляются документы, для которых эта обработка предназначена (в которых она появится после регистрации в информационной базе). Для перечисления этих документов создадим массив «Назначения» и добавим в него документ «ТребованиеНакладная».

Наименование — это наименование будет отображаться в списке дополнительных обработок.

Версия — версия нашего нового программного продукта.

Информация — этот ключ нашей структуры содержит дополнительную информацию о нашей обработке.

Безопасный режим — принимает значение Истина/Ложь. Мы будем использовать безопасный режим.

Команды — этот ключ структуры содержит перечень поставляемых нашей обработкой команд. Для команд мы создадим функцию ПолучитьТаблицуКоманд() и процедуру ДобавитьКоманду().

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

Представление — это представление команды для пользователя: какое название для него будет представлено в интерфейсе.

Идентификатор — это внутренний идентификатор команды в пределах нашей обработки

Использование — в зависимости от использования команды может принимать значения:

  • ВызовСерверногоМетода — из модуля обработки вызывается серверная процедура.
  • ОткрытиеФормы — используется для открытия формы обработки.
  • ВызовКлиентского метода — для вызова клиентской процедуры из модуля обработки.
  • СценарийвБезопасномРежиме — серверная процедура в безопасном режиме.

В нашем случае мы работаем с формой объекта 1С 8.3, поэтому нам необходимо использовать ВызовКлиентскогоМетода для вызова команды внешней обработки.

ПоказыватьОповещение — имеет одно из двух значений: Истина/Ложь.
Модификатор — дополнительный модификатор команды.

Читайте также:  Что делать если тебя некому фотографировать

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

В открывшейся форме добавим процедуры полезного действия, цель — добавлять в табличную часть остатки по счету 10.Х:

Главная процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив), остальной код вызывается отсюда.

Готово, теперь сохраняем обработку идем в режиме 1с:предприятие в меню Администрирование — Печатные формы, отчеты и обработки — Дополнительные обработки — Добавляем в список нашу обработку

Проверяем работу, в документе "тебования-накладная" появится новое меню "Заполнить документ":

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

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

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

Таблица значений используется в двух случаях:

  1. При работе с формами: при размещении на форме элемент управления типа ТаблицаЗначений , он автоматически связывается с одноименным объектом встроенного языка ТаблицаЗначений ;
  2. При работе с кодом: для хранения каких-либо многострочных списочных данных вы создаете нужное количество объектов типа ТаблицаЗначений ;

Создание таблицы значений

Как и все объекты агрегатного типа, таблица значений создается с помощью функции СоздатьОбъект() встроенного языка:

Инициализация таблицы значений

Инициализация объекта выполняется в три этапа:

  1. Добавление колонок
  2. Добавление строки
  3. Установка значений ячеек

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

Читайте также:  Связной кукуруза дебетовая карта

Как Вы успели заметить, вместе с названием колонки задается и тип значений.

После того, как Вы добавили колонки, можно добавлять строки. Делается это с помощью метода НоваяСтрока():

Теперь переменная тз спозиционирована на добавленную строку и мы можем приступить к заполнению ячеек:

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

Манипуляция значениями строк таблицы

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

Перебор строк таблицы значений

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

Также можно организовать перебор с помощью оператора цикла Для, где в качестве ограничителя цикла используется количество строк таблицы, возвращаемое методом КоличествоСтрок():

Атрибуты объекта ТаблицаЗначений

НомерСтроки атрибут содержит номер текущей строки таблицы
атрибут содержит значение текущей ячейки таблицы

Методы объекта ТаблицаЗначений

НоваяКолонка() метод добавляет новую колонку в конец таблицы
ВставитьКолонку() метод вставляет новую колонку в указанное место в таблице
УдалитьКолонку() метод удаляет указанную колонку из таблицы
КоличествоКолонок() метод возвращает количество колонок в таблице
НоваяСтрока() метод добавляет новую строку в конец таблицы
ВставитьСтроку() метод вставляет новую строку в указанное место в таблице
УдалитьСтроку() метод удаляет указанную строку из таблицы
КоличествоСтрок() метод возвращает количество строк в таблице
НайтиЗначение() метод выполняет поиск значения в ячейках таблицы
ВыбратьСтроки() метод формирует последовательную выборку строк таблицы значений
ПолучитьСтроку() метод получает следующую строку из ранее сформированной выборки
ПолучитьСтрокуПоНомеру() метод позиционирует объект на указанной строке
* — в таблице перечислены не все методы таблицы значений.

Хочется отметить, что объекты типа ТаблицаЗначений не хранятся в информационной базе.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.