1С8 СоздатьНаборЗаписей(), НаборЗаписей.Отбор.Объект.Установить()

Пример изменения (удаления записей) регистра сведений. Пример очищает записи Контактной информации контрагента с неверными адресами E-mail в регистре сведений.

В примере изменение регистра оформлено отдельной функцией ОчиститьEmail().

Особенность изменения регистра сведений в 1С заключается в использовании набора записей. Последовательность действий для удаления записей из регистра сведений:

1. Создаем набор записей: СоздатьНаборЗаписей();
2. Отбираем (по измерениям): НаборЗаписей.Отбор.Объект.Установить(Контрагент);
3. Читаем набор записей: НаборЗаписей.Прочитать();
4. Каждую запись, попавшую в отбор редактируем.
5. Сохраняем набор записей: НаборЗаписей.Записать();

 Контактную информацию в Регистре сведений.
//-----------------------------------------------------------------------------
// Исправляем значения Контактной Информации контрагента в Регистре сведений
Функция ОчиститьEmail(
	Контрагент, 
	ТипКонтактнойИнформации,
	ВидКонтактнойИнформации,
	Представление 
	)
	
	// #1  Создаем набор записей
	НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
	
	// #2 Отбираем (по измерениям)
	НаборЗаписей.Отбор.Объект.Установить(Контрагент);
	НаборЗаписей.Отбор.Тип.Установить(ТипКонтактнойИнформации);
	НаборЗаписей.Отбор.Вид.Установить(ВидКонтактнойИнформации);	

	// #3 Читаем набор записей
	НаборЗаписей.Прочитать();
	
	// #4 редактируем в цикле каждую запись из набора
	Для каждого СтрНабЗап Из НаборЗаписей Цикл
		
		СтрНабЗап.Представление	= ""; 
		
		сообщить("" + Контрагент + " | " 
		+ ТипКонтактнойИнформации + " | " 
		+ ВидКонтактнойИнформации + " | " 
		+ Представление + " -> " + СтрНабЗап.Представление + " [Ok!]");

	КонецЦикла;

	// #5 Сохраняем набор записей
	НаборЗаписей.Записать();	
	
КонецФункции

// Получить таблицу значений
// Записи из Регистра Сведений КонтактнаяИнформация с некорректными Email
функция ПолучитьТЗ()		
		
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1000000
	|	КонтактнаяИнформация.Объект,
	|	КонтактнаяИнформация.Тип,
	|	КонтактнаяИнформация.Вид,
	|	КонтактнаяИнформация.Представление,
	|	(ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(1000))) как стрПредставление
	|ИЗ
	|	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
	|ГДЕ
	|	КонтактнаяИнформация.Тип = &Тип
	|	//И КонтактнаяИнформация.Вид = &Вид	
	|	И (ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(1000))) <> &ПустоеЗначение		
	|	И НЕ КонтактнаяИнформация.Представление ПОДОБНО &ШаблонEmail";
	
	//Параметры запроса:	
	
	// Типы контактной информации
	Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
		
	// пустая строка
	Запрос.УстановитьПараметр("ПустоеЗначение","");// Строка
	
	// критерий отбора для примера простой - строка содержит символ "@" - значит это почта
	Запрос.УстановитьПараметр("ШаблонEmail","%@%");// Строка
	Результат = Запрос.Выполнить();	
	
	//Выборка = Результат.Выбрать();
	
	// результат запроса выгрузить в
	// таблицу значений 
	ПлохиеEmailТЗ   = Результат.Выгрузить();
	
	Возврат ПлохиеEmailТЗ;
КонецФункции

// На входе - таблица значений с некорректными адресами электронной почты
Функция СтеретьПлохиеEmail(ПлохиеEmailТЗ)  
	для каждого строкаТЗ  из ПлохиеEmailТЗ Цикл
		
		ОчиститьEmail(
			строкаТЗ["Объект"],	
			строкаТЗ["Тип"],	
			строкаТЗ["Вид"],
			строкаТЗ["Представление"]
		);	
		
	КонецЦикла;

	Возврат 0;

КонецФункции 

// Логика
Функция main()
	ПлохиеEmailТЗ = ПолучитьТЗ(); 		// найти 	
	СтеретьПлохиеEmail(ПлохиеEmailТЗ); 	// изменить	
КонецФункции

main();




Рекламный блок:

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

Доработка и сопровождение 1С:

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Пишите: j008@j008.ru

Звоните: 8 916 710 83 51 Ольга