Пример за комуникационен набор от данни. Диаграма на оформлението на данните (1C SKD)

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

На пръв поглед може да е неясно защо трябва да създавате няколко набора от данни и след това да ги обединявате, ако можете просто да обединявате таблици в рамките на един набор от данни. Има поне една причина за това - в случай на използване на външен набор от данни. Както знаете, когато пишем заявка за комплект ACS данни, не можем да преминем в него например. Въпреки че за нормална заявка това се прави доста просто. В случай на използване на система за контрол на достъпа, ние сме принудени да прехвърлим таблица със стойности към нея като . Оттук и необходимостта от свързване на набори от данни. Нека незабавно да отбележа, че наборите от данни могат да бъдат свързани само с помощта на ЛЯВА ВРЪЗКА. Следователно, за разлика от тук, няма да видите квадратчета за отметка, които отговарят за типа връзка на таблицата.

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

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


Сега да отидем на отметката Връзки между набори от даннии направете настройките, както е показано на фигурата.

На отметката НастройкиПърво, нека направим основен изход от подробни записи


Нека бъде в нашата директория Стокисъдържа следните записи

Пускаме отчета и виждаме следната снимка

Тоест виждаме, че наборите от данни са свързани помежду си според всички правила ЛЯВА ВРЪЗКА

На отметката Връзки между набори от даннивъзможно е да се посочат някои Допълнителни опциив съответните полета. Но те се използват доста рядко. Можете да прочетете повече в техническата документация и на ITS дисковете.

Диаграма на оформлението на данните (1C SKD)- удобен дизайнер за създаване на сложни отчети в софтуерни продукти 1C:Enterprise, които допринасят за развитието и проследяването на автоматизацията на производството, което им позволява да бъдат направени възможно най-гъвкави и красиви за минимално време. Допълнително предимство на схемата за съставяне на данни (1C SKD) е автоматичното генериране на контролиран формуляр за отчет и с по-нататъшното развитие на тази област е важен фактор при избора на метод за разработване на отчет. Но поради сложността на структурата на схемата за съставяне на данни (1C SKD) и голямо количествонастройките често водят до по-дълго разработване на отчет, отколкото чрез „дизайнера на изходна форма“. Следователно програмистът на 1C трябва да разбере всички тънкости на схемата за съставяне на данни (1C DCS), за да ускори допълнително времето за разработка за генериране на отчети.

Нека да разгледаме първите три раздела на схемата за съставяне на данни (1C SKD) - набор от данни, връзки към набор от данни и изчисляеми полета.

Набор от данни в 1C SKD

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

Това е обикновена заявка, която се генерира с помощта на бутона Query Builder. Ако флагът за автоматично попълване е зададен, тогава всички избрани подробности автоматично ще бъдат включени в полетата на набора от данни. Също така е възможно да персонализирате попълването на полетата в заявката в раздела Състав на данни, където има три раздела:

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

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

Условия, тук избираме онези обекти, които могат да се използват при условия в системата за контрол на достъпа.

Част от работата се извършва в схемата за съставяне на данни, а част от нея се извършва програмно, нека да разгледаме един прост пример:

Първо ще създадем диаграма на оформление за оформлението на данните на документа и ще го наречем SKD (например: 1C SKD), в него създаваме обект на набор от данни, след което попълваме полетата, например имаме документ с таблична част на стоки с данни - номенклатура, количество и цена.

Нека добавим три полета и попълним всяка колона с името на детайлите, останалите колони ще бъдат попълнени автоматично:

Нека създадем бутон във формуляра на документа и да опишем механизма на работа в контролирани форми:

&На клиент

Процедура Print()

Нашият отчет = PrintOnServer(); //извикване на функцията на сървъра

Нашият отчет.Покажи(); // показване на генерирания отчет

Край на процедурата

&На сървъра

Функция PrintOnServer()

DocumentObject = FormAttributeValue(“Обект”);

//поставяме табличната част Products в структура с име ProductsSKD по същия начин, както посочихме в самия SKD името на обекта, съдържащ данните

DataSet = нова структура;

DataSet.Insert(“ProductsSKD”, DocumentObject.Products);

//получаваме нашето оформление и задаваме настройките по подразбиране, така че всички настройки за изход на отчета да се вземат от нашето оформление

OurLayout = DocumentObject.GetLayout(“SKD”);

Настройки = OurLayout.DefaultSettings;

//създайте оформление на оформление на данни с нашите настройки

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, Settings);

//извършване на съставяне на данни с нашия набор от данни

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Създаваме документ с електронна таблица и показваме нашия отчет в него

ReportDocument = Нов табличен документ;

OutputProcessor = Нов OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Връщане на документОтчет;

EndFunction

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

ОТНОСНО обединение

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

Имаме маси:

При комуникация ще получим:

И когато се комбинират:

Нека сега да разгледаме попълването на колони в набори от данни (ще пропуснем някои, тъй като са свързани с други раздели; ще се върнем към тях в бъдещи статии):

- поле, посочете общото име на атрибута;

­­- път, посочете името на данните, по които ще се свържем с него в системата за контрол на достъп, например в Изчисляеми полета;

- заглавие, посочете името на атрибута, който ще се показва в отчета;

- ограничение на полето, посочете наличието на този реквизит;

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

- израз, чрез който се изчислява представянето на полето, удобно е да се използва, когато трябва да променим малко изхода на детайлите, например, трябва след името номенклатурабеше показан наличност, където се намира, след което попълнете следното: Артикул + „е в склад“ + Склад. Повтарям, че достъпът до детайлите се осъществява чрез името, посочено в колоната пътека;

- подреждане на изрази, удобен механизъм за настройка на подреждането на отчети, където условието може да бъде зададено ръчно, подобно на предишната точка, но както показва практиката, този механизъм често не работи, както бихме искали, и ви съветвам да използвате стандартно сортиране;

- тип стойност, показва вида на стойността на атрибута, това трябва да се попълни, ако използвате следното поле;

- налични стойности, работи само когато е пълен тип стойност, отворете формата и в колоната Значениение посочваме елемента, който трябва да бъде променен, според типа, той може да бъде предварително дефинирани обекти или числови, например детайлите имат прости стойности, в представянеПосочваме към какво трябва да променим, пример за булев тип:

- декор– стандартните настройки на формата на полето, подобни на настройките в управлявани формуляри, ви позволяват по-точно и красиво да персонализирате изхода на определени детайли.

Връзки на набор от данни в 1C SKD

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

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

За всеки от наборите от данни можете да настроите проверка на йерархията:

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

Въпрос 11.33 от изпита 1C: Platform Professional. Приемливо ли е използването на множество набори от данни?

  1. Само при използване на набори от данни - обект
  2. Само при използване на набори от данни - заявка

Правилният отговор е първият, той е приемлив във всеки случай.


Въпрос 11.10 от изпита 1C: Platform Professional. Когато дефинирате връзка между два набора от данни в диаграма за съставяне на данни

  1. Опцията за свързване (вляво, пълна) се избира от разработчика
  2. Винаги се използва лявото свързване на първия набор към втория
  3. Винаги се използва лявото свързване на втория комплект към първия
  4. Използва се ляво свързване на първия набор към втория, в някои случаи се установява вътрешно съединение

Верният отговор е четвърти. Наборите от данни са свързани само чрез ляво или вътрешно съединение.

Въпрос 11.13 от изпита 1C: Platform Professional. В какви случаи е необходимо да конфигурирате проверка на йерархията в раздела "Набори от данни" в прозореца на дизайнера на диаграма на оформлението

  1. Ако трябва да забраните получаването на суми според вашата собствена йерархия, която се различава от стандартната
  2. Ако трябва да позволите суми да бъдат получени според вашата собствена йерархия, различна от стандартната
  3. Ако трябва да забраните инсталирането на селекция за влизане в група от вашата собствена йерархия, различна от стандартната
  4. Ако трябва да позволите селекция да бъде включена в група от вашата собствена йерархия, различна от стандартната

Верният отговор е номер четири, описание в публикацията.

Въпрос 11.16 от изпита 1C: Platform Professional. Какви видове връзки между два набора от данни могат да бъдат реализирани в композиционна система?

  1. Всичко като в езика на заявката: „Всички към всички“, „Отляво“, „Дясно“, „Вътрешно“ и „Пълно“
  2. Само "Всички към всички", "Ляво", "Дясно" и "Вътрешно"
  3. Само "Ляво" и "Вътрешно"
  4. Само „Всички към всички“, „Отляво“ и „Вътрешно“
  5. Само "Ляво", "Дясно", "Вътрешно" и "Пълно".

Верният отговор е четвърти, според резултата от теста. Всъщност третото е правилно.

Въпрос 11.17 от изпита 1C: Platform Professional. Когато настройвате връзка между два набора от данни, се избира флагът „Необходима връзка“. В какъв случай действията на потребителя ще доведат до прекъсване на връзката?

  1. Свързването на данни от двата набора ще бъде осъществено независимо от това какви настройки е направил потребителят
  2. Списъкът с избрани полета показва само полетата в левия набор
  3. В списъка с избрани полета са посочени само полетата от десния набор
  4. В списъка с избрани полета са посочени само полетата от левия набор, избрано е полето от десния набор
  5. В списъка с избрани полета са посочени само полетата от десния набор;

Правилният отговор е вторият, ако има само един комплект (и източникът), тогава няма какво да се свързва.

Въпрос 11.39 от изпита 1C: Platform Professional. Как се прехвърлят външни данни към набор - обект в система за съставяне на данни?

  1. С помощта на вградения език чрез процесора за композиране на данни
  2. Използване на вградения език чрез конструктора на оформление
  3. Чрез вградения език чрез изходния процесор на системата за композиране на данни

Верният отговор е първият, чрез процесора.

