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

1. usparts@inbox.ru 29.04.09 15:41 Сейчас в теме
Пишу обработку с следующей целью

Мне нужно пробежаться по ВСЕМ записям регистра сведений и заменить одно значение измерения регистра на другое (один контрагент на другой)

Подскажите как решить эту задачу?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Душелов 4018 29.04.09 15:55 Сейчас в теме
Выгрузить из списка в ТЗ, заполнить значениями, загрузить и записать.
5. usparts@inbox.ru 29.04.09 16:02 Сейчас в теме
(2) спасибо но не подходит.. нельзя трогать записи регистра

(3) А можно чуть подробнее ?
Вот так может ? Но это работает только для одной записи ? А как же пробежаться по всем ?

Менеджер = РегистрыСведений.МойРегистр.СоздатьМенеджерЗаписи();
	 Менеджер.Контрагент = ИмяКонтраг1;
	 Менеджер.Прочитать(); 
	 
	 Если Менеджер.Выбран() Тогда  		 
		Менеджер.Контрагент = ИмяКонтраг2;
		Менеджер.Записать();
	 КонецЕсли;
3. biv75 29.04.09 15:57 Сейчас в теме
Можно решить через РегистрСведенийМенеджерЗаписи
4. biv75 29.04.09 16:01 Сейчас в теме
3+ Хотя... может и прокатить, вот если как в 2 через ТЗ то точно получится
6. biv75 29.04.09 16:07 Сейчас в теме
Перебрать записи можно так

НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл

КонецЦикла;

Но надо пробовать, модификация измерений в регистре может не прокатить.
G_112451940611726681042; +1 Ответить
7. usparts@inbox.ru 29.04.09 16:09 Сейчас в теме
8. usparts@inbox.ru 29.04.09 16:44 Сейчас в теме
нет не получается ) видно модифицировать нельзя
13. rule6 02.11.17 00:56 Сейчас в теме
(8)
Не соглашусь. Все работает.

НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей(); 
НаборЗаписей.Прочитать(); 

Для Каждого Запись Из НаборЗаписей Цикл 
     Запись.НужноеПоле = НужноеЗначение;
     НаборЗаписей.Записать(Истина);
КонецЦикла;
user682948_rusmaxval; NicolasCage; dante; resonance; nodalt; +5 Ответить
19. dima_home 253 11.12.19 10:42 Сейчас в теме
(13)
Не нужно каждый раз записывать набор. Достаточно один раз в конце.

НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей(); 
НаборЗаписей.Прочитать(); 

Для Каждого Запись Из НаборЗаписей Цикл 
     Запись.НужноеПоле = НужноеЗначение;
КонецЦикла;
НаборЗаписей.Записать(Истина);
Показать


Все работает.
G_112451940611726681042; user682948_rusmaxval; NicolasCage; viyt; ASV085; Sana555; namazi74; +7 Ответить
9. biv75 29.04.09 16:49 Сейчас в теме
ну в принципе оно было ожидаемо, тогда только вариант 2 через ТЗ
15. Mnemonik 02.11.17 05:46 Сейчас в теме
(9) А почему ожидаемо, какие препятствия могут возникнуть при изменении записей набора регистра сведений в цикле?
10. alexk-is 6544 29.04.09 16:58 Сейчас в теме
План захвата терргиторий:
1. Создать набор записей
2. Установить отбор по Контрагенту1
3. Выгрузить в таблицу значений
4. Очистить набор записей
5. Записать набор записей
6. В таблице значений заменить значение в колонке контрагент на Контрагент2
7. Создать набор записей
8. Установить отбор по Контрагенту2
9. Загрузить таблицу значений
10. Записать набор записей

Ну, как-то так
аколит; Valerianich; AlbinaAAA; Yuri1988; LostMicos; serioga911; user619457_pescha00; ybatiaev; +8 Ответить
11. biv75 29.04.09 17:07 Сейчас в теме
(10) Вот всё верно, так и стоит сделать, при корректировке измерений по другому никак
14. Mnemonik 02.11.17 05:43 Сейчас в теме
(10)
План захвата терргиторий:
1. Создать набор записей
2. Установить отбор по Контрагенту1
3. Выгрузить в таблицу значений
4. Очистить набор записей
5. Записать набор записей

