Табличное поле
Как установить текущую строку в табличном поле?
Похожие FAQ
Еще в этой же категории
Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом » ДинамическийСписок» В поле » Основная табли Как обновить динамический список или реквизит на форме клиента? 17
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Как установить параметр динамического списка? 14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Источник
Программирование в 1С для всех
Любая таблица значений состоит из колонок, каждая из которых имеет свой тип и уникальное название, а также из строк. Если таблица значений размещена на управляемой форме в виде элемента Таблица, то колонки создаются изначально на этапе разработки, а строки пользователь может создать самостоятельно, нажав на кнопку «Добавить» в командной панели этой таблицы.
Также пользователь может удалять строки или перемещать. Но, гораздо интереснее программная работа со строками таблицы значений.
Программное добавление строк таблицы значений в 1С
В платформе 1С 8.2 — 8.3 разработчик имеет возможность добавлять строки таблицы значений непосредственно с помощью языка разработки, работая в конфигураторе 1С.
Для того чтобы создать новую строку таблицы значений, используется метод Добавить, данный метод не имеет параметров и является функцией.
Новая строка таблицы значений создается следующим образом:
НоваяСтрока = ФИО.Добавить();
Как видите, с помощью метода Добавить мы создали переменную НоваяСтрока, тип значения которой Строка таблицы значений. Но, просто создать строку мало, нам еще необходимо записать в нее определенные данные. Как получить доступ к колонкам данной строки?
Осуществить это можно двумя способами:
НоваяСтрока.Фамилия = «Иванов»;
НоваяСтрока[1] = «Иван»;
В первом способе мы получаем доступ к колонке как к свойству через точку, во втором — используя оператор квадратные скобки и указывая в них номер индекса колонки. Я предпочитаю первый способ, так как он делает код гораздо лучше читаемым и наглядным.
Допустим, у нас есть некоторая таблица значений ФИО с колонками Фамилия, Имя, Отчество, ФИО и ДатаРождения, то добавить новую строку этой таблицы и заполнить колонки этой строки можно следующим образом.
НоваяСтрока = ФИО . Добавить ();
НоваяСтрока . Фамилия = «Иванов» ;
НоваяСтрока [ 1 ] = «Иван» ;
НоваяСтрока . Отчество = «Петрович» ;
НоваяСтрока . ДатаРождения = ‘19800209’ ;
НоваяСтрока . ФИО = НоваяСтрока . Фамилия + » » +
Лев ( НоваяСтрока . Имя , 1 ) + «.» +
Лев ( НоваяСтрока . Отчество , 1 ) + «.» ;
С помощью метода Добавить мы создаем строку, которая вставляется в конец таблицы значений. Для того чтобы поместить строку в нужное место таблицы значений, необходимо использовать метод Вставить. Параметром данного метода является индекс, на который вставляется данная строка.
Добавим с помощью этого метода еще одну строку в таблицу ФИО. И поставим ее на первое место.
НоваяСтрока = ФИО . Вставить ( 0 );
НоваяСтрока . Фамилия = «Петров» ;
НоваяСтрока . Имя = «Игорь» ;
НоваяСтрока . Отчество = «Андреевич» ;
НоваяСтрока . ФИО = НоваяСтрока . Фамилия + » » + Лев ( НоваяСтрока . Имя , 1 ) + «.» + Лев ( НоваяСтрока . Отчество , 1 ) + «.» ;
НоваяСтрока . ДатаРождения = ‘19850909’ ;
Программный обход строк таблицы значений в 1С
Узнаем как обходить сроки таблицы. Это можно осуществлять с помощью операторов цикла Для каждого…Цикл и Для…Цикл.
Оператор цикла Для каждого…Цикл.
Для Каждого Стр из ФИО цикл
Сообщить ( Стр . ФИО + «, дата рождения » +
Формат ( Стр . ДатаРождения , «ДЛФ = ДД» ));
КонецЦикла;
С помощью этого оператора мы обходим все строки таблицы значений. Переменная Стр принимает значения каждой строки таблицы в порядке обхода. Тип данной переменной — Строка таблицы значений, поэтому мы можем спокойно обращаться к колонкам данной строки, используя точку или квадратные скобки.
Оператор цикла Для…Цикл.
Для н = 0 по ФИО . Количество () — 1 цикл
Сообщить ( ФИО [ н ]. ФИО + «, дата рождения » +
Формат ( ФИО [ н ]. ДатаРождения , «ДЛФ = ДД» ));
КонецЦикла;
В этом цикле нам необходимо получить индексы всех строк, для этого мы осуществляем обход, начиная с нуля и заканчивая значением, которое возвращает метод Количество за минусом единицы.
Когда мы используем квадратные скобки применительно к таблице значений (например, ФИО[н]), то результатом данной операции является строка таблицы с соответствующим индексом.
Индекс строки таблицы значений
Каждая строка имеет свой уникальный индекс. Все индексы идут по порядку и начинаются с 0. Для того, чтобы узнать индекс нужно строки необходимо применить метод Индекс таблицы значений, где в качестве параметра указать нужную строк.
Для Каждого Стр из ФИО цикл
Сообщить ( Стр . ФИО + «, дата рождения » +
Формат ( Стр . ДатаРождения , «ДЛФ = ДД» ));
Инд = ФИО . Индекс ( Стр )
КонецЦикла;
В этом коде в переменную Инд будет записываться индекс строки при каждой итерации цикла.
Программное удаление строк таблицы значений
Для программного удаление определенной строки таблицы значений нужно использовать метод Удалить этой таблицы. В качестве параметра указывается или индекс нужной строки или сама строка.
ФИО . Удалить ( 0 )
У новичков основные сложности возникают, когда нужно удалить несколько строк из таблицы значений. Если делать обход таблицы значений циклом, то данное удаление пройдет не совсем корректно. Я в этом случае поступаю так: сохраняю нужные строки в массиве, а потом обхожу этот массив циклом и уже в нем их все удаляю. Получается примерно так:
МассивДляУдаления = Новый Массив ;
Для Каждого Стр из ФИО цикл
Если тогда //какое-то условие
МассивДляУдаления . Добавить ( Стр );
КонецЕсли
КонецЦикла;
Для Каждого СтрМассива из МассивДляУдаления Цикл
ФИО . Удалить ( стрМассива )
КонецЦикла
Более подробно о работе с таблицами значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Источник
Работаем с таблицей значений программно
ТаблицаЗначений — это программный объект встроенного языка, позволяющий строить произвольные наборы данных в памяти компьютера, отображать их в табличном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать).
Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.
Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.
Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.
Таблица значений может использоваться явно при создании в коде необходимого количества переменных типа ТаблицаЗначений , либо неявно: при добавлении элемента управления ТабличноеПоле на обычную форму, и ТаблицаФормы — на управляемую. Здесь мы рассмотрим только программную работу с таблицей значений.
Создание таблицы значений
Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :
Колонки таблицы значений
Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:
- Имя — идентификатор колонки (может содержать только алфавитные символы, цифры и знаки подчеркивания. Причем, начинаться имя колонки может только с буквы или символа подчеркивания);
- Заголовок — представление колонки в диалогах (может содержать произвольные символы);
- ТипЗначения — тип значения содержимого ячеек в этой колонке. Если тип не задан, в ячейке можно хранить значения произвольного типа;
- Ширина — ширина колонки в диалогах;
Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():
Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():
Перебор колонок выполняется следующим образом:
Для удаления колонки используется метод Удалить():
Свойства колонки таблицы значений
Имя | Тип | Описание |
---|---|---|
Имя | Строка | символьный идентификатор колонки, по которому к ней можно обращаться из кода |
Заголовок | Строка | строковое представление колонки на форме |
ТипЗначения | ОписаниеТипов | свойство органичивает пространство доступных значений, которые можно указать в данной колонке |
Ширина | Число | ширина колонки на форме (выражается в количестве символов) |
Методы коллекции колонок таблицы значений
Вставить() | Вставляет новую колонку в указанную позицию коллекции |
Добавить() | Добавляет новую колонку в конец коллекции |
Количество() | Возвращает количество колонок в коллекции |
Найти() | Ищет колонку в коллекции по имени |
Очистить() | Удаляет все колонки из коллекции |
Сдвинуть() | Сдвигает колонку влево или вправо |
Удалить() | Удаляет колонку из коллекции |
Строки таблицы значений
С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.
Добавление и удаление строк
Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:
И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:
Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():
Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:
Перебор строк таблицы значений
Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :
Поиск строк
В отличие от платформы 1С:Предприятие 7.7 в 8-ке расширен функционал работы с таблицей значений. Поиск можно выполнять не только по значению в колонке (в этом случае будет возвращена первая найденная строка), но и по набору свойств (в этом случае возвращается массив строк):
Все методы таблицы значений:
Вставить() | Вставляет строку на указанное место |
ВыбратьСтроку() | Позволяет интерактивно выбрать строку в диалоговом окне |
ВыгрузитьКолонку() | Выгружает значения ячеек указанной колонки в массив значений |
Добавить() | Добавлет новую строку в таблицу значений |
ЗагрузитьКолонку() | Загружает значения в ячейки указанной колонки из массива |
ЗаполнитьЗначения() | Заполняет ячейки указанных колонок определенным значением |
Индекс() | Возвращает индекс строки таблицы значений |
Итог() | Возвращает просуммированный итог по колонке таблицы значений |
Количество() | Возвращает количество строк в таблице значений |
Найти() | Выполняет поиск строки по значению |
НайтиСтроки() | Выполняет поиск строк по указанным параметрам |
Очистить() | Очищает строки таблицы значений |
Получить() | Возвращает строку по ее индексу |
Свернуть() | Выполняет сжатие строк и колонок таблицы значений |
Сдвинуть() | Сдвигает строку вверх или вниз по таблице |
Скопировать() | Создает новую таблицу значений копированием текущей |
СкопироватьКолонки() | Создает новую пустую таблицу значений путем копирования колонок текущей таблицы |
Сортировать() | Выполняет сортировку строк таблицы значений по указанным колонкам |
Удалить() | Удаляет строку таблицы значений |
Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:
Источник
8.2 Как активировать строку в Таблице на форме?
Как активировать строку в Таблице на форме?
Более конкретная задача такая:
Есть ТЗ на форме, она заполнена кроме одной колонки.
Пользователь должен её заполнить, он активизирует первую строчку, вводит значение, жмет enter, после чего должна активизироваться строка №2, пользователь опять вводит и жмет enter . и т.д.
Не могу найти как активизировать следующую строку после окончания ввода.
Пробовал на клиенте сделать следующее:
Получается очень странная картина: нижняя строка становится активной, но активная ячейка всеравно остаётся та, которую только что изменили, см. скриншот
в личке.
Использование:
Чтение и ЗАПИСЬ.
Описание:
Тип: ГруппаФормы; ТаблицаФормы; ПолеФормы; КнопкаФормы. Содержит текущий активный элемент управляемой формы.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент
(9) и как мне ячейку в таблице ативизировать.
Элементы.Таблица.ТекущийЭлемент = Элементы.НеобходимаяКолонка;
После этого тоже самое что на скрине, не становится активной ячейка следующей строки, даже если так писать:
кстати в веб режиме данный кусок кода ваще глючит:
(23) Зачем так сложно? работает и так:
Элементы.Исследования.ТекущаяСтрока = Элементы.Исследования.ТекущаяСтрока + 1;
На клиенте Элементы.Исследования.ТекущаяСтрока это число, я уже писал об этом.
Вопрос остается открытым, строка выделяется, но активность к ней не переходит!
&НаКлиенте
Так работает, только в вебе немного притормаживает, но зато не моргает как в тонком.
Еще одна фишка выяснилась:
При таком переходе на след строку впринципе работает, но только в вебе, в тонком приходится действовать так:
вводишь число, ентер, переходит фокус на след строку, опять приходится ентер нажимать чтобы начать редактирование и т.д.
тогда как в вебе неприходится 2 раза подряд ентер нажимать.
В тонком короче не срабатывает данная строка:
Источник
Работа с таблицей значений в 1С 8.3
Таблица значений — специальный объект в программировании 1С 8.3, который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.
Таблицу значений, как любую коллекцию, можно обойти циклом. Например:
Получить нужную строку можно по индексу, например:
Индексы в 1С начинается с 0 (нуля).
Рассмотрим основные свойства и методы этого объекта на примерах.
Создание и использование таблиц значений 1С в примерах
Создать таблицу можно следующим образом:
Добавить колонки в таблицу значений 1С:
Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
После создания колонок добавим несколько новых строк и заполним колонки:
Добавим еще одну колонку:
Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:
Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:
Скопировать строку таблицы значений 1С, для примера — первую:
Поиск в таблице значений 1С с ценой «17400» с помощью структуры:
Сортировка программ в таблице по цене:
Количество строк в таблице:
Выгрузить колонку таблицы значений в массив 1С:
Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:
Полностью скопировать таблицу значений 1С можно так:
Просуммировать итог по колонке таблицы значений:
Свернуть таблицу можно так:
При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».
Ну и напоследок очистим строки таблицы значений 1С 8.3 полностью:
И удалим все колонки:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Источник