Таблица значений отбор по колонке

Содержание
  1. Отбор в таблице значений (обычные формы)
  2. Таблица значений в 1С 8.3
  3. Создание таблицы значений
  4. Типы колонок таблицы значений
  5. Работа с колонками таблицы значений
  6. Изменение значений в существующих строках
  7. Перебор строк таблицы значений
  8. Удаление строк
  9. Таблица значений
  10. Как можно создать новую таблицу значений?
  11. Как добавить новую колонку с определенным типом и заголовком?
  12. Как добавить новые строки?
  13. Как выгрузить результат запроса в таблицу значений?
  14. Как обойти в цикле все строки таблицы значений?
  15. Как сделать выборку строк в таблице значений с отбором?
  16. Как выполнить сортировку?
  17. Как вычислить итоги по колонке?
  18. Как сделать копию таблицы значений?
  19. Как свернуть таблицу значений по колонке и суммировать по количеству?
  20. Как найти строку в таблице значений по значению?
  21. 1С 8.3 : Табличная часть
  22. Управляемые формы
  23. Обычные формы
  24. Похожие FAQ
  25. Еще в этой же категории
  26. Профессия — 1С
  27. Отбор с использованием запроса
  28. Отбор с использованием построителя отчетов

Отбор в таблице значений (обычные формы)

Таблица значений — это универсальная коллекция, которая может содержать неограниченное количество строк. Тут же встает дилемма: у таблицы значений в обычных формах нет инструментов интерактивного отбора. Они есть только у табличной части. Но у табличной части есть другое ограничение: количество строк ограничено и не может превышать 99 999 строк. Как быть?

Не отчаивайтесь, выход есть, но придется немного поработать руками.

Допустим, у нас есть таблица со следующей структурой:

  • Дата (Дата) — день наблюдений
  • Время дня (Строка) — время дня (утро, день, вечер и ночь)
  • Температура (Число) — средняя температура

Планируется, что записи таблицы будут отбираться по значению поля Дата.

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

Читайте также:  Шевроле авео т250 колонки задние штатные размер

Среди реквизитов формы также создадим реквизит типа «ТаблицаЗначений», который будет хранить исходную таблицу значений:

Для поля «Отбор по дате» назначим два обработчика событий: первый — ПриИзменении()

и второй — Очистка() :

Проверить, как это работает, предлагаю Вам в качестве домашнего задания.

Источник

Таблица значений в 1С 8.3

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

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

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

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

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

Типы колонок таблицы значений

В таблицу было добавлено 2 колонки. Тип не был определен и поэтому в эту колонку можно поместить любой тип данных, тип будет определяться в зависимости от типа данных значения в колонке. В примере выше тип колонки Товар — строка, а колонки Цена — число. Если добавить еще одну строку с другим типом, то тип колонки станет составным:

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

Работа с колонками таблицы значений

Для проверки наличия необходимой колонки в таблице можно выполнить поиск в коллекции колонок. Если такой колонки нет, то метод Найти вернет Неопределено:

Колонку можно переименовать. При этом, значения в данной колонке сохранятся. Изменить тип колонки нельзя.

Колонки можно удалять, соответственно будут удалены и все значения в данной колонке:

Изменение значений в существующих строках

К строкам таблицы значений можно обращаться через оператор индексации [ ]. Индексация строк начинается с нуля, чтобы изменить значение в первой строке нужно использовать индекс 0:

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

Перебрать все строки таблицы значений можно с помощью циклов Для Каждого и Для. При необходимости на каждой итерации цикла можно изменить значения колонок строки.

Удаление строк

Удалить строку из таблицы можно методом Удалить. Параметром можно передать индекс строки или саму строку. Для удаления всех строк таблицы можно воспользоваться методом Очистить.

Иногда нужно удалить несколько строк из таблицы по условию. Например, все строки, где цена меньше 100. На первый взгляд это можно сделать так:

Однако после удаления линейка осталась в таблице, хотя ее цена равна 80. Почему так произошло? При удалении строки, таблица как бы сжимается. То есть на первой итерации цикла мы получили первую строку с диваном, его цена больше 100, поэтому строка осталась. Получаем вторую строку с ручкой за 50. Так как цена меньше 100, строка была удалена. И после удаления все строки сдвинулись, третья строка переместилась на вторую позицию, четвертая на третью и т.д. На следующей итерации мы получаем третью строку, а там уже кресло за 2000. Линейка была пропущена, цикл даже не проверял ее цену.

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

Источник

Таблица значений

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

Как можно создать новую таблицу значений?

Как добавить новую колонку с определенным типом и заголовком?

  • Имя (необязательный, тип Строка , по умолчанию пустая строка). Имя колонки.
  • Тип (необязательный, тип ОписаниеТипов ). Объект, описывающий допустимые типы значений для колонки. Если параметр не указан, в колонке можно будет хранить значение любого типа.
  • Заголовок (необязательный, тип Строка , по умолчанию пустая строка). Заголовок колонки таблицы значений. Используется при визуальном отображении таблицы значений.
  • Ширина (необязательный, тип Число , по умолчанию ноль). Ширина колонки в символах. Используется при визуальном отображении таблицы значений.

Как добавить новые строки?

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

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

Как сделать выборку строк в таблице значений с отбором?

  • ПараметрыОтбора (обязательный, тип Структура ). Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры — искомое значение.

Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска. Возвращает массив строк таблицы значений, соответствующих условиям поиска. Метод эффективно использовать для выборки неуникальных значений.

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

Как выполнить сортировку?

Как вычислить итоги по колонке?

Как сделать копию таблицы значений?

Как свернуть таблицу значений по колонке и суммировать по количеству?

Метод Свернуть() сворачивает таблицу по колонке «Наименование» и суммирует колонку «Количество». Если существуют еще колонки, то они будут удалены.

  • КолонкиГруппировок (обязательный, тип Строка ). Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений.
  • КолонкиСуммирования (необязательный, тип Строка ). Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений.

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

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

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

Как найти строку в таблице значений по значению?

  • Значение (обязательный, тип Произвольный ). Искомое значение.
  • Колонки (необязательный, тип Строка , по умолчанию пустая строка). Список имен колонок, разделенных запятыми, по которым производится поиск. Если параметр не указан, поиск осуществляется по всей таблице значений.

Осуществляет поиск значения в указанных колонках таблицы значений. Возвращает строку таблицы значений, в которой содержится искомое значение. Если значение не найдено, то возвращается значение Неопределено . Метод эффективно использовать для поиска уникальных значений.

Источник

1С 8.3 : Табличная часть

Как настроить отбор строк?

Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство:

в обычном приложении параметр для ОтборСтрок — Отбор.

в управляемом приложении — ФиксированнаяСтруктура

ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.

Управляемые формы

или такой динамический отбор

Обычные формы

Использовать его очень просто:

А теперь конкретные примеры:

Подчиненные табличные части в 8.х

С помощью свойства ОтборСтрок можно реализовать подчиненные (связанные) табличные части. При смене текущей строки в первой табличной части вторая табличная часть показывает только связанную информаци. Например, таким образом можно реализовать работу с комплектами: 1-я таб. часть — комплекты, вторая — состав комплекта.

Во второй табличной части должна быть колонка — идентификационный признак, связывающий ее с первой табличной частью. Таких колонок может быть несколько (составной ключ);

В событии ПриАктивизацииСтроки для первого табличного поля пишем:

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

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

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

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

Похожие FAQ

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

отбор в динамическом списке программно 2
Для установки отбора в динамическом списке используется свойство Отбор. Добавление нового элемента отбора осуществляется следующим образом: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»)); Для того чтобы новый Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Источник

Профессия — 1С

  • Excel (2)
  • Интеграция (6)
  • Виртуальные таблицы (3)

рубрики: Фишки | Дата: 30 июля, 2017
Скачать обработку с примерами из статьи: professia1c_TableValueFilter.epf
Платформа: 8.3; Тип формы: управляемая.

Достаточно часто при работе с таблицами значений требуется выбрать строки по какому-либо условию. Когда условием отбора является равенство — тут нет никакой проблемы — достаточно воспользоваться методом НайтиСтроки() как это описано в статье про основные приемы работы с таблицами значений. Но когда нам нужно использовать более сложные условия отбора (В, В ИЕРАРХИИ и т.д.), то приходится прибегать к нестандартным способам. В этой статье рассмотрим два таких способа.

Для демонстрации создадим обработку с двумя таблицами значений: ИсходнаяТаблица и Результат.

И заполним исходную таблицу следующим образом:

Наименование Количество
Ручка 15
Лампа 2
Карандаш 10
Дырокол 5

Допустим мы хотим оставить только строки с наименованиями «Ручка» и «Карандаш»

Отбор с использованием запроса

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

Отбор с использованием построителя отчетов

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

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

Источник

Оцените статью