Динамічний список 1с 8.2 довільний параметр запиту. Пошук у динамічному списку

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

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

За замовчуванням у наш список виводитимуться список номенклатури із загальним залишком по всіх складах. Для реалізації такого списку додамо наступний запит:


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

Якщо ми спробуємо запустити нашу обробку у такому вигляді, то отримаємо помилку:


Для її усунення необхідно встановити параметр «Період». Для цього можна скористатись методом «ВстановитиЗначенняПараметри» колекції «Параметри» динамічного списку. Метод приймає два параметри:
. "Параметр" - Тип: Рядок; ПараметрКомпонуванняДаних. Ім'я параметра або параметра компонування даних, значення якого потрібно встановити;
. "Значення" - Тип: Довільний. Значення, яке необхідно встановити.
Може бути викликаний в обробнику «При створенні на сервері» форми:

У вас є питання, чи потрібна допомога консультанта?


Надаємо користувачеві можливість змінювати період отримання залишків. Для цього додамо реквізит та пов'язаний з ним елемент форми «Дата»:


У обробнику «Зміни» елемента форми «Дата» викличемо метод «ВстановитиЗначенняПараметра», передавши значення значення пов'язаного реквізиту. Аналогічним чином змінимо процедуру «При створенні на сервері» форми. Оскільки метод доступний на клієнті, виклик сервера не буде потрібно:


Тепер при зміні дати, автоматично оновлюватимуться залишки:




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


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


Результат внесених змін:



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

Можливості динамічних списків у 1С

Призначення даного типуполягає у відображенні інформації з будь-яких таблиць БД, незалежно від її типу. Механізм був створений на основі СКД і має аналогічні можливості. Але це не означає, що обов'язково доведеться писати запит мовою 1С, хоча ця можливість є і їй потрібно скористатися. Ви можете просто вказати таблицю, інформація з якої вас цікавить і 1С самостійно сформує найпростіший запит.

Щоб подивитися, як формується динамічний список та які дані він показує, необхідно відкрити керовані форми, де він розташований, у конфігураторі: у переліку реквізитів через контекстне менювідкрити його властивості та звернути увагу на пункт «Довільний Запит». Якщо галка відсутня, параметр «Основна таблиця» відображає таблицю БД, звідки беруться дані. В іншому випадку динамічний список відображає дані довільного запиту, який можна побачити, відкривши налаштування списку.

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

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

  • Вибір динамічного списку;
  • Угруповання;
  • Сортування;
  • Оформлення.

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

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

Для більшої наочності створимо окрему зовнішню обробку та розмістимо на ній динамічний список. Щоб реалізувати задумане таблиці з номенклатурою буде мало, тому нам необхідно дозволити довільний запит. У ньому ми опишемо ліве з'єднання довідника з переліком номенклатури та регістру залишків та встановимо довідник як основну таблицю. Така схема дозволить користувачам, працюючи з динамічним списком, додавати чи змінювати номенклатуру.



ВЫБРАТЬ НоменклатураПеречень.Наименование КАК Наименование, ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ Справочник.Номенклатура КАК НоменклатураПеречень ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекухцаяДата,) КАК ТоварыНаСкладахОстатки ПО НоменклатураПеречень.Ссылка = ТоварыНаСкладахОстатки.Номенклатура ГДЕ

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

&На сервері Процедура При створенні на сервері (відмова, стандартна обробка) залишки номенклатури. параметри.


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

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



&НаСервері Процедура ПриСтворенніНаСервері(Відмова, СтандартнаОбробка) ДатаЗалишків = ПоточнаДатаСеансу(); ЗалишкиНоменклатури.Параметри.УстановитиЗначенняПараметра("ПоточнаДата", ДатаЗалишків); КінецьПроцедури &НаКлієнті Процедура ДатаЗалишківПриЗміні(Елемент) ЗалишкиНоменклатури.Параметри.ВстановитиЗначенняПараметра("ПоточнаДата",ДатаЗалишків); КінецьПроцедури

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

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

  1. Підбирання;
  2. Списків.

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

Нарешті здійснилася мрія будь-якого «сімейника». Як часто, користувачі програми 7.7 просили зробити нормальний підбір номенклатури. Щоб залишки можна було бачити, і ціни, і встановити фільтри. Доводилося вигадувати різні хитрощі, аж до написання зовнішніх компонентів. У 1С 8.2 з'явилися динамічні списки. Пропоную розглянути, що це таке і що вони можуть дати в 1С 8.3.

За основу візьмемо якусь тестову конфігурацію 1С: "Бухгалтерія підприємства 3.0". Не будемо зараз робити підбір, просто довіднику «Номенклатура» додамо ще одну форму вибору і зробимо її тимчасово основною:

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

Зайдемо до його властивостей і подивимося, що там.

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

Відкриється вікно з готовим кодом на . Наразі там просто перераховані всі поля довідника «Номенклатура».

Отримайте 267 відеоуроків з 1С безкоштовно:

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

Власний запит у динамічному списку

Спочатку створимо потрібний нам запит із залишками та цінами. Приблизно так:

Закладка «Налаштування»

І ось тепер найсмачніше! Переходимо на закладку "Налаштування". І відразу бачимо, що на першій вкладці ми можемо робити будь-які відбори з будь-якого поля у запиті:

Програмне встановлення параметрів запиту в динамічному списку 1С 8.3

Не забуваймо, що у запиті у нас є два параметри: «Період» і «Тип цін». Ми повинні передати їх на запит, інакше буде помилка.

Пропишемо ці параметри у параметрах форми, а в модулі форми додамо наступні рядки:

&На Сервері Процедура ПриСтворенніНа Сервері(Відмова, СтандартнаОбробка) Список. Параметри. ВстановитиЗначенняПараметра("Період" , Параметри. Дата) ; Перелік. Параметри. ВстановитиЗначенняПараметра("ТипЦен" , Параметри. ТипЦен) ; КінецьПроцедури Головна Нотатки із Задзеркалля

21.04.2014 Отримання даних динамічного списку

Реалізовано у версії 8.3.6.1977.

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

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

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

Динамічний список сам по собі не може надати таку інформацію. Завдання динамічного списку – забезпечити швидкий переглядвеликих обсягів даних. Тому він зчитує дані порціями, потрібними для відображення на одному-двох екранах. І «нічого не знає», наприклад, про загальну кількість даних, які йому належить вважати.

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

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

Тепер це завдання вирішується просто. У таблиці динамічного списку з'явилися два нові методи:

  • ОтриматиВиконувануСхемуКомпонівкиДаних();
  • ОтриматиНалаштуванняКомпонуванняДаних().

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

В результаті ви отримаєте структуру (або звіт), що містить колонки та рядки, що виводяться в таблицю динамічного списку.

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

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



Завантаження...
Top