Всем привет! Коллеги подскажите пожалуйста, есть независимый регистр сведений в котором надо отобрать к примеру первые 20 строк с проверкой на заполненность одного измерения, т.е. измерение должно быть не заполненным и в эти 20 строк в пустые измерения добавить данные которые мне нужны, по сути в запросе я выбираю нужные мне строки с этим проблем нет, как именно в этих строках которые я отобрал поменять значения в регистре?
По теме из базы знаний
- Универсальная обработка "Изменение записей регистров сведений и накопления" (8X)
- Очистка треков за период (АгентПлюс, AgentPlus), ускорение работы и исправление ошибок. Новый метод обработки записей регистра сведений
- Удаление и изменение записей независимого регистра сведений (обычные и управляемые формы)
- Изменение записей регистра документа
- Универсальная процедура для изменения набора записей регистра сведений НЕ только по измерениям, но и с отбором по реквизитам
Найденные решения
(1) навскидку:
В примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 20
| РегистрСведений1.Измерение1 КАК Измерение1,
| РегистрСведений1.Измерение2 КАК Измерение2
|ИЗ
| РегистрСведений.РегистрСведений1 КАК РегистрСведений1
|ГДЕ
| РегистрСведений1.Измерение2 = """"
|";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
НачатьТранзакцию();
Попытка
Пока Выборка.Следующий() Цикл
Запись = РегистрыСведений.РегистрСведений1.СоздатьМенеджерЗаписи();
Запись.Измерение1 = Выборка.Измерение1;
Запись.Измерение2 = Выборка.Измерение2;
Запись.Прочитать();
Запись.Измерение2 = Выборка.Измерение1; // тут заполняете новыми нужными данными
Запись.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
ПоказатьВ примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
НаборЗаписей = РегистрыСведений.<ВАШРЕГИСТР>.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.<ВАШЕИЗМЕРЕНИЕ>.Значение = Неопределено; /// Либо другой отбор
НаборЗаписей.Прочитать();
Для каждого Запись Из НаборЗаписей Цикл
Запись.<ВАШЕИЗМЕРЕНИЕ> = <ВАШЕЗНАЧЕНИЕ>;
КонецЦикла;
НаборЗаписей.Записать();
(1) навскидку:
В примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 20
| РегистрСведений1.Измерение1 КАК Измерение1,
| РегистрСведений1.Измерение2 КАК Измерение2
|ИЗ
| РегистрСведений.РегистрСведений1 КАК РегистрСведений1
|ГДЕ
| РегистрСведений1.Измерение2 = """"
|";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
НачатьТранзакцию();
Попытка
Пока Выборка.Следующий() Цикл
Запись = РегистрыСведений.РегистрСведений1.СоздатьМенеджерЗаписи();
Запись.Измерение1 = Выборка.Измерение1;
Запись.Измерение2 = Выборка.Измерение2;
Запись.Прочитать();
Запись.Измерение2 = Выборка.Измерение1; // тут заполняете новыми нужными данными
Запись.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
ПоказатьВ примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот