Аппараттық және бағдарламалық қамтамасыз етуді орнату

Клиентте синхронды әдістерді пайдалануға тыйым салынады. Неліктен «Клиентте синхронды әдістерді пайдалануға тыйым салынады» қатесі пайда болады? Веб-клиентте файлдармен жұмыс істеу

Неліктен «Клиентте синхронды әдістерді пайдалануға тыйым салынады» қатесі пайда болады?

Егер сіз сабақтарды аяқтау кезінде осындай қатеге тап болсаңыз, оны түзету өте оңай.

Конфигураторға оралыңыз және «Конфигурация» -> «Конфигурацияны ашу» мәзір тармағын таңдаңыз:

Ашылған терезеде «Конфигурация» элементін тінтуірдің оң жақ түймешігімен басып, ашылатын мәзірден «Сипаттар» тармағын таңдаңыз:

Конфигурация сипаттары бар терезе ашылады (оң жақта):

Төменгі жағына қарай жылжып, «Модальды режим» тармағын табыңыз:

Оның мәнін орнатыңыз «Қолдану»:

Назар аударыңыз!Есіңізде болсын, егер сіз бірінші сабақта жүктеп алғанымыздан (кейінгі нұсқасы) басқа 1С платформасын пайдалансаңыз, сізде «Синхронды қоңырауларды пайдалану режимі...» өрісі де болады. Ол сондай-ақ «Пайдалану» күйіне орнатылуы керек.

Соңында «Конфигурация» -> «Конфигурацияны сақтау» мәзір тармағын таңдаңыз:

Дайын! Енді қате пайда болмайды.

Төмендегі түсініктемелер - біздің не істегенімізге қызығушылық танытқандар үшін.

Біз конфигурациямызда модальдылық режимін қостық. Әдепкі бойынша, бұл режим өшірілген және бұл EnterNumber, EnterString, EnterDate, OpenValue сияқты пәрмендерді пайдалануға мүмкіндік бермейді.

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

Веб-шолғыш арқылы 1С-пен жұмыс істеу кезінде мұндай терезелердің болуы өте қажет емес болғандықтан, жаңа конфигурацияларды әзірлеу кезінде модальділік режимі әдепкі бойынша өшіріледі.

Мақалада 1C: Enterprise платформасындағы модальділіктен бас тартудың негізгі себептері және код бөлімдерін жаңа асинхронды модельге түрлендірудің негізгі әдістері талқыланады.

Қолдану мүмкіндігі

Мақалада бизнес логикасын құрудың асинхронды моделі, қосылған платформа «1С:Кәсіпорын» басылымы 8.3. Ұсынылған ақпарат ағымдағы платформа шығарылымдарына қатысты.

1С: Enterprise 8.3 платформасында модальды терезелерді пайдаланудан бас тарту

1C: Enterprise 8 платформасында конфигурацияны әзірлеу кезінде пайдаланушы шешім қабылдағанға немесе қандай да бір әрекетті орындағанға дейін бағдарламаны мезгіл-мезгіл кідірту қажеттілігі туындайды.

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

Бұл әрекетке, мысалы, келесі код арқылы қол жеткізуге болады:

&OnClient
Процедура Өнімдерді толтырыңыз(Команда)
Жауап = Сұрақ («Кесте бөлігі тазартылады. Жалғастыру керек пе?», Диалог режиміСұрақ.ИәЖоқ);
Жауап болса = Диалогты қайтару коды. ИәСодан кейін
//толтыру алгоритмі
EndIf;
Процедураның соңы

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

OpenModal() әдісін шақыру арқылы модальды терезелерді ашу кодты орындауда үзілістерге және интерфейсті блоктауға да себеп болады.

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

Интернеттегі қалқымалы терезелер қажетсіз жарнамаларды зиянды түрде тарату үшін жиі пайдаланылады, сондықтан браузерлерде қалқымалы терезелерді блоктау мүмкіндіктері бар.

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

Мобильді құрылғыларда жұмыс істегенде де проблемалар туындайды. Мысалы, модальды терезелерге iPad құрылғысында қолдау көрсетілмейді.

Бұл мәселелерді шешу үшін модальды терезелердің орнына блоктау терезелерін пайдалану керек. Пайдаланушы үшін бәрі визуалды түрде бірдей көрінеді: терезе веб-клиент интерфейсін блоктайды.

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

Осылайша, браузерде қалқымалы терезелер ашылмайды және мобильді құрылғыларда веб-клиент арқылы жұмыс істеу қамтамасыз етіледі.

Конфигурацияның түбірлік элементінде модальды терезелерді конфигурацияда ашуға болатындығын анықтайтын «Модальдылық режимі» қасиеті бар.

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

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

«Ескертулермен пайдалану» опциясы таңдалса, модальды терезелер ашылғанда хабарлама терезесінде келесі мәтін көрсетіледі:

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

Терезелерді блоктау мен модальды терезелердің негізгі айырмашылығы блоктау терезесін ашу кодтың орындалуын тоқтатпайды.

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

Кодты екі бөлікке бөлу керек:

  • блоктау терезесін ашу;
  • пайдаланушы таңдауын өңдеу.

Мақаланың басында берілген код фрагменті келесідей қайта жазылуы керек:

&OnClient
Процедура Өнімдерді толтырыңыз(Команда)
Ескерту = Жаңа Сипаттама Ескертулер(, ThisObject );

Диалог режиміСұрақ.ИәЖоқ);
Процедураның соңы
&OnClient
Процедура (Нәтиже, Қосымша опциялар) Экспорттау
Егер нәтиже = Диалогты қайтару коды. ИәСодан кейін
//толтыру алгоритмі
EndIf;
Процедураның соңы

ShowQuestion() процедурасын орындағаннан кейін жүйе тоқтамайды, пайдаланушының жауабын күтеді, кодты орындау жалғасады.

Пайдаланушы бүкіл процедура аяқталғаннан кейін ғана таңдау жасай алады. Бұл жағдайда FillItemsQuestionComplete() экспорт процедурасы шақырылады. Біз оның атын DescriptionAlerts нысанының конструкторына бердік.

Таңдаудан кейін шақырылатын процедура пішін модулінде, пәрмендік модульде немесе жалпы ғаламдық емес модульде орналасуы мүмкін.

Қарастырылған мысалда шақырылған процедура басқарылатын пішін модулінде орналасқан, сондықтан біз ThisObject параметріне өттік.

Жалпы модульде орналасқан процедураны шақыруды қарастырайық. Ол үшін жаңа жалпы хабарландыруды өңдеу модулін қосыңыз, оған «Клиент (басқарылатын қолданба)» жалауын орнатыңыз және «Жаһандық» жалаушасын орнатпаңыз. Осы модульге Fill in Products Question Completion () процедурасын орналастырайық.

Содан кейін толтыру пәрменінің өңдеушісі келесідей болады:

&OnClient
Процедура Өнімдерді толтырыңыз(Команда)
Ескерту = Жаңа Сипаттама Ескертулер(«Өнімдерге қатысты сұрақтарды толтыру»,
ProcessingAlerts);
Сұрақ мәтіні = «Кестелік бөлік тазартылады. Жалғастыру ма?» ;
Сұрақты көрсету (Ескерту, сұрақ мәтіні, Диалог режиміСұрақ.ИәЖоқ);
Процедураның соңы

Блоктау терезесін ашатын кез келген әдісті шақырғаннан кейін процедурадан шығу керек, ал келесі орындалатын код терезе жабылғаннан кейін шақырылатын процедураға орналастырылуы керек.

Мәтінмәнді (көмекші деректер, белгілі бір параметрлер, айнымалы мәндер) модальды терезені ашатын процедурадан ол жабылған кезде шақырылатын процедураға тасымалдау үшін нысан конструкторының үшінші қосымша параметрі қамтамасыз етіледі: DescriptionAlerts – Қосымша параметрлер.

Бұл нысан (кез келген түрдегі) соңғы параметр ретінде Ескерту сипаттамасында сипатталған процедураға жіберіледі.

Жоғарыда талқыланған код бөлімінің мысалын пайдалана отырып, мұны келесідей жасауға болады:

&OnClient
Процедура Өнімдерді толтырыңыз(Команда)
Параметр1 = 0 ;
Параметр2 = 0 ;
Параметрлер тізімі= Жаңа құрылым («Параметр1, Параметр2″, Параметр1, Параметр2);
Ескерту = Жаңа Сипаттама Ескертулер(«Өнімдерге қатысты сұрақтарды толтыру», ThisObject,
Параметрлер тізімі);
ShowQuestion (Ескерту, «Кесте бөлігі тазартылады. Жалғастыру керек пе?»,
Диалог режиміСұрақ.ИәЖоқ);
Процедураның соңы
&OnClient
Процедура ӨнімдерСұрағын толтыру(Нәтиже, Қосымша опциялар) Экспорттау
Егер нәтиже = Диалогты қайтару коды. ИәСодан кейін
//Қосымша параметрлерді талдау.Parameter1
//Қосымша параметрлерді талдау.Parameter2
EndIf;
Процедураның соңы

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

Терезелерді блоктаумен жұмыс істеудің бірнеше мысалдарын қарастырайық.

1-тапсырма: Басқа пішінді ашыңыз

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

Біз «ParametersForm» жалпы пішінін жасаймыз, оған Parameter1 және Parameter2 мәліметтерін, сондай-ақ CloseForm командасын орналастырамыз:

Пәрмен өңдеушісі келесідей көрінеді:

Пәрмен өңдеушісі келесідей көрінеді: &OnClient
CloseForm процедурасы (пәрмен)
Параметрлер тізімі= Жаңа құрылым ( «Параметр1, Параметр2», Параметр1 , Параметр2 );
Жабық ( Параметрлер тізімі); Процедураның соңы

Пішін үшін WindowOpenMode сипатын «Барлық интерфейсті блоктау» күйіне орнатыңыз:

Құжат формасына OpenParameters командасын орналастырамыз, оның өңдеушісі келесідей сипатталады:

&OnClient
Процедура OpenOptions(Команда)
Ескерту = Жаңа Сипаттама Ескертулер(«Ашық опцияларды аяқтау», ThisObject);
OpenForm ( “GeneralForm.FormParameters”, , , , , , Хабарландыру);
Процедураның соңы
&OnClient
Процедура OpenOptionsComplete(Нәтиже, Қосымша опциялар) Экспорттау
Егер TypeValue (Нәтиже) = Түр («Құрылым») Содан кейін
Нәтиже циклінің әрбір кілт мәні үшін
Хабар = Жаңа Пайдаланушыға хабарлама;
Message.Text = “Кілт: “” ” + KeyValue.Key + “””, мәні = ”
+ KeyValue.Value;
Message.Report();
EndCycle;
EndIf;
Процедураның соңы

Пайдаланушы режимінде веб-клиент астында конфигурацияны іске қоса отырып, біз келесі нәтижелерді аламыз:

Үлкейту үшін суретті басыңыз.

Терезені ашу режимін OpenForm процедурасының соңғы параметрінде де көрсетуге болады.

&OnClient
Процедура OpenOptions(Команда)
Ескерту = Жаңа Сипаттама Ескертулер(«Ашық опцияларды аяқтау», ThisObject);
OpenForm ( “GeneralForm.FormParameters”, , , , , , Ескерту
FormWindowOpenMode.LockEntireInterface
);
Процедураның соңы

Тапсырма 2. Пішінді жабу кезіндегі сұрақ

Өңдеу терезесін жапқан кезде пайдаланушыдан терезені шынымен жапқысы келетінін сұраңыз.

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

&OnClient
Перем Пішінді жабу керек;
&OnClient
Жабуға дейінгі процедура (сәтсіздік, Стандартты өңдеу)
Егерде Пішінді жабу керек= Рас Содан кейін
Failure = True ;
Ескерту = Жаңа Сипаттама Ескертулер(«Жабуға дейін», ThisObject);
ShowQuestion («Терезені шынымен жапқыңыз келе ме?» Ескерту,
Диалог режиміСұрақ.ИәЖоқ
);
EndIf;
Процедураның соңы
&OnClient
Процедура Аяқтау алдында(Нәтиже, Қосымша опциялар) Экспорттау
Егер нәтиже = Диалогты қайтару коды. ИәСодан кейін
Пішінді жабу керек= True ;
Жабық();
Әйтпесе
Пішінді жабу керек= Анықталмаған;
EndIf;
Процедураның соңы

PreClosing пішін процедурасында пайдаланушыға сұрақ қойылады, бас тарту жалаушасы True мәніне орнатылады және пішінді жабудан бас тартылады.

Сұраққа оң жауаптан кейін Need toCloseForm айнымалысы True мәніне орнатылады және пішін қайтадан жабылады.

3-тапсырма: Сандық мәнді енгізу

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

Ол үшін модальды емес, блоктау терезесін ашатын EnterNumber() орнына ShowNumberInput() әдісін қолдану керек.

&OnClient
Нөмірлерді енгізу процедурасы (пәрмен)
Ескерту = Жаңа Сипаттама Ескертулер(«NumberComplete енгізіңіз», ThisObject);
ShowEnterNumbers(Ескерту, 0, «Мөлшерді енгізіңіз», 15, 3);
Процедураның соңы
&OnClient
Процедура EnteringNumbersCompleting(Нәтиже, Қосымша опциялар) Экспорттау

Хабар = Жаңа Пайдаланушыға хабарлама;
Message.Text = «Сіз мөлшерді енгіздіңіз» + Нәтиже;
Message.Report();
EndIf;
Процедураның соңы

Нөмірді енгізу терезесі жабылғаннан кейін процедура шақырылады, оның бірінші параметрі енгізілген нөмір немесе егер пайдаланушы енгізуден бас тартса, Анықталмаған мән болады.

4-тапсырма.Түсті таңдау

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

SelectColor пәрменін пішінге келесі өңдегішпен қосыңыз:

&OnClient
Түс таңдау процедурасы (пәрмен)
Түс таңдау диалогы= Жаңа Түс таңдау диалогы;
Ескерту = Жаңа Сипаттама Ескертулер(«Түс таңдау аяқталды», ThisObject);
Түс таңдау диалогы.Көрсету(Ескерту);
Процедураның соңы
&OnClient
Процедура Таңдаулы түстерді аяқтау(Нәтиже, Қосымша опциялар) Экспорттау
Нәтиже ЕМЕС болса = Анықталмаған
Элементтер. Түс таңдау. Фон түсі= Нәтиже;
EndIf;
Процедураның соңы

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

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

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

Веб-клиентте файлды таңдау диалогын пайдалану үшін алдымен файл кеңейтімін қосу керек.

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

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

Бұл ақпараттан қандай практикалық қорытынды жасауға болады? Қорытынды өте қарапайым - егер қандай да бір себептермен сіздің конфигурацияңызда модальды қоңыраулар әлі де болса, онда веб-клиенттегі осы жерлерде қате туралы хабары бар терезе көрсетіледі. Мен бұл мәселенің жылдам шешімін «Google» іздеуден сақтандырғым келеді, себебі... Кеңестердің көпшілігі осы рецептке келеді: конфигурация деңгейіндегі конфигураторда «Модальді пайдалану режимі» сипатын «Пайдалану» күйіне орнатыңыз. Әрине, қазіргі уақытта бұл жұмыс істемейді, өйткені заманауи браузерлердің өздері модальды қоңырауларды қолдамайды.

Сізде жоғарыда сипатталған мәселені шешудің екі жолы бар:

  1. 8.3.10+ (8.3.11) нұсқасын шығару үшін платформаны жаңартыңыз, "Үйлесімділік режимі" конфигурация сипатын "Қолданбаңыз" күйіне орнатыңыз және модальды әдістерді қолданатын код фрагменттерін асинхронды бизнес логикалық үлгісіне қайта жазыңыз
  2. Клиенттерге модальды қоңырауларға әлі де қолдау көрсететін ескі браузерлерді пайдалануды ұсыныңыз (Mozilla Firefox 37 және одан төмен нұсқалары, 37-ден төмен Chrome нұсқалары және т.б.).

Айтпақшы, 8.3.11 шығарылымынан бастап, Microsoft Internet Explorer веб-шолғыштарының 8 және 9 нұсқаларына енді қолдау көрсетілмейді.

Біз веб-браузерлерді модальділік тұрғысынан қарастырдық, енді басқа клиенттермен жағдайды түсіндіру уақыты келді.

8.3.5 нұсқасынан бастап, жұқа және қалың клиенттердегі Модальды пайдалану режимі сипаты /EnableCheckModal пәрмен жолы опциясы көрсетілген жағдайда ғана сақталады. Бұл параметр қолданба конфигуратордан іске қосылғанда ғана пәрмен жолына автоматты түрде енгізіледі. Егер бұл параметр көрсетілмесе, ешқандай ерекшеліктер жасалмайды және сәйкес ескертулер көрсетілмейді. Анау. практикада, қалың және жұқа клиентті пайдаланған кезде, модальды режимді пайдалану кезінде жұмыстың түбегейлі өзгеруі байқалмайды - модальды қоңыраулар веб-клиенттегі сияқты ешқандай ескертулер жасамай, бұрын жұмыс істегендей жұмыс істейді.

i нүктелерін қою үшін 8.3.9 нұсқасынан бастап қалың клиент конфигурация сипатын «Платформа кеңейтімдері мен сыртқы құрамдастарға синхронды қоңырауларды пайдалану режимі» елемейтінін ескеріңіз, бұл ретте сәйкес синхронды әдістер ерекше жағдайларды жасамай және ескертулерді көрсетпей жұмыс істейді. Көрсетілген еленбеген сипат сыртқы құрамдастармен, криптографиямен және Google Chrome веб-шолғышындағы файлдармен жұмыс істеуге арналған кеңейтімдермен асинхронды жұмысты қолдау үшін 8.3.5 нұсқасында қосылды. Мұның қалың клиентке ешқандай қатысы жоқ екені анық, сондықтан бұл сипатты «тыныш» елемеу конфигурацияны пайдалану кезінде синхронды әдістерді пайдалану үшін қажетсіз тексерулерді жойды.

Айтпақшы! Платформаның 8.3.8 нұсқасымен вебке сенімді түрде жылжып келе жатқандығына байланысты әзірлеушілер қалың және жұқа клиенттерде орындалатын пішінді немесе қолданбаны жабу логикасына байланысты бағдарлама кодына белгілі бір шектеулер енгізді. Бұл нюансты егжей-тегжейлі қарастыратын біздің мақаланы оқып шығыңыз. Сонымен қатар, «1С: Enterprise 8.3-те интерфейстер мен пішіндерді кәсіби дамыту» курсында модальділіктен бас тартуға арналған тарау бар және сіз осы тақырып бойынша көптеген пайдалы және өзекті ақпаратты ала аласыз.

Әріптестер, сіз шексіз оқи алатын екі нәрсе бар: ВКонтакте арнасы және платформаның келесі шығарылымындағы өзгерістер тізімі, сондықтан қорытынды нәтижелерді қорытындылайық;)

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

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

Қорытындының орнына

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

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

05.12.2014

8.3.5.1383, 8.3.6.1977 нұсқаларында жүзеге асырылды.

Қазіргі заманғы тенденциялар

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

Асинхрондылыққа келесі қадамның себебі Google Chrome браузерін жасаушылардың алдыңғы NPAPI (Netscape Plugin Application Programming Interface) технологиясын қолдаудан бас тартуы болды. Бұл технология сыртқы модульдерді - кеңейтімдерді браузерге қосу үшін пайдаланылды.

Мұндай кеңейтімдер 1C: Enterprise криптографиямен жұмыс істеу, файлдармен жұмыс істеу және сыртқы компоненттерді қосу үшін дәл солай пайдаланады. Бұл өте маңызды функция. Криптография электронды құжат айналымында қолданылады және сыртқы компоненттердің арқасында қолданбалар штрих-код сканерлерімен және басқа бөлшек сауда жабдықтарымен жұмыс істей алады.

Ал енді бұрынғы синхронды NPAPI технологиясының орнына Google Chrome әзірлеушілері жаңа Native Messaging технологиясын жасады. Сонымен қатар, олар барлық кеңейтімдерді әзірлеушілерге ескі технологияны қолданбауды қатаң ұсынды, өйткені оған қолдау көрсетілмейді.

Егжей-тегжейлерге тоқталмай-ақ, жаңа технология жақсырақ және қауіпсіз. Бұл жақсы. Бірақ оның маңызды айырмашылықтарының бірі браузер кеңейтімдерімен тек асинхронды өзара әрекеттесуді қамтамасыз етеді. Және бұл 1С: Enterprise кеңейтімдерімен және сыртқы компоненттерімен жұмыс істеудің барлық қолданыстағы әдістерін түбегейлі өзгертуді талап етеді. Өйткені олардың барлығы синхронды әрекеттестікке негізделген.

Асинхронды әдістер

Біз бұл мәселені модальды шақыру мәселесі сияқты шештік. NPAPI технологиясын қолданатын барлық синхронды әдістер үшін біз олардың асинхронды аналогтарын жасадық. Олар негізінен «Бастау» префиксінің болуымен және бірінші параметрі Ескерту сипаттамасы болуымен ерекшеленеді, одан бағдарлама кодының орындалуы шақырылатын әрекет аяқталғаннан кейін жалғасады.

Мысалы, Encrypt() әдісінің орнына біз StartEncrypt() әдісін пайдалануды ұсынамыз:

Cryptography Manager.Encrypt(<ИсходныеДанные>, <Получатели>) Криптография менеджері. Шифрлауды бастау(<ОписаниеОповещения>, <ИсходныеДанные>, <Получатели>)

GetFiles() әдісінің орнына - StartGettingFiles():

GetFiles(<ПолучаемыеФайлы>, <ПолученныеФайлы>, <РасположениеФайлов>, <Интерактивно>) Файлдарды қабылдауды бастау ((<ОписаниеОповещения>, <ПолучаемыеФайлы>, <РасположениеФайлов>, <Интерактивно>)

InstallExternalComponent() орнына - StartInstallingExternalComponent():

SetExternalComponent(<Местоположение>) Сыртқы құрамдастарды орнатуды бастау (<ОписаниеОповещенияОЗавершении>, <Местоположение>)

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

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

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

Сіз әдетте қолданба кодыңызда осындай ерекшеліктерді өңдеуді қамтамасыз етесіз. Try... Ерекшелік операторын пайдалану. Бірақ қазір бұл мүмкін емес, өйткені асинхронды шақыру кезінде қолданба коды орындалмайды. Сәйкесінше, Attempt... Exception операторы жұмыс істемейді.

  • ErrorProcedureName;
  • Қатені өңдеу модулі.

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

Конфигурация қасиеті

Модальдылықты қабылдамау жағдайындағыдай, қолданбалы шешім тұтастай алғанда «бұл не екенін» білуі керек. Не модальды, не модальды емес. Ол синхронды немесе асинхронды.

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

Оны қолданудың мәні келесідей:

  • Қолданбау – бұл жаңа, асинхронды жұмыс режимі. Жаңа конфигурациялар үшін бұл стандартты режим. Ескі, синхронды әдістерді қолдануға тыйым салынады. Олар синтаксистік бақылаудан өтпейді, олар контекстік анықтамада болмайды. Синхронды әдісті орындау әрекеті ерекше жағдайды шығарады.
  • Ескертумен пайдаланыңыз - бұл режим әзірлеушіге арналған. Ол ескі, синхронды әдістерді қолдануға кедергі келтірмейді. Бірақ клиентке синхронды әдіс шақырылған сайын ол ескерту хабарламасын шығарады. Бұл режимді «қайта өңдеу» конфигурацияларында пайдалануды ұсынамыз. Ол синхронды қоңырауларды визуалды түрде іздеуге және қайта қарау процесінде оларды бақылауға ыңғайлы.
  • Қолдану - кеңейтімдермен және сыртқы компоненттермен жұмыс істеу үшін синхронды әдістерді қолданатын ескі конфигурациялармен платформаның жаңа нұсқасының үйлесімділігін қамтамасыз ететін режим.

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

Әрине, модальды қоңыраулар сияқты, сізде сұрақ туындауы мүмкін. Қолданба шешімімді қайта жасауым керек пе? Жалпы, менің жаңа қолданбалы шешімімде осы асинхронды әдістерді пайдалануым керек пе?

Ол қашан қажет?

Бұл сұрақтың жауабы біз бұрын бергендей. Олар модальділіктен бас тарту туралы айтқан кезде.

Біріншіден, технологиялық платформаның әрбір нұсқасы кеңейтімдер мен сыртқы компоненттерге асинхронды қоңыраулар режимін қолдамайды. Бұл жұмыс режимі 8.3.5.1383 нұсқасынан бастап бар. Сондықтан, егер сіз платформаның төменгі нұсқаларында жұмыс істеп жатсаңыз, қазір синхронды әдістерден бас тарту туралы алаңдамаудың қажеті жоқ.

Екіншіден, барлық қолданбалы шешімдер бұл режимді міндетті түрде пайдаланбауы керек. Маңызды қолданбалар - бұл Google Chrome браузерінде веб-клиент көмегімен жұмыс істейтін қолданбалар. Мұндай қосымшалар, негізінен, сервистік үлгіде жұмыс істейтін қолданбалар. Қолданбалық шешіміңіз бұл режимде міндетті түрде пайдаланылмайтын болса, синхронды әдістерден әзірге бас тарта алмайсыз.

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

Бұл осы жұмыс режимін меңгеруді қазірден бастағаныңыз дұрыс дегенді білдіреді. Қолданбаңыз оны әлі пайдаланбауы мүмкін болса да, мүмкіндігінше аударманы қазір бастауды ұсынамыз. Дегенмен, біз сізді бұл процеске шығармашылықпен қарауға шақырамыз. Модальдылықтан бас тартқан кездегідей. Яғни, синхронды әдістерді асинхронды әдістермен механикалық түрде ауыстырудың қажеті жоқ. Біріншіден, бұл жерде біз синхронды әдістерді қолданудан толығымен бас тарту үшін алгоритмді немесе сценарийді өзгертуге бола ма, жоқ па деп ойлану керек пе?

Рефакторинг

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

Екінші жағынан, 8.3.5.1068 нұсқасынан бастап, платформада синхронды қоңырауларды асинхронды әріптестеріне түрлендіруге мүмкіндік беретін құралдар бар.

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

Осы жаңартылған пішінде рефакторинг құралдары сізге 8.3.6.1977 нұсқасында қолжетімді болды.

Бұл құралдардың «екпіні» асинхронияға ауысқандықтан, біз кейбір пәрмендердің атын өзгерттік. Енді «модальды емес» сөзінің орнына «ескірген синхронды» тіркесі қолданылады:

Сонымен қатар, біз конфигуратор параметрлеріне жаңа Рефакторинг қойындысын қостық. Әдепкі бойынша, екі түрлендіру де қосылады. Бірақ, егер сізге қажет болса, оның көмегімен сіз автоматты рефакторинг кезінде түрлендіру түрлерінің біреуін ғана орындай аласыз:

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

Мәселе параметрлерді немесе 1С кодын өзгерткеннен кейін түзетіледі.

Мұндай ақпараттық мазмұн 1С бағдарламасының функционалдығын қалпына келтіруге, сондай-ақ болашақта проблемаларды тудыратын елеулі қателерді болдырмауға мүмкіндік береді.

1С-те қателерді түзету алгоритмі

1С-де келесі қате пайда болады: «Клиентте синхронды әдістерді пайдалануға тыйым салынады». Егер бұл орын алса, үрейленбеу керек, тәжірибелі пайдаланушылардың құнды ұсыныстарын зерделеу арқылы әрекеттер тізбегін шарлау жеткілікті.

Бағдарлама параметрлеріне өзгертулер енгізу

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

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

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

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

Кодты өзгерту

Өкінішке орай, бағдарлама параметрлеріне өзгерістер енгізгеннен кейін «Клиентте синхронды әдістерді пайдалануға тыйым салынады» қатесін түзету әрқашан мүмкін емес. Кейде сізге жауапты әрекеттерді орындауға тура келеді. Атап айтқанда, бағдарлама кодына өзгерістер енгізіңіз. Тәжірибелі пайдаланушылар синхронды кіруге кенеттен тыйым салынса, асинхронды кіру әдісін пайдалануды ұсынады.

Бағдарлама кодын ашыңыз. Процедураның атын (Procedure OpenLiFile1()) және оның соңын (EndProcedure) өзгеріссіз қалдырыңыз, бірақ процедураның негізгі бөлігін түбегейлі өзгертіңіз.

Сізге тек үш жолды жазу керек:

Ескерту = Жаңа AlertDescription("RecordOrMore",ThisObject);
QuestionText = «Жазу керек пе?»;
ShowQuestion(Alert, QuestionText, DialogModeQuestion.ИәЖоқ);

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

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

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

Модальды және қалқымалы терезелер нашар пішін болып саналады және бағдарламалық жасақтаманы әзірлеуде ұзақ уақыт қалыпты болуды тоқтатты. Пайдаланушылар «бір терезеде» жұмыс істеуге дағдыланған.

Біз әсіресе келесі 1С әдістерінде модальділік қатесін жиі көреміз:

  • Сұрақ;
  • Ескерту;
  • OpenValue.

Жаңа «такси» интерфейсінің шығуымен 1С 8 платформасын әзірлеушілер дұрыс шешім қабылдады - қолданбалы шешімдерді әзірлеушілерді жаңа әдіспен қайта даярлауға тырысу. Олар жаңа платформаға «модальдық режим» мүмкіндігін қосты.

Жылдам түзету

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

Мұны істеу үшін жүйеге режимде кіріп, конфигурацияны ашыңыз:

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

1С-те 267 бейне сабақты тегін алыңыз:

Конфигурация сипаттары ашылады, төменгі деректемеде бізді қызықтыратын сипат бар - «Модальді пайдалану режимі», «Пайдалану» режимін таңдаңыз:

Осыдан кейін «F7» пернесін басу арқылы өзгертулерді сақтаңыз және қолданыңыз.

Мәселенің дұрыс шешімі

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

Ескерту, сұрақ, диалогтық терезелер және басқа модальдардың барлығын жаңа жолмен қайта жазу қажет.

Модальды терезелер деп аталатын кірістірілген операторларды қайталанатын функциялармен ауыстыру қажет.

Мысалы:

  • Ескерту - ShowWarning;
  • Question - ShowQuestion (толығырақ - );
  • — InputNumbers көрсету.

Сонымен бірге арнайы нысан пайда болды - Хабарлама сипаттамасы.

Ауыстыру мысалы:

Жол = "" ; EnterString(жол, «Жол мәнін енгізіңіз») Хабарландыру("Сіз енгіздіңіз" + Жол) ;

Мыналармен ауыстырылуы керек:

Жол = "" ; DescriptionAlerts = Жаңа СипаттамаЕскертулері( "TestLineInput", Бұл пішін); ShowLineInput(DescriptionAlerts, String, «Жол мәнін енгізіңіз») ;

Бұл ретте клиентке мәнді пайдаланушы енгізген кезде жұмыс істейтін ұқсас процедураны қосыңыз:

&Клиент процедурасында TestInputString(ReceivedValue, PassedParameters) Export Notify("Сіз енгіздіңіз" + Жол) ; Процедураның соңы

Конфигурацияда әзірленген пішіндер дәл осылай ашылады. Ескерту сипаттамасын және оған қажетті жаңа процедураны көрсете отырып, «OpenFormModal» әдісін «OpenForm» әдісімен ауыстыру жеткілікті.

Пішінді ашу арқылы шақырылған пішінге қол жеткізуді блоктау үшін пішіннің «Терезе ашу режимі» сипатында «Иесі терезесін блоктау» мәнін көрсетіңіз:

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl + Enterжәне біз бәрін түзетеміз!