Басқарылатын пішін мәліметтері (1Cv8). Басқарылатын пішіндердің элементтерін бағдарламалы түрде қосу және өзгерту Басқарылатын пішінге төлсипаттарды қосу

1C: Enterprise платформасы басқарылатын пішіннің элементтерін бағдарламалы түрде қосуға және өзгертуге мүмкіндік береді. Бұл не үшін қажет болуы мүмкін екенін анықтайық.

Пішінді бағдарламалық жасақтаманы өзгерту бірнеше жағдайларда қажет болуы мүмкін:

  • Кейінгі жаңарту процедурасын жеңілдету үшін стандартты конфигурацияларды аяқтаған кезде. Бұл жағдайда тек пішін модулі өзгертіледі. Модульдерді жаңарту пішіндерге қарағанда әлдеқайда оңай.
  • Кейбір жалпы алгоритмдерді жүзеге асыру кезінде. Мысалы, «Нысан мәліметтерін өңдеуге тыйым салу» ішкі жүйесінде мәліметтерді өңдеу мүмкіндігін қосу үшін ішкі жүйеге қосылған барлық нысандар үшін түймені бағдарламалық түрде жасауға болады.
  • Кейбір нақты алгоритмдерді жүзеге асыру кезінде. Мысалы, Номенклатура каталогында қосымша мәліметтерді өңдеу үшін өрістер жасалады.

Басқарылатын пішінде бағдарламалы түрде қосуға, өзгертуге және жоюға болады:

  • деректемелер;
  • жергілікті командалар;
  • элементтері.

Бұл әрекеттердің барлығы серверде ғана мүмкін.

Бағдарламалық пішінді өзгертуде шектеулер бар:

  • Бағдарламалық түрде қосылған мәліметтерді/пәрмендерді/элементтерді ғана жоя аласыз. Конфигураторда жасалған нысандарды бағдарламалы түрде жоя алмайсыз.
  • Төлсипатты негізгі ретінде тағайындай алмайсыз.

Пішін командаларын өзгерту

Нысанға арналған командалар құрамын басқару үшін Басқарылатын пішінжинақ бар Командалар

    қосу (< ИмяКоманды >)

    Саны ()

    Табу (< ИмяКоманды >)

    Жою (< Команда >)

Teams жинағы клиентте де, серверде де қолжетімді. Топтаманы (Add() және Delete() әдістері) тек серверде өзгертуге болады. Элементтердің санын (Find () және Count () әдістері) клиентте де, серверде де іздеуге және алуға болады.

Пішін пәрмендерімен жұмыс істеу мысалы ретінде өңдеушіні шақыратын «Өзгертулер тарихы...» тақырыбымен жаңа ChangeHistory пәрменін жасайық. Display History(). Пішін ашылғанда құру орын алады.

&Серверде
Процедура WhenCreatingOnServer(сәтсіздік, стандартты өңдеу)
Команда = Командалар. қосу( «Өзгерістер тарихы»);
Команда . Әрекет =;
Команда . Тақырып = «Өзгерістердің тарихы...»;
Процедураның соңы
&OnClient
Процедура Connectable_Display History(Command)
// команда әрекеттері
Процедураның соңы

Пәрмен өңдеушісі пішінде орналасуы және &OnClient компиляция директивасы болуы керек.

Пішін мәліметтерін өзгерту

Пішін детальдарының құрамын оқу функциясы арқылы орындалады Мәліметтер алу(< Путь >) FormAttributes түрінің массивін қайтару. Функция параметрі ата-аналық атрибутқа жолды көрсетеді (жол ретінде). Егер параметр өткізілмесе немесе бос жол көрсетілсе, жоғарғы деңгей мәліметтері қайтарылады.

Мәліметтерді өзгерту әдіс арқылы жүзеге асырылады Мәліметтерді өзгерту(<Қосымша мәліметтер>, <Алынатын мәліметтер>) объект Басқарылатын пішін. Параметрлерге Қосымша мәліметтерЖәне Алынатын мәліметтерПішін атрибуттары түрінің элементтері бар массивтер жіберіледі.

Назар аударыңыз!

Бөлшектердің құрамын өзгерту процесі айтарлықтай ресурсты қажет етеді. Пішін шын мәнінде қайта жасалуда. Осыған байланысты пішін бөлшектерімен жұмыс пакеттік режимде орындалады.

Сатып алушы атымен жаңа пішін төлсипатын жасайық:


AddedDetails = Жаңа массив;
Қосымша мәліметтер. Қосу(Жаңа пішін атрибуттары(«Сатып алушы», Жаңа типтің сипаттамасы («Анықтамалық сілтеме. Қарсы тараптар»), «Клиент»));

// Детальдар құрамының өзгеруі
);

Пішін элементтерін өзгерту

Объектінің элементтерінің құрамын бақылау Басқарылатын пішінжинақ бар Элементтер. Коллекцияның бірнеше әдістері бар:

    Кірістіру (< Имя>, < ТипЭлемента>, < Родитель>, < Элемент >)

    қосу (< Имя>, < ТипЭлемента>, < Родитель >)

    Саны ()

    Табу (< Имя >)

    Жылжыту(< Элемент>, < Родитель>, < МестоРасположения >)

    Жою (< Элемент >)

Элементтер жинағы клиентте де, серверде де қол жетімді. Жинақты өзгерту (Әдістерді кірістіру () , Қосу () , Жылжыту () және Жою () ) тек серверде қолжетімді. Элементтердің санын (Find () және Count () әдістері) клиентте де, серверде де іздеуге және алуға болады. Коллекция элементтері болуы мүмкін:

  • FormGroup;
  • FormTable;
  • FormField;
  • Пішін түймесі.

Пішін элементтеріне оқиға өңдегіштерін бағдарламалы түрде тағайындауға болады. Әдіс осы мақсаттарға арналған SetAction(< ИмяСобытия>, < Действие >) .

Пәрмендермен, мәліметтермен және пішін элементтерімен жұмыс істеудің кейбір кең таралған мысалдарын қарастырайық.

Пәрменді және онымен байланысты түймені қосу:

// Пәрмен құру
Команда = Командалар. қосу( «Өзгерістер тарихы»);
Команда . Әрекет = "Plug-in_Display History"; // Пішінде көрсетілген аты бар процедура болуы керек
Команда . Айдар = «Өзгерістердің тарихы...»;
// Түймешік жасаңыз және оны пәрменмен байланыстырыңыз
Элемент = Элементтер. қосу( «Өзгерістер тарихы», Type("FormButton" ));
Element.CommandName = «Өзгерістер тарихы»;

Төлсипат пен байланысты енгізу өрісін қосу:

// Қосылған мәліметтердің сипаттамасы
AddedDetails = Жаңа массив;
Қосымша мәліметтер. қосу(Жаңа пішін деректемелері («Сатып алушы», Жаңа түр сипаттамасы ( "DirectoryLink. Қарсы тараптар"), «Клиент» ));
// Бөлшектердің құрамын өзгерту
Мәліметтерді өзгерту(Қосылған мәліметтер);
// Енгізу өрісін құру және атрибутқа қосылу
Элемент = Элементтер. Қосу("Сатып алушы" , Түр("FormField" ));
Элемент . Көрініс = FormFieldView. Кіру өрісі;
Элемент . PathToData= «Сатып алушы» ;

Пішін элементіне оқиға өңдегішін тағайындау:

Тапсырыс беруші. SetAction(«Ол өзгерген кезде», "Connected_buyerOnChange");

&OnClient
Процедура Connected_buyerOnChange(элемент)
// Оқиға әрекеттері
Процедураның соңы

Назар аударыңыз!

Әдісті пайдаланып кодтан оқиға өңдеушілері ретінде орнатылатын процедуралар SetAction(), Connectable_ префиксін орнату ұсынылады.

Назар аударыңыз!

Басқарылатын пішіннің мәліметтерін, пәрмендерін және элементтерін бағдарламалық іздеу және өзгерту мысалдарымен өңдеуді жүктеп алуға болады.

Пішін мәліметтері

Пішін мәліметтерінің жинағы пішінде көрсетілетін, өңделетін немесе сақталатын деректер құрамын сипаттайды. Сонымен бірге пішін детальдарының өзі деректерді көрсету және өңдеу мүмкіндігін қамтамасыз етпейді. Пішін мәліметтерімен байланысты пішін элементтері (осы тараудың «Пішін элементтері» бөлімін қараңыз) көрсету және өңдеу үшін пайдаланылады. Барлық пішін мәліметтерінің жиынтығы пішін деректері деп аталады.

Маңызды!Кәдімгі пішіндерден айырмашылығы, басқарылатын пішіндегі барлық деректер мәліметтер түрінде сипатталуы керек екенін есте ұстаған жөн. Пішін элементтері үшін деректер көзі ретінде пішін модулінің айнымалы мәндерін пайдалануға рұқсат етілмейді.

Тағайындауға болады Пішіннің негізгі мәліметтері, яғни пішіннің стандартты функционалдығын анықтайтын атрибуттар (пішін кеңейтімі). Пішін бір ғана негізгі атрибутқа ие болуы мүмкін екенін есте ұстаған жөн.

Пішін кеңейтімі– бұл ManagedForm нысанының қосымша қасиеттері, әдістері және пішін параметрлері, пішіннің негізгі элементі болып табылатын нысанға тән.

Пішінді әзірлеу процесінде Көру және өңдеу сипаттарын пайдаланып рөлдер бойынша нақты пішін мәліметтерін көру және өңдеу мүмкіндігін нақты орнатуға болады (толығырақ мәліметтерді «Өңдеушілер» бөліміндегі «Рөлге негізделген пішін параметрлері» бөлімінен қараңыз). « бөлім). Сонымен қатар, пішіннің өзінде белгілі бір атрибуттың болуы функционалдық опциялар арқылы конфигурациялануы мүмкін (функционалдық опциялар туралы толығырақ ақпаратты «Конфигурация интерфейсін басқару» тарауынан табуға болады).

Пішін төлсипатының қасиеті Сақталған деректермәліметтерді интерактивті өзгерту пішін деректерін өңдеу үшін блоктау әрекетіне, сондай-ақ пішінді өзгерту жалаушасын автоматты түрде орнатуға әкелетінінің белгісі.

Басқарылатын пішінде қол жетімді деректер түрлері

Басқарылатын пішін кәдімгі пішіннен жұмыс істейтін деректер түрлері бойынша да ерекшеленеді. Егер қалыпты пішін 1C: Enterprise ұсынатын көптеген типтермен жұмыс істейтін болса (соның ішінде DirectoryObject, DocumentObject және т.

  • пішінде тікелей қолданылатын түрлер жұқа және веб-клиент жағында бар типтер (мысалы, Number, DirectoryLink.Products, GraphicScheme, TabularDocument);
  • арнайы деректер түрлеріне түрлендірілетін түрлер — басқарылатын пішін деректер түрлеріне. Мұндай түрлер жақшадағы пішін мәліметтерінің тізімінде көрсетіледі, мысалы (DirectoryObject.Products);
  • динамикалық тізім (қосымша мәліметтер алу үшін осы тараудың «Динамикалық тізім» бөлімін қараңыз).

Қолданба нысандарын пішін деректеріне түрлендіру

Кейбір қолданба түрлері (мысалы, DirectoryObject, т.б.) жұқа және веб-клиент жағында жоқ (қосымша мәліметтер алу үшін Басқарылатын қолданба тұжырымдамасы тарауын қараңыз). Сондықтан платформада мұндай қолданба түрлерін көрсету үшін басқарылатын пішіндерде жұмыс істеуге арналған арнайы деректер түрлері енгізілді. Басқарылатын қолданбаның бұл мүмкіндігі қолданба нысандарын деректер пішініне түрлендіру қажет етеді (және керісінше).

Келесі деректер түрлері пайдаланылады:

  • Form DataStructure – ерікті түрдегі қасиеттер жиынтығын қамтиды. Сипаттар басқа құрылымдар, жинақтар немесе жинақтары бар құрылымдар болуы мүмкін. Бұл түр, мысалы, DirectoryObject пішінінде ұсынылған.
  • FormDataCollection - массивке ұқсас терілген мәндердің тізімі. Жинақ элементіне индекс немесе идентификатор арқылы қол жеткізіледі. ID арқылы кіру кейбір жағдайларда қол жетімді болмауы мүмкін. Бұл осы жинақпен ұсынылған қолданба нысанының түріне байланысты. Идентификатор кез келген бүтін сан болуы мүмкін. Бұл түр, мысалы, кестелік бөлік түрінде ұсынылған.
  • Form DataStructureWithCollection бір уақытта құрылым және жинақ ретінде ұсынылған нысан болып табылады. Оны осы нысандардың кез келгені сияқты қарастыруға болады. Бұл тип, мысалы, пішіндегі жазбалар жиынын білдіреді.
  • Form DataTree – иерархиялық деректерді сақтауға арналған нысан.

Қолданба нысаны бір немесе бірнеше пішін деректерінің элементтері арқылы ұсынылады. Жалпы алғанда, пішін деректерінің иерархиясы мен құрамы басқарылатын пішіннің қолданбалы объектілерінің күрделілігі мен өзара байланысына байланысты.

Мысалы, кестелік бөлігі бар құжат FormDataStructure түрінің нысанымен (құжаттың өзі) көрсетіледі, оған FormDataCollection түрінің нысаны (құжаттың кестелік бөлігі) бағынады.

Маңызды!Конфигурацияны әзірлеу кезінде қолданба нысандары тек серверде қол жетімді екенін есте ұстаған жөн, ал пішін деректерінің нысандары серверде де, клиентте де пайдаланылуы мүмкін.

Басқарылатын пішіннің клиент және сервер бөліктері арасында деректерді беру

Шын мәнінде, пішін деректері пішін біркелкі жұмыс істейтін және серверде де, клиентте де болатын әртүрлі қолданбалы объектілерден алынған деректердің біртұтас көрінісі деп айта аламыз. Яғни, пішінде өзіндік деректер түрлері түріндегі қолданбалы нысан деректерінің кейбір «проекциясы» бар және қажет болған жағдайда олардың арасында түрлендіруді жүзеге асырады. Дегенмен, егер конфигурацияны әзірлеуші ​​өзінің деректерді өңдеу алгоритмін жүзеге асырса, онда ол деректерді түрлендіруді (арнайы түрлерден қолданба түрлеріне және керісінше) дербес орындауы керек.

Арнайы өңдегіште пішін мәліметтерін өңдеген кезде (толығырақ мәлімет алу үшін «Редакторлар» тарауының «Пішін мәліметтері» бөлімін қараңыз) пішін жұмыс істеп тұрған кезде клиент пен сервер арасындағы деректерді тасымалдауға әсер етуге болады. Бұл үшін мәліметтер өңдегішінің бағаны пайдаланылады. Әрқашан пайдаланыңыз. Бұл сипаттың әсері атрибуттардың үш түрі үшін ерекшеленеді:

  • Динамикалық тізімге бағынатын атрибут үшін (динамикалық тізім бағаны):
    • сипат қосылған – атрибут әрқашан дерекқордан оқылады және пішін деректеріне енгізіледі;
    • сипат өшірілген - төлсипат дерекқордан оқылады және төлсипатпен немесе оның бағынышты төлсипатымен байланысты ағымдағы көрінетін пішін элементі болғанда ғана пішін деректеріне енгізіледі.
  • Қозғалыс топтамасына бағынатын реквизиттер үшін:
    • сипат қосылған – құжат қозғалысы дерекқордан оқылады және пішін деректерінде болады;
    • сипат өшірілген - құжат қозғалысы дерекқордан оқылмайды және пішін деректеріне қосылмайды (егер құжат қозғалысына сілтеме жасайтын пішін элементі болмаса).
  • Пішіннің басқа мәліметтері:
    • сипат қосылған – төлсипат атрибутпен немесе оның бағынышты атрибутымен байланысқан кем дегенде бір пішін элементінің бар-жоғына қарамастан, пішін деректерінде болады;
    • сипат өшірілген - төлсипат төлсипатпен немесе оның бағынышты атрибутымен байланысты пішін элементі болған жағдайда ғана пішін деректерінде болады. Динамикалық тізім атрибуттарынан айырмашылығы, төлсипатпен байланысты элементтің көрінуі бұл жерде маңызды емес.

Ескерту. Ата-аналық атрибутта орнатылған сипат барлық бағынышты атрибуттарға әсер ететінін есте ұстаған жөн. Мысалы, егер Use сипаты әрқашан құжаттың кестелік бөлігі үшін тазартылса, жүйе бұл сипат барлық бағынышты мәліметтер үшін де тазартылған деп есептейді (сипаттың нақты күйіне қарамастан).

Қолданбалы нысан деректерін пішін деректеріне түрлендіру әдістері

Қолданба нысандарын пішін деректеріне және кері түрлендіру үшін жаһандық әдістер жиынтығы бар:

  • ValueInFormData(),
  • FormDataInValue(),
  • CopyFormData().

Маңызды!Қолданбалы нысандармен жұмыс істейтін әдістер тек сервер процедураларында қол жетімді. Пішін деректері арасындағы мәндерді көшіру әдісі серверде және клиентте қол жетімді, өйткені ол қолданба нысандарын параметр ретінде қажет етпейді.

Пішін деректерін қолданбалы нысанға түрлендіру кезінде олардың үйлесімділігін ескеру қажет.

  • ValueInFormData() – қолданба түрінің нысанын пішін деректеріне түрлендіреді;
  • FormDataInValue() – пішін деректерін қолданба түрінің нысанына түрлендіреді;
  • CopyFormData() – үйлесімді құрылымы бар пішін деректерін көшіреді. Көшіру сәтті болса, True немесе нысан құрылымы үйлеспесе, False мәнін қайтарады.

Ескерту. Негізгі мәліметтері бар форманың стандартты әрекеттерін (форманы ашу, стандартты Write командасын орындау және т.б.) орындау кезінде түрлендіру автоматты түрде орындалады.

Деректерді түрлендіруді өз алгоритмдеріңізде пайдаланудың мысалын келтірейік.

&OnServerProcedure CreateOnServer кезінде(сәтсіздік, StandardProcessing)

ObjectProduct = Directories.Products.FindByName("Кофенек").GetObject(); ValueInFormData(ObjectItem, Object);

Процедураның соңы

&OnClient процедурасын жазу()

WriteOnServer();

Процедураның соңы

&OnServer процедурасы WriteOnServer()

ObjectProduct = FormDataValue(Нысан, Түр("DirectoryObject.Products")); ObjectItem.Write();

Процедураның соңы

ManagedForm нысанында серверде қолжетімді әдістер де бар:

  • ValueВFormAttribute() – қолданба түрінің нысанын көрсетілген пішін төлсипатына түрлендіреді.
  • FormAttributeVValue() – пішін деректерінің төлсипатын қолданба түрінің нысанына түрлендіреді.

Бұл әдістерді пайдалану әдетте ыңғайлырақ, өйткені оларда, мысалы, пішін мәліметтерінің түрі туралы ақпарат бар. Сонымен қатар, Form AttributesValue() әдісі хабарламаларды жасау кезінде қолданылатын пішін деректері мен нысан арасындағы сәйкестікті орнатады. Бұл туралы толығырақ «Қызметті навигация мүмкіндіктері» тарауынан оқи аласыз.

Осы әдістерді қолдануға мысал келтірейік.

&OnServer процедурасы RecalculateOnServer()

// Object төлсипатын қолданба нысанына түрлендіреді. Құжат = Form AttributesValue («Нысан»); // Құжат модулінде анықталған әдісті пайдаланып қайта есептеуді орындайды. Document.Recalculate(); // Қолданбалы нысанды тірекке түрлендіреді. ValueВFormAttributes(Құжат, “Нысан”);

Процедураның соңы

Бағдарламалық интерфейс

FormDataTree

  • FindById
  • GetItems

Сипаттама:

Басқарылатын пішін деректеріндегі ағашты модельдеу үшін жасалған.

Бұл нысанды XDTO-дан сериялауға болады. Берілген нысанға сәйкес XDTO түрі аттар кеңістігінде анықталған. XDTO түрінің атауы:

GetItems

Синтаксис:

GetItems()

Қайтарылатын мән:

Түрі: Ағаш элементтерінің пішін деректерінің жинағы.

Сипаттама:

Жоғарғы деңгейлі ағаш элементтерінің жинағын алады.

Қолжетімділігі: клиент, сервер, жұқа клиент, веб-клиент.

FindById

Синтаксис:

FindById(<Идентификатор>)

Опциялар:

<Идентификатор>(міндетті)

Түрі: саны. Ағаш элементінің идентификаторы.

Қайтарылатын мән:

Түрі: FormDataTreeElement.

Сипаттама:

Коллекция элементін ID бойынша алады.

Қолжетімділігі: клиент, сервер, жұқа клиент, веб-клиент.

FormDataTreeItem

Қасиеттер:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • GetParent
  • GetItems
  • Меншік

Сипаттама:

Пішін деректер ағашының элементі.

FormDataTreeItemCollection

Жинақ элементтері: DataFormTreeElement

Нысан үшін For every... From... Loop операторы арқылы коллекцияны айналып өтуге болады. Айналу жинақтың элементтерін таңдайды. Коллекция элементіне [...] операторы арқылы қол жеткізуге болады. Элементтің индексі аргумент ретінде беріледі.

  • Кірістіру
  • қосу
  • Индекс (IndexOf)
  • Санау
  • Таза
  • Алу
  • Жылжыту
  • Жою

Сипаттама:

Ағаш элементтерін жинау.

Қолжетімділігі: клиент, сервер, жұқа клиент, веб-клиент.

Сондай-ақ қараңыз:

  • Form DataTreeElement, GetElements әдісі
  • DataFormTree, GetItems әдісі

Құндылық ағашымен жұмыс істеу ерекшеліктері

Ағашты жаңарту

Мәселе бар құлайдыағашты жаңарту кезінде платформалар.

Ағаштағы кез келген түйін кеңейтілсе және бағынышты түйін таңдалса, ағашты функциямен жаңарту кезінде ValueInFormDataплатформа құлады.

Шешім: Жаңарту алдында ағашты тазалау керек.

Мысалы:

&Сервер процедурасында ClearTree(элементтер) Элементтердің әрбір элементі үшін Loop ClearTree(element.GetElements()); EndCycle; elements.Clear(); Процедураның соңы

&Сервер процедурасында Тұжырымдама ағашын толтыру() dConcepts = srProperties.Build тұжырымдама ағашы(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts, ConceptTree); Процедураның соңы

&OnClient процедурасы OnDateOnChange(Element) ConceptTree(); Процедураның соңы

Ал 1С 8.2 ортасында кодты құрылымдауға, басқарылатын пішінге Data Transfer Object.

Кіріспе

«Басқарылатын пішін» түсінігінің қысқаша сипаттамасынан және 1С платформасының оған қатысты ұғымдарынан бастайық. Платформаны білушілер бұл бөлімді өткізіп жіберуі мүмкін.

2008 жылы 1С платформасының жаңа нұсқасы: Enterprise 8.2 (бұдан әрі - Басқарылатын қолданба) қол жетімді болды, ол интерфейспен жұмыстың барлық деңгейін толығымен өзгертеді. Бұған пәрмен интерфейсі, пішіндер және терезе жүйесі кіреді. Бұл ретте конфигурацияда пайдаланушы интерфейсін әзірлеу моделі өзгеріп қана қоймай, сонымен қатар клиенттік қосымша мен сервер арасындағы функционалдылықты бөлудің жаңа архитектурасы ұсынылады.
Басқарылатын қолданба клиенттердің келесі түрлерін қолдайды:

  • Қалың клиент (тұрақты және басқарылатын іске қосу режимі)
  • Жұқа клиент
  • Веб-клиент
Басқарылатын қолданба жаңа технологияға негізделген пішіндерді пайдаланады. Олар шақырылады Басқарылатын пішіндер. Өтуді жеңілдету үшін алдыңғы пішіндерге (тұрақты пішіндер деп аталатын) да қолдау көрсетіледі, бірақ олардың функционалдығы дамымаған және олар тек қалың клиентті іске қосу режимінде қол жетімді.
Әзірлеуші ​​үшін басқарылатын пішіндердің негізгі айырмашылықтары:
  • Құрылымның «пиксель бойынша пиксель» сипаттамасы емес, декларативті. Элементтердің нақты орналасуын пішін көрсетілген кезде жүйе автоматты түрде орындайды.
  • Пішіннің барлық функционалдығы ретінде сипатталған егжейЖәне командалар. Мәліметтер - пішін жұмыс істейтін деректер, ал командалар - орындалатын әрекеттер.
  • Пішін серверде де, клиентте де жұмыс істейді.
  • Клиент контекстінде қолданбаның барлық дерлік түрлері қолжетімсіз және сәйкесінше инфобазадағы деректерді өзгерту мүмкін емес.
  • Әрбір әдіс немесе пішін айнымалысы үшін ол көрсетілуі керек құрастыру директивасы, орындау орнын (клиент немесе сервер) және пішін контекстіне қол жеткізуді анықтау.
Пішін әдістерін құрастыруға арналған директиваларды тізімдейміз:
  • &OnClient
  • &Серверде
  • &OnServerContextWithout
  • &OnClientOnServerContextWithout
Жоғарыдағыларды суреттеп көрейік. Скриншот басқарылатын пішіннің мысалын және әзірлеу режиміндегі оның модулін көрсетеді. Декларативті сипаттаманы, деректемелерді, компиляция директивасын және т.б. табыңыз.

Бұдан әрі барлық талқылаулар иллюстрацияның оң жағы, модуль кодын қалай құрылымдау керек және қандай принциптер клиент пен сервердің тиімді әрекеттесуін жүзеге асыруға мүмкіндік беретіні туралы болады.

Мәселені анықтайық

1С платформасының жаңа нұсқасы белсенді түрде қолданылғаннан бері бірнеше жыл өтті және 1С және оның көптеген серіктестері көптеген шешімдерді (конфигурацияларды) шығарды.
Осы уақыт ішінде әзірлеушілер пішіндерді құру кезінде клиент пен сервердің өзара әрекеттесу принциптері туралы жалпы түсінікті дамытты ма және жаңа архитектуралық шындықтарда бағдарламалық модульдерді енгізу тәсілі өзгерді ме?

Бір стандартты конфигурацияның бірнеше пішіндеріндегі код құрылымын (форма модулін) қарастырайық және үлгілерді табуға тырысайық.
Құрылым деп әзірлеуші ​​топтық әдістерге және осы әдістерге арналған компиляция директивтеріне бөлінген код бөлімдерін (көбінесе бұл түсініктеме блоктары) түсінеміз.
1-мысал:
Оқиғаларды өңдеушілер бөлімі Әдіс - клиентте Әдіс - серверде Әдіс - клиентте Қызмет көрсету процедуралары мен функциялары бөлімі Көмекші енгізуді басқару функциялары
2-мысал:
Қызмет көрсету процедуралары мен функциялары Төлем құжаттары Құндылықтар Оқиға өңдеушілері
3-мысал:
Сервердегі қызмет көрсету процедуралары Клиенттегі қызмет көрсету процедуралары Мәтінмәнсіз сервердегі қызмет көрсету процедуралары Тақырып оқиғасын өңдеушілер Пәрмен оқиғасын өңдеушілер
4-мысал:
Жалпы мақсаттағы процедуралар Пішін оқиғаларын өңдеушілер «Байланыс ақпараты» ішкі жүйесінің процедуралары
Негізінде, код құрылымы жоқ немесе жұмсақ тілмен айтқанда, 8.1 пішіндеріндегіге ұқсас:

  • Ақпараттық емес сөздер «Жалпы, Қызметтік, Көмекші».
  • Қорқақ клиент пен сервер әдістерін бөлуге тырысады.
  • Әдістер көбінесе «Өнімдердің кестелік бөлігімен жұмыс, Байланыс ақпараты» интерфейс элементтері бойынша топтастырылады.
  • Әдістер мен код топтарының ерікті орналасуы. Мысалы, Оқиға өңдеушілері бір пішінде жоғарғы жағында, екіншісінде төменгі жағында болуы мүмкін, үшіншісінде мүлдем бөлектелмейді және т.б.
  • Мұның бәрі бір конфигурацияда екенін ұмытпайық.
  • Иә, «Жалпы, Қызметтік, Көмекші» сөздері әрқашан бір жерде болатын конфигурациялар бар, бірақ...
Неліктен сізге код құрылымы қажет?
  • Техникалық қызмет көрсетуді жеңілдету.
  • Оқытуды жеңілдету.
  • Жалпы/маңызды/сәтті принциптерді жазу.
  • ...сенің таңдауың
Неліктен 1С-тен қолданыстағы әзірлеу стандарты көмектеспейді?
Басқарылатын пішінді жазу кезінде ұсынылатын ITS дискілерінде және әртүрлі «Әзірлеуші ​​нұсқаулығында...» жарияланған принциптерді қарастырайық.
  • Сервер қоңырауларының санын азайтыңыз.
  • Сервердегі максималды есептеулер.
  • Мәтінмәндік емес сервер қоңыраулары мәтінмәндік қоңырауларға қарағанда жылдамырақ.
  • Клиент пен сервер байланысын ескере отырып бағдарлама.
  • және т.б.
Бұл мүлдем дұрыс ұрандар, бірақ оларды қалай жүзеге асыруға болады? Қоңыраулар санын қалай азайтуға болады, клиент-сервер режимінде бағдарламалау нені білдіреді?

Дизайн үлгілері немесе ұрпақ даналығы

Клиент пен сервердің өзара әрекеттесуі ондаған жылдар бойы әртүрлі бағдарламалық технологияларда қолданылды. Алдыңғы бөлімде баяндалған сұрақтардың жауабы бұрыннан белгілі және екі негізгі қағидада жинақталған.
  • Қашықтағы қасбет(бұдан әрі қашықтан қол жеткізу интерфейсі деп аталады)
  • Деректерді тасымалдау нысаны(бұдан әрі Деректерді тасымалдау нысаны деп аталады)
Мартин Фаулердің сөзі, оның осы принциптерді сипаттауы:
  • Қашықтан қол жеткізуге арналған ықтимал әрбір нысанда болуы керек төмен түйіршікті интерфейс, бұл белгілі бір процедураны орындау үшін қажетті қоңыраулар санын азайтады. ... Шот-фактураны және оның барлық элементтерін бөлек сұраудың орнына, бір сұраудағы барлық шот-фактура элементтерін оқып, жаңарту қажет. Бұл нысанның бүкіл құрылымына әсер етеді...Есіңізде болсын: қашықтан қол жеткізу интерфейсі домен логикасын қамтымайды.
  • ...егер мен қамқор ана болсам, мен міндетті түрде балама: «Ешқашан деректерді тасымалдау объектілерін жазбаңыз!» деп айтар едім. Көп жағдайда деректерді тасымалдау объектілері басқа ештеңе емес кебулі өріс жиынтығы...Бұл жиіркенішті құбыжықтың құндылығы тек мүмкіндікте бір қоңырауда желі арқылы бірнеше ақпаратты жіберу- бөлінген жүйелер үшін үлкен маңызға ие әдістеме.
1С платформасындағы үлгілердің мысалдары
Басқарылатын пішінді әзірлеу кезінде әзірлеушіге қолжетімді қолданбалы бағдарламалау интерфейсі осы принциптердің көптеген мысалдарын қамтиды.
Мысалы, OpenForm() әдісі, әдеттегі «дөрекі» интерфейс.
OpeningParameters = Жаңа құрылым («Параметр1, Параметр2, Параметр3», Мән1, Мән2, Мән3); Пішін = OpenForm(FormName, OpeningParameters);
v8.1-де қабылданған стильмен салыстырыңыз.
Пішін = GetForm(FormName); Form.Parameter1 = Мән1; Form.Parameter2 = Мән2; Form.Open();

Басқарылатын пішін контекстінде көптеген «Деректерді тасымалдау нысандары» бар. Сіз таңдай аласыз жүйелікЖәне әзірлеуші ​​​​анықталған.
Жүйелік бір немесе бірнеше пішін деректер элементтері түрінде клиенттегі қолданба нысанын модельдейді. Пішін мәліметтеріне сілтемесіз оларды жасау мүмкін емес.

  • DataFormsStructure
  • DataFormsCollection
  • DataFormStructureWithCollection
  • DataShapesTree
Жүйелік деректерді беру объектілерін қолданбалы типтерге және керісінше түрлендіру келесі әдістер арқылы жүзеге асырылады:
  • ValueInFormData()
  • FormDataValue()
  • CopyFormData()
  • ValueInFormAttributes()
  • FormAttributesValue()
Қолданыстағы шешімді бейімдеу кезінде жиі айқын түрлендіру қолданылады. Әдістер FormDataCollection емес ValueTable сияқты енгізу параметрлерін күтуі (мүмкіндіктерді пайдалануы) мүмкін немесе әдіс қолданба нысанының мәтінмәнінде анықталған және пішіннен тікелей шақыру үшін қолжетімсіз болып қалды.
1С v8.1 мысалы:
// FillUserCache(DepartmentLink) пішінінің контекстіндегі клиентте
1С v8.2 мысалы:
// пішін контекстіндегі серверде ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache(DepartmentRef); ValueВFormAttributes(ProcessingObject, "Object");

Құрылымын әзірлеуші ​​анықтайтын деректерді тасымалдау объектілері клиентте де, серверде де қолжетімді түрлердің шағын жиыны болып табылады. Көбінесе «өрекі» интерфейс әдістерінің параметрлері мен нәтижелері ретінде мыналар қолданылады:

  • Қарапайым типтер (жол, сан, логикалық)
  • Құрылым
  • Корреспонденция
  • Массив
  • Қолданба нысандарына сілтемелер (бірегей идентификатор және мәтінді көрсету)
Мысал: әдіс күйді өзгертуге тапсырыстар тізімін қабылдайды және клиентке қателердің сипаттамасын қайтарады.
&OnServerWithoutContext функциясы ServerChangeOrderStatus(Тапсырыстар, NewStatus) Қателер = Жаңа сәйкестік(); // [тапсырыс][қате сипаттамасы] Тапсырыстардың әрбір тапсырысы үшін Cycle StartTransaction(); DocOb = Order.GetObject(); …. басқа әрекеттер, тек тапсырыспен ғана мүмкін емес... Exception CancelTransaction(); Errors.Insert(Тәртіп, ErrorDescription()); EndAttempt; EndCycle; Қайтару қатесі; EndFunction // ServerChangeOrderStatus()

Кодты құрылымдау

Басқарылатын пішін модулі көрсетуі керек негізгі мақсаттар және шешімге тәсілдер.
  • Клиент пен сервер кодын анық ажырату.Орындау кезінде бұл екі өзара әрекеттесетін процесс екенін ұмытпайық, олардың әрқайсысының қол жетімді мүмкіндіктері айтарлықтай ерекшеленеді.
  • Қашықтан қол жеткізу интерфейсінің анық идентификациясы, клиенттен қандай сервер әдістерін шақыруға болады және қайсысы мүмкін емес? Қашықтағы интерфейс әдістерінің атаулары «Сервер» префиксінен басталады. Бұл кодты оқу кезінде басқаруды серверге беруді бірден көруге мүмкіндік береді және контекстік анықтаманы пайдалануды жеңілдетеді. Ресми ұсыныс (ITS) постфикстермен атау әдістерін ұсынатынын ескеріңіз, мысалы, ChangeOrderStatusOnServer(). Дегенмен, біз сервердің барлық әдістерін клиенттен шақыруға болмайтынын қайталаймыз, сондықтан компиляция орнына қарағанда логикалық қол жетімділік маңыздырақ. Сондықтан, «Сервер» префиксімен біз тек клиентке қолжетімді әдістерді белгілейміз, мысал әдісін ServerChangeOrderStatus() деп атаймыз;
  • Оқуға қабілеттілік.Дәмі бойынша, модуль серверде пішін құру процедураларынан және қашықтан қол жеткізу әдістерінен басталған кезде тапсырысты қабылдаймыз.
  • Тұрақтылық.Жаңа кодты қосу үшін нақты орын болуы керек. Маңызды мәселе конфигуратор автоматты түрде жасаған әдіс үлгілері модульдің соңына қосылады. Пішін элементтеріне арналған оқиға өңдегіштері көбінесе автоматты түрде жасалатындықтан, әрбір өңдегішті модульдегі басқа орынға сүйреп апармау үшін сәйкес блок соңғы орналасады.
Төменде аталған мақсаттарды жүзеге асыратын модульдің негізгі құрылымы берілген.
  • Графикалық опция – орындаудың негізгі ағынын анық көрсетеді.
  • Мәтін опциясы құрылымды жаңа пішін модуліне жылдам кірістіру үшін үлгі дизайнының мысалы болып табылады.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""Күні=""/> // <Описание> // // //////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// ////////// // СЕРВЕРДЕ //******* СЕРВЕРДЕГІ ОҚИҒАЛАР ******* &Серверде жасалған кездегі сервер процедурасында (сәтсіздік, стандартты өңдеу) / /Өңдеушінің мазмұнын кірістіру Процедураның соңы //******* ҚАШЫҚТАН ҚАТЫНАСУ ИНТЕРФЕЙСІ ******* //********* СЕРВЕРДЕГІ БИЗНЕС-ЛОГИКА ******* ///////// /////////////////////////////////////// /////// //////////////////// // КЛИЕНТ МЕН СЕРВЕРДІҢ ЖАЛПЫ ӘДІСТЕРІ /////////////// /////// ///////////////////////////////////////// ///// //////// // КЛИЕНТТЕ //********* КЛИЕНТТІҢ БИЗНЕС-ЛОГИКАСЫ ******* //********* КОМАНДА * ****** //********* КЛИЕНТТЕРДІҢ ОҚИҒАЛАРЫ ******* //////////////////////// ///// /////////////////////////////////////////// // / / БАСТЫ БАҒДАРЛАМАЛЫҚ ОПЕРАТОРЛАР

Қатысты сұрақтар
Қорытындылай келе, біз клиент пен сервердің өзара әрекеттесуін бағдарламалау кезінде ойлануға болатын бірнеше бағыттарды сипаттаймыз.
  • Қашықтан қол жеткізу интерфейсін іске асыру опциялары. Асинхрониялық, егжей-тегжейлі деңгей...
  • Кэштеу. 1С сәтсіз архитектуралық шешім қабылдады, кэштеуді тек жалпы модульдерді шақыру әдістері деңгейінде енгізді және басқару мүмкіндіктерін қамтамасыз етпеді (сәйкестік уақыты, сұраныс бойынша қалпына келтіру).
  • Сервердің жасырын қоңыраулары. Клиенттегі көптеген «зиянсыз» операциялар платформаны сервермен байланысуға итермелейтін технологиялық мүмкіндіктер туралы ұмытпаңыз;

Пішін қойындыда иерархиялық түрде орналасқан әртүрлі пішін элементтері арқылы басқарылады Элементтерпішін дизайнері. Ең маңызды элемент - элементтер иерархиясының жоғарғы жағында орналасқан пішіннің өзі, ал қалған элементтер оған бағынады.

Барлық пішін элементтерін бес топқа бөлуге болады: өрістер, топтастыру элементтері, түймелер, безендірулер және кестелер. Мен өз мақалаларымда топтардың әрқайсысын талдаймын. Бұл мақалада біз өріс элементінің түрлерінің бірін зерттеуді бастаймыз - кіру өрісі, бірақ оған дейін пішінге элемент қосу жолын үйренеміз.

Пішінге элементтерді қосу

Бұл өте қарапайым орындалады: элементті таңдау керек Пішін«Пішін дизайны элементтері» терезесінде «Қосу» түймесін басыңыз. Осыдан кейін қажетті элемент түрін таңдау қажет терезе ашылады

Таңдаудан кейін терезеде қажетті элемент пайда болады Элементтер.

Басқарылатын пішін элементі Өріс

Басқарылатын пішін элементін қарастырайық Өріс. Бұл элемент пішінге ақпаратты енгізу үшін қажет. Сондай-ақ кез келген ақпаратты көрсету үшін. Бұл элементті пішінге қосқаннан кейін пішін элементінің сипаттары палитрасы оң жақта ашылады. Әзірге сізді екі сипат қызықтыруы керек – DataPath және View.

DataPath сипатында әзірлеуші ​​пішін элементін қажетті пішін төлсипатымен байланыстыра алады. Элемент қосылғаннан кейін екенін ескеріңіз Кіру өрісіпішінде ол пішіннің өзінде көрсетілмеді. Бұл біздің жаңа элементіміздің байланыстырылмайтындығынан болды. Мысалы, өңдеу пішінінде әртүрлі қарабайыр типтері бар бірнеше атрибуттар және сілтеме түрі бар бір төлсипат жасадым.

Енді жақында қосылған пішін элементін мәліметтердің бірімен байланыстырайық, ол үшін элементтің PathKData қасиетінен қажетті атрибутты таңдаңыз;

Осыдан кейін DataPath және View сипаттары толтырылады және элементтің өзі пішін көрінісінде көрсетіледі.

Элемент қасиетіне назар аударыңыз Көру. Бұл сипат енгізу өрісінің функционалдығын анықтайды. Бұл сипат үшін әртүрлі мәндерді таңдауға болады.

Таңдалған мәнге байланысты функционалдылық анықталады. Жоғарыдағы суреттерде таңдалған мән – кіру өрісі, яғни. біз осы енгізу өрісіне кез келген мәндерді енгізе аламыз және егер біз мән таңдасақ белгі өрісі, онда біз ештеңені енгізе алмаймыз.

Бұл сипат мәні КөруЕнгізу өрістері пайдаланушыға анықтама ақпаратын көрсету қажет болғанда таңдауға ыңғайлы.

Енді түрі бар жаңа пішін элементін қосамыз Кіру өрісіжәне оны тіректермен байланыстырыңыз МәліметтерКүнібізге бұрыннан таныс DataPath сипаты арқылы

Көріп отырғаныңыздай, енгізу өрісінің көрінісі өзгерді, сонымен қатар View сипаты үшін мәндердің ықтимал таңдауы да өзгереді.

Осылайша, енгізу өрісінің функционалдығы атрибуттың түріне байланысты деген қорытындыға келеміз.

Түрі бар реквизиттер үшін ЛогикалықКелесі View сипаты мәндері қолжетімді болады.

Сілтеме түрі бар атрибуттар үшін View сипатының басқа мәндері қолжетімді болады.

Практикалық мысалдарды пайдалана отырып, пішін элементтерімен толығырақ жұмыс «1С: Таксидегі даму негіздері» кітабында келтірілген. Басқарылатын қолданбаларды әзірлеу 12 қадамда».

Кейде 1С тілінде бағдарламалау тілін үйрену қиын және қиын болып көрінеді. Шындығында, 1С тілінде бағдарламалау оңай. Менің кітаптарым сізге 1С: және «1С: Таксиде даму негіздері» бағдарламасында оңай және жылдам меңгеруге көмектеседі.

Менің «1С-те 11 қадамда бағдарламалау» кітабымның көмегімен 1С тілінде бағдарламалауды үйреніңіз.

  1. Күрделі техникалық терминдер жоқ.
  2. 700 беттен астам практикалық материал.
  3. Әрбір тапсырма сызбамен (скриншот) қоса беріледі.
  4. Үй тапсырмасына есептер жинағы.
  5. Кітап түсінікті және қарапайым тілде жазылған - жаңадан бастағандар үшін.

Бұл кітап бағдарламалауды бастаған және осы тақырып бойынша белгілі бір қиындықтарға тап болғандар үшін және ұзақ уақыт бойы бағдарламалаумен айналысатын, бірақ 1С басқарылатын пішіндермен ешқашан жұмыс істемегендер үшін қолайлы.

  1. Күрделі техникалық терминдерсіз;
  2. 600 беттен астам практикалық материал;
  3. Әрбір мысал сызбамен (скриншот) қоса беріледі;
  4. Кітап электрондық пошта арқылы PDF форматында жіберіледі. Кез келген құрылғыда ашуға болады!

15% жеңілдікке арналған промокод - 48PVXHeYu


Егер бұл сабақ сізге қандай да бір мәселені шешуге көмектессе, оны ұнатсаңыз немесе пайдалы деп тапсаңыз, онда сіз менің жобамды кез келген соманы беру арқылы қолдай аласыз:

Сіз қолмен төлей аласыз:

Yandex.Money - 410012882996301
Web Money - R955262494655

Менің топтарыма қосылыңыз.