1с как очистить таблицу значений на форме

Обновлено: 07.07.2024

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

Таблицу значений, как любую коллекцию, можно обойти циклом. Например:

Получить нужную строку можно по индексу, например:

Индексы в 1С начинается с 0 (нуля).

Рассмотрим основные свойства и методы этого объекта на примерах.

Создание и использование таблиц значений 1С в примерах

Создать таблицу можно следующим образом:

Добавить колонки в таблицу значений 1С:

Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.

После создания колонок добавим несколько новых строк и заполним колонки:

Получите 267 видеоуроков по 1С бесплатно:

Добавим еще одну колонку:

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

Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:

Скопировать строку таблицы значений 1С, для примера — первую:

Поиск в таблице значений 1С с ценой «17400» с помощью структуры:

Сортировка программ в таблице по цене:

Количество строк в таблице:

Выгрузить колонку таблицы значений в массив 1С 8.3 или 8.2:

Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:

Полностью скопировать таблицу значений 1С можно так:

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

Свернуть таблицу можно так:

При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».

Ну и напоследок очистим строки таблицы значений 1С 8.3 (8.2) полностью:

И удалим все колонки:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

Удаляет все строки таблицы значений

Синтаксис

Метод Очистить() имеет следующий синтаксис:

А также альтернативный англоязычный синтаксис:

Параметры

Метод Очистить не имеет формальных параметров.

Описание

Метод Очистить() удаляет все строки таблицы значений.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Очистить() :

личный блог


С задачей вывода каких либо данных в Таблицу Значений (ТЗ) на форме сталкиваются наверное все программисты. Если раньше до выхода Управляемого Интерфейса все решалось довольно просто, то теперь все немного изменилось.

Для обычных форм.

Стоит отметить, что предварительно нужно создать соответствующие РезультатуЗапроса колонки таблицы значений. Делается это также просто. Добавить ТаблицуЗначений следует в реквизиты Формы. Еще раз акцентирую внимание — Названия колонок и типы данных колонок ТЗ должны совпадать и на форме и в запросе. Можно вообще не создавать ТЗ на форме, а описать ее программно, примерно как то так:

Для управляемых форм все ровно тоже самое кроме того что нужно на сервере получить значение данных ТЗ на форме, записать в них результат запроса и потом снова вернуть их на форму.

Ниже пример такого преобразования.

Во всей этой истории следует обратить внимание на 2 строчки.

Первая

Вторая

Первый из типа данных ДанныеФормыКоллекция преобразует данные в тип ТаблицаЗначений. Второй соответственно конвертирует в обратном направлении.

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

//можно указать тип данных каждой колонки
//если тип данных колонки не указан, то можно хранить данные любого типа
Синтаксис: НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>, <Ширина>, <Формат>, <Положение>)

Добавление строк в таблицу значений

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

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

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

Синтаксис: НайтиЗначение(<Знач>,<Строка>,<Колонка>)
Возвращает число: 0 - значение не найдено; 1 - значение найдено
Если указан параметр <Строка>, то поиск производится только по заданной строке
Если указан параметр <Колонка>, то поиск производится только по заданной колонке

Итоги и группировка таблицы значений

//часто требуется группировать строки и подсчитывать итоги по группам,
//в этом случае применяется метод Свернуть

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

ВНИМАНИЕ
Часто требуется удалить строки, удовлетворяющие определенному условию.
Так как при удалении строки из таблицы значений следующая строка становится текущей,
то указанная ниже программа может удалить НЕ ВСЕ необходимые строки.

В этом случае я рекомендую использовать следующий прием:

А вот еще один правильный алгоритм, предложенный Wlad:

Замечание(Туц). Предыдущий вариант не совсем правильный. Случай, когда последняя строка попадает под условие и в условии идёт обращение к строке таблицы, приводит к ошибке. Т.е. происходит попытка чтения для строки 0.

И ещё вариант, предложенный Туц:

Замечание (vligm). А я использую такой алгоритм (это, собственно говоря, шаблон):

Таблица значений как элемент диалога

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

Методы УстановитьЗначение и ПолучитьЗначение

Эти методы позволяют обращаться к данным в таблице значений для чтения и записи.
Они могут пригодиться в особых случаях при написании универсальных программ (мастеры отчетов и т.д.).

Синтаксис: УстановитьЗначение(<Строка>,<Колонка>,<Знач>)
Синтаксис: ПолучитьЗначение(<Строка>,<Колонка>)

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

Таблица значений 1С на управляемой форме

На любой управляемой форме 1С 8.3 разработчик может разместить таблицу значений в виде реквизита формы. Для этого нужно создать новый реквизит и задать ему тип «Таблица значений».

Реквизит формы 1С с типом Таблица значений

Таблица значений на форме размещается в виде элемента формы Таблица. Это элемент будет создан автоматически, если мы перетащим мышкой реквизит с типом таблица значений в дерево элементов.

Элемент таблица формы 1С

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

Программное создание таблицы значений 1С

Вы можете создать таблицу значений в любом программном модуле при помощи оператора Новый.

ТЗ = Новый ТаблицаЗначений ;

Эта таблица значений будет существовать в том контексте, в котором Вы её создали: если Вы создали её в процедуре или функции, то она будет существовать до того момента пока выполняется эта процедура или функция. Если Вы её создали в программном модуле объекта, то таблица значений будет существовать пока выполняется обращение к этому объекту.

Но имейте в виду, что если вы создали таблицу значений в процедуре или функции программного модуля управляемой формы 1С 8.3, то на клиенте (под директивой &НаКлиенте) код будет выполняться только в толстом клиенте. В тонком клиенте и на веб-клиенте нельзя работать с таблицей значений. Возникнет ошибка!

 Ошибка при работе с таблицей значений в тонком клиенте

Но, на тонком и веб-клиенте нельзя работать только с таблицей значений 1С, которая создана программно (с помощью оператора Новый). Если же таблица значений создана на форме в виде реквизита, то обращаться к этому реквизиту можно в любом контексте, платформа преобразует её в объект ДанныеФормыКоллекция.

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

Нет никаких ограничений на количество колонок. Количество колонок, как правило, всегда фиксировано и задается разработчиком на этапе создания нужного функционала, а количество строк переменно.

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

О работе с колонками и строками в таблицах значений 1С читайте в статьях по ссылкам:

Статьи о других универсальных коллекциях значений в 1С


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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


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

можно оплатить вручную:

Вступайте в мои группы:

One thought on “ Таблица значений 1С ”

Добрый день, Ильяз! хотела поддержать проект и не смогла оплатить с Карты Маэстро.
М.б. другие варианты.
Спасибо за проект!

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

Для добавления новой строки нужно нажать на кнопку добавить

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

Программное добавление строк таблицы значений в 1С

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

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

НоваяСтрока = ФИО.Добавить();

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

Осуществить это можно двумя способами:

Допустим, у нас есть некоторая таблица значений ФИО с колонками Фамилия, Имя, Отчество, ФИО и ДатаРождения, то добавить новую строку этой таблицы и заполнить колонки этой строки можно следующим образом.

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

Добавим с помощью этого метода еще одну строку в таблицу ФИО. И поставим ее на первое место.

Программный обход строк таблицы значений в 1С

Оператор цикла Для…Цикл.

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

Когда мы используем квадратные скобки применительно к таблице значений (например, ФИО[н]), то результатом данной операции является строка таблицы с соответствующим индексом.

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

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

В этом коде в переменную Инд будет записываться индекс строки при каждой итерации цикла.

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

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

ФИО . Удалить ( 0 )

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

МассивДляУдаления = Новый Массив ;
Для Каждого Стр из ФИО цикл
Если тогда //какое-то условие
МассивДляУдаления . Добавить ( Стр );
КонецЕсли
КонецЦикла;
Для Каждого СтрМассива из МассивДляУдаления Цикл
ФИО . Удалить ( стрМассива )
КонецЦикла


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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


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

можно оплатить вручную:

Читайте также: