Обработать набор записей регистра сведений
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.EMail); НаборЗаписей.Прочитать(); Для Каждого ТекЗапись Из НаборЗаписей Цикл ТекЗапись.ЗначениеСтрока = ТекЗапись.ЗначениеEmail.Код; КонецЦикла; НаборЗаписей.Записать();
Обработать одну запись регистра сведений
МенеджерЗаписи = РегистрыСведений.НастройкиПользователей.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Пользователь = Пользователь; МенеджерЗаписи.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация; МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Значение = ОсновнаяОрганизация; МенеджерЗаписи.Записать();
Записать в регистр сведений с замещением
Отличие от предыдущего примера в том, что мы не будем читать запись, а просто добавим ее. Если была запись с теми же измерениями, она будет замещена.
МенеджерЗаписи = РегистрыСведений.УВ_НоменклатураМагазинов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Магазин = Магазин; МенеджерЗаписи.Номенклатура = Номенклатура; МенеджерЗаписи.Минимум = Минимум; МенеджерЗаписи.Максимум = Максимум; МенеджерЗаписи.Использование = Использование; МенеджерЗаписи.Записать(Истина);
Очистка регистра сведений
Отбор в наборе записей — это вообще важная вещь. Например, чтобы очистить регистр, нам достаточно записать набор записей без отбора.
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборЗаписей.Записать();
Логирование записей в регистр сведений
Ну и под конец интересненькое. Предположим, мы хотим записывать в лог все изменения записей регистра. Для хранения лога подойдет файл mxl, расположенный на сервере. Также нам понадобится макет. Макет и файл лога у меня не сохранились, но из кода все довольно очевидно.
Код будем вставлять в модуль набора записей регистра сведений.
Процедура ПриЗаписи(Отказ, Замещение) Если ЭтотОбъект.Количество() > 0 Тогда Попытка ТабДок = Новый ТабличныйДокумент; ИмяФайла = "\\7flowers.local\company\Transfer\Transfer rules in UT11 log\log.mxl"; ТабДок.Прочитать(ИмяФайла); Макет = РегистрыСведений.ПравилаДляОбменаДанными.ПолучитьМакет("ЛогИзменений_7ЦВ"); ОбластьМакета = Макет.ПолучитьОбласть("ПриЗаписи"); ОбластьМакета.Параметры.ВремяСобытия = ТекущаяДата(); ОбластьМакета.Параметры.Пользователь = ПараметрыСеанса.ТекущийПользователь; ОбластьМакета.Параметры.Заполнить(ЭтотОбъект[0]); ТабДок.Вывести(ОбластьМакета); ТабДок.Записать(ИмяФайла); Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка при записи лога изменения правил обмена: " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецПроцедуры Процедура ПередЗаписью(Отказ, Замещение) Если ЭтотОбъект.Количество() = 0 Тогда Попытка ТабДок = Новый ТабличныйДокумент; ИмяФайла = "\\7flowers.local\company\Transfer\Transfer rules in UT11 log\log.mxl"; ТабДок.Прочитать(ИмяФайла); Макет = РегистрыСведений.ПравилаДляОбменаДанными.ПолучитьМакет("ЛогИзменений_7ЦВ"); ОбластьМакета = Макет.ПолучитьОбласть("ПередЗаписью"); ОбластьМакета.Параметры.ВремяСобытия = ТекущаяДата(); ОбластьМакета.Параметры.Пользователь = ПараметрыСеанса.ТекущийПользователь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ПравилаДляОбменаДанными.ИмяПланаОбмена, | ПравилаДляОбменаДанными.ВидПравил, | ПравилаДляОбменаДанными.ИмяМакетаПравил, | ПравилаДляОбменаДанными.ИмяМакетаПравилКорреспондента, | ПравилаДляОбменаДанными.ИмяПланаОбменаИзПравил, | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиВыгрузки, | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиЗагрузки, | ПравилаДляОбменаДанными.ИмяФайлаПравил, | ПравилаДляОбменаДанными.ИмяФайлаПротоколаОбмена, | ПравилаДляОбменаДанными.ИнформацияОПравилах, | ПравилаДляОбменаДанными.ИсточникПравил, | ПравилаДляОбменаДанными.НеОстанавливатьПоОшибке, | ПравилаДляОбменаДанными.ПравилаXML, | ПравилаДляОбменаДанными.ПравилаXMLКорреспондента, | ПравилаДляОбменаДанными.ПравилаЗачитанные, | ПравилаДляОбменаДанными.ПравилаЗачитанныеКорреспондента, | ПравилаДляОбменаДанными.РежимОтладки, | ПравилаДляОбменаДанными.РежимОтладкиВыгрузки, | ПравилаДляОбменаДанными.РежимОтладкиЗагрузки, | ПравилаДляОбменаДанными.РежимПротоколированияОбменаДанными, | ПравилаДляОбменаДанными.ИспользоватьФильтрВыборочнойРегистрацииОбъектов, | ПравилаДляОбменаДанными.ПравилаЗагружены |ИЗ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными |ГДЕ | ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена | И ПравилаДляОбменаДанными.ВидПравил = &ВидПравил"; Запрос.УстановитьПараметр("ВидПравил", ЭтотОбъект.Отбор.ВидПравил.Значение); Запрос.УстановитьПараметр("ИмяПланаОбмена", ЭтотОбъект.Отбор.ИмяПланаОбмена.Значение); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ОбластьМакета.Параметры.Заполнить(Выборка); ТабДок.Вывести(ОбластьМакета); ТабДок.Записать(ИмяФайла); КонецЕсли; Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка при записи лога изменения правил обмена: " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецПроцедуры