Нюанси роботи компонувальника налаштувань. Відбори у звітах. Нюанси роботи компонувальника установок Встановити стандартні налаштування керованої форми 1с

25.01.2021 Огляди

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

Бажаючі можуть пропустити частини 1-4 і одразу перейти до прикладів.

Спробую трохи докладніше зупинитися на роботі відборів СКД для їх застосування у звітах. Вважаю, поведінка в динамічних списках, за низкою застережень, буде близькою. Отже, відбори у звітах, трохи теорії та конкретні приклади.

Використовуються СП 8.3.6 та вище, розділи ІТС (пункт 10.3.7.5 та ін.), книга «Професійна розробка в системі 1С-Підприємство 8» (Казань, 2012 р., другий том). У книзі Є.Хрустальової взагалі нічого виразного на цю тему не знайшлося.

Частина 1

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

* Налаштування – налаштування, створені в режимі Конфігуратора та змінювані в режимі редагування варіанта звіту;

* Налаштування користувача - налаштування, які змінює користувач в режимі «1С:Підприємство» суто інтерфейсно;

* ФіксованіНалаштування – ті налаштування, які задаються із вбудованої мови, у т.ч. неявно задаються системою. У цю властивість потрапляють значення відбору, що передаються у форму за допомогою її параметрів (структура «Відбір»).

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

Здавалося б, "старшим" є варіант. Але натискання на "Ще"/"Змінити варіант" і підтвердження змін у формі, що відкрилася, викликає обробник події форми , при цьому відбір з'являється на панелі "Основні" на формі, що викликається з "Налаштування...", і з'являється на формі звіту, але не відображається на закладці "Відбір"; причому або він з'являється відразу і на основній формі звіту, і на формі по "Налаштування ..." (якщо є прапор "Включати в налаштування користувача"), або ні там, ні там. Але в будь-якому випадку на закладці "Відбір" форми "Налаштування..." його не буде. Різниця між закладкою "Основні" формою "Налаштування..." та основною формою звіту визначається полем "Режим редагування" (звичайний - тільки в "Налаштуваннях", швидкий - ще й на самій формі звіту), але це, думаю, всі знають. До речі, значення "Відбору" і "Швидких" ніяк не синхронізовані і можуть суперечити один одному, а от "Швидкий" на формі звіту та на формі налаштувань жорстко синхронні. Так от, при правці варіанта він сам стає зміненим (але його ID та ім'я не змінюються), а ось ПН залишаються НЕ модифікованими (тобто навіть якщо мова про них, тобто про прапор включення того чи іншого елемента в ПН) ).

Натискання на "Вибрати варіант..." і підтвердження змін у формі, що відкрилася, викликає в наступному порядку події:

При Завантаженні ВаріантуНа Сервері

При оновленні складу користувачів налаштувань на сервері

При цьому ні варіант, ні ПОНЕДІЛОК нічим і ніяк не змінюються. Звідси ясно, що варіант і налаштування якщо і пов'язані, то аж ніяк не безпосередньо.

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

Натискання на "Ще"/"Встановити стандартні налаштуванняу формі налаштувань (а також і пункт «Стандартні налаштування» у виправленні варіанта) викликає тільки подію При оновленні складу користувачів налаштувань на сервері. При цьому варіант стає зміненим, а от ПН змінюються. Якщо перед цим варіант змінено, він залишається зміненим (ні скидання прапора зміненості, ні скидання реально зроблених налаштувань немає).

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

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

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

Звіт.КомпоновщикНалаштувань.Налаштування.Відбір.Елементи.Очистити();

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

Примітки:

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

При додаванні відбору на формі "Змінити варіант" він робиться відразу з встановленим прапором "Включати в ПОНЕДІЛОК", але, повторюся, з точки зору вбудованої мови ПОНЕДІЛОК залишаються незмінними.

Встановлення зміненості варіанта та встановлення зміненості ПН не пов'язані безпосередньо, це два різні напрями змін.

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

Незважаючи на затвердження в СП, ПН чудово серіалізуються в XML.

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

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

Частина 2

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

Комп=Новий КомпонувальникНалаштуваньКомпонівкиДаних; // можна ще для початку // комп.Ініціалізувати(Який Компонувальник Налаштувань.Отримати ДжерелоДоступнихНалаштувань()); комп. Який Компонувальник Налаштувань. Завантажити Налаштування користувача (комп. Налаштування користувача);

У компонувальника налаштувань є метод (), який завантажує значення налаштувань користувача, передані в якості параметра методу. Метод ОтриматиНалаштування() дозволяє отримати копію поточних налаштувань (з урахуванням налаштувань користувача). Метод ЗавантажитиНалаштування() завантажує передані налаштування в компонувальник налаштувань (налаштування користувача також перезаповнюються на основі переданих даних, з урахуванням наявності ключів, див. приклад нижче).

Застосування налаштувань користувача до основних налаштувань виконується в методі ОтриматиНалаштування() компонувальника налаштувань. При цьому виконуються такі дії:

* Для типів ЕлементВідборуКомпонуванняДаних вміст елементів копіюється у відповідні елементи налаштувань.

* Для типів ВідбірКомпонуванняДані елементи, що знаходяться в основних налаштуваннях і позначені як Недоступний, залишаються без зміни. Елементи з ПН переносяться в основні. Вони додаються до кінця колекції для Відбору.

* Для типів ГрупаЕлементівВідборуКомпонуванняДаних встановлюється властивість Використання у відповідному елементі основних налаштувань (на підставі ознаки використання елемента ПН).

Частина 3

При формуванні остаточного налаштування, якщо цитувати ІТС, різні варіанти налаштувань комбінуються таким чином:

* Якщо будь-який вид налаштувань цілком позначений як користувальницький, то в результуючі налаштування потрапляють ПН. При цьому, якщо якісь елементи налаштувань позначені як недоступні, ці налаштування будуть поміщені в результуючі налаштування з властивості Компонувальник Налаштувань.

* Якщо будь-який вид налаштувань позначений як користувальницький не повністю, а поелементно, то елементи, позначені як користувальницькі, потраплять у результуючі налаштування з властивості Компонувальник Налаштувань. .

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

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

Частина 4

Розширення форми звіту надає нам параметри «ФН» та «ПОНЕДІЛОК», проте ніде не рекомендується заповнювати їх безпосередньо, передаючи у форму. Як показали експерименти, без додаткових танців з бубном наповнення цих параметрів ігнорується – воно затирається при ініціалізації компонувальника у процесі відкриття та при отриманні раніше збережених ПН. Рекомендується працювати з ключами ПН, за якими отримувати їх зі сховища налаштувань і вже тоді розкривати та використовувати, і робиться це автоматично на стороні форми звіту, а не форми, що викликає.

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

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

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

При створенні на сервері

ПередЗавантаженнямВаріантуНаСервері

При Завантаженні ВаріантуНа Сервері

ПередЗавантаженняКористувацькихНастроюНаСервері

При Завантаженні Налаштувань користувача На Сервері

При оновленні складу користувачів налаштувань на сервері

ОбробкаПеревіркиЗаповненняНаСервері

При відкритті

У цьому ні варіант, ні ПН є зміненими, а то й робилися спеціальні зусилля.

Частина 5

Тепер зупинимося докладніше на завданні відкриття форми звіту з його побудовою та попередньо вказаним відбором. Короткі відомості про це є на ІТС і в методичних рекомендаціях, але там висвітлено лише сам принцип і не розкрито тонкощів. Отже, для контекстного виклику звіту необхідно передати його формі параметр «СформуватиПриВідкритті», що дорівнює Істина; та параметр «Відбір», що містить структуру. Ключі структури – це імена полів СКД чи параметрів СКД, а значення є їх значення. Цитуючи СП, якщо є параметр СКД з ім'ям, що відповідає імені ключа структури, значення буде встановлено йому. Якщо параметра немає, але є поле, то буде додано відбір цього поля. При цьому якщо є однойменні параметр і поле, то система просто тихо це проігнорує і не встановить нічого.

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

Подивимося, що ми маємо перед завантаженням ПН на сервері.

Для простого випадку, коли в СКД нічого не заздалегідь і ніякі елементи не включені в ПОНЕДІЛОК, ситуація така: Налаштування - порожні; ФН – містять правильний добір; ПН містять порожній відбір. Формування працює правильно, але з погляду користувача інтерфейс суперечить нутрощам і бентежить - відбір працює, але не видно. Аналогічно, якщо в налаштуваннях структури варіанта включити Відбір до ПО, звіт також будується з урахуванням відбору, але користувач також не бачить жодних відборів.

Задамо в налаштуваннях СКД у Конфігураторі передвідбори (рівні порожнім значенням) і включимо їх у ПН. За ідеєю, ФН повинні заповнити Налаштування, а ті – ПОНЕДІЛОК, але насправді маємо: у Налаштуваннях – Відбір з потрібним елементом, але порожнім правим значенням, ФН – містять правильний відбір, а ПН – все одно не містять нічого. З іншого боку, у разі і звіт не побудується, т.к. праве значення відбору порожнє, незважаючи на передане у параметрі Відбір значення.

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

&НаСервері Процедура ВстановитиПредзаданныеОтборы(КорысНастройки) Якщо параметри.Властивість("Отбор") Тоді Повернення КінецьЯкщо; Якщо Параметри.Отбор.Кількість()=0 Тоді Повернення КінецьЯкщо; рТіпЕО=Тип("ЕлементВідборуКомпонівкиДаних"); Для кожного киз Із Параметри. // Якщо (ТипЗнч(кіз.Значення)=Тип("Масив") або ТипЗнч(кіз.Значення)=Тип("СписокЗначень")) і кіз.Значення.Кількість()>1 Тоді рВидСравнения=ВидСравненияКомпоновкиДаних.ВСписку; Інакше рВидПорівняння=ВидПорівнянняКомпонівкиДаних.Рівне; КінецьЯкщо; // рНужний Відбір = Невизначено; // дивимося, чи є Відбір в польз.настройках рНужнийЕО=Невизначено; // дивимося, чи є окремий ЕлементОтборуКомпонуванняДаних в польз.настройках Для кожного елнастр З Корист Налаштування.Елементи Цикл Якщо ТипЗнч(елнастр)=Тип("ОтборКомпонівкиДаних") і рНужнийОтбор=НеузгодженийОтНуж/Он може бути тільки один; // це можна було б робити і поза циклом, але перебирати польз.настройки треба і заради елементів... ІнакшеЕсли ТипЗнч(элнастр)=рТипЭО Тоді // це елемент відбору, їх може бути багато, але нас цікавлять не ініціалізовані або з потрібним полем Якщо елнастр.ЛевоеЗначение=рПоле чи элнастр.ЛевоеЗначение=Невизначено і рНужнийЭО=Неопределено Тоді рНужнийЭО=элнастр; КінецьЯкщо; КінецьЯкщо; КінецьЦикл; // Якщо рНужнийОтбор<>Невизначено Тоді // він йде як пріоритетний рНужнийЕОізОтбору = Невизначено; Для кожного елотб З рНужний Відбір. Елементи Цикл Якщо елотб. Перервати КінецьЯкщо; КінецьЦикл; Якщо рНужнийЭОизОтбора=Невизначено Тоді рНужнийЭОизОтбора=рНужнийОтбор.Элементы.Добавить(рТипЭО); рНужнийЭОизОтбора.ЛевоеЗначение=рПоле; КінецьЯкщо; рНужнийЭОизОтбора.ВидСравнения=рВидСравнения; рНужнийЭОизОтбора.ПравоеЗначение=киз.Значение; рНужнийЭОизОтбора.Использование=Истина; // рНужний ЕО. Використання = Брехня; ІнакшеЯкщо рНужнийОтбор=Невизначено і рНужнийЕО<>Невизначено Тоді // ставимо елемент рНужныйЭО.ЛевоеЗначение=рПоле; рНужнийЭО.ВидСравнения=рВидСравнения; рНужнийЭО.ПравоеЗначение=киз.Значение; рНужнийЕО.Використання = Істина; КінецьЯкщо; рНужний = Невизначено; Для кожного елотб З Звіт.КомпонувальникНалаштувань.Налаштування.Відбір.Елементи Цикл // по-хорошому, тут має бути рекурсивний пошук! Якщо ТипЗнч(элотб)=рТипЭО і элотб.ЛевоеЗначение=рПоле Тоді рНужний=элотб; Перервати КінецьЯкщо; КінецьЦикл; Якщо рНужний=Невизначено Тоді рНужний=Звіт.КомпоновщикНастроек.Настройки. рНужний.ЛівеЗначення = рПоле; КінецьЯкщо; рНужний.ВидСравнения = рВидСравнения; рНужний.ПравоеЗначення=кіз.Значення; рНужний.Використання = Істина; // Кінець циклу; Звіт.КомпоновщикНалаштувань.ФіксованіНалаштування.Відбір.Елементи.Очистити(); // інакше скаже, що елементи перетинаються/суперечать КінецьПроцедури

Викликати це найбільш правильно так:

&НаСервері Процедура ОбробкаПеревіркиЗаповненняНаСервері(Відмова,ПеревіреніРеквізити) ВстановитиПредзаданныеОтборы(Звіт.КомпоновщикНастрою.Налаштування користувача); КінецьПроцедури

Тоді контекстний виклик, наприклад, з форми довідника, виглядатиме так:

&НаКлієнті Процедура ВідкритиЗвіт(Команда) Якщо ЗначенняЗаповнено(Об'єкт.Посилання) Тоді відб=Новий Структура("ПосиланняДовідник",Об'єкт.Посилання); / / Так поле названо в СКД звіту Параметри Форми = Новий Структура ("Відбір, Сформувати Прі Відкриття", відб, Істина); ВідкритиФорму("Звіт.Звіт1.Форма.ФормаЗвіту",ПараметриФорми,ЦяФорма); КінецьЯкщо; КінецьПроцедури

Частина 6

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

Після виконання

Звіт.КомпонувальникНалаштувань.ЗавантажитиНалаштування(СКД.НастрПоУмолч)

змінюється лише варіант, і нічого більше;

Після виконання прийому, наведеного в п.2 (з використанням «посередника» та методу ЗавантажитиНалаштування користувача()

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

Після виконання

Ця Форма.

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

А оскільки нам все-таки потрібно повноцінно змінити не лише внутрішні відбори, а й відображення на формі звіту та у зв'язаних формах, то або доводиться змінювати лише Відбір, або діяти так:

&На Сервері Процедура ЗмінитиСКД() рОб'єкт=РеквізитФормиЗначення("Звіт"); відб = р Об'єкт. ео = відб. ео.ЛівеЗначення=Новий ПолеКомпонівкиДаних("ПосиланняНаДовідник.Поле1"); эо.ВидСравнения=ВидСравненияКомпоновкиДанных.Ровно; эо.ПравоеЗначение=Істина; ео.Використання = Істина; ЗначенняВРеквізитФорми(рОбъект,"Звіт"); Звіт.КомпоновщикНалаштувань.ЗавантажитиНалаштування(рОб'єкт.СхемаКомпонуванняДаних.НалаштуванняЗа замовчуванням); Звіт.КомпонувальникНалаштувань.Відновити(); // Бажано, хоча ФН це все одно не торкається. // власне, саме це можна назвати зміною складу ПН Для кожного ел. Якщо ПорожнійРядок(ел.ІдентифікаторКорієнтирськоїНалаштування) Тоді // можна для елемента ПН використовувати метод ел.ВстановитиІдентифікатор, див.його довідку в СП, там все досить виразно ел.ІдентифікаторКорієнтирськоїНалаштування="ID123"; // важливо - ідентифікатор може бути БУДЬ-ЯКИМ, не UUID і не GUID! ел.Представлення Налаштування користувача="Проба"; КінецьЯкщо; КінецьЦикл; комп=Новий КомпонувальникНалаштуваньКомпонівкиДаних; комп. Звіт.КомпонувальникНалаштувань.ЗавантажитиНалаштуванняКористувача(комп.НалаштуванняКористувача); Для кожного ел З Звіт.КомпонувальникНалаштувань.Налаштування користувача.Елементи Цикл ел.РежимВідображення=РежимВідображенняЕлементаНалаштуванняКомпонуванняДаних.ШвидкийДоступ; // витягнемо на форму звіту КонецЦикла; // і ось тепер це дасть ефект: Ця Форма. КінецьПроцедури

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

Дещо з'ясовано експериментально і тому спірно. Знаючі більше – запрошуються критикувати та коментувати.

Підсистема 1С 8.3- Об'єкт дерева метаданих, який відповідає за побудову командного інтерфейсу конфігурації.

Нижче в статті йдеться про підсистеми, починаючи з версії 8.2.

Справа в тому, що у версії 8.1 (як і для звичайної програми 8.2) теж були підсистеми, але вони служили зовсім інших цілей, швидше, для розробника, ніж користувача. За допомогою підсистем 8.1 зазвичай розділяли різний функціонал. Також підсистеми допомагали при поєднанні різних конфігурацій 1С — можна було вказати, яку систему переносити.

Підсистеми 1С та інтерфейс для програміста

У версіях 8.3 та 8.2 підсистеми – це основний інструмент побудови командного інтерфейсу користувача. Об'єкти метаданих «Підсистеми» мають ієрархічну структуруЩоб налаштувати «підменю» в інтерфейсі, необхідно додати підлеглу підсистеми:

Властивості та налаштування

Розглянемо налаштування та властивості підсистем у конфігураторі:

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

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

Кнопка відкриває панель налаштування інтерфейсу, де можна настроїти інтерфейси залежно від ролі поточного користувача:

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

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

Вкладка складвизначає набір об'єктів метаданих, що у даній підсистемі.

На вкладці Іншеможна описати довідку до підсистеми та вказати налаштування Включати до змісту довідки— чи включати даний розділдовідки у загальну довідкову інформацію щодо конфігурації.

Якщо звіт або обробка в керованому інтерфейсі не відображається

Ця проблема дуже часто виникає у розробників-початківців — начебто звіт або обробка була додана до складу підсистеми, а її не видно.

Перша причина цього може в тому, що об'єкт не має керованої форми.

Друга причина - на вкладці Команди об'єкта встановлена ​​галка "Використовувати стандартні команди". Пов'язано це з тим, що для відкриття обробки може бути описана як своя процедура, так і стандартна:

Стаття продовжує цикл "Перші кроки у розробці на 1С".

У конфігурації на платформі «1С:Підприємство» під час виведення інформації найчастіше використовуються таблиці, які відображають різні інформаційні списки. p align="justify"> Робота з такими списками може відбуватися як у формі списку, так і у формі елемента (обробки).

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

Застосовність

У статті розглядається Керований інтерфейс у варіанті "Версії 8.2" конфігурації, розробленої на платформі 1C 8.3.4.482.

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

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

Крім того, до актуальної версії платформи додалися нові можливості пошуку у списках.

Налаштування форм та можливості роботи зі списками

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

Після натискання цієї команди з'явиться вікно "Налаштування форми".

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

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

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

Можна визначати реквізит, який активізуватиметься при відкритті форми.

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

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

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

Для повернення до стандартних налаштувань у вікні «Налаштування форми» у меню Усі діїслід вибрати пункт Встановити стандартні налаштування.

Крім налаштування форм у керованому інтерфейсі, існує можливість налаштування списків (елементів довідників, документів).

У формі списку меню Усі діїміститься спеціальна команда Налаштувати список.

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

На малюнку представлено форму для редагування відбору.

Відбір можна проводити за кількома полями. У цьому випадку за промовчанням відбір працюватиме за умовою І. Можна також використовувати умови АБО та НЕ.

Для використання умови АБО (НЕ) потрібно за допомогою команди Згрупувати умови додати відповідну групу (Групу АБО, Групу НЕ).

На малюнку представлена ​​форма визначення полів сортування.

Можливе налаштування угруповання. На малюнку як поле для угруповання обрано Контрагент.

На черговому малюнку представлено, як виконуватиметься угруповання.

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

На малюнку представлено результат умовного оформлення тлом поля Сума.
Коли сума > 100 000.

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

Ієрархічний перегляд довідників можна налаштовувати через пункт Режим переглядуу меню Усі дії. Можна вибрати один із варіантів: Ієрархічний список, перелік, Дерево.

Також можна налаштовувати власне угруповання елементів довідників за деякими реквізитами.

Наприклад, можна згрупувати номенклатуру постачальника. Приклад аналогічний тому, де ми розглядали угруповання документів «Реалізація товарів та послуг» щодо контрагентів.

Зручна можливість – множинне виділення у списках з подальшим виконанням групових дій (проведення, скасування проведення, зняття позначки видалення).

Виділення об'єктів у списку здійснюється з утриманням клавіші Shiftабо Ctrl.

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

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

Для підвищення конкретизації пошуку можна використовувати прапорець Шукати у знайденому.

Здійснюючи пошук за рядком даних типу посилання (наприклад, одиниці вимірювання) слід вибирати відповідний варіант пошуку …(по рядку).

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