18.11.2022 Марина Анапольская 99239
Отбор строк в 1С

Содержание:

1.      Способы отбора строк в 1С

2.      Варианты применения программного наложения отбора строк в 1С  

   

1. Способы отбора строк в 1С


В данной статье обратимся к вопросу программного отбора строк по условию в таблице формы (управляемое приложение). Рассмотрим несколько способов выполнения подобной задачи:


1 способ:

Элемент управления формы «Таблица формы» связан с данными табличной части формы какого-либо объекта метаданных (например, Документа Заказ покупателя табличная часть – «Услуги»). Благодаря этому, при обращении на встроенном языке программирования к таблице формы (Элементы.<ИмяТаблицы>) становятся доступны методы расширения таблицы формы для табличных частей.


Если требуется выполнить отбор над строками табличной части формы которые видимы в таблице формы можно обратиться к методу расширения таблицы - «ОтборСтрок».


Для управляемых форм свойство «ОтборСтрок» может принимать значения – Фиксированная Структура или Неопределено.


Рассмотрим пример подобного действия:


//в таблице формы "Услуги" показывать строки, имеющих в поле «Номенклатура» указанную услуга, значение которой хранится в переменной ПеремУслуга:

Элементы.Услуги.ОтборСтрок = Новый ФиксированнаяСтруктура("Номенклатура", ПеремУслуга);

Ключ структуры - имя реквизита табличной части формы, значение структуры – конкретное значение, по которому требуется осуществить отбор.

Для отмены отбора, свойству «ОтборСтрок» присваивается один из двух вариантов: значение Неопределено, либо ФиксированнаяСтруктура.

 

Дополнительно:

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


Отбор для строковых значений выполняется по условию вхождения значения. Например, если в колонке есть ячейки со значением «Партия 1», «Партия 2», ..., «Партия 10», «Партия 11», ... и устанавливается отбор по значению «Партия 1», то в таблицу будут отобраны строки со значениями «Партия 1», «Партия 10», «Партия 11» и т.д.


2 способ:

Свойство «ОтборСтрок» можно использовать и в случае расширения таблицы формы для таблицы значений, т.е. когда таблица формы не связана с табличной частью какого-либо объекта, а заполняется программно. В качестве ключа структуры нужно указать имя колонки таблицы значений. В качестве значения – значение, по которому осуществляется отбор.


3 способ:

Если таблица формы является динамическим списком (например, в форме списка справочника для вывода элементов справочника используется таблица формы с типом «Динамический список»), то используется свойство списка «Отбор». Динамический список — это интерфейсный объект и строится он на основе СКД. Поэтому тип значения, возвращаемого свойством «Отбор» будет – Отбор Компоновки Данных и заполняться он должен как в компоновке данных.


(в приведенном ниже примере переменная Список – реквизит формы)

//Элементы – коллекция элементов отбора

//метод Добавить() – добавляет новый элемент отбора и возвращает его значение.

ЭлОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

 

//ИмяПоляКомпоновки в данном случае должно совпадать с именем колонки (реквизита) по //которой мы осуществляем отбор списка.

ЭлОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИмяПоляКомпоновки");

ЭлОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

ЭлОтбора.Использование = Истина;

 

ЭлОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;

 

//Значение отбора

ЭлОтбора.ПравоеЗначение = ЗначениеПоляОтбора;   


2. Варианты применения программного наложения отбора строк в 1С


Варианты применения:

Программное наложение отбора на табличную часть требуется, в основном, в двух случаях:

● Для предоставления пользователю дополнительных интерфейсных возможностей наложения отбора. Например, кнопка (команда), отбирающая строки с незаполненными важными реквизитами.

● В реализации задачи подчиненных табличных частей. Задача заключается в том, чтобы связать две ТЧ. И, например, при активизации строки в первой ТЧ, во второй – отображались, только строки, связанные с данной строкой первой ТЧ. Так же, при удалении строки из первой ТЧ, должны удаляться строки из второй ТЧ, связанные с ней. И т.д. Обязательным условием связи двух табличных частей, в данном случае, будет являться наличие в обоих одинакового реквизита (ключа), по которому и будет происходить связывание строк. Таких реквизитов может быть несколько. Тогда ключом связи будет комбинация значений из этих реквизитов.


В качестве примера взаимосвязанных табличных частей формы можно привести документ, регистрирующий время работы сотрудниками на технике за смену. В документе есть две ТЧ: «Сотрудники» и «Техника». В первой отображаются сотрудники, работавшие в конкретную смену, во второй — техника, на которой они работали. При активизации строки с сотрудником, в «Технике» должна отображаться только та техника, на которой работал данный сотрудник. В обоих табличных частях, присутствует реквизит-ключ «Сотрудник», на основании которого их строки связываются. Отбор на ТЧ «Техника» накладывается в Событии При Активизации Строки() Таблицы формы «Сотрудники», исполняемом при позиционировании одной из строк.


//При позиционировании на строке ТЧ "Сотрудники": отображать только технику по текущему сотруднику

&НаКлиенте

Процедура СотрудникиПриАктивизацииСтроки(Элемент)

    ТекДанные = Элементы.Сотрудники.ТекущиеДанные;

    Если ТекДанные = Неопределено Тогда

        //При активизации строки ТекДанные не заполонены, значит ТЧ «Сотрудники» - пустая

        Элементы.Техника.ОтборСтрок = Неопределено;

    Иначе

        // Для ТЧ «Техника» устанавливаем отбор по текущему сотруднику

        ТекСотрудник = ТекДанные.Сотрудник;

        Элементы.Техника.ОтборСтрок = Новый ФиксированнаяСтруктура("Сотрудник", ТекСотрудник);

   КонецЕсли;

КонецПроцедуры


    Специалист компании "Кодерлайн"

 Марина Анапольская

Наши проекты

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ООО "ОМЗ"
ООО "ОМЗ"

Отрасль:
Металлургическая промышленность, металлообработка

Внедренное типовое решение:
1С:Управление производственным предприятием

Автоматизация бизнес-процессов...

ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)
ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)

Отрасль:
Оптовая торговля транспортными средствами и оборудованием

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Финансы, управленческий учет, мониторинг показателей
- Бухгалтерский уче...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

Установка программного продукта БИТ.Финанс для 1С:Бухгалтерия 8
ООО «Джи Эй Си Шиппинг энд Лоджистикс»

Отрасль:
Транспорт

Внедренное типовое решение:
БИТ.Финанс

Построение единого информационного пространства финансовой службы;
Учет ...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Управление холдингом 8

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

Отрасль:
Торговля

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

Внедрение «1С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО "ДЕКОР"
ООО «ДЕКОР»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Управление персоналом и кадровый учет (HRM):
- Кадровый учет
- Расчет зарпл...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение