Настройки и опции за отчети на skd. Настройки и опции за отчети за потребителските настройки на skd skd

За един отчет могат да се задават няколко опции за визуалното му представяне – тоест една и съща информация да се разширява, групира и т.н. по различни начини. Предварително зададените опции се задават в ACS конструктора в раздела Настройки (фиг.); вариант може да се създаде и в режим Enterprise.

Най-високо класираният вариант ще се счита за вариант по подразбиране.

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

Посочете опцията за потребителски достъп до настройките:

Зависи от това, което потребителят вижда в настройката на отчета в Enterprise:

Въпрос 11.32 от изпита 1C: Platform Professional. Коя опция за отчет в схемата за съставяне на данни ще се счита за стандартна?
  1. Тази, която е първа в списъка с опции
  2. Този с зададено свойство за вариант по подразбиране
  3. Тази, която е определена първа в процеса на създаване на варианта
Верният отговор е първият, описание в текста.
Въпрос 11.35 от изпита 1C: Platform Professional. Как да добавите настройка към списъка с потребителски настройки?
  1. във формуляра за персонализирани настройки на елемент можете да посочите, че елементът е персонализиран
  2. във формуляра за персонализирани настройки на елемент, активирайте бърз достъп в режим на редактиране
  3. добавянето става чрез поставяне на отметка в полето "Използване".
Правилният отговор е първият.
Въпрос 11.40 от изпита 1C: Platform Professional. В настройките на системата за съставяне на данни е задължително да се посочи
  1. Структура на настройките
  2. Настроики
  3. Избрани полета
  4. Групиране на полета
  5. Сортиране
  6. Всички изброени
Правилният отговор е първият. Структурата е задължителна, останалата част от ACS може да се добави автоматично или по принцип не е задължителна.
Въпрос 11.41 от изпита 1C: Platform Professional. Как ще изглежда формулярът за отчет след прилагане на следните настройки?
  1. Под формата на таблица от четири колони: "Продукт", "Склад", "Количествен баланс", "Сума баланс"
  2. Под формата на таблица от три колони: "Продукт", "Склад", "Остатъчно количество"
  3. Под формата на таблица, чийто брой колони ще зависи от броя на складовете с ненулеви салда
  4. Отчетът няма да бъде генериран.
Правилният отговор е четвъртият - няма отметка в основния елемент на структурата на настройките, следователно изходните данни не са дефинирани.
Въпрос 11.42 от изпита 1C: Platform Professional. Какво се случва, когато се генерира отчет, ако няма системни настройки за съставяне на данни в потребителски режим?
  1. Ще бъдат използвани „Настройки по подразбиране“, зададени от разработчика в схемата за съставяне на данни
  2. От списъка с опции за настройки ще се използва опцията до текущата.
  3. Ще се използват персонализирани настройки
  4. Отчетът няма да бъде генериран.
Верният отговор е четвъртият - предимство има това, което потребителят е посочил. Потребителските настройки са празни, така че отчетът няма да бъде генериран.
Въпрос 11.43 от изпита 1C: Platform Professional.
  1. До лявата граница на първата секунда от датата, посочена в параметъра "Период".
  2. Актуалните салда ще бъдат извлечени, освен ако не е посочена друга стойност в системния параметър за съставяне на данни, създаден въз основа на името на външния параметър, указано в текста на заявката за параметъра "Период" на виртуалната таблица
Верният отговор е четвъртият. Квадратчето за отметка „Период“ не е поставено, тоест изборът на потребител не е зададен. В общия случай това означава текущи салда, но е възможно параметърът период да е дефиниран в друга настройка на ACS.
Въпрос 11.44 от изпита 1C: Platform Professional. В кой момент от времевата ос ще бъдат получени остатъците при генериране на отчета?
  1. До лявата граница на първата секунда от датата, посочена в параметъра "Период".
  2. До дясната граница на последната секунда от датата, посочена в параметъра "Период".
  3. Текущите салда ще бъдат получени
  4. Актуалните салда ще бъдат извлечени, освен ако не е посочена друга стойност в системния параметър за съставяне на данни, създаден въз основа на името на външния параметър, указано в текста на заявката за параметъра "Период" на виртуалната таблица
Правилният отговор е първият - тук е ясно посочен изборът.

Въпрос 11.45 от изпита 1C: Platform Professional. Фигурата показва формуляра за отчет, генериран от системата по подразбиране. Какъв тип елемент с настройки е заобиколен от кутия?

  1. Персонализирани настройки
  2. фиксирани настройки
  3. Опции за настройка
  4. Един елемент може да се отнася до всякакъв вид настройки, в зависимост от стойността на неговото свойство „Път към данните“.
Правилният отговор е първият.
Въпрос 11.46 от изпита 1C: Platform Professional. В отчета изборът по полето "Склад" се задава едновременно във всички видове настройки. Какво се случва, когато се опитате да генерирате отчет?
  1. Отчетът няма да бъде генериран.
  2. Отчетът ще бъде генериран чрез избор от потребителските настройки
  3. Отчетът ще бъде генериран чрез избор от фиксирани настройки
  4. Отчетът ще бъде генериран чрез избор от опцията за текущи настройки
Какъв вид "всички видове настройки" не е ясно, но според отговорите първата опция е правилна.
Въпрос 11.47 от изпита 1C: Platform Professional. В отчета изборът по полето "Склад" е зададен както в потребителските настройки, така и в опцията за текущи настройки. Какво се случва, когато се опитате да генерирате отчет?
  1. Отчетът ще бъде генериран чрез избор от потребителските настройки, ако е зададен флагът "Използване". Ако флагът "Използване" не е зададен, тогава няма да има избор
  2. Отчетът ще бъде генериран чрез избор от потребителските настройки, ако е зададен флагът "Използване". Ако флагът "Използване" не е зададен, тогава ще се използва настройката за избор от опцията за настройки
  3. Отчетът ще се генерира чрез избор от опцията за настройки, ако е зададен флаг "Използване". Ако флагът "Използване" не е зададен, тогава няма да има избор
  4. Отчетът ще се генерира чрез избор от опцията за настройки, ако е зададен флаг "Използване". Ако флагът "Използване" не е зададен, тогава ще се използва настройката за избор от потребителските настройки
Правилният вариант е първият.
Въпрос 11.49 от изпита 1C: Platform Professional. Когато работите с настройките, потребителят може да зададе полето за групиране
  1. В отделен прозорец "Групиране"
  2. В отделен прозорец "Редактиране на полета за групиране"
  3. В раздела Групирани полета
  4. В отделен прозорец "Групиране" и в раздела "Групиране на полета".
  5. В отделен прозорец "Групиране", в отделен прозорец "Редактиране на полета за групиране" и в раздела "Групови полета"
Верният отговор е пети. Прозорец за групиране:

Опции Редактиране на групови полета и групирани полета:

Въпрос 11.50 от изпита 1C: Platform Professional. Потребителят създаде настройки на опцията "от нулата". Какви настройки трябваше да редактира? Изберете най-пълния и правилен отговор
  1. Избрани полета за отчет, избор на отчет, избор на склад, допълнителни настройки на таблица, сортиране на артикул, параметри, условен дизайн на артикул
  2. Избрани полета за отчет, избор на отчет, допълнителни настройки на таблица, условен дизайн на артикул, избрани складови полета, параметри, сортиране на отчет
  3. Избрани полета за отчет, избор на отчет, избор по склад, допълнителни настройки на таблица, условен дизайн на артикул, параметри, структура на отчета
  4. Избрани полета за отчет, избор на отчет, избор на наличност, допълнителни настройки на отчета, параметри, условен дизайн на артикул, структура на отчета
Правилният отговор е третият, трябва внимателно да погледнете екранната снимка.

внимание! Ето пробна версия на урока, чиито материали може да не са пълни.

Влезте като студент

Влезте като ученик за достъп до училищно съдържание

1C 8.3 система за съставяне на данни за начинаещи: създаване на връзка между набори от данни

  • Напишете отчет, който показва клиентите и техните любими продукти. Всеки клиент има любим цвят, а всеки продукт има свой собствен цвят - именно на базата на тези цветове трябва да определите "фаворита" на продукта. Например, ако любимият цвят на Андрей е червен, то една от любимите му храни ще бъдат доматите (те са червени).
  • Приложете два набора от данни към отчета. Първият набор са данни от справочната таблица „Клиенти“. Вторият - данни от таблицата на справочника "Храна".
  • внедрите връзка на тези две групитака че в отчета да останат само любимите продукти за всеки от клиентите.

Създаване на нов отчет

Отворете базата данни "Gastronom" в конфигуратора и създайте нов отчет през главното меню:

Тип документ - "Външен отчет":

Във формата на нов отчет посочете името "Lesson6" и щракнете върху бутона "Отворена схема за съставяне на данни":

Оставете името на схемата по подразбиране:

Добавяне на първия набор от данни

В схемата, която се отваря, отидете в раздела "Набори от данни" и изберете "Добавяне на набор от данни - заявка" чрез зеления знак плюс:

Ние наричаме конструктора на заявката:

Посочете таблицата "Клиенти" и полетата, които искате да получите от заявката:

Добавяне на втори набор от данни

Добавяне на втори набор от данни:

Изберете го (DataSet2) и извикайте отново конструктора на заявката:

Посочете таблицата на справочника "Храна" и полетата, които искате да получите от заявката:

Това е текстът на искането:

Моля, обърнете внимание, че сега имаме два набора от данни в отчета: DataSet1 и DataSet2. Всеки има собствен текст и данни на заявката.

Направете имената по-описателни

За по-голяма яснота нека преименуваме Dataset1 на Clients и Dataset2 на Food.

Направете това, като кликнете два пъти върху всеки от комплектите:

Можем да използваме данните за всеки от наборите в нашия отчет. Ще имаме достъп до тези данни чрез полета.

В момента наборът "Клиенти" има следните полета: "Име" и "Любим цвят", а наборът "Храна": "Име" и "Цвят".

Виждаме, че имената се пресичат и лесно можем да се объркаме. Така че нека променим имената на полетата, за да бъдат по-описателни.

Изберете набора „Клиенти“ и променете имената на полетата по следния начин:

След това изберете набора „Храна“ и променете имената на полетата по следния начин:

Извикване на конструктора на настройките

Накрая отидете в раздела „Настройки“ и натиснете вълшебната пръчка, за да изведете конструктора на настройки:

Тип отчет - "Списък...":

Изберете полета за отчета от двата набора:

Вижте защо беше толкова важно да промените имената на полетата? На етапа на настройките за съставяне на данни не виждаме от кои набори са тези полета. Виждаме само имената им.

Проверка на отчета

Ние запазваме отчета и го генерираме в потребителски режим:

да Добре, но не наистина. Извършено е така нареченото кръстосано свързване на двата комплекта (трябва да сте запознати с това от съединенията в заявките, които изучавахме в предишните модули). Всеки запис от таблица "Клиенти" има съответен запис от таблица "Храна".

Но от всички тези записи трябва да оставим само тези, за които полето „FavoriteCustomerColor“ е равно на полето „FoodColor“:

Свързване на два набора от данни

За да направите това, нека свържем два набора от данни (Клиенти и Храни) чрез полетата Любим цвят на клиента и Хранителен цвят.

Отидете в раздела „Връзки към набор от данни“ и щракнете върху бутона плюс, за да добавите нова връзка:

Задайте параметрите, както е показано по-долу:

Ще направя обяснение.

Източник и приемник на комуникация.Е, тук всичко е ясно. Посочете първия набор (Клиенти) и втория набор (Храна) от данни. Искам да обърна специално внимание на факта, че комуникацията ще се осъществява на принципа външно ляво съединение(прегледахме го в темата за заявки в предишни модули). Въз основа на това трябва да изберете кой комплект ще бъде източник и кой приемник.

източник израз.Посочете тук израз или просто поле от изходния набор от данни (тук сме указали полето Любим цвят на клиента от набора Клиенти).

приемник израз.Тук посочваме израз или просто поле от набора от данни на приемника (тук посочихме полето за цвят на храната от набора за храна).

Така тази връзка ще остави от предишния списък само онези редове, чието поле FavoriteCustomerColor е равно на полето FoodColor.

Запазете отчета и го стартирайте в потребителски режим:

Страхотен!

Ще направя обяснение за полето " Комуникационно състояние“, за които начинаещите програмисти толкова често удрят копията си.

Условието за връзка е спомагателно поле. Можете да пишете изрази там. включващи полета само от набора от данни, посочен в източника на връзката.

В този случай за всички редове от източника на връзката този израз (условие на връзката) ще бъде проверен преди свързването. И ако този израз е TRUE, тогава ще бъде направен опит за свързване на този низ към низове от приемника на връзката. Ако изразът е FALSE, няма да се правят такива опити.

Разгледахме подробно настройките на отчетите, реализирани на базата на ACS. Сега нека разгледаме по-фините и подробни настройки за опциите за отчет. Прозорецът за "разширени" настройки на варианта на справка се извиква с командата "Още" - "Други" - "Промяна на вариант на справка".

Прозорецът за промяна на вариант на справка е разделен на две части:

1. Структурата на отчета.

2. Настройки на отчета.


Разделът за структура на вариант на отчет е подобен на раздела „Структура“ на стандартните настройки на отчета. Целта и конфигурацията на групировките е разгледана подробно в част 1 на статията.

Структурната таблица на варианта на отчета, в допълнение към колоната с групи, съдържа няколко допълнителни колони:

Разделът за настройки на вариантите на отчета дава на потребителя широка възможност да конфигурира отчета според нуждите си. Той почти напълно съвпада със стандартните настройки на отчета, разгледани в част 1. Нека да разгледаме всички раздели на раздела и да отбележим разликите.

Разделът с настройки се състои от следните раздели:

1. Опции.Съдържа ACS параметрите, достъпни за потребителя.

ACS параметър - някаква стойност, използвана за получаване на отчетни данни. Може да бъде стойност на условие за избор или валидиране на данни, както и спомагателна стойност.


Таблицата с параметри е представена във формат "Параметър" - "Стойност". Ако е необходимо, можете да промените стойностите на параметрите. Щракването върху бутона „Свойства на елемента на потребителските настройки“ отваря потребителските настройки на елемента.


В този прозорец можете да изберете дали елементът да бъде включен в потребителските настройки (т.е. видим за потребителя при настройване на отчета), да зададете представянето на елемента и режима на редактиране (бърз достъп в заглавката на отчета, нормален в отчета настройки и недостъпни).

Свойствата на елемента с персонализирани настройки също имат полета за групиране, полета, селекции и елементи за условен стил.

2. Персонализирани полета.Съдържа полета, които потребителят сам формира въз основа на данните, избрани от отчета.


Потребителят може да добави два типа полета:

  • Ново поле за избор...
  • Ново поле за израз...

Полетата за избор ви позволяват да изчислите стойност въз основа на определено условие. Прозорецът за редактиране на полето за избор съдържа заглавието на полето и таблица, в която са посочени изборът, стойността и представянето на полето. Изборът е условие, в зависимост от което ще бъде заменена желаната стойност.


Например, нека изчислим приблизителна оценка на броя на продажбите. Ще приемем, че ако се продават по-малко от 10 единици стоки, се продава малко, а ако са повече от 10 единици, се продава много. За да направим това, ще зададем 2 стойности на изчисленото поле: първата ще бъде с избора „Брой продукти по-малък или равен на „10““, втората с избора „Брой продукти повече от „10“ "".

Изразителните полета ви позволяват да изчислите стойност с помощта на произволни алгоритми. Те могат да използват функциите на езика за заявки и вградения език за програмиране 1C. Прозорецът за редактиране на полето за израз съдържа две полета за изрази на подробни и обобщени записи. Обобщените записи са групи, конфигурирани в областта „Структура на отчета“, те трябва да използват агрегатни функции („Сума“, „Минимум“, „Максимум“, „Количество“).

Например, нека изчислим средния процент на отстъпка. Средният процент на отстъпка се изчислява по формулата: [Сума продажби без отстъпка] - [Сума продажби с отстъпка] / [Сума продажби без отстъпка]. Трябва да се помни, че сумата на продажбите без отстъпка може да бъде нула, така че използваме оператора SELECT за проверка. Получаваме следните изрази:

· За подробни записи:

Избор

Когато [Сума от продажби без отстъпка] = 0

След това 0

Друго [Разпродажби без отстъпка] - [Продажби с отстъпка] / [Продажби без отстъпка]

Край

· За обобщени записи:

Избор

Когато сума ([Сума продажби без отстъпка]) = 0

След това 0

В противен случай Сума([Сума продажби без отстъпка]) - Сума([Сума продажби с отстъпка]) / Сума([Сума продажби без отстъпка])

Край

Както споменахме по-рано, в израза на общите записи използваме агрегатната функция „Сума“.

3. Групирани полета.Съдържа полета, по които ще се групира резултатът от варианта на отчета. Полетата за групиране се конфигурират отделно за всяко от групирането, но можете да зададете общи полета за групиране за вариант на отчет, ако изберете корена „Отчет“ в структурното дърво. Можете да добавите поле от резултата от отчета, потребителско поле или да изберете автоматично поле, след което системата автоматично ще избере полетата. Този раздел също ви позволява да промените реда на групираните полета.


4. Полета.Съдържа полетата, които ще бъдат показани в резултата от варианта на отчета. Полетата се конфигурират отделно за всяко от групирането, но можете да зададете общи полета за вариант на отчет, ако изберете корена „Отчет“ в структурното дърво. Можете да добавите поле от резултата от отчета, потребителско поле или да изберете автоматично поле, след което системата автоматично ще избере полетата. Този раздел също ви позволява да промените реда на полетата.

Полетата могат да бъдат групирани, за да подчертаят логически всяка част от отчета или да настроят конкретна подредба на колони. При добавяне на група колоната "Местоположение" става активна и ви позволява да изберете една от опциите за местоположение:

  • Auto - системата автоматично подрежда полетата;
  • Хоризонтално - полетата са разположени хоризонтално;
  • Вертикално - полетата са разположени вертикално;
  • В отделна колона – полетата са разположени в различни колони;
  • Заедно - полетата са подредени в една колона.


5. Избор.Съдържа филтрите, използвани във варианта на отчета. Настройването на филтри беше разгледано подробно в част 1 на тази статия. Филтрите се конфигурират отделно за всяко от групирането, но можете да зададете общи филтри за вариант на отчет, ако изберете корена „Отчет“ в структурното дърво.


6. Сортиране.Съдържа полетата за сортиране, използвани във варианта на отчета. Настройването на полета за сортиране беше обсъдено подробно в част 1 на тази статия. Сортирането се конфигурира отделно за всяко от групирането, но можете да зададете общи полета за сортиране за вариант на отчет, ако изберете корена „Отчет“ в структурното дърво.


7. Условен дизайн.Съдържа условни дизайнерски елементи, използвани във вариант на отчет. Настройването на условно форматиране беше обсъдено подробно в част 1 на тази статия. Условният дизайн се конфигурира отделно за всяко от групирането, но можете да зададете общи елементи на условен дизайн за вариант на отчет, ако изберете корена „Отчет“ в структурното дърво.


8. Допълнителни настройки.Съдържа допълнителни настройки за дизайн на отчета. Те ви позволяват да изберете общия вид на отчета, местоположението на полетата, групите, атрибутите, ресурсите, сумите, да зададете настройки на диаграмата, да контролирате показването на заглавието, параметрите и избора, да определите позицията на ресурсите и да фиксирате заглавието и колони от групировки на варианта на отчета.


В заключение бих искал да отбележа, че настройките на справката могат не само да бъдат записани като вариант на справка, но и да бъдат качени във файл (меню „Още“ – „Запазване на настройките“). За да изтеглите, изберете „Зареждане на настройки“ и изберете записания файл. По този начин можем да прехвърляме настройките на вариантите на отчета между различни бази данни, които имат една и съща конфигурация.


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

Предполагам, че няма нужда да казвам какво е ACS, връзката на настройките и като цяло целият набор от обекти, предназначени да работят с ACS. Основните области на използване, освен сложните действия в кода, са динамични списъци и отчети, като и в двата случая много важна функционалност остава зад кулисите. Често дори не се замисляме за логиката на поведение и взаимоотношенията на всички участници в процеса, т.к обикновено решаваме доста прости задачи или разчитаме на стандартните настройки на платформата. Но там, където има подразбиране, има и вътрешна логика, един вид „мечешка услуга“ на 1C, чиито плодове понякога са трудни и неочевидни за преодоляване, за да се постигне желаният ефект, и в същото време е достатъчно просто да използвате инструментите правилно.

Тези, които се интересуват, могат да пропуснат части 1-4 и да преминат направо към примерите.

Ще се опитам да се спра малко повече върху работата на селекциите на ACS за случая на използването им в отчети. Вярвам, че поведението в динамичните списъци, с редица резерви, ще бъде близко. И така, селекциите в докладите, малко теория и след това конкретни примери.

Използват се SP 8.3.6 и по-нови, раздели на ITS (клауза 10.3.7.5 и др.), Книгата „Професионално развитие в системата 1C-Enterprise 8“ (Казан, 2012 г., втори том). В книгата на Е. Хрусталева изобщо не е намерено нищо разбираемо по тази тема.

Част 1

Създателят на настройки, както знаете, има колекция от „Настройки“, „Фиксирани настройки“ (по-нататък „FN“) и „Персонализирани настройки“ (по-долу „PN“). Един отчет може да има няколко опции, докато връзките между опцията, N, PN и FN са много особени. Също така, нека не забравяме за източника на наличните настройки и неговия "прародител", който обикновено е самата схема, която също има свои собствени настройки по подразбиране.

* Настройки - настройки, създадени в режим Конфигуратор и променени в режим на редактиране на версията на отчета;

* UserSettings - настройки, които потребителят променя в режим "1C:Enterprise", чисто интерфейс;

* FixedSettings - тези настройки, които се задават от вградения език, вкл. имплицитно зададени от системата. Това свойство съдържа стойности за избор, които се предават на формуляра с помощта на неговите параметри (структура „Избор“).