6. В таблице значений заменить значение в колонке контрагент на Контрагент2
7. Создать набор записей
8. Установить отбор по Контрагенту2

9. Загрузить таблицу значений
10. Записать набор записей

Вот так без лишнего.
CratosX; sergio199; NikCP9; +3 2 Ответить
12. StepN 07.05.09 10:15 Сейчас в теме
Добрый день, необходимо примерно то же .
Написала так:

Набор=РегистрыНакопления.НДСНачисленный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументРеализации.Ссылка);
// регистратор беру из формы

Набор.Прочитать();
Таблица=Набор.Выгрузить();

Набор.Очистить();
Набор.Записать();

Для Каждого СтрокаТЧ ИЗ Таблица Цикл
// здесь меняем все, что необходимо
КонецЦикла;
Набор.Загрузить(Таблица);
Набор.Записать(Истина);

Подскажите, пожалуйста, почему изначально выгружается пустая таблица (даже без отбора, я проверила)...
kamsky93; +1 Ответить
16. tigermonster 11 07.09.18 10:34 Сейчас в теме
Читаем набор записей с отбором по заменяемому измерению
выгружаем в таблицу
очищаем набор
записываем набор
заменяем в таблице измерение на нужное
загружаем таблицу в набор
записываем набор
17. Kazey 15.05.19 17:21 Сейчас в теме
        // Вот так работает	
        НаборЗаписей = РегистрыСведений.РС1.СоздатьНаборЗаписей();	
	
	МенеджерЗаписи = РегистрыСведений.РС1.СоздатьМенеджерЗаписи();
	
	Для Каждого ТекЗапись Из НаборЗаписей Цикл
		ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ТекЗапись);
		МенеджерЗаписи.Прочитать();
		МенеджерЗаписи.Измерение = НовоеЗначениеИзмерения;
		МенеджерЗаписи.Записать();
	КонецЦикла;
Показать
juliia1992; +1 Ответить
18. Greamdevil 6 25.06.19 07:18 Сейчас в теме
(17)

Только еще после записи НаборЗаписей = РегистрыСведений.РС1.СоздатьНаборЗаписей();


НаборЗаписей.Прочитать();

Не забудьте )

Ну вот так примерно, можно и с отбором сразу:

        НаборЗаписей = РегистрыСведений.РС1.СоздатьНаборЗаписей();    
    НаборЗаписей.Отбор.Измерение.Установить(ЗначениеИзмерения);
    НаборЗаписей.Прочитать();
    МенеджерЗаписи = РегистрыСведений.РС1.СоздатьМенеджерЗаписи();
    
    Для Каждого ТекЗапись Из НаборЗаписей Цикл
        ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ТекЗапись);
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Измерение = НовоеЗначениеИзмерения;
        МенеджерЗаписи.Записать();
    КонецЦикла;
Показать
Dmitry888; kabantus; Diego_Iv; namazi74; NadinPr; GYlgamesh; Smoking1C; AlbinaAAA; Stepka1206; HIVvich; dante; CratosX; Kazey; +13 Ответить
20. HIVvich 04.12.20 08:10 Сейчас в теме
(18) этот вариант очень подошел, спасибо большое
22. namazi74 5 28.12.21 11:10 Сейчас в теме
(18)
Ну вот так примерно, можно и с отбором сразу:

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



не надо только после каждого прохода записывать. можно один раз
viyt; alex-admiral; +2 Ответить
21. Cvetic 307 29.09.21 11:21 Сейчас в теме
(19) Этот вариант работает. Спасибо!

(13) Выдает ошибку Запись не верна. Значение поля не соответствует установленному отбору...
Видимо отборы нужно прописывать.
И большой минут этого метода - очень долго обрабатывает, т.к. перезаписывает весь набор записей.
23. viyt 07.03.24 05:18 Сейчас в теме
(22) Самый правильный и рабочий вариант!
Оставьте свое сообщение

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