&НаКлиенте,&НаСервереve&НаСервереБезКонтекстаarasında doğru seçim yapmak- Bir formun öğelerini, özniteliklerini ve komutlarını ayırt etmek
- Form olaylarını işlemek ve kipsiz iletişim kutuları oluşturmak
Leyla, Bakü'deki ofiste tarayıcıda bir belge açıyor; veritabanı ise başka bir şehirdeki veri merkezinde, bir sunucuda duruyor. Leyla'nın bilgisayarı ile sunucu arasındaki her “konuşma” zaman alır. Bu yüzden 1C'de her prosedür için nerede çalışacağı belirtilmelidir: istemcide (kullanıcının bilgisayarında) mı, sunucuda mı?
Derleme yönergeleri
| Yönerge | İngilizcesi | Nerede çalışır | Form verileri |
|---|---|---|---|
&НаКлиенте | &AtClient | istemcide | erişilebilir |
&НаСервере | &AtServer | sunucuda, formla birlikte | erişilebilir, ama sunucuya gönderilir |
&НаСервереБезКонтекста | &AtServerNoContext | sunucuda, yalnızca parametrelerle | erişilemez |
&НаКлиентеНаСервереБезКонтекста | &AtClientAtServerNoContext | hem istemcide hem sunucuda | erişilemez |
İstemcide yalnızca arayüzle çalışılabilir. Sorgular, nesne modeli (Справочники.Товары.СоздатьЭлемент()), ТаблицаЗначений ve bir referanstan noktayla öznitelik okumak (Товар.Цена) yalnızca sunucuda mümkündür. Bu kuralı çiğneyen kod ya derlenmez ya da çalışırken hata verir.
Yönetilen formun yapısı
- Öznitelikler (
Реквизиты) — formun verileri. Nesne formunda ana öznitelikОбъект'tir:Объект.Дата,Объект.Товары. - Öğeler (
Элементы) — ekranda görünenler: alanlar, tablolar, gruplar, düğmeler. Özniteliklere bağlanırlar. - Komutlar (
Команды) — kullanıcı eylemleri; her komutun bir Eylem (Действие) prosedürü vardır. - Modül — formun kodu: olay işleyicileri ve yardımcı prosedürler, her biri kendi yönergesiyle.
- 1Formu oluştur
ПриходТовараbelgesini aç,ФормыsekmesindeДобавить'a tıkla,Форма документа(belge formu) seç veГотово. Form düzenleyicisi açılır. - 2Komut ekle
Командыsekmesinde yeni bir komut oluştur (örneğinОчистить),Действиеözelliğindeki büyüteç düğmesiyle işleyicisini oluştur, sonra komutu fareyle formun komut çubuğuna sürükle. - 3Bir olayı bağla
Tablodaki
Товарsütununu seç ve özelliklerdeПриИзменении(OnChange) olayının büyütecine tıkla; modüldeТоварыТоварПриИзмененииprosedürü oluşur.
Form olayları ve sunucu çağrıları
Form açılırken önce sunucuda ПриСозданииНаСервере (OnCreateAtServer) çalışır (parametreler burada okunur ve veriler hazırlanır), ardından istemcide ПриОткрытии (OnOpen). Kaydederken ПередЗаписью (istemci) ve ПередЗаписьюНаСервере (sunucu) çağrılır. Aşağıdaki örnekte bir ürün seçildiğinde fiyatı sunucudan alınır.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
Объект.Комментарий = "Создан из формы";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыТоварПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.Цена = ЦенаТовара(ТекущиеДанные.Товар);
ТекущиеДанные.Сумма = ТекущиеДанные.Количество * ТекущиеДанные.Цена;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЦенаТовара(Товар)
Возврат Товар.Цена; // через точку от ссылки - только на сервере
КонецФункцииЦенаТовара bağlamsız bir çağrıdır: sunucuya tüm form değil, yalnızca bir referans gider.Kipsiz iletişim kutuları
Tarayıcılar kipli pencereleri sevmez; bu yüzden modern konfigürasyonlarda eski Вопрос() yerine ПоказатьВопрос() (ShowQueryBox) kullanılır. Yanıt bir bildirim işleyicisine gelir; bunu ОписаниеОповещения (NotifyDescription) tanımlar ve işleyici prosedür Экспорт olmalıdır.
&НаКлиенте
Процедура Очистить(Команда)
Оповещение = Новый ОписаниеОповещения("ОчиститьЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Очистить табличную часть?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.Товары.Очистить();
КонецЕсли;
КонецПроцедурыЭтотОбъект (ThisObject), işleyicinin bulunduğu formdur. Yeni platform sürümlerinde aynı şey Асинх (Async) ve Ждать (Await) sözcükleriyle de yazılabilir.Önemli noktalar
- Her form prosedürünün bir yönergesi vardır:
&НаКлиенте,&НаСервере,&НаСервереБезКонтекста. - Sorgular, nesneler,
ТаблицаЗначенийve referanstan noktayla okuma yalnızca sunucudadır. - Form = öznitelikler (veri) + öğeler (görünüm) + komutlar (eylemler) + modül.
ПриСозданииНаСервереönce sunucuda,ПриОткрытииsonra istemcide çalışır.- Sunucu çağrılarını azalt: döngüde çağırma, bağlamsız çağrıları tercih et.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.