Настройките и FN са подобни по структура и имат колекция „Избор“ от типа „Избор на състав на данни“, достъпна за промяна на състава по всяко време по време на съществуването на отчета. В същото време настройките са достъпни за промени в интерфейса чрез редактиране на варианта, но FN изобщо не е наличен. PN от своя страна е „каша“, където както самата „Селекция“, така и отделни обекти от типа „Елемент за избор на състав на данни“ (т.нар. вложен обект) могат да бъдат равностойни елементи. Въпреки наличието на подходящи методи, невъзможно е програмно да се промени съставът на колекцията от PN елементи, ако това е PN на самия отчет, а не е направен "от нулата" от дизайнера - 1C ще докладва, че "Колекцията на потребителските настройки не могат да променят неговия състав, тъй като е свързан с данните за настройките на оформлението." ITS казва „Свойството не може да се записва с вградения език.“, но както ще видим по-късно, възможно е да се повлияе на PN. "Кашата" от обекти има вътрешни връзки - проверява се за съответствие на условията при генериране на отчет и при промяна на състава. В ITS четем: „Елементи, които сами са маркирани като потребителски, няма да бъдат добавяни. Например персонализиран избор няма да включва елемент за избор, който е маркиран като персонализиран. Елементите, съдържащи персонализирани елементи, няма да бъдат добавени. Например група условия няма да бъде добавена, ако тази група съдържа елементи, маркирани като персонализирани. За вложени елементи свойството DisplayMode не се анализира. Те се добавят или не се добавят заедно с родителските елементи. По този начин "старшинството" на обектите действа зад кулисите. В този случай можете да получите ефекта, когато интерфейсът ви позволява да посочите противоречиви селекции за варианта и неговия ST, както и в рамките на ST.

Изглежда, че "старши" е опция. Но щракването върху „Още“ / „Промяна на опцията“ и потвърждаването на промените в отворения формуляр извиква манипулатора на събития на формуляра , докато селекцията се появява в панела "Основни" във формуляра, извикан от "Настройки...", и се появява във формуляра за отчет, но НЕ се показва в раздела "Избор"; освен това или се появява веднага както в основната форма на отчета, така и във формуляра от „Настройки ...“ (ако има флаг „Включване в потребителските настройки“), или нито там, нито там. Но във всеки случай НЯМА да бъде в раздела "Избор" на формуляра "Настройки...". Разликата между раздела "Основни" на формуляра "Настройки..." и основния формуляр за отчет се определя от полето "Режим на редактиране" (нормално - само в "Настройки", бързо - също и в самия формуляр за отчет) , но мисля, че всеки знае това. Между другото, стойностите на „Избор“ и „Бързо“ не са синхронизирани по никакъв начин и могат да си противоречат, но „Бързо“ във формуляра за отчет и във формуляра за настройки са строго синхронни. Така че, когато редактирате вариант, самият той се модифицира (но идентификаторът и името му не се променят), но PN остават НЕпроменени (т.е. дори да говорим за тях, т.е. за флага за включване на този или онзи елемент в PN ).

Щракването върху „Изберете опция ...“ и потвърждаването на промените в отворения формуляр задейства събития в следния ред:

WhenLoadingVariantOnServer

Когато актуализирате състава на потребителските настройки на сървъра

В този случай нито опцията, нито PN не се променят по никакъв начин. От това става ясно, че опцията и настройките, ако са свързани, в никакъв случай не са пряко свързани.

