Программное создание табличного поля на форме и связь его с табличной частью
НовыйЭлемент.Верх = 6;
НовыйЭлемент.Высота = 19;
НовыйЭлемент.Лево = 6;
НовыйЭлемент.Ширина = 800;
НовыйЭлемент.Данные = "NEW__Перечисление";
НовыйЭлемент.ТолькоПросмотр = Ложь;
//НовыйЭлемент.ИзменятьПорядокСтрок = Истина;
НовыйЭлемент.ИзменятьСоставСтрок = Истина;
НовоеПоле= НовыйЭлемент.Колонки.Вставить(0, "Ведомость");
//НовоеПоле.Имя = "Ведомость";
НовоеПоле.УстановитьЭлементУправления(Тип("ПолеВвода"));
НовоеПоле.Данные = "Ведомость";
Пробовал просто через НовыйЭлемент.СоздатьКолонки() . В примерах, которые я нашел, там так и было написано.
ЧЯДНТ? Не ужели нужно добавлять все колонки табличной части в табличное поле руками?
появились новые вопросы:
1) как к добавленным колонкам назначит события? ведь у самой колонки нет никаких событий, а есть только у полей ввода.
2) как обратиться к полю ввода табличного поля через форму?
в документе "Платежное поручение исходящее" есть панель "ПанельПлатежи", у нее есть страницы " — Перечисление ЗП, Выдача подотчетнику и т.д.
Следовательно, никак нельзя связать новые элементы с страницей?
Как временное решение сделал свою новую панель поверх "ПанельПлатежи".
(8) нельзя трогать форму.
и еще, нельзя переопределить событие модуля объекта? Про подписка на события я знаю.
пробовал через ДобавитьОбработчик
и
ДобавитьОбработчик ЭтотОбъект.ПриЗаписи, TEST
Программное создание таблицы формы
Задача в том, чтобы отображать на форме таблицу значений, структура которой может меняться. К примеру в результате запроса к первой таблице мы получаем пять колонок, а в результате запроса ко второй таблице семь колонок. Соответственно при выполнении каждого из запросов, старые колонки нужно убрать, а новые добавить.

Создаем реквизит формы ДанныеТаблицы , тип ТаблицаЗначений , на форму его не выносим. И саму таблицу формы и ее колонки будем создавать программно. Для удобства тестирования добавим еще команду формы СоздатьТаблицу .
Реквизит НомерТаблицы поочередно принимает значение нуля или единицы и нужен лишь для того, чтобы каждый раз получать другую таблицу значений.
Работаем с таблицей значений программно
ТаблицаЗначений — это программный объект встроенного языка, позволяющий строить произвольные наборы данных в памяти компьютера, отображать их в табличном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать).
Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.
Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.
Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.
Таблица значений может использоваться явно при создании в коде необходимого количества переменных типа ТаблицаЗначений , либо неявно: при добавлении элемента управления ТабличноеПоле на обычную форму, и ТаблицаФормы — на управляемую. Здесь мы рассмотрим только программную работу с таблицей значений.
Создание таблицы значений
Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :
Колонки таблицы значений
Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:
- Имя — идентификатор колонки (может содержать только алфавитные символы, цифры и знаки подчеркивания. Причем, начинаться имя колонки может только с буквы или символа подчеркивания);
- Заголовок — представление колонки в диалогах (может содержать произвольные символы);
- ТипЗначения — тип значения содержимого ячеек в этой колонке. Если тип не задан, в ячейке можно хранить значения произвольного типа;
- Ширина — ширина колонки в диалогах;
Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():
Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():
Перебор колонок выполняется следующим образом:
Для удаления колонки используется метод Удалить():
Свойства колонки таблицы значений
| Имя | Тип | Описание |
|---|---|---|
| Имя | Строка | символьный идентификатор колонки, по которому к ней можно обращаться из кода |
| Заголовок | Строка | строковое представление колонки на форме |
| ТипЗначения | ОписаниеТипов | свойство органичивает пространство доступных значений, которые можно указать в данной колонке |
| Ширина | Число | ширина колонки на форме (выражается в количестве символов) |
Методы коллекции колонок таблицы значений
| Вставить() | Вставляет новую колонку в указанную позицию коллекции |
| Добавить() | Добавляет новую колонку в конец коллекции |
| Количество() | Возвращает количество колонок в коллекции |
| Найти() | Ищет колонку в коллекции по имени |
| Очистить() | Удаляет все колонки из коллекции |
| Сдвинуть() | Сдвигает колонку влево или вправо |
| Удалить() | Удаляет колонку из коллекции |
Строки таблицы значений
С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.
Добавление и удаление строк
Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:
И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:
Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():
Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:
Перебор строк таблицы значений
Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :
Поиск строк
В отличие от платформы 1С:Предприятие 7.7 в 8-ке расширен функционал работы с таблицей значений. Поиск можно выполнять не только по значению в колонке (в этом случае будет возвращена первая найденная строка), но и по набору свойств (в этом случае возвращается массив строк):
Все методы таблицы значений:
| Вставить() | Вставляет строку на указанное место |
| ВыбратьСтроку() | Позволяет интерактивно выбрать строку в диалоговом окне |
| ВыгрузитьКолонку() | Выгружает значения ячеек указанной колонки в массив значений |
| Добавить() | Добавлет новую строку в таблицу значений |
| ЗагрузитьКолонку() | Загружает значения в ячейки указанной колонки из массива |
| ЗаполнитьЗначения() | Заполняет ячейки указанных колонок определенным значением |
| Индекс() | Возвращает индекс строки таблицы значений |
| Итог() | Возвращает просуммированный итог по колонке таблицы значений |
| Количество() | Возвращает количество строк в таблице значений |
| Найти() | Выполняет поиск строки по значению |
| НайтиСтроки() | Выполняет поиск строк по указанным параметрам |
| Очистить() | Очищает строки таблицы значений |
| Получить() | Возвращает строку по ее индексу |
| Свернуть() | Выполняет сжатие строк и колонок таблицы значений |
| Сдвинуть() | Сдвигает строку вверх или вниз по таблице |
| Скопировать() | Создает новую таблицу значений копированием текущей |
| СкопироватьКолонки() | Создает новую пустую таблицу значений путем копирования колонок текущей таблицы |
| Сортировать() | Выполняет сортировку строк таблицы значений по указанным колонкам |
| Удалить() | Удаляет строку таблицы значений |
Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева: