&НаКлиенте,&НаСервере,&НаСервереБезКонтекстаdirektivlərini düzgün seçmək- Formanın elementlərini, rekvizitlərini və əmrlərini fərqləndirmək
- Forma hadisələrini emal etmək və modal olmayan dialoqlar qurmaq
Leyla Bakıdakı ofisdə brauzerdə sənəd açır, verilənlər bazası isə başqa şəhərdəki data-mərkəzdə yerləşən serverdədir. Leylanın kompüteri ilə server arasındakı hər «söhbət» vaxt aparır. Ona görə 1C-də hər prosedur üçün göstərmək lazımdır: o, klientdə (istifadəçinin kompüterində) işləyəcək, yoxsa serverdə?
Kompilyasiya direktivləri
| Direktiv | İngiliscə | Harada icra olunur | Forma məlumatları |
|---|---|---|---|
&НаКлиенте | &AtClient | klientdə | əlçatandır |
&НаСервере | &AtServer | serverdə, forma ilə birlikdə | əlçatandır, amma serverə göndərilir |
&НаСервереБезКонтекста | &AtServerNoContext | serverdə, yalnız parametrlərlə | əlçatan deyil |
&НаКлиентеНаСервереБезКонтекста | &AtClientAtServerNoContext | həm klientdə, həm də serverdə | əlçatan deyil |
Klientdə yalnız interfeyslə işləmək olar. Sorğular, obyekt modeli (Справочники.Товары.СоздатьЭлемент()), ТаблицаЗначений və istinaddan nöqtə ilə rekvizit oxumaq (Товар.Цена) yalnız serverdə mümkündür. Bu qaydanı pozan kod ya kompilyasiya olunmur, ya da icra zamanı xəta verir.
İdarə olunan formanın quruluşu
- Rekvizitlər (
Реквизиты) — formanın məlumatları. Obyekt formasında əsas rekvizitОбъект-dir:Объект.Дата,Объект.Товары. - Elementlər (
Элементы) — ekranda görünənlər: sahələr, cədvəllər, qruplar, düymələr. Onlar rekvizitlərə bağlanır. - Əmrlər (
Команды) — istifadəçinin hərəkətləri; hər əmrin Hərəkət (Действие) proseduru var. - Modul — formanın kodu: hadisə emalçıları və köməkçi prosedurlar, hər biri öz direktivi ilə.
- 1Formanı yarat
ПриходТовараsənədini aç,ФормыvərəqindəДобавитьbas,Форма документаseç vəГотовоbas. Forma redaktoru açılacaq. - 2Əmr əlavə et
Командыvərəqində yeni əmr yarat (məsələn,Очистить),Действиеxassəsindəki lupa düyməsi ilə emalçını yarat, sonra əmri siçanla formanın əmr panelinə çək. - 3Hadisəni bağla
Cədvəldə
Товарsütununu seç, xassələrdəПриИзмененииhadisəsinin lupasına bas — moduldaТоварыТоварПриИзмененииproseduru yaranacaq.
Forma hadisələri və server çağırışları
Forma açılanda əvvəlcə serverdə ПриСозданииНаСервере işləyir (burada parametrlər oxunur və məlumatlar hazırlanır), sonra klientdə ПриОткрытии. Yazma zamanı ПередЗаписью (klient) və ПередЗаписьюНаСервере (server) çağırılır. Aşağıdakı nümunədə mal seçiləndə onun qiyməti serverdən alınır.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
Объект.Комментарий = "Создан из формы";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыТоварПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.Цена = ЦенаТовара(ТекущиеДанные.Товар);
ТекущиеДанные.Сумма = ТекущиеДанные.Количество * ТекущиеДанные.Цена;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЦенаТовара(Товар)
Возврат Товар.Цена; // через точку от ссылки - только на сервере
КонецФункцииЦенаТовара kontekstsiz çağırışdır: serverə yalnız bir istinad gedir, bütün forma yox.Modal olmayan dialoqlar
Brauzerlər modal pəncərələri sevmir, ona görə müasir konfiqurasiyalarda köhnə Вопрос() əvəzinə ПоказатьВопрос() istifadə olunur. Cavab bildiriş emalçısına gəlir; onu ОписаниеОповещения (NotifyDescription) təsvir edir və emalçı prosedur Экспорт olmalıdır.
&НаКлиенте
Процедура Очистить(Команда)
Оповещение = Новый ОписаниеОповещения("ОчиститьЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Очистить табличную часть?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.Товары.Очистить();
КонецЕсли;
КонецПроцедурыЭтотОбъект (ThisObject) emalçının yerləşdiyi formadır. Yeni platforma versiyalarında eyni işi Асинх və Ждать sözləri ilə də yazmaq olar.Əsas fikirlər
- Hər forma prosedurunun direktivi var:
&НаКлиенте,&НаСервере,&НаСервереБезКонтекста. - Sorğular, obyektlər,
ТаблицаЗначенийvə istinaddan nöqtə ilə oxuma yalnız serverdə mümkündür. - Forma = rekvizitlər (məlumat) + elementlər (görünüş) + əmrlər (hərəkətlər) + modul.
ПриСозданииНаСервереserverdə birinci,ПриОткрытииklientdə sonra işləyir.- Server çağırışlarını azalt: heç vaxt dövrdə çağırma, kontekstsiz çağırışa üstünlük ver.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.