Щракването върху „Настройки...“ и потвърждаването на промените в отворената форма само задейства събитие Когато актуализирате състава на потребителските настройки на сървъра(в същото време PN се променят, но представянията и ключът (ако ги нямаше) не се получават; ако „Бързо“ е активирано за елементите на PN обекта „Избор“, тогава в допълнение към „Избор“ ”, самите му елементи се появяват като полета, т.е. .държа се подобно на вложените елементи. Тези направени настройки се запазват при затваряне и се възстановяват при следващото влизане във формата. Не докосва и не променя опцията по никакъв начин.

Щракването върху „Още“/„Задаване на настройки по подразбиране“ във формата за настройки (както и върху елемента „Настройки по подразбиране“ при редактиране на вариант) задейства само събитие Когато актуализирате състава на потребителските настройки на сървъра. В този случай опцията се променя, но PN се променят. Ако вариантът е бил променен преди това, той остава променен (нито нулиране на променения флаг, нито нулиране на действително направените настройки).

Щракването върху „Свойства на елемента на потребителските настройки“ в дървовидната структура на формуляра за редактиране на варианти добавя обекта „Избор“ и той се оказва празен и не се синхронизира с вече съществуващия избор на вариант и съществуващите вложени елементи за избор. Вариантът не се променя по никакъв начин.

Оттук и препоръката: ако трябва да зададете някои селекции в режим „Конфигуратор“, за да не се забърквате с кода и така че те да не са в опцията, но ще бъдат в интерфейса на отчета, не трябва да манипулирате селекцията елементи на опцията, променяйки техните свойства, но самата селекция, бутоните "Свойства на елемента..." и "Потребителски настройки".

Добавянето на нещо, което се е появило в настройките към PN, изисква действия в кода или интерфейса, но изтриването и изчистването на настройките засяга незабавно PN и без никакви актуализации, например:

Report.SettingsComposer.Settings.Selection.Elements.Clear();

Преди затваряне на формата за отчет системата пита само дали има промени във варианта. Ако има промени в PN, те ще бъдат запазени автоматично без никакви въпроси и също така автоматично ще се опитат да приложат в следващата сесия на работа с отчета.

Бележки:

При редица грешки, а именно прилагането на настройките, първо се показва съобщение за проблема и след това свързването все още се случва, събитието се нарича и изграждане на отчет. В същото време FN, ако са били, все още се игнорират и само настройките играят роля.

При добавяне на селекция във формуляра "Промяна на вариант" това става веднага с поставен флаг "Включване в ST", но отново от гледна точка на вградения език ST остават непроменени.

Задаването на вариацията на вариант и настройката на вариацията на PN не са пряко свързани, това са две различни посоки на промени.

PN, наред с други неща, има "Допълнителни настройки". Не можах да разбера какво и в кой момент се пълнят по никакъв начин. Въпреки че в отчета има настройки, които са "маркирани в избора и условния дизайн" като потребителски дефинирани (според SP), допълнителните настройки във всички случаи се оказаха празни. Няма нищо за това в ITS.

Въпреки изявлението в съвместното предприятие, PN са перфектно сериализирани в xml.

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

Формулярът за редактиране на вариант на отчет, генериран по подразбиране, съдържа много интересни неща, но не работи никъде с FN и PN, а с основните настройки работи повече за четене (само че изчиства избора, реда, конвенционалния дизайн).

Част 2

Работата с настройки и FN чрез тяхната колекция е почти винаги приемлива, но е важно да запомните, че същността на „третото ниво“ се променя. На първо ниво винаги има настройките по подразбиране на самия ACS, те също се появяват имплицитно в източника на наличните настройки; на второ ниво - настройки на използвания вариант. Но тук логиката позволява или да „презаписвате“ основните инструкции, или да ги игнорирате. Но работата с PN вече не предоставя свободи и фините манипулации трябва да се извършват с помощта на специални методи, а понякога и временни спомагателни междинни обекти, например:

Comp=New LinkerDataCompositionSettings; // все още можете да започнете // comp.Initialize(SomeSettingsComposer.GetAvailableSettingsSource()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadUserSettings(comp.UserSettings);

Конструкторът на настройки има метод (), който зарежда стойностите на потребителските предпочитания, предадени като параметър на метода. Метод GetSettings() ви позволява да получите копие на текущите настройки (включително потребителските настройки). Метод Настройки за изтегляне() зарежда предадените настройки в конструктора на настройки (потребителските настройки също се попълват отново въз основа на предадените данни, като се взема предвид наличието на ключове, вижте примера по-долу).

Прилагането на потребителските настройки към основните настройки се извършва в метода GetSettings() линкер за настройки. При това се извършват следните действия:

* За типове DataLayoutSelectionElement, съдържанието на елементите се копира в съответните елементи за персонализирани настройки.

* За типове DataLayoutFilter, елементите, които са в основните настройки и са маркирани като Unavailable, остават непроменени. Елементи от PN се прехвърлят към основните. Те се добавят в края на колекцията за селекция.

* За типове DataCompositionSelection ElementsGroup свойството Usage се задава в съответния елемент от основните настройки (въз основа на функцията за използване на PN елемента).

Част 3

При формиране на окончателната настройка, за да цитираме ITS, различните настройки се комбинират, както следва:

* Ако някой тип настройки е изцяло маркиран като потребителски, тогава получените настройки включват PN. В този случай, ако някои елементи на настройките са маркирани като недостъпни, тогава тези настройки ще бъдат поставени в получените настройки от свойството SettingsComposer.Settings.

* Ако някой тип настройки е маркиран като потребителски не изцяло, а елемент по елемент, тогава елементите, маркирани като персонализирани, ще бъдат включени в получените настройки от свойството SettingsComposer.CustomSettings, а елементите, маркирани като недостъпни, ще бъдат взети в резултата настройки от свойството SettingsComposer.Settings.

* Фиксираните настройки се добавят към получените настройки "както са". В същото време ситуацията е неприемлива, когато FN и PN имат еднакви настройки, например избор със същата лява стойност в условието. Отбелязвам, че дори пълното съвпадение на всички свойства на тези условия е забранено. Честно казано, малко е нелогично.

Отбелязвам, че ако някой фрагмент от настройките е предмет на функционалната опция и трябва да бъде ограничен, системата работи „тихо“ - премахва този фрагмент отвсякъде, не съобщава нищо и по време на програмни манипулации, свързани с такъв фрагмент, работи „на празен ход“ - грешки не издава, но няма ефект от кода. Въпреки това е възможно различните версии да се държат по различен начин.

част 4

Разширението на формата за отчет ни предоставя параметрите „FN“ и „PN“, но никъде не се препоръчва да ги попълвате директно, като ги предавате на формуляра. Както показаха експериментите, без допълнителни танци с дайре, съдържанието на тези параметри се игнорира - то се презаписва, когато линкерът се инициализира по време на процеса на отваряне и когато се получават предварително запазени PN. Препоръчително е да работите с PN ключове, чрез които да ги вземете от хранилището за настройки и след това да ги отворите и използвате, като това става автоматично от страната на формата за отчет, а не от формата за извикване.

Параметърът „AvailableSettings Source“ автоматично се превежда в информация за свързване, когато формулярът е създаден на сървъра и не може да бъде заменен. Или по-скоро може, но ще даде ефект само след пълно предефиниране на цялата верига от свързани обекти. При което GetAvailableSettingsSource() до края на всички събития за отваряне на формуляр ще върне Недефинирано.

Отбелязвам, че параметрите на формата, които всъщност не са ключови, „разтягат“ действието си върху няколко събития, ако е зададен флагът за формиране при отваряне. Да, в случай ProcessingFill ChecksOnServer, извикан при отваряне и формиране, параметърът "Избор" ще бъде наличен и с него, но извикан просто чрез щракване на потребителя върху бутона "Генериране", той вече няма да е наличен. Това се дължи на факта, че всички тези събития се обработват в едно „посещение“ на сървъра, ако е активирана формацията при отваряне и едва в самия им край контролът се прехвърля на клиента и се извиква На откриването. В този случай неключовите параметри, разбира се, се губят.

Общият ред за изпълнение на събития при отваряне на формуляр с флаг за генериране на отчет за отваряне (малко повече от описаното в "Професионално развитие"):

OnCreateOnServer

Преди зареждане на вариант на сървъра

WhenLoadingVariantOnServer

BeforeLoadingUserSettingsOnServer

WhenLoadingUserSettingsOnServer

Когато актуализирате състава на потребителските настройки на сървъра

ProcessingFill ChecksOnServer

На откриването

В същото време нито опцията, нито МО се променят, освен ако не се положат специални усилия.

част 5

Сега нека се спрем по-подробно на задачата за отваряне на формуляр за отчет с неговата конструкция и предварително зададен избор. Кратка информация за това е на ИТС и в методическите препоръки, но там е разгледан само самият принцип и тънкостите не се разкриват. Така че, за да извикате отчета контекстуално, е необходимо да прехвърлите параметъра „GenerateOnOpening“, равен на True към неговата форма; и параметъра "Избор", съдържащ структурата. Ключовете на структурата са имената на ACS полетата или ACS параметрите, а стойностите са техните стойности. Цитирайки SP, ако има SKD параметър с име, което съвпада с името на структурния ключ, тогава стойността ще бъде зададена към него. Ако няма параметър, но има поле, тогава към това поле ще бъде добавена селекция. В същото време, ако има параметър и поле със същото име, тогава системата просто тихо ще го игнорира и няма да зададе нищо.

В „Професионално развитие“ е даден пример за промяна (т.е. прихващане и преконфигуриране) на PN „в движение“ в събитието BeforeLoadingUserSettingsOnServer, където се предава аргументът, съдържащ текущия MO. Всъщност това не винаги е така - например може да има случаи, при които грешка при запазване на PN в предишната сесия или несъответствия между Настройки, FN и PN ще доведат до това, че аргументът Настройки е празен. И което е най-интересното, няма да е възможно да го преконфигурирате напълно в това събитие, това може да стане само „в края“ на поредицата от събития, а именно в събитието ProcessingFill ChecksOnServer.

Нека да видим какво имаме, преди да заредим PN на сървъра.

За прост случай, когато нищо не е предефинирано в ACS и няма включени елементи в MO, ситуацията е следната: Настройки - празно; FN - съдържа правилната селекция; MO съдържат празна селекция. Оформянето работи правилно, но от гледна точка на потребителя интерфейсът е противоречив и обезсърчаващ - селекцията работи, но не се вижда. По същия начин, ако в настройките на структурата на варианта активирате Избор в PV, отчетът също се изгражда, като се вземе предвид селекцията, но потребителят също не вижда никакви селекции.

Нека да зададем предварителни селекции в настройките на ACS в конфигуратора (равно на празни стойности) и да ги включим в PT. На теория FN трябва да попълни Настройки, а тези - PN, но всъщност имаме: в Настройки - Избор с желания елемент, но празна дясна стойност, FN - съдържа правилната селекция и PN - все още не съдържа нищо . Освен това в този случай отчетът няма да бъде изграден, т.к дясната стойност на филтъра е празна, въпреки стойността, подадена в параметъра Filter.

Опит за работа с елементите на ПН също не дава резултат. За PN елемент можете да промените само флага "Използване" и участие в "Бързо". Стойността за избор в интерфейса ще бъде празна, системата няма да генерира никакви грешки. По подобен начин опитът за работа с Избора на PN също ще работи, в дебъгера правилната стойност ще се види като правилно попълнена, но няма да видите нищо в интерфейса. И напомням, че е невъзможно да се промени съставът на PN. Следователно са необходими допълнителни трикове. Например:

&OnServer процедура SetPredefinedFilter(UserSettings) If Not Parameters.Property("Filter") Then Return EndIf; If Parameters.Selection.Quantity()=0 Then Return EndIf; pEOType=Type("DataCompositionSelectionItem"); За всеки kiz От Parameters.Filter Loop pField=New DataCompositionField(kiz.Key); // If (TypeVnch(kis.Value)=Type("Array") или TypeVnch(kiz.Value)=Type("Списък със стойности") и kiz.Value.Quantity()>1 Then pComparisonType=DataCompositionComparisonType.INList; В противен случай pComparisonType=DataCompositionComparisonType.Equal; EndIf; // pHRequiredSelection=Недефинирано; // вижте дали има селекция в потребителските настройки pHrequiredEO=Undefined; // вижте дали има отделен DataCompositionFilter в потребителските настройки За всеки elnastr От UserSettings.Items Loop Ако ValueType(elnastr)=Type("DataCompositionFilter") и pHRequiredFilter=Undefined Тогава // може да бъде само един pHRequiredFilter=elnastr; // това може да се направи и извън цикъла, но също така е необходимо да се повторят потребителските настройки в името на елементите... В противен случай поле Ако elset.LeftValue=pField или elset.LeftValue=Undefined и pHdesiredEO=Undefined Тогава pHdesiredEO =elnastr; EndIf; EndIf; EndCycle; // Ако pH е желана селекция<>Undefined Тогава // става като приоритет pHrequiredEOFromSelection=Undefined; За всеки elotb От pHSelection.Items Loop If elotb.LeftValue=pField Then pHDesiredEOFromSelection=elotb; Прекъсване на EndIf; EndCycle; If pHRequiredEOFromSelection=Undefined Then pHRequiredEOFromFilter=pRequiredFilter.Items.Add(pEOType); pHrequiredEOFromSelection.LeftValue=pField; EndIf; pHrequired EOfromSelection.ComparisonType=pComparisonType; pHdesiredEOFromSelection.RightValue=kiz.Value; pHrequiredEO fromSelection.Use=true; // pHrequiredEO.Use=False; ElseIf pHDesiredSelection=Недефинирано и pHDesiredEO<>Undefined Тогава // поставете върху елемента pHnecessaryEO.LeftValue=pField; pHrequiredEO.ComparisonType=pComparisonType; pHrequiredEO.RightValue=kis.Value; pHrequiredEO.Use=true; EndIf; pH изисквано=недефинирано; За всеки elotb От Report.SettingsComposer.Settings.Selection.Elements Loop // в добрия смисъл, тук трябва да има рекурсивно търсене! Ако TypeVnch(elotb)=pTypeEo и elotb.LeftValue=pField Тогава pHrequired=elotb; Прекъсване на EndIf; EndCycle; If pHrequired=Undefined Then pHrequired=Report.SettingsComposer.Settings.Filter.Elements.Add(pEOType); pHRequired.LeftValue=pField; EndIf; pHrequired.ComparisonType=pComparisonType; pHRequired.RightValue=kiz.Value; pHrequired.Use=true; // EndCycle; Report.SettingsComposer.FixedSettings.Selection.Items.Clear(); // в противен случай кажете, че елементите се пресичат/противоречат на EndProcedure

Най-правилният начин да го наречете е:

&OnServerProcedure ProcessFillCheckOnServer(Failure, CheckedAttributes) SetPredefinedFilters(Report.SettingsComposer.UserSettings); EndProcedure

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

&В клиентската процедура OpenReport(Command) If ValueFilled(Object.Reference) Then ref=New Structure("ReferenceToDirectory",Object.Reference); // така се наименува полето в ACS отчета Form Parameters=New Structure("Selection,FormAt Opening",select,True); OpenForm("Report.Report1.Form.ReportForm",FormParameters,ThisForm); EndIf; EndProcedure

част 6

При необходимост променяйте настройките на отчета, докато работите с него, вкл. както при стартиране, така и след отваряне, най-правилно е да смените "отначало", т.е. от настройките на SKD. Промяната на схемата на ACS се извършва само с обекта на отчета (или външния отчет), а не с данните на формуляра и сама по себе си не променя нищо - в настройките и в PN същото си остава както е било и FN може като цяло остават празни. Следователно, в зависимост от нашите задачи:

След правене

Report.Settings Builder.LoadSettings(SKD.DefaultSettings)

променя се само вариантът и нищо друго;

След изпълнение на техниката, дадена в параграф 2 (използвайки "посредника" и метода Изтегляне на персонализирани настройки()

работи само ако нулирате текущия PN чрез интерфейса. Сами по себе си те няма да се променят при промяна на опцията. Това променя селекцията, но не добавя нов елемент за селекция.

След правене

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

платформата просто тихо пада. Тестван на няколко различни версии. Обаждане с режим на показване на настройки само за бързи няма смисъл - не сме повлияли на техния състав, така че нищо няма да се промени.

И тъй като все още трябва напълно да променим не само вътрешните селекции, но и показването във формуляра за отчет и в свързаните форми, трябва или да променим само селекцията, или да действаме както следва:

&В сървърната процедура ChangeSKD() pObject=FormAttributeToValue("Отчет"); selection=rObject.Data Composition Scheme.OptionsSettings.Get(0).Settings.Filter; eo=select.Items.Add(Type("DataCompositionSelectionItem")); eo.LeftValue=Ново DataCompositionField("ReferenceReference.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equal; eo.RightValue=true; eo.Use=true; ValueVFormAttribute(pObject, "Отчет"); Report.Settings Builder.LoadSettings(pObject.Data CompositionSchema.Default Settings); Report.Settings Builder.Restore(); // желателно, въпреки че FN все още не е засегнат. // всъщност това е, което може да се нарече промяна в състава на PN За всеки имейл От Report.Settings Builder.Settings.Selection.Elements Loop email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; Ако EmptyString(e.UserSettingsIdentifier) ​​​​Тогава // можете да използвате метода e.SetIdentifier за PN елемента, вижте неговата помощ в SP, там всичко е съвсем ясно e.UserSettingsIdentifier="ID123"; // важно - идентификаторът може да бъде ВСЕКИ, не UUID и не GUID! emailViewCustomSettings="Тест"; EndIf; EndCycle; comp=Нов DataCompositionSettingsCompositor; comp.LoadSettings(rObject.DataCompositionSchema.DefaultSettings); Report.Settings Builder.LoadUserSettings(Comp.UserSettings); За всеки имейл От Report.Settings Builder.UserSettings.Items Cycle email.DisplayMode=ItemDisplayModeDataCompositionSettings.QuickAccess; // плъзнете EndCycle върху формуляра за отчет; // и сега ще даде ефект: ThisForm.CreateUserSettingsFormElements(,DisplayModeDataCompositionSettings.QuickAccess); EndProcedure

Всъщност можете да изучавате тази механика дълго време. Тази публикация е резултат от научаването как да се реши един конкретен проблем и следователно е доста едностранчива; но подозирам, че може да се напише отделна книга за вътрешната логика на настройките, особено потребителските, не по-тънка от тази на Хрусталев. За съжаление нямам нито време, нито сили за това. Кой ще се възползва от конкретни разработки - вече добре.

Някои неща са експериментално изяснени и затова дискусионни. Повече знаещите са поканени да критикуват и коментират.



Продължение на темата:
Windows

Наталия Комарова , 28.05.2009 г. (25.03.2018 г.) Когато четете форум или блог, запомняте авторите на публикациите по псевдоним и ... по снимката на потребителя, така наречения аватар ....

Нови статии
/
Популярен