Изменение записей регистра сведений

1. 5225688vd 28.04.23 11:05 Сейчас в теме
Всем привет! Коллеги подскажите пожалуйста, есть независимый регистр сведений в котором надо отобрать к примеру первые 20 строк с проверкой на заполненность одного измерения, т.е. измерение должно быть не заполненным и в эти 20 строк в пустые измерения добавить данные которые мне нужны, по сути в запросе я выбираю нужные мне строки с этим проблем нет, как именно в этих строках которые я отобрал поменять значения в регистре?
По теме из базы знаний
Найденные решения
10. spacecraft 28.04.23 13:33 Сейчас в теме
(1) навскидку:
Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 20
	|	РегистрСведений1.Измерение1 КАК Измерение1,
	|	РегистрСведений1.Измерение2 КАК Измерение2
	|ИЗ
	|	РегистрСведений.РегистрСведений1 КАК РегистрСведений1
	|ГДЕ
	|	РегистрСведений1.Измерение2 = """"
	|";

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда
	Возврат;
КонецЕсли;

Выборка = РезультатЗапроса.Выбрать();

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

В примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 28.04.23 11:20 Сейчас в теме
(1) Только менять все сразу, а не по 20.
3. 5225688vd 28.04.23 11:20 Сейчас в теме
(2) А почему нельзя поменять?
6. RustamZz 28.04.23 11:22 Сейчас в теме
(3) SQL не сможет отделить зерна от плевел.
7. 5225688vd 28.04.23 11:22 Сейчас в теме
(6)Прикольно, спасибо, буду думать что-то другое
4. Asya.Ozerova 41 28.04.23 11:21 Сейчас в теме
(1)
        НаборЗаписей = РегистрыСведений.<ВАШРЕГИСТР>.СоздатьНаборЗаписей(); 
        НаборЗаписей.Отбор.<ВАШЕИЗМЕРЕНИЕ>.Значение = Неопределено; /// Либо другой отбор
        НаборЗаписей.Прочитать();
        Для каждого Запись Из НаборЗаписей Цикл
            Запись.<ВАШЕИЗМЕРЕНИЕ> = <ВАШЕЗНАЧЕНИЕ>;
        КонецЦикла;
        НаборЗаписей.Записать();
5. 5225688vd 28.04.23 11:22 Сейчас в теме
8. nomad_irk 76 28.04.23 11:30 Сейчас в теме
(4)..........и получим ошибку несоответствия значения измерения отбору.
9. nomad_irk 76 28.04.23 11:33 Сейчас в теме
(1)
1. получили ВСЕ записи с пустым измерением
2. пробежались по списку, создавая менеджер записи, устанавливая нужное значение измерения и записали каждую запись
3. создали набор записей с отбором по пустому измерению и записали набор.
10. spacecraft 28.04.23 13:33 Сейчас в теме
(1) навскидку:
Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 20
	|	РегистрСведений1.Измерение1 КАК Измерение1,
	|	РегистрСведений1.Измерение2 КАК Измерение2
	|ИЗ
	|	РегистрСведений.РегистрСведений1 КАК РегистрСведений1
	|ГДЕ
	|	РегистрСведений1.Измерение2 = """"
	|";

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда
	Возврат;
КонецЕсли;

Выборка = РезультатЗапроса.Выбрать();

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

В примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
11. 5225688vd 28.04.23 14:22 Сейчас в теме
(10)Получилось, спасибо вам огромное!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот