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

Содержание:

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

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

   

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


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


1 способ:

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


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


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


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


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

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

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

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

 

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

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


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


2 способ:

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


3 способ:

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


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

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

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

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

 

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

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

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

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

 

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

 

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

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


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


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

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

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

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


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


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

&НаКлиенте

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

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

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

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

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

    Иначе

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

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

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

   КонецЕсли;

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


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

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

Наши проекты

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

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

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование прод...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

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

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

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

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

- Внедрение функционала управления НСИ;
- Рефакторинг;
- Оптимизация общег...

ООО "ТК "Сытый Дом-НН"
ООО "ТК "Сытый Дом-НН"

Отрасль:
Торговля, склад, логистика, транспорт

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

Взаиморасчеты с покупателями
Оптовая торговля
Управление складскими за...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

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

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

ФГОУ ВПО «Горский государственный аграрный университет»
ФГОУ ВПО «Горский государственный аграрный университет»

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

Внедренное типовое решение:
1С:Колледж ПРОФ

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

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

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

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

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

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

ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"
ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"

Отрасль:
Деятельность больничных организаций

Внедренное типовое решение:
БИТ:Управление медицинским центром 8

- Управление отношениями с клиентами (CRM)
- Делопроизводство
- Ведение но...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

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

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

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

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

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

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

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

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

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