Інтернет Windows Android

Вибір налаштувань динамічного списку 1с 8.3. Способи отримання і кешування даних динамічним списком

Друк (Ctrl + P)

динамічний список

1. Загальна інформація

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

Мал. 1. Варіанти створення динамічного списку

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

ВИБРАТИ
ВИБІР
КОЛИ Доставка.Коеффіціент \u003d 1 ТОДІ & Подання
ІНАКШЕ Доставка. коефіцієнт
КІНЕЦЬ ЯК Коефіцієнт
З

При цьому якщо тип значення параметра відрізняється від типу реквізиту об'єкта (наприклад, Реквізіт1 має тип число, А значення параметра - тип рядок), То для коректного відображення поля слід виконати явне приведення значення параметра до потрібного типу:

ВИБРАТИ
ВИБІР
КОЛИ Доставка.Коеффіціент \u003d 1 ТОДІ ВИРАЗИТИ (& Подання ЯК Рядок (100)) ІНАКШЕ Доставка. коефіцієнт
КІНЕЦЬ ЯК Коефіцієнт
З
Документ.ДоставкаПродукціі ЯК Доставка

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

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

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

2. Обмеження і особливості

При установці відбору в динамічному списку слід пам'ятати, що добір не діє на групи, якщо для динамічного списку обраний режим відображення Ієрархічний список або Дерево. Під «групами» розуміється елемент довідника або плану видів характеристик, у якого властивість ЕтоГруппа встановлено в значення Істина.
Відбори, автоматично накладаються динамічним списком на стандартні реквізити Власник, Батько, Дата, Період і ЕтоГруппа, застосовуються
звичайних методів тестування компонування даних. Відбори, автоматично накладаються динамічним списком на ключові поля, можуть застосовуватися як звичайних методів тестування компонування даних так і шляхом безпосереднього додавання в текст запиту умови В на поля основної таблиці. В результаті застосування відборів засобами компоновки, вони можуть застосуватися як у вкладених запитах, так і в параметрах віртуальних таблиць.

При розробці динамічних списків рекомендується перевірити всі динамічні списки з довільними запитами. У процесі перевірки слід переконатися, що якщо в запиті списку присутні вкладені запити або віртуальні таблиці, і в них доступні для відбору поля з псевдонімами, що збігаються з псевдонімами стандартних реквізитів Власник, Батько, Дата, Період, ЕтоГруппа або ключових полів, то ці поля дійсно відповідають стандартними реквізитами, з якими у них збігається псевдонім. Якщо це не так - слід змінити запит що б вони збігалися або
псевдонім відрізнявся.
Якщо вибрано ручне формування запиту, то на запит накладаються деякі обмеження:
● Чи не підтримується використання інструкції ПЕРШІ в запиті динамічного списку. При необхідності використовувати в динамічному списку вибірку, обмежену по кількості записів, слід переробити запит формування динамічного списку таким чином, щоб власне змістовна частина запиту була розміщена в підзапиті і обмежити кількість одержуваних записів в цьому підзапиті. Замість підзапиту також можна використовувати тимчасову таблицю.
● Чи не підтримується відбір, сортування і угрупування:

  • За реквізитами табличних частин.
  • Поля уявлень.
  • Поле ВерсіяДанних.
  • Поле ІмяПредопределеннихДанних.
  • Поле Вид таблиці плану рахунків.
  • Поле ВідДвіженія таблиці регістра накопичення.
  • Поле ТіпЗначенія таблиці плану видів характеристик.
  • Поле типу Тип;
  • Поле типу Рядок (необмеженої довжини).
  • Поле типу ДвоічниеДанние.

● Чи не підтримується сортування і угрупування по полях Субконто<НомерСубконто> і ВідСубконто<НомерСубконто> таблиці ДвіженіяССубконто регістра бухгалтерії.
● Чи не підтримується угруповання по полях, які представляють собою вирази мови запитів, що містять агрегатні функції.
● При вибраної базової таблиці, запит динамічного списку має наступні обмеження:

  • Не підтримуються об'єднання.
  • Чи не підтримується використання секції УПОРЯДОЧИТЬ ПО. Слід використовувати запит без основної таблиці або задавати необхідний упорядкування через налаштування динамічного списку.

● Якщо динамічний список відображається у вигляді ієрархічного списку або дерева, то запис не з'явиться на динамічним списком, якщо не відображається хоча-б один батько цього запису. Іншими словами - для відображення елемента ієрархічного списку, динамічний список повинен відобразити також всіх батьків цього елемента до вершини списку. При цьому під вершиною списку мається на увазі або власне
кореневий елемент ієрархічного об'єкт, що міститься динамічним списком або елемент, встановлений в якості властивості РодітельВерхнегоУровня розширення таблиці форми для динамічного списку.

Чи не підтримується використання в якості основної таблиці динамічного списку наступних таблиць:

● Схема, для якої відсутня ключ, унікально ідентифікує кожну запис таблиці (посилання для об'єктних таблиць і ключ записи для таблиць регістрів). Однак такі таблиці можуть бути встановлені в якості основної таблиці динамічного списку (не дивлячись на відсутність ключа):

● таблиця Субконто регістра бухгалтерії;
● все віртуальні таблиці регістра бухгалтерії, крім таблиці ДвіженіяССубконто;
● таблиці значень констант (включаючи таблицю Константи);
● таблиці зовнішніх джерел даних без ключових полів;
● таблиці кубів зовнішніх джерел даних;
● таблиці регістра накопичення:

  • таблиця оборотів;
  • таблиця залишків;
  • таблиця оборотів і залишків.

● таблиці регістра розрахунку:

  • таблиця фактичного періоду дії;
  • даних графіка;
  • базових даних.

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

Іншими словами, динамічний список з вказаною основною таблицею буде працювати коректно в тому випадку, якщо в результаті виконання запиту,
вказаного в якості джерела даних, не збільшується кількість рядків, одержуваних з основної таблиці (з урахуванням накладеного відбору). Якщо ж в результаті виконання запиту кількість рядків, одержуваних запитом з основної таблиці, збільшується, це буде призводити до порушення унікальності ключа записів таблиці, яка відображається списком. В цьому випадку необхідно відключити використання основної таблиці динамічного списку.
При роботі динамічного списку необхідно враховувати права доступу на реквізити, які відображаються списком:
● На сторону клієнта не передаються дані колонок динамічного списку, які позначені властивістю Використовувати завжди, але для яких у поточного користувача відсутня право Перегляд. Доступ до даних таких колонок (за допомогою властивості ТекущіеДанние і методу ДанниеСтрокі ())
на стороні клієнта неможливий.
● Якщо у поточного користувача відсутня право Перегляд на ключове поле динамічного списку, отримання даних цим динамічним список призводить до помилки порушення прав доступу.
Для динамічного списку, який відображає список перерахування, відсутня можливість інтерактивного налаштування списку.
Склад колонок і налаштування динамічного списку пов'язані з полями запиту за псевдонімами полів вибірки. Якщо в запиті для поля вибірки псевдонім не заданий явно і поле є системним, то як псевдонім використовується ім'я поля для англійського варіанту вбудованої мови.
Зазначена зв'язок означає, що при зміні (або явній вказівці псевдоніма для поля, у якого використовувався автоматичний псевдонім)
псевдоніма поля запиту, формує дані динамічного список, будуть втрачені настройки реквізиту динамічного списку, елементи форми «втратять» відображаються реквізити, настройки динамічного списку стануть невірними і т. д.
У тому випадку, якщо джерелом даних динамічного списку є таблиця (звичайна або віртуальна), яка дозволяє встановлювати відбір по періоду, то в тому випадку, якщо користувач встановлює період відображення в такому динамічному списку (команда Встановити інтервал дат ...),
задані межі періоду будуть встановлені в якості значень відбору або параметрів віртуальної таблиці. Якщо засобами розширення мови
запитів для системи компоновки даних були явно вказані імена параметрів віртуальної таблиці - будуть встановлені параметри з заданими
іменами. Таблиці, для яких можливо керувати періодом відображення або обробки даних:
● таблиці регістрів (основні або віртуальні), для яких існує можливість відбору по періоду (для регістра розрахунку - по періоду реєстрації);
● основні таблиці документів, бізнес-процесів і завдань;
● основні таблиці журналів документів;
● основні таблиці послідовностей, таблиці кордонів послідовностей.
Як параметр запиту динамічного списку може виступати масив або список значень. Однак якщо параметром є список значень, то в якості значення відбору буде використано тільки перше значення списку. У разі якщо динамічний список використовує запит з параметрами, первісна установка значень параметрів повинна виконуватися в обробнику ПріСозданііНаСервере.
При відображенні даних динамічного списку слід пам'ятати про наступні особливості:
● При програмному зміні властивостей динамічного списку не відбувається автоматичного повторного заповнення командних панелей, пов'язаних
з цим динамічним списком.
● Якщо кілька полів згруповані в групу з режимом угрупування В осередку і в згрупованих полях є поле, яке відображається прапорцем, то цей прапорець завжди буде відображатися першим в вийшла осередку (лівіше тексту).
У динамічному списку, при визначенні типу даних для полів, до складу виразів яких входять параметри, поля або літерали, результуючий тип визначається за типами полів і літералів. Якщо тип значення параметра не входить в результуючий тип даних - його значення буде усечено.
Наприклад, в наступному прикладі поле матиме тип Число.

ВИБІР
КОЛИ БРЕХНЯ
ТОДІ 5
ІНАКШЕ
& Параметр
КІНЕЦЬ

Якщо привласнити параметру Параметр значення іншого типу, в динамічний список для цього поля буде отримувати значення 0 (значення за замовчуванням для типу Число).
Якщо в подібній ситуації потрібно вибирати параметр іншого типу - рекомендується використовувати конструкцію мови запитів ВИРАЗИТИ. наприклад,
якщо в наведеному вище прикладі потрібно передавати в параметр рядок не довше 100 символів, то слід замінити просте зазначення параметра, на вираз з явним приведенням типу:

ВИБІР
КОЛИ БРЕХНЯ
ТОДІ 5
ІНАКШЕ
ВИРАЗИТИ (& Параметр ЯК Рядок (100))
КІНЕЦЬ

Якщо в довільному тексті запиту динамічного списку в виразах полів вибірки використовуються параметри - слід явно вказати тип параметрів за допомогою конструкції ВИРАЗИТИ. Наприклад, замість & Номенклатура ЯК Номеклатура використовувати
ВИРАЗИТИ (& Номенклатура ЯК Справочнік.Номенклатура) ЯК Номенклатура. В іншому випадку пошук через рядок пошуку може працювати
некоректно або видавати помилки.

3. Способи отримання і кешування даних динамічним списком

При отриманні даних для відображення динамічний список використовує один з трьох способів:
1. Зчитування з бази даних виконується порціями з кількістю елементів даних, кілька перевищує кількість рядків, що одночасно відображаються списком (але не менше 20). Чи не виконується кешування даних на сервері.
2. Зчитування з бази даних виконується сторінками по 1 000 елементів даних. Виконується кешування даних на сервері. Ієрархічні дані кешуються: для кожного з батьків кешируєтся не більше 2 сторінок елементів. На один динамічний список кешируєтся не більше 20 сторінок елементів. Кешування буде включено динамічним списком для наступних таблиць:
● Критерій відбору;
● Всі таблиці регістра бухгалтерії, крім основної таблиці і таблиці ДвіженіяССубконто;
● Всі таблиці регістра накопичення, крім основної таблиці;
● Всі таблиці регістра відомостей, крім основної таблиці;
● Всі таблиці регістра розрахунку, крім основної таблиці;
● Віртуальна таблиця ЗадачіПоІсполнітелю;
● Таблиці зовнішніх джерел без ключів;
● Куби зовнішніх джерел.

3. Зчитування з бази даних виконується сторінками по 1 000 елементів. Перша порція дорівнює 1 сторінці. Кожна наступна порція збільшується на 1 сторінку (при досягненні кінця попередньої вибірки). Чим ближче пересувається «точка перегляду» до кінця відображуваних даних, тим більша вибірка зчитується з бази даних, в межі стаючи рівною всім відображуваним даними. Виконується кешування даних на сервері. Максимальна кількість записів в кеші і динамічному списку - 1 000 000.
Залежно від того, що вибрано основною таблицею динамічного списку і яке значення приймає властивість Динамічне зчитування, використовуються ті чи інші способи зчитування даних:

● Як значення властивості Основна таблиця вказана одна з наступних таблиць: план обміну, довідник, список документів, журнал документів, план видів характеристик, план рахунків, план видів розрахунку, бізнес-процес, завдання, таблиця точок бізнес-процесу:



● Як значення властивості Основна таблиця вказана одна з наступних таблиць: основна таблиця регістру відомостей, регістра накопичення, регістра бухгалтерії, регістра розрахунку, віртуальна таблиця регістру бухгалтерії ДвіженіяССубконто:

● Властивість Динамічне зчитування:
● Встановлено: використовується спосіб 1 (опис способів наведено вище).
● скинуто: використовується спосіб 2 (опис способів наведено вище).

● Як властивості Основна таблиця вказана таблиця критерію відбору або таблиця завдань по виконавцю (ЗадачіПоІсполнітелю):
● Ключ, що ідентифікує рядок таблиці: Посилання.

● Як властивості Основна таблиця вказана віртуальна таблиця регістру відомостей СрезПервих або СрезПоследніх:
● Ключ, що ідентифікує рядок таблиці: КлючЗапісі.
● Властивість Динамічне зчитування не застосовується.
● Використовується спосіб 2 (опис способів наведено вище).

● Як властивості Основна таблиця вказана одна з віртуальних таблиці регістрів, крім перерахованих вище:

● Властивість Динамічне зчитування не застосовується.

● Властивість Основна таблиця не вказано, використовується довільний запит:
● Ключ, що ідентифікує рядок таблиці: Число.
● Властивість Динамічне зчитування не застосовується.
● Використовується спосіб 3 (опис способів наведено вище).

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

4. Налаштування динамічного списку

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


Мал. 2. Умовне оформлення динамічного списку

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

ПОРАДА. Слід пам'ятати про те, що невдалий вибір полів сортування (так само як відбору та групування даних) негативно впливає на ефективність динамічної вибірки.
З точки зору прикладного розробника, настройки динамічного списку складаються з декількох частин, які пов'язані між собою. Основною властивістю, через яке можна управляти настройками динамічного списку є КомпоновщікНастроек. Це об'єкт містить три набору налаштувань, які при роботі системи визначають остаточні налаштування, що застосовуються до динамічного списку:
● Налаштування - налаштування, створені в режимі Конфігуратора. Властивість динамічного списку Порядок надає швидкий доступ до властивості Настройкі.Порядок компоновщика налаштувань динамічного списку, таким чином, такі конструкції є еквівалентними:
Спісок.Порядок і Спісок.КомпоновщікНастроек.Настройкі.Порядок;
● ПользовательскіеНастройкі - це налаштування, які змінює користувач в режимі «1С: Підприємство»;
● ФіксірованниеНастройкі - ці настройки задаються з вбудованої мови. Також в цій властивість потрапляють значення відбору, які передаються в форму за допомогою її параметрів. Властивості динамічного списку Відбір, Параметри, УсловноеОформленіе надають швидкий доступ до фіксованих налаштувань компоновщика налаштувань динамічного списку. Іншими словами, дані звернення є еквівалентними:
Спісок.КомпоновщікНастроек.ФіксірованниеНастройкі.Отбор і Спісок.Отбор.
При формуванні остаточної настройки динамічного списку, різні варіанти налаштувань комбінуються таким чином:
● Якщо який-небудь вид налаштувань цілком відзначений як користувальницький, то в результуючі настройки потрапляють призначені для користувача настройки
(Спісок.КомпоновщікНастроек.ПользовательскіеНастройкі). При цьому якщо будь-які елементи налаштувань відзначені як недоступні, то ці настройки буде вміщено в результуючі настройки з властивості Спісок.КомпоновщікНастроек. Налаштування.
● Якщо який-небудь вид налаштувань відзначений як користувальницький не цілком, а поелементно, то:
● Елементи, відмічені як призначені для користувача, потраплять в результуючі настройки з властивості Спісок.КомпоновщікНастроек.ПользовательскіеНастройкі.
● Елементи, відмічені як недоступні, потраплять в результуючі настройки з властивості Спісок.КомпоновщікНастроек.Настройкі.
● Фіксовані настройки (Спісок.КомпоновщікНастроек.ФіксірованниеНастройкі) додаються в результуючі настройки «як є». При цьому недопустима ситуація, коли в фіксованих і призначених для користувача настройках є однойменні настройки, наприклад відбір з однаковим лівим значенням в умови.

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


Мал. 3. Управління включенням в призначені для користувача настройки

Прапорець в нижній частині вікна (див. Рис. 3) відповідає за розміщення в настройках (звичайних або швидких) всього види установок. Ця можливість доступна для відбору, порядку, угруповання і умовного оформлення. Якщо настройки вказані з режимом редагування Швидкий вибір, то у властивості Група налаштувань таблиці форми, що відображає динамічний список, необхідно вказати порожню групу форми, в якій будуть розташовуватися елементи, пов'язані з швидкими призначеними для користувача настройками динамічного списку. Якщо група не вказана - швидкі призначені для користувача настройки не будуть відображені на формі. Також є можливість явно викликати створення призначених для користувача налаштувань за допомогою вбудованої мови за допомогою методу СоздатьЕлементиФормиПользовательскіхНастроек () розширення динамічного списку.
Також є можливість вибирати можливість розміщення в призначених для користувача настройках конкретних елементів налаштувань. Ця можливість доступна для елементів відбору і умовного оформлення (див. Рис. 3).

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

5. Пошук в динамічному списку

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


Мал. 4. Рядок пошуку в динамічному списку

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


● Якщо властивість Режим сумісності встановлено в значення Не застосовувати препарат або старше значення Версія 8.3.4 - значення Командна панель.
Перехід до пошуку здійснюється наступним чином:
● Натискаючи поєднання клавіш Ctrl + F;
● Мишею;
● При початок набору тексту в динамічному списку (з урахуванням значення властивості динамічного списку ПоіскПріВводе).
● Положення стану перегляду - описує, де буде відображатися стан перегляду: по яких полях виконувався пошук і які значення
шукалися в кожному полі. Може приймати наступні значення: Авто, Ні, Верх, Низ


Мал. 5. Стан пошуку в динамічному списку

Якщо властивість встановлено в значення Ні, то стан перегляду буде відсутній на формі. В результаті визначити, виконаний пошук чи ні, можна буде тільки за доступністю кнопки Скасувати пошук.
Якщо властивість встановлено в значення Верх, то стан перегляду буде розташовано між командної панеллю списку і таблицею, що відображає динамічний список. Якщо властивість встановлено в значення Низ, то стан перегляду буде розміщено відразу після таблиці, що відображає динамічний список.
Якщо форма створена в «1С: Підприємство» версії 8.3.4 і молодше - властивість встановлено в значення Немає. Якщо форма створена в «1С: Підприємство» версії 8.3.5 і старше - властивість встановлено в значення Авто. Реальне значення властивості в цьому випадку буде визначатися таким чином:
● Якщо властивість Режим сумісності встановлено в значення Версія 8.3.4 (і нижче) - значення Немає;
● Якщо властивість Режим сумісності встановлено в значення Не застосовувати препарат або старше значення Версія 8.3.4 - значення Верх;
● Положення управління пошуком - визначає, де буде відображатися кнопка управління пошуком. Кнопка відкриває меню, яке містить наступну інформацію: команди Знайти за поточним значенням, Розширений пошук, Скасувати пошук, Встановити період (для списків документів і журналів) і історія пошукових запитів (останні 5 запитів). Властивість може приймати значення: Авто, Ні, Командна панель.


Мал. 6. Управління пошуком в динамічному списку

Якщо властивість встановлено в значення Ні, то кнопка управління пошуком буде відсутній на формі (але команди будуть доступні за допомогою меню Ще). Значення властивості Командна панель розміщує кнопку на командну панель, пов'язану з таблицею, що відображає динамічної список.
Якщо форма створена в «1С: Підприємство» версії 8.3.4 і молодше - властивість встановлено в значення Немає. Якщо форма створена в «1С: Підприємство» версії 8.3.5 і старше - властивість встановлено в значення Авто. Реальне значення властивості в цьому випадку буде визначатися таким чином:
● Якщо властивість Режим сумісності встановлено в значення Версія 8.3.4 (і нижче) - значення Немає;
● Якщо властивість Режим сумісності встановлено в значення Не застосовувати препарат або старше значення Версія 8.3.4 - значення Командна панель;
Якщо на формі присутні кілька командних панелей, джерелом команд для яких є одна таблиця керованої форми (відображає дані динамічного списку), то рядок пошуку і кнопка управління пошуком буде розташовуватися тільки в одній командній панелі:
● Чи в командній панелі самого динамічного списку (якщо для неї включено автоматичне заповнення)
● Чи в будь-який з решти командних панелей.

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

● Пошук виконується не по всіх колонках динамічного списку (і об'єкта конфігурації), а лише за тими колонках, які відображаються в таблиці.
● Пошук в динамічному списку по полях посилальних типів з довільним поданням виконується по полях, які використовуються для
формування уявлення (див. тут). Поля, що входять в уявлення, виходять з урахуванням обробника ОбработкаПолученіяПолейПредставленія () відповідного об'єкта.
● Для динамічних списків з вказаною основною таблицею використовується повнотекстовий пошук по основній таблиці. До результатів повнотекстового пошуку будуть додані всі непроіндексовані посилання з основної таблиці. Результат повнотекстового пошуку для основної таблиці використовується в якості відбору по ключових полях. Також виконується повнотекстовий пошук по полях, що відображається в списку з інших таблиць (якщо для поля і об'єкта конфігурації використовується повнотекстовий пошук). Без включеного повнотекстового пошуку дані можуть бути
знайдені, але сам пошук буде виконуватися дуже повільно.
Якщо при спробі виконати повнотекстовий пошуку сталася помилка, пошук буде виконуватися без застосування повнотекстового пошуку.
Наприклад, таке може статися при пошуку по одній букві і великій кількості рядків в інформаційній базі, що починаються з цієї літери.
● У тому випадку, якщо для поля основної таблиці динамічного списку використовується відбір з видом порівняння само, то при виконанні повнотекстового пошуку до пошукового запиту по цій таблиці буде додано значення відбору.
● Рядок пошуку розбивається на слова. Це розбиття виконується за такими правилами:
● Рядок розбивається, використовуючи символи пробілу і табуляції.
● Потім обробляється кожен отриманий фрагмент:
● Якщо фрагмент є поданням дати (з часом або без нього) з урахуванням поточних регіональних установок сеансу, то словом є цей фрагмент.
● Інакше фрагмент розбивається далі, використовуючи в якості роздільників символи ", .- / \\". У цьому випадку в якості слова приймається кожен отриманий фрагмент рядка.

● Для кожного слова формується свій набір умов, які об'єднуються «за АБО». Цей набір умов формується в тому випадку, якщо повнотекстовий пошук даного слова в таблиці, з якої було отримано дане поле, повернув хоча б один об'єкт або повнотекстовий пошук не використовувалася для цього поля. Умови формуються наступним чином:
● Для поля типу Рядок умова має вигляд ІмяПоля ПОДІБНО% Слово%.
● Для поля типу Число умова має вигляд ІмяПоля \u003d Значення, де Значення - це слово, яке наведене до типу Число. Якщо приведення виконати неможливо - пошук по полю виконуватися не буде.
● Слово шукається як підрядок в поданні за замовчуванням для типу Булево, певне для поточного сеансу. Якщо шукане слово виявлено в поданні, то в подальшому виконується пошук значення, відповідного подання, в якому виявлено слово. При цьому для пошуку не використовуються уявлення, які задані за допомогою властивості елемента форми Формат.
● Для поля типу Дата умова має вигляд ІмяПоля\u003e \u003d НачалоДня (Слово) І ІмяПоля<=КонецДня(Слово). Если Слово подобно дате, в которой год
вказано однією або двома цифрами, рік буде приведений до поточного століття і вже це значення буде подсталяться в пошукове умова.
● Для довідкових полів виконується пошук по полях, що використовується для формування уявлення посилання. У кожному з цих полів пошук
виконується за правилами, описаним вище. Для пошуку не використовуються поля, використовувані для формування довільного представлення даних.
Набір умов для кожного слова об'єднуються «за І».
● Для значень з провідними нулями, виконувати пошук можна як по рядку з провідними нулями, так і по рядку, зазначеної без провідних нулів.
● Якщо динамічний список відображає список документів або журнал документів, то заданий інтервал перегляду списку також відображається в області форми, відведеної для відображення стану перегляду для необхідного динамічного списку.
● Команда пошуку за поточним значенням не доступна в тому випадку, якщо основною таблицею динамічного списку є критерій відбору.
● Знайдені фрагменти рядків виділяються при відображенні в таблиці.
● Для однієї колонки підтримується пошук тільки по одній пошуковому рядку. При додаванні нового пошукового запиту для колонки, по якій вже виконується пошук, відбудеться заміна пошукового виразу, а не складання двох пошукових запитів.
● Якщо на формі відсутній додаток елемента форми виду Відображення рядка пошуку, пов'язане з таблицею (властивість Джерело доповнення елемента форми), що відображає динамічний список, то натискання клавіш Ctrl + F призводить до відкриття вікна пошуку.


Мал. 7. Діалог пошуку

Якщо на формі присутній доповнення елемента форми виду Відображення рядка пошуку, пов'язане з таблицею (властивість Джерело доповнення елемента форми), що відображає динамічний список, то для відкриття діалогу пошуку слід використовувати команду Розширений пошук.
● При використанні діалогу пошуку потрібно пам'ятати про наступні особливості:
● Відкрити діалогове вікно пошуку за поєднанням клавіш призводить до того, що значення поточної комірки виявляється в рядку Що шукати, а значення перемикача Як шукати встановлюється в значення За точним збігом.

● Відкриття діалог пошуку шляхом безпосереднього початку набору пошукового рядка в динамічному списку призводить до того, що значення перемикача Як шукати встановлюється в значення По частині рядка, а текст, що набирає потрапляє в поле Що шукати.

6. Отримання даних, що відображаються динамічним списком

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

Схема \u003d Елементи.Спісок.ПолучітьІсполняемуюСхемуКомпоновкіДанних ();
Налаштування \u003d Елементи.Спісок.ПолучітьІсполняемиеНастройкіКомпоновкіДанних ();
КомпоновщікМакета \u003d Новий КомпоновщікМакетаКомпоновкіДанних ();
МакетКомпоновкі \u003d КомпоновщікМакета.Виполніть (Схема, Налаштування);
ПроцессорКомпоновкі \u003d Новий ПроцессорКомпоновкіДанних;
ПроцессорКомпоновкі.Ініціалізіровать (МакетКомпоновкі);
ПроцессорВивода \u003d Новий ПроцессорВиводаРезультатаКомпоновкіДаннихВТаблічнийДокумент;
Повернення ПроцессорВивода.Вивесті (ПроцессорКомпоновкі);

Отримання даних в колекцію значень (таблиця або список значень) виконується аналогічно.
Отримання даних динамічного списку зазначеним чином має ряд особливостей, які потрібно враховувати при розробці прикладних рішень:
● Чи не підтримується наступне оформлення таблиці:
● Чергування кольорів рядків;
● Картинка шапки;
● Картинка підвалу;
● Колір фону підвалу;
● Колір тексту підвалу;
● Шрифт підвалу;
● Горизонтальне положення в підвалі;
● Режим пароля.
● Чи не підтримується умовне оформлення, вказане для керованої форми;
● При упорядкуванні ієрархічної таблиці по зростанню, по полю типу Посилання, записи, що містять порожню посилання завжди розміщуються першими.

Головна Нотатки із Задзеркалля

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

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

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

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

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

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

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

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

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

  • ПолучітьІсполняемуюСхемуКомпоновкіДанних ();
  • ПолучітьІсполняемиеНастройкіКомпоновкіДанних ().

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

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

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

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

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

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

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


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

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


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

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


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


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


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




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


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


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



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

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

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

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

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

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

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

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

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

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



ВИБРАТИ НоменклатураПеречень.Наіменованіе ЯК Найменування, ТовариНаСкладахОстаткі.Склад ЯК Склад, ТовариНаСкладахОстаткі.КолічествоОстаток ЯК КолічествоОстаток З Справочнік.Номенклатура ЯК НоменклатураПеречень ЛІВЕ З'ЄДНАННЯ РегістрНакопленія.ТовариНаСкладах.Остаткі (& ТекухцаяДата,) ЯК ТовариНаСкладахОстаткі ПО НоменклатураПеречень.Ссилка \u003d ТовариНаСкладахОстаткі.Номенклатура ДЕ

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

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


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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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