- Tapşırığa uyğun universal kolleksiya seçmək və onun metodlarından istifadə etmək
- Qiymətlər cədvəlini qruplaşdırmaq, çeşidləmək və yekunlaşdırmaq
- İstisnaları tutmaq, yaratmaq və qeydiyyat jurnalına yazmaq
Proqram tez-tez məlumatları müvəqqəti saxlamalıdır: şəhərlərin siyahısı, malın «kartı», kod üzrə qiymət cədvəli, satışların cədvəli. 1C-də bunun üçün bir neçə universal kolleksiya var. Düzgün kolleksiya seçmək kodu iki dəfə qısaldıb sürətləndirə bilər.
Massiv
Массив (Array) — qiymətlərin nizamlı siyahısıdır; indekslər 0-dan başlayır. Əsas metodlar: Добавить() (sona əlavə), Вставить(İndeks, Qiymət), Количество(), Найти() (indeks və ya Неопределено), Удалить(İndeks), Очистить(). Elementə Города[1] kimi müraciət olunur.
Города = Новый Массив;
Города.Добавить("Bakı");
Города.Добавить("Gəncə");
Города.Добавить("Şəki");
Города.Вставить(0, "Sumqayıt");
Сообщить(Города.Количество());
Сообщить(Города[1]);
Сообщить(Города.Найти("Şəki"));
Города.Удалить(0);
Для Каждого Город Из Города Цикл
Сообщить(Город);
КонецЦикла;4 Bakı 3 Bakı Gəncə Şəki
Struktur və uyğunluq
Структура (Structure) — açarları sətir olan «açar → qiymət» cütləridir; açar dəyişən adı kimi yazılmalıdır, qiymətə nöqtə ilə müraciət olunur: Товар.Цена. Соответствие (Map) isə açar kimi istənilən tipi qəbul edir — istinadları, ədədləri, boşluqlu sətirləri. Olmayan açar üçün Получить() Неопределено qaytarır.
Товар = Новый Структура("Наименование, Цена", "Çay", 3);
Товар.Вставить("Количество", 10);
Сообщить(Товар.Наименование + ": " + Товар.Цена * Товар.Количество);
Скидка = Неопределено;
Если Товар.Свойство("Скидка", Скидка) Тогда
Сообщить("Скидка: " + Скидка);
Иначе
Сообщить("Скидки нет");
КонецЕсли;
Цены = Новый Соответствие;
Цены.Вставить("A-100", 3.5);
Цены.Вставить("B-200", 12);
Сообщить(Цены.Получить("B-200"));
Если Цены.Получить("C-300") = Неопределено Тогда
Сообщить("Цена не найдена");
КонецЕсли;Çay: 30 Скидки нет 12 Цена не найдена
Свойство() açarın olub-olmadığını yoxlayır. Соответствие-ni Для Каждого ilə keçəndə hər element .Ключ və .Значение xassələrinə malikdir.Qiymətlər siyahısı və qiymətlər cədvəli
СписокЗначений (ValueList) hər qiymətə təqdimat və qeyd (bayraq) əlavə edir — formalarda seçim siyahıları üçün əlverişlidir. ТаблицаЗначений (ValueTable) isə sütunları və sətirləri olan cədvəldir: sorğu nəticələri və hesablamalar üçün əsas alətdir. O, qruplaşdırmanı (Свернуть), çeşidləməni (Сортировать), yekunu (Итог) və axtarışı (НайтиСтроки) bacarır.
Продажи = Новый ТаблицаЗначений;
Продажи.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка"));
Продажи.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Данные = СтрРазделить("Çay:30;Qənd:12;Çay:18", ";");
Для Каждого Элемент Из Данные Цикл
Части = СтрРазделить(Элемент, ":");
НоваяСтрока = Продажи.Добавить();
НоваяСтрока.Товар = Части[0];
НоваяСтрока.Сумма = Число(Части[1]);
КонецЦикла;
Продажи.Свернуть("Товар", "Сумма"); // группируем по товару, суммируем сумму
Продажи.Сортировать("Сумма Убыв");
Для Каждого Стр Из Продажи Цикл
Сообщить(Стр.Товар + ": " + Стр.Сумма);
КонецЦикла;
Сообщить("Итого: " + Продажи.Итог("Сумма"));Çay: 48 Qənd: 12 Итого: 60
| Kolleksiya | Açar / giriş | Tipik istifadə |
|---|---|---|
Массив | 0-dan indeks | sadə siyahılar |
Структура | ad kimi açar | parametrlər, kiçik yazılar |
Соответствие | istənilən tipdə açar | sürətli axtarış: mal → qiymət |
СписокЗначений | indeks + təqdimat | formalarda seçim siyahıları |
ТаблицаЗначений | sətirlər və sütunlar | sorğu nəticələri, hesablamalar (yalnız serverdə) |
Xətaların emalı
Xəta verə biləcək kod Попытка (Try) blokuna yazılır. Xəta baş verərsə, idarəetmə Исключение (Except) blokuna keçir, ОписаниеОшибки() xətanın mətnini, ИнформацияОбОшибке() isə ətraflı obyekti qaytarır. Özün xəta yaratmaq üçün ВызватьИсключение "Mətn"; (Raise) yaz; Исключение blokunda parametrsiz ВызватьИсключение; tutulan xətanı yuxarı ötürür.
Функция Разделить(Делимое, Делитель)
Если Делитель = 0 Тогда
ВызватьИсключение "Делитель не может быть равен нулю";
КонецЕсли;
Возврат Делимое / Делитель;
КонецФункции
Процедура Рассчитать()
Попытка
Результат = Разделить(10, 0);
Сообщить(Результат);
Исключение
Текст = ОписаниеОшибки();
ЗаписьЖурналаРегистрации("Расчеты", УровеньЖурналаРегистрации.Ошибка, , , Текст);
Сообщить("Не удалось посчитать: " + Текст);
КонецПопытки;
КонецПроцедурыЖурнал регистрации) yazılır — administrator onu sonra Администрирование menyusundan görə bilər.Bir neçə yazı ya hamısı birlikdə, ya da heç biri saxlanmalıdırsa, tranzaksiya istifadə olunur. 1C standartlarına görə НачатьТранзакцию() Попытка-dan dərhal əvvəl çağırılır, xəta olduqda isə əvvəlcə tranzaksiya ləğv edilir, sonra xəta yuxarı ötürülür:
НачатьТранзакцию();
Попытка
// несколько записей в базу данных
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение; // передаём ошибку выше
КонецПопытки;Əsas fikirlər
Массив-in indeksləri 0-dan başlayır;Найти()tapılmadıqdaНеопределеноqaytarır.Структура— ad kimi açarlar,Соответствие— istənilən tipdə açarlar.ТаблицаЗначенийyalnız serverdə işləyir vəСвернуть,Сортировать,Итог,НайтиСтрокиmetodlarına malikdir.Попытка … Исключение … КонецПопыткиxətanı tutur,ВызватьИсключениеxəta yaradır və ya yuxarı ötürür.- Tranzaksiya:
НачатьТранзакцию()→Попытка→ЗафиксироватьТранзакцию(); xətadaОтменитьТранзакцию().
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
Массив-in ilk elementinin indeksi neçədir?