Файл: СправочникиМенеджер доступ к определенным в конфигурации справочникам.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.10.2023

Просмотров: 112

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
#T9. Программная работа с объектами конфигурации6 апреля 2023 г.13:15Объекты встроенного языка для работы со справочниками  Менеджеры - управляющий тип.   СправочникиМенеджер - доступ к определенным в конфигурации справочникам.  СправочникМенеджер.<Имя справочника> - управление конкретным справочником, как объектом конфигурации. С помощью этого объекта осуществляется поиск элементов, создание новых элементов и групп, работа с формами и макетами справочника.  СправочникСсылка.<Имя справочника> - Используется для указания ссылки на элемент справочника в реквизитах других объектов и переменных встроенного языка. Справочник Объект.<Имя справочника> - чтения, изменение и удаление конкретного элемента справочника.  Программная работа со Справочниками Создание элемента и группы справочника   Важно! Если мы попытаемся программно создать элемент справочника, и заполнить реквизит справочника у которого свойствах указано Использование для групп, то получим ошибку. 
  &НаСервереПроцедура СоздатьЭлементНаСервере() //сначала пытаемся найти элементСсылкаНаТовар = Справочники.Номенклатура.НайтиПоНаименованию("Тестовый товар");Если НЕ СсылкаНаТовар.Пустая() ТогдаСообщить("такой элемент уже есть");Возврат;КонецЕсли;  НовыйТовар = Справочники.Номенклатура.СоздатьЭлемент();НовыйТовар.Наименование = "Тестовый товар";НовыйТовар.Артикул = "А-101";НовыйТовар.НаименованиеПолное = "Тестовый товар"; НовыйТовар.Записать(); КонецПроцедуры &НаСервереПроцедура СоздатьГруппуНаСервере() НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();НоваяГруппа.Наименование = "Тостеры";НоваяГруппа.ВыгружатьНаСайт = Истина;НоваяГруппа.Записать(); КонецПроцедуры &НаСервереПроцедура СоздатьЭлементВГруппеНаСервере() НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();НоваяГруппа.Наименование = "Тостеры";НоваяГруппа.Записать(); НовыйТовар = Справочники.Номенклатура.СоздатьЭлемент();НовыйТовар.Наименование = "Тостер Philips HD2581/00";НовыйТовар.Артикул = "фыаыфаф";НовыйТовар.НаименованиеПолное = "Тостер Philips HD2581/00";НовыйТовар.Родитель = НоваяГруппа.Ссылка;НовыйТовар.Записать(); КонецПроцедуры Найти элемент справочника  &НаСервереПроцедура ПоискЭлементаНаСервере() //1. Поиск во всем справочнике//поиск по наименованиюНайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию("Холодильник ATLANT ХМ 4208-000", Истина);Если НайденнаяСсылка.Пустая() ТогдаСообщить("Товар не найден");ИначеСообщить("Найден товар по наименованию: " + НайденнаяСсылка);        КонецЕсли;  //поиск по кодуНайденнаяСсылка = Справочники.Номенклатура.НайтиПоКоду("000000011");Если НайденнаяСсылка.Пустая() ТогдаСообщить("Товар не найден");ИначеСообщить("Найден товар по коду: " + НайденнаяСсылка);        КонецЕсли;  //поиск по реквизитуНайденнаяСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "ХМ 4208-00");Если НайденнаяСсылка.Пустая() ТогдаСообщить("Товар не найден");Иначе

Сообщить("Найден товар по артикулу: " + НайденнаяСсылка);        КонецЕсли;  //2. Поиск внутри группы "Смартфон POCO X3"ГруппаСмартфоны = Справочники.Номенклатура.НайтиПоНаименованию("Смартфоны", Истина);НайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию("Смартфон POCO X3", Истина, ГруппаСмартфоны);Если НайденнаяСсылка.Пустая() ТогдаСообщить("Товар не найден");ИначеСообщить("Найден товар в группе Смартфоны: " + НайденнаяСсылка);        КонецЕсли;  //3. Поиск в подчиненном справочникеКонтрагент = Справочники.Контрагенты.НайтиПоКоду("000000001");НайденныйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Номер", "1",,Контрагент);Если НайденныйДоговор.Пустая() ТогдаСообщить("Договор с номером 1 не найден");ИначеСообщить("Найден договор: " + НайденныйДоговор + "(" + НайденныйДоговор.Владелец + ")");КонецЕсли;  КонецПроцедуры Изменение элемента справочника  &НаСервереПроцедура ИзменитьЭлементНаСервере() //1. найти элемент, который нужно изменитьСсылкаНаТовар = Справочники.Номенклатура.НайтиПоНаименованию("Холодильник ATLANT ХМ 4209-000", Истина); //2. изменить элемент и сохранить эти изменения (записать)Если НЕ СсылкаНаТовар.Пустая() ТогдаТоварОбъект = СсылкаНаТовар.ПолучитьОбъект();ТоварОбъект.Артикул = СтрЗаменить(ТоварОбъект.Артикул, "8", "9");ТоварОбъект.Записать();Сообщить("Артикул изменен");ИначеСообщить("Товар не найден");КонецЕсли;  КонецПроцедуры Типичная ошибка при программном изменении/удалении  Возникает при попытки получить объект по пустой ссылке (например если у нас нет проверки на пустоту ссылки). Удаление элемента справочника
 &НаСервереПроцедура УдалитьЭлементНаСервере() //ПОМЕТКА НА УДАЛЕНИЕ//1. найти элемент, который нужно удалитьСсылкаНаТовар = Справочники.Номенклатура.НайтиПоНаименованию("Тестовый товар", Истина);//2. пометить элемент на удалениеЕслиНЕ СсылкаНаТовар.Пустая() ТогдаТоварОбъект = СсылкаНаТовар.ПолучитьОбъект();ТоварОбъект.УстановитьПометкуУдаления(Истина);Сообщить("Товар помечен на удаление");ИначеСообщить("Товар не найден");КонецЕсли;  //УДАЛИТЬ НЕПОСРЕДСТВЕННО//1. найти элемент, который нужно удалитьСсылкаНаТовар = Справочники.Номенклатура.НайтиПоНаименованию("Тестовый товар", Истина);//2. пометить элемент на удалениеЕслиНЕ СсылкаНаТовар.Пустая() ТогдаТоварОбъект = СсылкаНаТовар.ПолучитьОбъект();ТоварОбъект.Удалить();Сообщить("Товар помечен на удаление");ИначеСообщить("Товар не найден");КонецЕсли;  КонецПроцедуры Методы глобального контекста для поиска помеченных на удаление объектов НайтиПомеченныеНаУдаление - найти помеченные на удаление объекты (возвращает массив ссылок на объекты)НайтиПоСсылкам - ищет ссылки на объекты из массива ссылок (возвращает таблицу значений) Выбор элементов справочника &НаСервереПроцедура ВыбратьЭлементыНаСервере() //1. Выбрать все элементы справочникаВыборка = Справочники.Номенклатура.Выбрать(); //Сообщить("Все товары:");//Пока Выборка.Следующий() Цикл//        Сообщить(Выборка.Наименование);                //КонецЦикла;  //2. Выбрать все элементы из группы "Смартфоны"ГруппаСмартфоны = Справочники.Номенклатура.НайтиПоНаименованию("Смартфоны");//ВыборкаСмартфоны = Справочники.Номенклатура.Выбрать(ГруппаСмартфоны);//Пока ВыборкаСмартфоны.Следующий() Цикл//        Сообщить(ВыборкаСмартфоны.Наименование + " " + ВыборкаСмартфоны.Артикул);//КонецЦикла;  //3. Выбрать все элементы с видом номенклатуры "Холодильники"СсылкаНаВид = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Холодильники");СтруктураПоиска = Новый Структура("ВидНоменклатуры", СсылкаНаВид);
ВыборкаХолодильники = Справочники.Номенклатура.Выбрать(,,СтруктураПоиска);//Сообщить("Все холодильники:");//Пока ВыборкаХолодильники.Следующий() Цикл//        Сообщить(ВыборкаХолодильники.Наименование);                //КонецЦикла;  //4. Выборка иерархическаяВыборкаПоИерархии = Справочники.Номенклатура.ВыбратьИерархически();Сообщить("Выборка по иерархии:");Пока ВыборкаПоИерархии.Следующий() ЦиклЕсли ВыборкаПоИерархии.ЭтоГруппа ТогдаПродолжить;КонецЕсли; Сообщить(ВыборкаПоИерархии.Наименование + ВыборкаПоИерархии.Артикул);КонецЦикла;  КонецПроцедуры Программная работа с ПВХ &НаСервереПроцедура СоздатьЭлементНаСервере() //НовыйДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизиты.СоздатьЭлемент();//НовыйДопРеквизит.Наименование = "Код ИМНС";//НовыйДопРеквизит.ТипЗначения = Новый ОписаниеТипов("Строка");//НовыйДопРеквизит.Записать(); НовыйДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизиты.СоздатьЭлемент();НовыйДопРеквизит.Наименование = "Код ИМНС";НовыйДопРеквизит.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");НовыйДопРеквизит.Записать(); КонецПроцедуры Типичная ошибка  ТипЗначения создаваемого элемента ПВХ не соотвествует настройкам типа значения ПВХ.  &НаСервереПроцедура СоздатьГруппуНаСервере() НоваяГруппа = ПланыВидовХарактеристик.ДополнительныеРеквизиты.СоздатьГруппу();НоваяГруппа.Наименование = "Справочник ""Контактные лица""";НоваяГруппа.Записать(); КонецПроцедуры Программная работа с регистром сведений &НаСервереПроцедура СозданиеЗаписейНаСервере() //1. создание одной записиВалютаUSD = Справочники.Валюты.НайтиПоКоду("840");Если НЕ ВалютаUSD.Пустая() Тогда НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();НоваяЗапись.Период = ТекущаяДата(); //обязательно если регистр периодическийНоваяЗапись.Валюта = ВалютаUSD;НоваяЗапись.Курс = 75.76;НоваяЗапись.Кратность = 1;