Понякога, за да се получи определен резултат от оформлението, е необходимо да се създадат връзки между набори от данни в системата за контрол на достъпа. Ще се опитаме да говорим кога е необходимо това и как да го направим в нашата статия.

Схемата за оформление на данни, реализирана в 1C, поддържа три типа източници на данни (фиг. 1)

Източници на данни

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

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

IN трудни случаи, когато е необходимо или по-подходящо да се използва изпълнението на някакъв код (например зареждане на данни от файл на трета страна) или когато не е възможно да се използва заявка, източникът на данни „Object“ идва на помощ. Персонализиран код, изпълняван в модула, изходът трябва да има някаква структура, до която системата за контрол на достъпа да има достъп.

Третият източник на данни е „Съюз“. Всъщност този източник може да се разглежда като един от видовете комуникация. Комбинира (обединява няколко таблици в една), без съвпадение, а съвпадение на определени полета. Тоест, ако две таблици, които се обединяват, имат съответно 3 и 4 реда, тогава полученият източник на данни ще има 7 реда.

Формулиране на проблема

Като тестова площадка ще изберем базата UPP, версия 1.3.92.3, работеща в нормален режим на приложение.

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

Така че ние трябва:

  1. Вземете табличната част на документа за получаване;
  2. Качете файла в източника на данни „Обект“;
  3. Свържете тези два източника с определен параметър (в нашия случай това ще бъде код);
  4. Покажете получената таблица.

Процес на изпълнение

Нека да преминем през всички изброени стъпки:

  • Създаваме заявка за табличната част на документа за получаване (фиг. 2)

Фиг.2

  • Създайте обект на набор от данни (фиг. 3);

Фиг.3

Тук е важно да обърнем внимание на „Името на обекта, съдържащ данните“, това е името, което ще трябва да посочим в кода на модула за отчет.

  • Отиваме в модула за отчет и там създаваме процедурата „При композиране на резултат“ (фиг. 4);


Фиг.4

Процедурата за получаване на данни от външен файлняма да го описваме, ще обърнем внимание на тази част от кода, която трябва да присъства в оформлението, за да можем да получим данни за „Набор от данни 2“ (фиг. 5).

Фиг.5

важно! Когато създавате „Обект“ в кода на процедурата по време на свързване, стойността на параметъра StandardProcessing трябва да е False.

Отидете в раздела „Връзки към набор от данни“.

Свързване на комплекти

Отидете в съответния раздел на диаграмата (фиг. 6).

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

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

Преди да създадем връзка, нека решим за целта на колоните:

  1. Източникът на връзката е първият набор от данни, от който ще бъдат взети всички налични стойности;
  2. Комуникационен приемник – набор от данни, от които ще бъдат избрани стойности, съответстващи на нашето състояние;
  3. Изходен израз – поле или израз на първия набор от данни, спрямо който ще се извърши сравнението;
  4. Дестинационният израз е поле или израз на зависимия набор;
  5. Параметър – ако посочите името на параметъра в това поле, тогава комуникацията с приемника ще се осъществява само според стойността, посочена в параметъра;
  6. Списък с параметри – определя възможността за използване на списък със стойности като параметър;
  7. Условие за връзка – чрез указване на израз тук, използвайки полета източник, можете да създадете условие, чието изпълнение ще служи като сигнал за установяване на връзка;
  8. Начална стойност – показва началната стойност на връзката;
  9. Задължителна връзка – Определя дали полетата, използвани в източника (настроен на FALSE) или местоназначение (настроен на TRUE), са активирани и въз основа на това добавя връзката към оформлението.

По този начин:

  • Източникът на комуникация ще бъде резултатът от нашето искане;
  • Обектът ще действа като приемник;
  • Изходният израз ще бъде „Номенклатурен код“;
  • Получател израз “Номенклатура”;
  • Комуникацията ще бъде задължителна (фиг. 7).

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

Фиг.8

Нямаше съвпадение за долните два реда на отчета във файла с цените.

41
Наскоро направих отчет с неопределен брой колони. Не исках да се занимавам с кода, затова реших да го направя в системата за контрол на достъпа. Нямаше проблем с това, беше необходимо да разтегнете резултата върху произволно оформление (вашето собствено заглавие +... 27
Въпреки че CDS студентите се натъкват на това на първия или втория ден, то трябва да е в секцията с често задавани въпроси. Прост пример за програмно извеждане на отчет за оформление, като се използват настройките по подразбиране. //Вземете диаграмата от... 18
При генериране на отчети на системата за контрол на достъпа, по подразбиране всички групи се разширяват, но понякога е необходимо да се покаже отчет със свити групи веднага след генерирането! Този код в модула за отчет ви позволява да свиете... 9
При разработването на отчети какво се изисква от потребителя ограничени права, отчетът е генериран изцяло без проверка на правата! Особено ако RLS е конфигуриран Има няколко начина да направите това: 1. Инсталирайте...

Публикации по темата