Назад | Начало урока | Вперед
Содержание

Глава 2

Предопределенная функция
Есть предопределенная функция:
ПриОткрытии()

Зададим значения полям справочника.

//-----------------------
Процедура ПриОткрытии()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов";
СпрСотр.АдресПрописка = "Саратов 5";
СпрСотр.Документ = "Паспорт ";
СпрСотр.Должность = "Плотник";
СпрСотр.Оклад = "20 000";
СпрСотр.Записать();
КонецПроцедуры
//-----------------------

Создание и удаление групп
Для создания группы используется процедура НоваяГруппа().
Создадим две новых группы - Уволенные и Работающие.

//--------------------------------
Процедура СоздатьГруппу()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Работающие";
СпрСотр.Записать();

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Уволенные";
СпрСотр.Записать();

КонецПроцедуры
//--------------------------------

Ура!!! Мы создали две новых группы!
Теперь встает вопрос как программно удалить эти созданные группы?

//---------------------
Процедура УдалитьГруппу()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиПоНаименованию("Работающие");
СпрСотр.Удалить(0); //пометка на удаление
СпрСотр.Удалить(1); //непосредственное удаление
СпрСотр.НайтиПоНаименованию("Уволенные");
СпрСотр.Удалить(0); //пометка на удаление
СпрСотр.Удалить(1); //непосредственное удаление
КонецПроцедуры
//---------------
Ура!! Работает! Все группы удалены!
Транзакции

При создании множества элементов справочника для ускорения работы можно заключить цикл
в транзакцию. При этом реальное создание всех элементов произойдет только по команде
ЗафиксироватьТранзакцию(). На время транзакции справочник блокируется.

//---------------
Процедура Транзакция1()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
НачатьТранзакцию();

Для Ном = 1 По 100 Цикл

СпрСотр.Новый();
СпрСотр.Наименование = "Новый " + Строка(Ном);
СпрСотр.Записать();
КонецЦикла;

ЗафиксироватьТранзакцию();

КонецПроцедуры
//---------------

Теперь встает вопрос как программно удалить эти созданные элементы?

//---------------
Процедура УдалениеТранзакции()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
НачатьТранзакцию();

Для Ном = 1 По 10 Цикл

СпрСотр.НайтиПоНаименованию(""Новый " + Строка(Ном)");
СпрСотр.Удалить(0); //пометка на удаление
СпрСотр.Удалить(1); //непосредственное удаление
КонецЦикла;

ЗафиксироватьТранзакцию();

КонецПроцедуры
//---------------
Ура!! Работает! Все элементы удалены!
Фильтрация (отбор)

//-------------------------
Процедура Фильтрация()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов";
СпрСотр.АдресПрописка = "Саратов 5";
СпрСотр.Документ = "Паспорт ";
СпрСотр.Должность = "Плотник";
СпрСотр.Оклад = "20 000";
СпрСотр.Записать();
ИмяРеквизита = "Должность"; //в Конфигураторе у реквизита должен быть установлен флажок Отбор
Значение = "Плотник";
РежимИерархии = 0; //1- выбирать с учетом иерархии, 0 - без учета
РежимГрупп = 0; //0 - не включать в выборку группы, 1 - включать
СпрСотр.ВыбратьЭлементыПоРеквизиту(ИмяРеквизита,Значение,РежимИерархии, РежимГрупп);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
Сообщить("Фильтрация ");
КонецЦикла;
КонецПроцедуры
//------------------------

Эта Процедура работает. Она в цикле отбирает элементы по реквизиту "Плотник"
и посылает сообщение.

Поиск элемента

Процедура ЗаписатьГруппу()

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НоваяГруппа();//Содадим группу
СпрСотр.Наименование = "Работающие";
СпрСотр.Записать();
// СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Если СпрСотр.НайтиЭлемент(ВыбрСотр)=1 Тогда
//элемент становится текущим
СпрСотр.Родитель = грпРаботающие;
СпрСотр.Записать();
КонецЕсли;
КонецПроцедуры


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz