Найти строку в табличной части документа для изменения не очень частая задача из-за этого не всегда можно вспомнить с ходу, как это реализовать в 1с. В этой заметке разберем пару примерок по поиску строк в табличной части и дальнейшей работы с ними.
Найти строку по заданным параметрам
Для решения задачи поиска строк в ТЧ будем использовать функцию НайтиСтроки.
Синтаксис: НайтиСтроки(<ПараметрыОтбора>)
Параметры: <ПараметрыОтбора> (обязательный)
Тип: Структура. Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры — искомое значение.
Возвращаемое значение: Массив из строк табличной части, соответствующих заданному условию поиска.
Замечание! Массив хранит ссылки на строки табличной части, то есть при изменении строки в табличной части, значение в массиве тоже будет изменено.
Описание: Осуществляет поиск строк табличной части, соответствующих заданному условию поиска.
Первый вариант, который встречается в работе найти строки с определенным значением в колонке.
Найти все строки ТЧ с определенным значением задачи.
- Создадим структуру отбор и установим значение задачи
- Применим функцию НайтиСтроки к нужной табличной части
- В переменной МассивНайденныхСтрок будут ссылки на строки таблицы которые содержат нужную нам задачу
Отбор = Новый Структура("Задача",ДокументСсылкаЗадача); МассивНайденныхСтрок = ТЧПодзадачи.НайтиСтроки(Отбор);
Бывает когда нужно найти строку в табличной части документа по нескольким параметрам, разберем такой пример.
Найти все строки ТЧ с определенным значением номенклатуры и количества
- Создаем структуру для отбора
- Устанавливаем два параметра поиска (если параметров больше устанавливаем столько, сколько надо)
- Ищем в таблице нужные строки
- Получаем переменную МассивНайденныхСтрок с нужными данными
Отбор = Новый Структура; Отбор.Вставить("Номенклатура",СправочникНоменклатураСсылка); Отбор.Вставить("Количество",ИскомоеКоличество); МассивНайденныхСтрок = РеализацияТовароУслуг.Товары.НайтиСтроки(Отбор);
В примере номер три реализуем процедуру которая сообщит все цены номенклатуры в определенном документе.
Реализовать процедуру которая сообщит цену на товар в поступлениях, реализациях и счетах на выбор пользователя.
Порядок действий будет похож на прошлые два примера:
- Создаем отбор и устанавливаем значения поиска
- Ищем в табличной части
- Сообщаем все цены которые нашли
&НаСервере Процедура НайтиЦеныНаТовар(Документ,СправочникНоменклатураСсылка) Отбор = Новый Структура("Номенклатура", СправочникНоменклатураСсылка); МассивНайденныхСтрок = Документ["Товары"].НайтиСтроки(Отбор); Для Каждого ЭлМас Из МассивНайденныхСтрок Цикл Сообщить(ЭлМас.Цена); КонецЦикла; КонецПроцедуры
В 1с существует метод Найти(), это устаревший метод для его не стоит использовать.
Дополнительные материалы по теме:
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.