HelpF.pro

Универсальные функции работы с регистрами сведений

Разработка любой конфигурации потребует использования регистров сведений! Чтобы упростить запись и чтение данных в регистре сведений, Вы можете использовать универсальные функции:

Код 1C v 8.х
 // Добавляет одну запись в регистр сведений по переданным значениям структуры
//
// Параметры:
//  СтруктураЗаписи - Структура - структура, по значениям которой необходимо создать набор записей и заполнить этот набор
//  ИмяРегистра     - Строка - имя регистра сведений, в который необходимо добавить запись
// 
Процедура ДобавитьЗаписьВРегистрСведений(СтруктураЗаписи, Знач ИмяРегистра, Загрузка = Ложь) Экспорт

НаборЗаписей = СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, ИмяРегистра);

// добавляем только одну запись в новый набор записей
НоваяЗапись = НаборЗаписей.Добавить();

// заполняем значения свойств записи из переданной структуры
ЗаполнитьЗначенияСвойств(НоваяЗапись, СтруктураЗаписи);

НаборЗаписей.ОбменДанными.Загрузка = Загрузка;

// записываем набор записей
НаборЗаписей.Записать();

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


// Обновляет запись в регистр сведений по переданным значениям структуры
//
// Параметры:
//  СтруктураЗаписи - Структура - структура, по значениям которой необходимо создать менеджер записи и обновить запись
//  ИмяРегистра     - Строка - имя регистра сведений, в котором необходимо обновить запись
// 
Процедура ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, Знач ИмяРегистра) Экспорт

МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра];

// создаем менеджер записи регистра
МенеджерЗаписи = РегистрыСведений[ИмяРегистра].СоздатьМенеджерЗаписи();

// устанавливаем отбор по измерениям регистра
Для Каждого Измерение ИЗ МетаданныеРегистра.Измерения Цикл

// если задано значение в структуре, то отбор устанавливаем
Если СтруктураЗаписи.Свойство(Измерение.Имя) Тогда

МенеджерЗаписи[Измерение.Имя] = СтруктураЗаписи[Измерение.Имя];

КонецЕсли;

КонецЦикла;

// считываем запись из базы данных
МенеджерЗаписи.Прочитать();

// заполняем значения свойств записи из переданной структуры
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтруктураЗаписи);

// записываем менеджер записи
МенеджерЗаписи.Записать();

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


// Удаляет набор записей в регистре по переданным значениям структуры
//
// Параметры:
//  СтруктураЗаписи - Структура - структура, по значениям которой необходимо удалить набор записей
//  ИмяРегистра     - Строка - имя регистра сведений, в котором необходимо удалить набор записей
// 
Процедура УдалитьНаборЗаписейВРегистреСведений(СтруктураЗаписи, ИмяРегистра, Загрузка = Ложь) Экспорт

НаборЗаписей = СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, ИмяРегистра);

НаборЗаписей.ОбменДанными.Загрузка = Загрузка;

// записываем набор записей
НаборЗаписей.Записать();

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

// Создает набор записей регистра сведений по переданным значениям структуры. Добавляет одну запись в набор
//
// Параметры:
//  СтруктураЗаписи - Структура - структура по значениям которой необходимо создать набор записей и заполнить этот набор
//  ИмяРегистра     - Строка - имя регистра сведений
// 
Функция СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, ИмяРегистра) Экспорт

МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра];

// создаем набор записей регистра
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();

// устанавливаем отбор по измерениям регистра
Для Каждого Измерение ИЗ МетаданныеРегистра.Измерения Цикл

// если задано значение в структуре, то отбор устанавливаем
Если СтруктураЗаписи.Свойство(Измерение.Имя) Тогда

НаборЗаписей.Отбор[Измерение.Имя].Установить(СтруктураЗаписи[Измерение.Имя]);

КонецЕсли;

КонецЦикла;

Возврат НаборЗаписей;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/1713.html