1c обработка на декриптиране на документ от електронна таблица. Как да видите вече зададени имена

1c обработка на декриптиране на документ от електронна таблица.  Как да видите вече зададени имена
1c обработка на декриптиране на документ от електронна таблица. Как да видите вече зададени имена

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

Например, как генерирах оформления за .

Отидох до формуляра за обработка и отидох до раздела „Оформления“:

Отваря се редакторът на електронни таблици:

В много отношения работата в редактора е подобна на работата в програма Excel, но има някои характеристики, на които бих искал да се спра.

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

Ето селекция от два реда:

И ето избраната област с 2 колони:

И сега ще изберем областта в пресечната точка на първите два реда и първите две колони:

Така. Ако успяхме да изберем областта, от която се нуждаем, след това, като щракнете върху нея Кликнете с десния бутони като изберем елемента "Свойства", можем да му дадем име, в което ще се позоваваме на него от нашия код, образувайки печат:

Това е основното умение, което трябва да усвоим, за да можем да правим таблични оформления.

Как да видите вече зададени имена

И нека да видим какви имена вече са присвоени на областите в оформлението?

За да направите това, изберете от менюто на конфигуратора:

Ето това е нашата новоприсвоена област "Header":

И ако сега го изберем в диалоговия прозорец и натиснете "Избор", тогава съответният ще бъде избран в редактора. площ на клетката:

Как да зададете параметъра за обхват

Често, когато се формира област за печат, се изисква не само да се премахне областта от оформлението. Също така трябва да попълните определени клетки с определени параметри.

Задаваме тези параметри за областта и зададените стойности автоматично попадат в желаните клетки.

За да направите това, в свойствата на клетката, от която се нуждаем (където ще се покаже стойността на параметъра) ...

Посочете стойността "Параметър" в полето "Попълване", а в полето "Параметър" записваме името, с което ще се позоваваме на този параметър от кода:

Ако посочите в попълването не „Параметър“, а „Шаблон“, тогава ще бъде възможно да посочите някакъв текст (шаблон) в самата клетка, като използвате името на параметъра в квадратни скоби:

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

Как да настроя опцията за дешифриране?

Името на параметъра за дешифриране е зададено в същите свойства на клетката:

По-късно от кода ще присвоим на този параметър (наречен „Номенклатурно декодиране“) желаната стойност (препратка към елемента от номенклатурата).

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

Допълнителни думи за раздяла

Покрихме необходимите основи. Сега разгледайте внимателно.

Изтеглете тази база данни. в него обработката "Обработка за тестове".

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

Въпрос: Моля за съвет как да направите следното.

Имам изход в документ с електронна таблицарезултат от заявката, има дешифриране за клетката.

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

Отговор: Декриптирането е стандартно и нестандартно.

i) Стандартен:

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

За да работи дешифрирането, трябва да бъдат изпълнени 3 условия:

1) За клетката на документа на електронната таблица, от която искаме да извикаме дешифрирането, трябва да бъде зададен propertyDecryptionParameter. Например, искаме с двойно щракване върху клетката с името на контрагента да се отвори формата на елемента от справочника на контрагента, за да можем да изясним някои данни, които не са показани в отчета. Задайте свойството DecryptionParameter на някаква стойност, например AccountDecryption.

2) В процеса на извеждане на области на оформление към получения документ с електронна таблица е ЗАДЪЛЖИТЕЛНО да присвоите стойността на желания тип на параметъра за дешифриране, например:

Код 1C v 8.x TabDoc = Нов SpreadsheetDocument;
Избор = Directories.Contractors.Select();



// .................................................
Scope.Parameters.DecryptionAccountant = Selection.Reference;
TabDoc.Output(регион);
EndCycle;

3) Трябва да има забрана за редактиране на клетка с дешифриране, т.е. трябва да се посочи

TabDoc.ViewOnly = Вярно;

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

II) Нестандартни:

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

1) Извеждането на документ от електронна таблица трябва да се извърши в обекта Поле на документ за електронна таблица;

2) Трябва да се присвои стойност на свойството на клетката ParameterDecryption, например DecryptionAccount.

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

4) За обекта SpreadsheetDocument Field свойството ViewOnly трябва да бъде зададено на True.

5) Кодът на потребителската процедура се поставя в процедурата

Код 1C v 8.x
// първият ред в него трябва да е така:
StandardProcessing = False;

Ще дам малък пример, който отваря подчинена директория за "кликнатия" контрагент.

Код 1C v 8.x Процедура ButtonGeneratePress(Button)
Изпълнители = Директории.Изпълнители;
Избор = Контрагенти.Избор();
Tab = FormElements.SpreadsheetDocumentField1;
Оформление = GetLayout("Оформление");
Докато Selection.Next() цикъл
Ако Selection.ThisGroup = False Тогава
Регион = Layout.GetRegion("Низ");
Обхват.Параметри.Акаунт = Избор.Описание;
.................................................................................................
StructDecryption = Нова структура;
StructureDecoding.Insert("Акаунт", Selection.Reference);
StructureDecryption.Insert("......",.........);
.........................................................................
Scope.Parameters.DecryptionAccountant = StructureDecryption;
FormElements.SpreadsheetDocumentField1.Output(Area);
В противен случай
Продължи;
EndIf;
EndCycle;
FormElements.SpreadsheetDocumentField1.ViewOnly = True;
EndProcedure

процедура
StandardProcessing = False;
Договори = Directories.Contracts.GetListForm();
Contracts.ParameterSelectionByOwner = Explanation.Contractor;
Договори.Отвори();
EndProcedure