Інтернет Windows Android

1с відбір форма списку. Корисні функції механізму відбору

І тут шеф говорить - а який прибуток у нас по північно-західному підрозділу?

Ви тут же сформували звіт. За рік. По всіх підрозділах транснаціональної компанії, що виробляє тисячі товарів. Звіт вийде довгий (якщо не сказати крутіше). А значить - потрібну цифру знайти буде складно.

Для того, щоб в будь-якому звіті 1С подивитися тільки ті цифри, які потрібні - існують Відбір 1С. Так в 1С називається універсальний фільтр, який відбирає потрібні Вам дані за умовами, які Ви встановлюєте.

Відбір 1С доступний не тільки в звітах, але і в довідниках, в документах - в будь-яких списках.

Інша інформація при встановленому відборі 1С нікуди при цьому не зникає - вона просто не показується зараз Вам, щоб встановити акцент уваги тільки на необхідної інформації.

Ми подивимося зараз як використовувати Відбори в 1С.

Що таке відбір 1С

Дані в звіті і в списках представлені у вигляді таблиці. У будь-якої таблиці є колонки. У кожному рядку таблиці, в кожному стовпчику відображено якесь значення.

Припустимо, у нас в таблиці є колонки КОД і НАИМЕНОВАНИЕ. Ми можемо встановити одну умову:
Код \u003d «2209»

В цьому випадку будуть відображені тільки ті рядки, в яких значення в колонці Код таке, як ми вказали.

Також ми можемо встановити кілька умов:
Код \u003d «2209» І Найменування \u003d «Курка»

В цьому випадку будуть відображені тільки ті рядки, в яких значення в ОБОХ колонках.

Установка таких умов і називають - встановити Відбір 1С.

Відбір 1С в товстому клієнті:

На скріншоті зображений довідник. Натискаємо кнопку в панелі «Відбір». Відкривається вікно з варіантами відбору 1С по колонках. Встановлюємо потрібні нам фільтри, натискаємо ОК. Будуть показані тільки ті рядки, які задовольняють умовам.

Тонкий клієнт:

Відбір 1С можна встановити за допомогою пункту меню Всі дії / Налаштувати список, закладка Відбір 1С. Дія закладки - аналогічне.

Що таке умова відбору 1С

Кожна умова відбору 1С робиться на значення в одній колонці. Відповідно друге - на іншу колонку і т.п. У діючих (включених) умов встановлена \u200b\u200bгалочка перед ім'ям.

На цьому скріншоті зображений приклад установки однієї умови: «якщо значення в колонці одно оцьому».

Слово «дорівнює» спеціально виділено. Існують інші варіанти. Якщо подумати, як мінімум в голови приходить, що якщо можна відібрати рядки, де значення «дорівнює чогось», то може знадобитися подивитися і там, де «не дорівнює».

Різні варіанти установки умов залежать від типів значень в цій колонці.

Для числа ми можемо порівняти на більше і менше.

Якщо значення в колонці - це довідник або документ, то можна вказати «У списку» - це значить можна перерахувати кілька варіантів значень.

Деякі довідники мають групи. Наприклад, довідник «Номенклатура» і «Контрагенти». Для відбору 1С по колонках, в яких вказані значення таких довідників, Ви можете вказати «У групі».

Це означає - перевірити - значення, яке вказано в цьому рядку знаходиться всередині групи чи ні? Враховуються також вкладені одна в одної групи.

Якщо ж ми хочемо вказати відразу кілька груп і перевірити - чи входить елемент в одну з них - то потрібно вибрати «В групі зі списку».

Якщо тип - рядок, то можна шукати не за повним її значенням, а тільки по частині. Для цього виберіть варіант «Містить».

Базові відбори 1С документів і звітів

Як ми вже обговорювали раніше,. Тому базовий відбір 1С в будь-якому списку документів - це період.

Для установки необхідного періоду натисніть відповідну кнопку в панелі. Період можна встановити довільними датами або як одну з преднастроек - місяць, квартал, рік.

В тонкому клієнтізовнішній вигляд форми для настройки періоду трохи змінився, але зміст залишився той же.

Відбір 1С в будь-якому списку

Зазначені правила діють для будь-якої таблиці в 1С, де б вона не була розташована.

Зазвичай над таблицею знаходиться панель, на якій є кнопка відбору 1С, така ж, як на зазначених вище картинках.

Якщо такої немає - натисніть правою кнопкою миші в будь-яке місце таблиці. Виберіть пункт меню «Встановити відбір 1С та сортування списку».

При роботі в тонкому клієнті 1С такого пункту меню немає. Аналогічні дії можна виконати тільки якщо у даного списку на форму виведено меню «Всі дії». Тоді в ньому Ви можете вибрати команду «Налаштувати список».

Відбір 1С в звіті (для звіту не СКД)

Відбори 1С в звітах різних версій конфігурацій виглядають по різному і знаходяться в різних місцях. Це пов'язано з тим, що система звітів в 1С дуже бурхливо розвивається і стандарти змінюються від редакції до редакції конфігурації (.,.).

Зазвичай відбори 1С доступні при натисканні кнопки Налаштування в звіті.

У звітах конфігурацій «Бухгалтерія» і «Зарплата» в товстому клієнті (а в цих змінах звіти виконані без, відбори 1С відкриваються по кнопці Налаштування. Вони знаходяться в спливаючій панелі, найчастіше внизу.

У звітах конфігурацій «Управління торгівлею», «УПП» в товстому клієнті (теж СКД), по кнопці «Налаштування» відкривається вікно налаштування, в нижній частині якого розташовані відбори 1С.

Відбір 1С в СКД

У конфігураціях нових версій - на тонкому клієнті 1С - всі звіти виконані в системі СКД. Відбори 1С в них стандартизовані.

Швидкі відбори 1С виведені прямо на панель звіту.

Більш детальні відбори 1С можна побачити натиснувши кнопку Налаштування.

Повністю управляти всім звітом, в тому числі і відборами 1С можна вибравши в меню пункт Усі дії / Змінити варіант. На закладці Відбір можливо управляти відборами 1С.

Для того щоб відкрити форму вибору з відбором в 1с 8.2 (Звичайні форми), нам потрібно виконати деякі дії. Спочатку ми її отримаємо. Після цього виставимо відбір і програмно відкриємо, ось приклад коду:

Відбір на формі в поле вводу 1С 8.2 з кількома значеннями

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

Для початку отримуємо форму вибору, в параметрах передаємо "Елемент" (власника), встановлюємо прапор режиму вибору. Потім створюємо список значень і масив, відзначаємо що в якості відбору коли встановлюється вид порівняння в списку, може бути присутнім об'єкт тільки з типом СпісокЗначеній. Додаємо елементи в масив, потім цей масив завантажуємо в СпісокЗначеній який в слідстві ми встановлюємо в відборі. Також не забуваємо включити прапор використання даного відбору, і встановити ВідСравненія.

Установка відбору в поле введення на формі в 1С 8.3, подія НачалоВибора

тепер розглянемо відбір в поле введення на керованої формі в 1С 8.3. Знайдемо на формі цікавий для нас елемент, в якому ми будемо встановлювати відбір, в нашому випадку це поле «Організація». Знаходимо подія «НачалоВибора», клацаємо на лупу і опиняємося в процедурі. Ми бачимо параметр ДанниеВибора, цей параметр має тип СпісокЗначеній. Для того щоб обмежити вибір необхідними елементами, нам необхідно заповнити СпісокЗначеній. Елементи вибрати можемо тільки на сервері, тому створюємо процедуру з директивою компіляції & НаСервере. У даній процедурі заповнюємо ДанниеВибора.

Список - невід'ємний атрибут відображення інформації в будь-якій конфігурації, створеної на платформі "1С: Підприємство 8.1". для ефективної роботи зі списками, що містять різноманітні дані, в програмах на платформі "1С: Підприємство 8.1" реалізовані зручні і потужні механізми відбору і сортування. Про особливості їх використання розповідає В.В. Риболовля, фірма "1С".


Мал. 1

списки

З якими списками стикаються користувачі? Це можуть бути списки документів у відповідних журналах. Практично будь-який довідник, заповнений даними, представляється у вигляді списку, в якому, як правило, є ієрархія (групи-папки або підлеглі елементи). Нерідко для вибору будь-якого елементу програма формує списки автоматично або підкоряючись закладеної розробниками логіці.

Практично у всіх списках можна використовувати механізми відбору (якщо це явно не заборонено розробником) і різноманітною сортування (рис. 1). У програмі ці механізми нерозривно пов'язані один з одним. Розглянемо, як їх використовувати правильно і ефективно.

Мал. 1

механізм сортування

Для чого потрібен механізм сортування? По-перше, він, як випливає з назви, дозволяє впорядкувати список за потрібною критерієм.

По-друге, в платформі "1С: Підприємство 8.1" активно використовується механізм швидкого пошуку. Цей механізм дозволяє швидко знайти в будь-якому списку потрібний елемент, набравши перші символи (рис. 2). Але в динамічних списках (наприклад, список елементів довідника або список документів) швидкий пошук працює тільки за реквізитами, за якими доступна сортування.

Мал. 2

Подивитися всі доступні для сортування реквізити списку можна, відкривши вікно "Відбір та сортування". Це вікно, як правило, є на панелі дій (рис. 3) або в контекстному меню списку, що відкривається правою кнопкою миші (рис. 4). У вікні "Відбір та сортування" потрібно перейти на закладку "Сортування", де показані всі доступні реквізити, за якими можлива сортування.

Мал. 3

Мал. 4

На малюнку 3 видно, що для списку документів "Реалізації товарів і послуг" доступне сортування за двома реквізитами: "Дата" та "Номер". Однак інформативність вікна угруповань цим не обмежується. Тут можна подивитися, яка сортування включена в даний момент (ліва частина вікна) і список всіх доступних для сортування реквізитів (права частина). Тут же можна налаштувати потрібну сортування і її порядок. Зверніть увагу: поточний реквізит сортування буде позначений в списку спеціальним символом - стрілочкою, що позначає напрямок сортування. Три приклади різної сортування (в т. Ч. Комбінованої) і способи її відображення в списку показані на малюнку 5.

Мал. 5

Зауважимо, що нижній приклад ілюструє можливість використання комбінованої сортування (одночасно за кількома реквізитами). У нашому випадку, це сортування за датою за спаданням (найстаріші дати внизу) і за номерами по зростанню (найбільші номери внизу).

У кожному списку можна індивідуально зберегти потрібну сортування. Досить включити галочку "Використовувати цю настройку сортування при відкритті" і натиснути "ОК". Система запам'ятає налаштування і при наступному відкритті цього списку встановить збережену сортування.

Швидко впорядкувати список за потрібною реквізиту можна, клацнувши мишкою по шапці з назвою цього реквізиту.

Наприклад, в нашому випадку, можна клацнути по реквізиту "Дата" (включиться сортування дат по зростанню, і можна буде використовувати швидкий пошук за датою) або з реквізиту "Номер" (буде переключено сортування за номерами по зростанню, після чого можна швидко шукати по номеру). Інвертувати сортування теж просто - достатньо повторно клацнути по тому ж реквізиту в шапці списку.

механізм відбору

Відбір - потужний механізм платформи "1С: Підприємство 8.1", який дозволяє ефективно працювати зі списками, навіть якщо в них міститься не один десяток або сотня тисяч елементів. Для початку розглянемо роботу механізму відбору в загальному випадку.

Практично скрізь, де є список (як правило, у вигляді таблиці), можна використовувати механізм відбору, який активується або відповідною кнопкою на панелі дій, або в контекстно-залежному меню списку (рис. 3 і 4). Якщо відбір у потрібного списку можливий, відкриється вікно "Відбір та сортування". У ньому будуть відображені всі можливі види доступних для відбору реквізитів. Список доступних елементів відбору залежить від того, де цей відбір буде використаний. У загальному випадку потрібно знайти один або кілька необхідних елементів для відбору, вказати значення і активувати настроєну комбінацію критеріїв.

Список можливих умов для того чи іншого виду відбору залежить від типу елементів, які використовуються в ньому. Наприклад, для чисел і дат буде доступно вказівку діапазонів, для рядків - пошук підрядка (умови "Містить" / "Не містить"), а для елементів довідників - заповнення списків і аналіз ієрархії.

Якщо вказати одночасно кілька критеріїв відбору, в списку будуть відображені тільки такі елементи, які задовольняють всім зазначеним критеріям.

Механізми відбору та сортування на прикладах

Спробуємо вирішити кілька завдань в демонстраційній базі ( "Бухгалтерія підприємства", редакція 1.6). Наприклад, відобразимо документи, сформовані для контрагента "Саймон і Шустер ТОВ" в журналі "Документи покупців". Відразу обмовимося, що описувати будемо стандартні для платформи "1С: Підприємство 8.1" правила і логіку ведення відбору, без прив'язки до будь-якої конкретної конфігурації і додатковим сервісним можливостям, в ній реалізованим.

Отже, відкриваємо журнал документів "Документи покупців". У стандартному стані без включеного відбору на екран виводяться всі документи всіх покупців (навіть в демонстраційній базі це займає не одну сторінку).

Нам потрібно швидко переглянути всi документи контрагента "Саймон і Шустер ТОВ". Реалізується завдання наступним чином - відкривається вікно відбору, в елементі "Контрагент" вибирається контрагент "Саймон і Шустер ТОВ" з довідника (рис. 6) і натискається "ОК". Завдання вирішена (рис. 7).

Мал. 6

Мал. 7

Для швидкого використання потрібного відбору досить відразу приступати до вибору потрібного критерію. Ставити галочку навпроти використовуваного відбору не потрібно. Програма зробить це сама після того, як буде вказано необхідний критерій. Швидко застосувати налаштовані критерії відбору можна, натиснувши комбінацію клавіш Ctrl + Enter *.

Зверніть увагу ще й на те, що при вказівці значень в елементах відбору (в нашому прикладі - контрагент "Саймон і Шустер ТОВ"), в більшості випадків буде працювати механізм швидкого підбору, широко поширений в платформі "1С: Підприємство 8.1". У нашому прикладі досить було набрати перші символи назви контрагента або його код прямо в поле значення відбору, натиснути Enter або Tab і система автоматично б "вгадала" потрібний нам елемент довідника.

Майте на увазі - швидкий підбір істотно прискорює вибір відомих вам значень. Використовуйте його, де це можливо.

Тепер відобразимо список номенклатури, в найменуваннях яких міститься слово "Чайник". Для цього відкриваємо довідник "Номенклатура", викликаємо вікно відбору, в елементі "Найменування" вибираємо умова порівняння "Містить" і вказуємо слово (рис. 8).

Мал. 8

Вид порівняння "Містить" вибраний не випадково. Саме він дозволяє знайти потрібне слово (або його частина) в будь-якому місці найменування номенклатури. Якщо залишити вид порівняння "Так само", в списку будуть відображені тільки такі елементи номенклатури, які називаються точно так, як написано запит. А таких в нашій демобазе немає (тобто не було б відображено жодного елемента).

Так як в нашій демобазе у номенклатури є реквізит "Повне найменування", воно присутнє в списку доступних відборів окремою позицією. Але при цьому в якості умов порівняння доступно тільки "Містить" / "Не містить". Причина в тому, що реквізит "Повне найменування" в нашій демобазе - рядок необмеженої довжини.

Якщо шукати не по найменуванню, а за повним найменуванням, галочку використання відбору по найменуванню краще зняти. Інакше відбір буде використаний і по найменуванню, і по повному найменуванню, що не завжди може виявитися необхідним (рис. 9).

Мал. 9

Для зручності роботи з елементами довідника при використанні відборів краще на час відключати відображення ієрархії (рис. 10).

Мал. 10

В якості третьої завдання переглянемо в журналі документів "Документи покупців" тільки документи "Реалізація товарів і послуг". Вирішення цього завдання продемонструє особливість одного з видів відбору, доступного тільки в журналах документів.

Відкриваємо журнал "Документи покупців" і вказуємо в елементі відбору "Вид документа" документ "Реалізація товарів і послуг". Програма сама надає можливість вибору певного виду документа з тих, які включені в даний журнал. Для цього є і персональна кнопочка на панелі дій (рис. 11).

Мал. 11

Аналогічно відбору по виду документів платформа автоматично запропонує елемент відбору "Структура підпорядкованості", якщо в конфігурації налаштовані взаємозв'язку між документами.

Спробуємо переглянути в журналі документів "Документи покупців" тільки документи "Рахунок-фактура" для контрагентів, що знаходяться в групі «Покупці» довідника. Це завдання схожа на першу з тією лише відмінністю, що ми не вказуємо конкретного контрагента, а аналізуємо рахунки-фактури цілої групи контрагентів, які знаходяться в групі «Покупці».

У завдання існує декілька способів реалізації. Розглянемо найбільш ефективний. Відкриваємо журнал "Документи покупців", вказуємо в елементі відбору "Вид документа" документ "Рахунок-фактура виданий". Після цього в елементі відбору "Контрагент" вказуємо вид порівняння "У групі". Вибираємо тип значення "Контрагенти" і відкриваємо форму вибору контрагентів. У ній вибираємо групу "Покупці" (рис. 12).

Мал. 12

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

А тепер ускладнити завдання: переглянемо в журналі документів "Документи покупців" тільки документи "Рахунок-фактура", але при цьому потрібно переглянути документи і для покупців, і для постачальників. Вирішуємо її аналогічно попередньої, за винятком одного накладається критерію відбору.

Людською мовою завдання формулюється так: "відобразити всі потрібні документи по всім контрагентам, які перебувають в групах довідника Покупці, Постачальники, Постачальники на реалізацію". Реалізується це просто - в умови відбору "Контрагент" вибираємо "У групі зі списку" (рис. 13). Після цього стає доступним механізм заповнення списку, в який можна додати потрібні групи (або елементи) довідника. Причому список можна заповнити вручну. За аналогією з рішенням попередньої задачі, знайти потрібну групу і вибрати її, повторивши це для кожного нового елемента списку. Однак доцільніше скористатися зручним механізмом підбору, який автоматично реалізується програмою. За допомогою підбору набагато простіше і швидше заповнити список потрібними складовими. Після того, як список заповнений, натискаємо "ОК" і активуємо налаштовані критерії відбору. Завдання вирішена.

Мал. 13

Відмінність умови відбору "У групі зі списку" від умови "У списку" полягає в тому, що в першому випадку умова виконається для всіх елементів довідника, які або явно вказані в списку, або знаходяться всередині зазначених у списку груп. Другий же випадок просто вказує програмі звірятися зі списком при відборі. Тобто якщо ви вкажете там групу, то в відбір потрапить сама група (як самостійний елемент довідника), а елементи, які в неї входять, критерієм відбору задовольняти не будуть. Вирішувати завдання можна було і "в лоб" - вибрати умова "У списку" і за допомогою підбору додати туди всі елементи, що містяться в необхідних групах.

Умови відбору "Не в списку" і "Не в групі зі списку" дозволяють вказати потрібні набори даних, які в відбір потрапляти не повинні. Тобто вирішувати задачу можна було б і від зворотного - вказати "Не в групі зі списку" і додати туди всі групи довідника, крім трьох необхідних (Покупці, Постачальники, Постачальники на реалізацію).

І, нарешті, відобразимо в документі "Реалізація товарів і послуг" з номером ТДН00002 в табличній частині тільки номенклатуру, яка містить в найменуваннях слово "Стінол". Це завдання, дозволить побачити універсальність самого механізму відбору, а також наскільки різноманітно може бути його використання. Завдання заснована на реальних ситуаціях, коли, наприклад, в табличній частині накладної кілька сотень (а то і тисяч) рядків і треба швидко проаналізувати її склад. В нашій демобазе є документ "Реалізація товарів і послуг" з номером ТДН00002, у якого в табличній частині є кілька рядків. Незважаючи на те що в документі кнопок використання відборів не спостерігається, виклик відбору доступний через контекстне меню (права кнопка миші).

Далі накладаємо критерії відбору в розрізі класифікації товарів. Тут же виникає інше питання - як відібрати "Стінол", якщо умови вибору номенклатури досить сильно обмежені (доступно "Так само", "Не одно", "В списку" і "Не в списку"). Вирішити завдання можна і при таких умовах. Вибираємо умова "У списку", відкриваємо вже знайоме вікно заповнення списку, використовуємо підбір номенклатури (рис. 14, 1). У списку номенклатури може бути велика кількість елементів, тому не будемо шукати очима потрібні позиції. Скористаємося відбором в списку номенклатури, вказавши умова відбору "Містить" для найменування номенклатури (рис. 14, 2).

Мал. 14

Після цього залишається тільки додати відібрані позиції в список відбору для документа і застосувати критерії відбору.

Корисні функції механізму відбору

Розглянемо ще кілька моментів, пов'язаних так чи інакше з відборами в системі "1С: Підприємство 8.1".

У списках об'єктів конфігурації, де використовується прив'язка до дат (наприклад, списки документів), і в журналах документів можна використовувати швидкий відбір за діапазоном дат. Для цього достатньо натиснути відповідну кнопку "Налаштування періоду" на панелі дій (або вибрати в контекстному меню) (рис. 15). Таким способом можна в кожному списку індивідуально регулювати критерій відображення елементів по датам.

Мал. 15

Швидко встановити відбір за значенням в поточному осередку списку можна, натиснувши на кнопку "Відбір за значенням в поточній колонці" (рис. 16). При натисканні на цю кнопку буде встановлений відбір за поточним значенням в колонці. Ця функція працює тільки для тих колонок, за реквізитами яких можна встановлювати відбори. Якщо в списку вже використовується будь-якої відбір, новий буде приєднаний до нього. Причому кнопка стає активною для даної колонки. Скасувати такий відбір можна аналогічно - "віджавши" кнопку у відповідній колонці.

Мал. 16

Ще одне корисна властивість механізму відборів - ведення історії відборів (рис. 17). Програма запам'ятовує, які відбори були встановлені, тому можна швидко повернутися до будь-якого з них, просто вибравши його зі списку. До слова, у вікні "Відбір та сортування" зверніть увагу на кнопку "Відбір" (рис. 6). Натиснувши на цю кнопку, ви потрапите в інтерфейс, в якому можна зберігати і відновлювати налаштування відборів, щоб в наслідок можна було до них повернутися (рис. 18).

Мал. 17

Мал. 18

І остання функція - це скасування всіх відборів (рис. 19). Натисканням кнопки "Відключити відбір" відключаються всі відбори, встановлені в списку. Аналогічної дії можна домогтися, відкривши вікно "Відбір та сортування" і знявши галочки навпроти всіх активних елементів.

Мал. 19

У програмі також є можливість швидкого пошуку по номеру документа в списках документів або в журналах. Викликається ця можливість кнопкою "Пошук по номеру" (рис. 20) і дозволяє знайти потрібний документ, Гнучко налаштувавши параметри пошуку. Знайдені документи за зазначеними критеріями відображаються в нижній частині вікна цього сервісу, і можна перейти до потрібного документу.

Даний код дозволяє відкрити список документів з встановленим відбором, також можна відкрити список елементів довідника з потрібним відбором

Код 1C v 8.2 УП Форма \u003d ОткритьФорму ( "Документ.РасходнаяНакладная.Форма.ФормаСпіска"); // Відкриваємо форму
ОтборВладелец \u003d Форма.Спісок.Отбор.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); // додано відбір
ОтборВладелец.ВідСравненія \u003d ВідСравненіяКомпоновкіДанних.Равно; // Як будемо порівнювати
ОтборВладелец.Іспользованіе \u003d Істина; // Встановлюємо галку іспользованіяНовий ПолеКомпоновкіДанних ( "Номенклатура")
ОтборВладелец.ЛевоеЗначеніе \u003d Новий ПолеКомпоновкіДанних ( "Контрагент"); // За яким реквізиту будемо робити відбір
ОтборВладелец.ПравоеЗначеніе \u003d Об'ект.Контрагент; // І саме значення відбору

Для того щоб відкрити форму списку із заздалегідь встановленим відбором використовуйте наступні способи:

перший спосіб полягає в тому, що при відкритті форми можна задати параметр форми Відбір, і відкрити форму списку з цим параметром.

Параметр Відбір є структурою. Імена елементів відповідають іменам полів, за якими проводиться відбір, а значення містять значення відбору. Це параметр розширення керованої форми динамічного списку. Тобто він існує у форм, основним реквізитом яких є реквізит типу ДінаміческійСпісок, наприклад у форм списку і форм вибору.

Наприклад, в наступному прикладі відкривається список прибуткових накладних з відбором по полю Номер, рівному 333.

Код 1C v 8.2 УП ЗначеніеОтбора \u003d Новий Структура ( "Номер", "333");
ПараметриВибора \u003d Новий Структура ( "Відбір", ЗначеніеОтбора);
ОткритьФорму ( "Документ.ПріходнаяНакладная.ФормаСпіска", ПараметриВибора);

другий спосіб

Можна відкрити форму списку без параметрів:

Код 1C v 8.2 УП ОткритьФорму ( "Документ.ПріходнаяНакладная.ФормаСпіска");

І потім, в обробнику події форми списку прибуткових накладних ПріСозданііНаСервере написати код, який створює відбір в динамічному списку, що є основним реквізитом форми:

Код 1C v 8.2 УП & НаСервере
Процедура ПріСозданііНаСервере (Відмова, СтандартнаяОбработка)
ЕлементОтбора \u003d Спісок.Отбор.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних"));
ЕлементОтбора.ЛевоеЗначеніе \u003d Новий ПолеКомпоновкіДанних ( "Номер");
ЕлементОтбора.ВідСравненія \u003d ВідСравненіяКомпоновкіДанних.Больше;
ЕлементОтбора.Іспользованіе \u003d Істина;
ЕлементОтбора.РежімОтображенія \u003d РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.Недоступний;
ЕлементОтбора.ПравоеЗначеніе \u003d "000000001";
КонецПроцедури

переваги даного методу в тому, що ВідСравненія у відбору можна задавати не тільки само, як в першому випадку, а й Більше, Менше і т.п.

Але у такого способу є і дуже суттєвий недолік: з цим відбором форма буде відкриватися завжди. Звідки б її ні викликали. Тому таку форму не слід призначати основний. А якщо все ж вона основна - то перед установкою відбору необхідно передбачити якийсь аналіз того, звідки відкривається ця форма. Наприклад, аналізуючи параметри форми.

третій спосіб

І нарешті, умова відбору можна помістити в довільний запит, що вибирає дані для динамічного списку.

Наприклад, нам потрібно відкрити список прибуткових накладних, в яких присутня номенклатура, виділена в списку номенклатури.

Для цього в формі списку номенклатури створимо команду і відповідну їй кнопку Прибуткові накладні.

Оброблювач виконання цієї команди заповнимо таким чином:

Код 1C v 8.2 УП & НаКліенте
Процедура ПріходниеНакладние (Команда)
ПараметриВибора \u003d Новий Структура ( "ФільтрПоТовару", Елементи.Спісок.ТекущаяСтрока);
ОткритьФорму ( "Документ.ПріходнаяНакладная.ФормаСпіска", ПараметриВибора);
КонецПроцедури

У цьому обробнику ми відкриваємо форму списку прибуткових накладних, передаючи в параметр форми ФільтрПоТовару посилання на поточний елемент в списку номенклатури.

Потім створимо форму списку документів ПриходнаяНакладная і створимо параметр форми ФільтрПоТовару, який ми будемо використовувати для відкриття форми з потрібним відбором.

Тепер відкриємо палітру властивостей основного реквізиту форми Список. Встановимо прапор ПроізвольнийЗапрос і в рядку Налаштування списку натиснемо Відкрити.

В поле Запит введемо наступний текст запиту:

Код 1C v 8.2 УП ВИБРАТИ
ДокументПріходнаяНакладная.Номер,
ДокументПріходнаяНакладная.Дата
З
Документ.ПріходнаяНакладная ЯК ДокументПріходнаяНакладная
ДЕ
ДокументПріходнаяНакладная.Товари.Товар \u003d & Товар

У запиті ми використовуємо параметр Товар, в який і буде передаватися посилання на поточний рядок в списку номенклатури, що міститься в параметрі форми списку прибуткових накладних ФільтрПоТовару.

Для цього в обробнику події форми списку ПріСозданііНаСервере напишемо код для установки значення параметра запиту Товар:

Код 1C v 8.2 УП & НаКліенте
Процедура відкриття (Відмова)
Спісок.Параметри.УстановітьЗначеніеПараметра ( "Товар", Параметри.ФільтрПоТовару);
КонецПроцедури

Тут Спісок.Параметри - це список параметрів запиту динамічного списку для реквізиту Список. Значення параметра Товар встановлюється рівним значенню параметра форми ФільтрПоТовару.

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

Відбір на керованих формах в 1С 8.3

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

  • Установка відбору в конфігураторі

Установка відбору в призначеному для користувача режимі

Динамічний список на відміну від таблиці або дерева значень - більш підходяще рішення для реалізації форм містять будь-які списки, тому що динамічний список надає найбільш широкий набір інструментів для роботи з відбором, угрупованням полів, сортуванням. даний відбір можна встановити при роботі в режимі користувача або конфигураторе, принцип однаковий.

Для установки відбору в режимі підприємства необхідно викликати команду «Налаштувати список».

