- 1с загрузить колонку таблицы значений
- Первый вариант выгрузки — копирование
- Синтаксис
- Параметры
- Описание
- Доступность
- Пример использования
- Заполнение колонки в табличной части документа
- Быстрое заполнение колонки (табличной части)
- Работаем с таблицей значений программно
- Создание таблицы значений
- Колонки таблицы значений
- Свойства колонки таблицы значений
- Методы коллекции колонок таблицы значений
- Строки таблицы значений
- Добавление и удаление строк
- Перебор строк таблицы значений
- Поиск строк
- Все методы таблицы значений:
- Дополнительная вычисляемая колонка в табличной части
- Дополнительная вычисляемая колонка в табличной части
- Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)
- Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)
- Как добавить реквизит объекта в таблицу формы
1с загрузить колонку таблицы значений
Таблицу значений можно выгрузить (скопировать) для обработки в новую таблицу значений четырьмя способами:
- использовать метод Скопировать()двумя вариантами синтаксиса;
- методом перебора, когда таблица заполняется построчно по сложному отбору или алгоритму;
- выгрузить таблицу во внутренне значение и преобразовать обратно;
- через CериализаторXDTO.
Первый вариант выгрузки — копирование
Для начала, инициализируем тестовую таблицу с двумя колонками и двумя строками
Загружает значения в колонку таблицы значений из массива.
Синтаксис
Метод ЗагрузитьКолонку() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров метода ЗагрузитьКолонку() :
Имя параметра | Тип | Описание |
---|---|---|
Массив | Массив | Массив значений, который выступает в качестве источника данных для колонки. |
Колонка | Число | Индекс колонки таблицы значений |
Строка | Имя колонки таблицы значений | |
КолонкаТаблицыЗначений | Колонка таблицы значений | |
Жирным шрифтом выделены обязательные параметры |
Описание
Метод ЗагрузитьКолонку() загружает значения в колонку таблицы значений из массива значений. Значения из массива загружаются в колонку в порядке следования индексов.
Доступность
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример использования
Пример кода с использованием метода ЗагрузитьКолонку() :
Описание:
Таблица значений — это несохраняемый в базе данных объект, который позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одной таблице типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Необходимо отметить, что таблица значений, связанная с элементом управления ТабличноеПоле, будет иметь все колонки, имеющиеся в табличном поле, с соответствующими именами. Кроме того, таблица значений может иметь также и собственные колонки, не отображаемые в табличном поле, при этом их имена должны отличаться от имен колонок табличного поля.
Элементы коллекции: СтрокаТаблицыЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс строки (нумерация с 0).
Источник
Заполнение колонки в табличной части документа
Здравствуйте. Платформа 8.2. УТ 10.3. Документ ПТиУ. Клиент попросил в табличную часть добавить колонку, где бы фиксировалось, что данный товар считан сканером ШК. Т.е. значение типа булево. Считан — ИСТИНА, не считан — ЛОЖЬ. Т.е. при приемке товаров пробежались СШК по товарам, где остались пустые значения — разбираемся. Сохранения этой колонки не требуется. Вопрос: как заполнить данную колонку, не создавая дополнительных реквизитов в документе?
PS: Я так думаю, что нужно двигаться в сторону массива. Тогда вопрос — как связать строки документа с массивом?
(1) Kott01
Колонку можно создать при открытии формы:
Но при таком раскладе данные колонки сохранятся не будут.
(5) Allexe8.1, (8) agrustny,
Торможу. Подскажите, пожалуйста, в каком модуле нужно создавать (объявлять) таблицу значений. Сделал ПриОткрытии() — из других модулей ТЗ не видна.
ЗЫ: Разобрался — забыл объявить переменную
НайтиСтроки (FindRows)
Синтаксис:
НайтиСтроки( )
Параметры:
(обязательный)
Тип: Структура. Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры — искомое значение.
Возвращаемое значение:
Тип: Массив. Массив из строк табличной части, соответствующих заданному условию поиска.
Замечание! Массив хранит ссылки на строки табличной части, то есть при изменении строки в табличной части, значение в массиве тоже будет изменено.
Описание:
Осуществляет поиск строк табличной части, соответствующих заданному условию поиска.
Значит ссылка на строку существует))))
Всем спасибо за рекомендации. Разобрался. Единственное не получилось использовать флажок. Т.к. может кому-нибудь пригодиться расписываю, что и как сделал. Напомню задачу: есть предварительно сформированный документ ПТиУ. Нужно сверить ШК из реального поступления с документом ПТиУ. Т.к. может быть пересорт (при приемке визуально не выявлен) и т.д.
1. Создаю копию формы документа и переименовываю в «ФормаДокументаШК». Делаю ее основной.
2.В форме документа, в диалоге в табличной части создаю новую колонку «ШКСчитан». Элемент управления «Поле ввода»
3. В продедуру «ПриОткрытии()» добавляем код:
В итоге при считывании ШК в колонке «ШКСчитан» появляется признак «ШК». Если есть товар, но не было считывания ШК, то в колонке — «—«
Источник
Быстрое заполнение колонки (табличной части)
Полная инструкция во вложении.
Инструкция «Быстрое заполнение колонки»
В большинстве документов, которые поддерживают подключение внешних обработок по обработке табличных частей, добавлена возможность быстро обрабатывать колонку табличной части, когда строк очень много (для этого достаточно подключить эту обработку, и выдать инструкцию пользователям).
В обработке присутствую два вида действия с «колонкой»:
- «Все строки одинаковы по данной колонке», значит, что вся колонка в табличной части заполнится одинаковыми данными (к примеру, в документе «Поступление товаров и услуг» колонку «Счет затрат (БУ)» заполнить счетом «25.01»)
- «Для каждой строки из другой колонки», значит, что по соответствию типов для каждой строки индивидуально, данные из одной колонки перенесутся в другую (к примеру, в документе «Поступление товаров и услуг» данные из колонки «подразделение организации» перенести в колонку «Субконто 1»).
В поле «Новые данные» с помощью кнопки «три точки» выбираем значение, которое будет во всех строках табличной части выбранной колонки (поле доступно, когда выбран вариант заполнения «Все строки одинаковы по данной колонке»).
В поле «Другая колонка данного типа» с помощью кнопки «три точки» выбираем колонку, из которой данные будет перенесены в колонку, которая выбрана для изменения (поле доступно, когда выбран вариант заполнения «Для каждой строки из другой колонки»).
Источник
Работаем с таблицей значений программно
ТаблицаЗначений — это программный объект встроенного языка, позволяющий строить произвольные наборы данных в памяти компьютера, отображать их в табличном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать).
Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.
Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.
Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.
Таблица значений может использоваться явно при создании в коде необходимого количества переменных типа ТаблицаЗначений , либо неявно: при добавлении элемента управления ТабличноеПоле на обычную форму, и ТаблицаФормы — на управляемую. Здесь мы рассмотрим только программную работу с таблицей значений.
Создание таблицы значений
Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :
Колонки таблицы значений
Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:
- Имя — идентификатор колонки (может содержать только алфавитные символы, цифры и знаки подчеркивания. Причем, начинаться имя колонки может только с буквы или символа подчеркивания);
- Заголовок — представление колонки в диалогах (может содержать произвольные символы);
- ТипЗначения — тип значения содержимого ячеек в этой колонке. Если тип не задан, в ячейке можно хранить значения произвольного типа;
- Ширина — ширина колонки в диалогах;
Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():
Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():
Перебор колонок выполняется следующим образом:
Для удаления колонки используется метод Удалить():
Свойства колонки таблицы значений
Имя | Тип | Описание |
---|---|---|
Имя | Строка | символьный идентификатор колонки, по которому к ней можно обращаться из кода |
Заголовок | Строка | строковое представление колонки на форме |
ТипЗначения | ОписаниеТипов | свойство органичивает пространство доступных значений, которые можно указать в данной колонке |
Ширина | Число | ширина колонки на форме (выражается в количестве символов) |
Методы коллекции колонок таблицы значений
Вставить() | Вставляет новую колонку в указанную позицию коллекции |
Добавить() | Добавляет новую колонку в конец коллекции |
Количество() | Возвращает количество колонок в коллекции |
Найти() | Ищет колонку в коллекции по имени |
Очистить() | Удаляет все колонки из коллекции |
Сдвинуть() | Сдвигает колонку влево или вправо |
Удалить() | Удаляет колонку из коллекции |
Строки таблицы значений
С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.
Добавление и удаление строк
Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:
И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:
Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():
Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:
Перебор строк таблицы значений
Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :
Поиск строк
В отличие от платформы 1С:Предприятие 7.7 в 8-ке расширен функционал работы с таблицей значений. Поиск можно выполнять не только по значению в колонке (в этом случае будет возвращена первая найденная строка), но и по набору свойств (в этом случае возвращается массив строк):
Все методы таблицы значений:
Вставить() | Вставляет строку на указанное место |
ВыбратьСтроку() | Позволяет интерактивно выбрать строку в диалоговом окне |
ВыгрузитьКолонку() | Выгружает значения ячеек указанной колонки в массив значений |
Добавить() | Добавлет новую строку в таблицу значений |
ЗагрузитьКолонку() | Загружает значения в ячейки указанной колонки из массива |
ЗаполнитьЗначения() | Заполняет ячейки указанных колонок определенным значением |
Индекс() | Возвращает индекс строки таблицы значений |
Итог() | Возвращает просуммированный итог по колонке таблицы значений |
Количество() | Возвращает количество строк в таблице значений |
Найти() | Выполняет поиск строки по значению |
НайтиСтроки() | Выполняет поиск строк по указанным параметрам |
Очистить() | Очищает строки таблицы значений |
Получить() | Возвращает строку по ее индексу |
Свернуть() | Выполняет сжатие строк и колонок таблицы значений |
Сдвинуть() | Сдвигает строку вверх или вниз по таблице |
Скопировать() | Создает новую таблицу значений копированием текущей |
СкопироватьКолонки() | Создает новую пустую таблицу значений путем копирования колонок текущей таблицы |
Сортировать() | Выполняет сортировку строк таблицы значений по указанным колонкам |
Удалить() | Удаляет строку таблицы значений |
Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:
Источник
Дополнительная вычисляемая колонка в табличной части
Дополнительная вычисляемая колонка в табличной части
Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)
В начале коротко о том, как добавить дополнительную колонку в табличное поле на платформе 1С 8.1.
Предположим, что у нас есть некий документ с табличной частью “Товары” (с колонками “Номенклатура” и “Количество”) и нам нужно вывести дополнительную колонку “Цена”, которая бы содержала данные реквизита “Цена” элементов справочника “Номенклатура”, выбранных в строках табличной части.
Для этого нам достаточно добавить в форме документа новую колонку “Цена” в табличное поле, содержащее данные табличной части документа и написать следующий код в обработчике события “ПриПолученииДанных” этого табличного поля:
Хочу обратить внимание на то, что строки табличного поля обрабатываются порциями, по мере прокрутки списка.
Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)
На платформе 8.2 с использованием управляемых форм решение данной задачи потребует бóльших усилий. Это связано с тем, что за счет своей клиент-серверной ориентированности в платформе 8.2 в управляемом режиме отсутствуют некоторые привычные возможности – например, у табличного поля отсутствуют обработчики событий “ПриПолученииДанных” и “ПриВыводеСтроки”, которые мы могли бы использовать для этих целей в 1С 8.1 или 8.2 в обычных формах.
Пусть в нашей конфигурации есть документ “ВводОстатковДолга” с табличной частью “Контрагенты” (с колонками “Контрагент” и “Сумма”). В свою очередь у справочника “Контрагенты” есть реквизит “ИНН”, значение которого необходимо выводить в строках табличного поля.
[qu_spoiler title=»Примечание от ‘Капитально:» open=»yes» icon=»chevron-circle»]в статье взят неудачный пример т.к. реквизиты вынести можно получить гораздо проще, но тем не менее статья полезна для рассмотрения в учебных целях[/qu_spoiler]
Откроем управляемую форму документа, добавим новую колонку “ИНН” реквизита “Контрагенты” и перенесём её на закладку “Элементы” (для отображения в форме).
Откроем палитру свойств поля “КонтрагентыКонтрагент” и добавим обработчик события “ПриИзменении”
// обработчик события «ПриИзменении» поля «Контрагент» в табличном поле «Контрагенты»
&НаКлиенте
Процедура КонтрагентыКонтрагентПриИзменении ( Элемент )
ТекДанные = Элементы . Контрагенты . ТекущиеДанные ;
ТекДанные . ИНН = ЗначениеРеквизита ( ТекДанные . Контрагент , «ИНН» ) ;
КонецПроцедуры
Это обеспечит нам изменение значения поля “ИНН” при выборе контрагента в строке табличного поля.
Теперь необходимо предусмотреть заполнение колонки “ИНН” при открытии формы документа, а так же после записи и при чтении на сервере.
Обновление данных после записи и при чтении на сервере необходимо в связи с тем, что иначе значения колонки “ИНН” будут очищаться каждый раз при возникновении этих событий. Для заполнения колонки “ИНН” опишем в модуле формы служебную серверную процедуру:
Затем добавим в модуль формы документа обработчики событий “ПриОткрытии”, “ПриЧтенииНаСервере” и “ПослеЗаписиНаСервере”, в каждой из которых будем вызвать описанную ранее служебную процедуру “ОбновитьДанныеКолонкиИНН”
Всё готово. Можно посмотреть на результат.
Статья найдена на просторах интернета
Как добавить реквизит объекта в таблицу формы
Избегай конкретных обещаний. Текст должен быть чарующе неопределенным.
— Первый закон Кросби о рекламе.
Источник