Відкриється вікно.


На вкладці «відбір» представлено список полів, який є в поточному списку. Вибираємо поля списку, за якими будемо фільтрувати. Зробити це можна подвійним кліком або використовуючи drag and drop.


Задаємо вид порівняння і значення, тиснемо «Завершити редагування», відбір встановлений.


При установці відбору в режимі підприємства на формі списку автоматично створюються поля так званих швидких відборів.


Щоб платформа 1С автоматично створювала поля швидких відборів, при розробці форми в конфігураторі необхідно вказати групу налаштувань.


Даний відбір буде збережений тільки для поточного користувача, Що дозволяє гнучко проводити кастомізовані настройки динамічного списку. Однак якщо стоїть завдання зробити фіксований відбір для певного списку для всіх користувачів системи, її ми зможемо вирішити тільки через конфігуратор.

Установка відбору в конфігураторі

Працюючи в конфігураторі, ми можемо встановлювати відбір динамічного списку двох видів - фіксований і динамічний. Фіксований відбір налаштовується один раз, динамічний або програмний - можна встановлювати в залежності від будь-яких даних в системі.

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


Відкриється вікно.


Відбір задається так само, як в призначеному для користувача режимі.

Опція «Включати в призначені для користувача настройки»Визначає, чи буде встановлений в конфігураторі відбір доступний в призначеному для користувача режимі через пункт меню« Налаштувати список ».


Динамічний (програмний) відбір

Найчастіше виникає необхідність встановлювати відбір програмно, наприклад, при відкритті форми вибору, коли нам необхідно відкрити керовану форму з відбором. У форму передається параметр і за цим параметром встановлюється відбір. Частий приклад цього - відбір елементів довідника по власнику.

методи

Якщо в розробляється конфігурації присутній підсистема БСП «БазоваяФункціональность», програмний відбір в динамічному списку можна встановити використовуючи типовий метод:

ОбщегоНазначеніяКліентСервер.УстановітьЕлементОтбораДінаміческогоСпіска ()

Сигнатура даного методу:

ДінаміческійСпісок Тип: ДінаміческійСпісок - Список, в якому потрібно встановити відбір.

ІмяПоля Тип: Рядок - Поле, по якому необхідно встановити відбір.

ПравоеЗначеніе Тип: Довільний - Значення відбору (Необов'язковий. Значення за замовчуванням: Не визначено. Увага! Якщо передати Не визначено, то значення не буде змінена).

ВідСравненія Тип: ВідСравненіяКомпоновкіДанних - Условие отбора.

подання Тип: Рядок - Подання елемента компонування даних (Необов'язковий. Значення за замовчуванням: Не визначено. Якщо вказано, то виводиться тільки прапорець використання із зазначеним поданням (значення не виводиться). Для очищення, щоб значення знову виводилося, слід передати порожній рядок).

Використання Тип: Булево - Прапорець використання цього відбору (Необов'язковий. Значення за замовчуванням: Не визначено).

РежімОтображенія Тип: РежімОтображеніяЕлементаНастройкіКомпоновкіДанних - Режим перегляду цього відбору користувачеві. Можливі значення:

  • РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.БистрийДоступ - У групі швидких налаштувань над списком.
  • РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.Обичний - У настройка списку (в підміню Ще).
  • РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.Недоступний - Заборонити користувачеві змінювати цей відбір.

ІдентіфікаторПользовательскойНастройкі Тип: Рядок - Унікальний ідентифікатор цього відбору (Використовується для зв'язку з призначеними для користувача настройками).

Для видалення якогось значення відбору необхідно скористатися типовим методом:

ОбщегоНазначеніяКліентСервер. УдалітьЕлементиГруппиОтбораДінаміческогоСпіска ()

Сигнатура даного методу:

ДінаміческійСпісок Тип: ДінаміческійСпісок - реквізит форми, для якого потрібно встановити відбір.

ІмяПоля Тип: Рядок - ім'я поля компонування (не використовується для груп).

подання Тип: Рядок - уявлення поля компонування.

У разі відсутності в системі БСП відбір можна встановити самостійно, використовуючи об'єкт ПолеКомпоновкіДанних.

ЕлементОтбора \u003d Спісок.Отбор.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); ЕлементОтбора.ЛевоеЗначеніе \u003d Новий ПолеКомпоновкіДанних ( "ПІБ"); ЕлементОтбора.ВідСравненія \u003d ВідСравненіяКомпоновкіДанних.Равно; ЕлементОтбора.РежімОтображенія \u003d РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.БистрийДоступ; // Опціонально ЕлементОтбора.ПравоеЗначеніе \u003d "Іванов";

Даний відбір відбере рядки, в яких значення «ПІБ» \u003d «Іванов».

Для використання логічних «І», «АБО», «НЕ» призначений тип даних ГруппаЕлементовОтбораКомпоновкіДанних

ГруппаОтбора \u003d Спісок.Отбор.Елементи.Добавіть (Тип ( "ГруппаЕлементовОтбораКомпоновкіДанних")); ГруппаОтбора.ТіпГруппи \u003d ТіпГруппиЕлементовОтбораКомпоновкіДанних.ГруппаІЛІ; ЕлементОтбора \u003d ГруппаОтбора.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); ЕлементОтбора.ЛевоеЗначеніе \u003d Новий ПолеКомпоновкіДанних ( "ПІБ"); ЕлементОтбора.ВідСравненія \u003d ВідСравненіяКомпоновкіДанних.Равно; ЕлементОтбора.ПравоеЗначеніе \u003d "Іванов"; ЕлементОтбора \u003d ГруппаОтбора.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); ЕлементОтбора.ЛевоеЗначеніе \u003d Новий ПолеКомпоновкіДанних ( "ПІБ"); ЕлементОтбора.ВідСравненія \u003d ВідСравненіяКомпоновкіДанних.Равно; ЕлементОтбора.ПравоеЗначеніе \u003d "Петров";

Даний відбір відбере рядки, в яких значення «ПІБ» \u003d «Іванов» або «Петров».

Відбір в динамічному списку також можна виробляти через зміну тексту запиту динамічного списку. Цей варіант працює, коли динамічний список зроблений через «довільний запит».


Для цього до тексту запиту додаємо умова «ДЕ Істина» ...


Як видно, такий підхід більш компактний з точки зору написання коду. чим складніше умови відбору в табличній частині ми хочемо встановити, тим більш громіздким буде варіант з використанням відбору через ЕлементОтбораКомпоновкіДанних. Однак у приклад зі зміною тексту запиту є свої недоліки - ця реалізація не стійка до змін коду. Наприклад, ви зробили таку реалізацію і забули, але якщо в майбутньому ви захочете модифікувати текст запиту, додавши в нього будь-якої оператор після ДЕ (УПОРЯДОЧИТЬ, згрупованих), вам потрібно не забути про те, що в програмному коді є:

Спісок.ТекстЗапроса \u003d Спісок.ТекстЗапроса + "І СправочнікПользователі.ФІО В (" "Іванов" "," "Петров" ")";

Якщо цього не врахувати буде помилка, але щоб цього уникнути, можна переробити на іншу реалізацію. У текс запиту додаємо таку умову:

ДЕ (НЕ & ОтборУстановлен АБО СправочнікПользователі.ФІО В (& РазрешенниеФІО))

Спісок.Параметри.УстановітьЗначеніеПараметра ( "ОтборУстановлен", ФІО.Колічество ()\u003e 0); Спісок.Параметри.УстановітьЗначеніеПараметра ( "РазрешенниеФІО", ПІБ);

Тут ПІБ - масив.

Ка видно, 2 рядки коду проти 10. Який із способів вибрати, залежить від конкретної прикладної задачі.