Имя: Пароль:
1C
1С v8
Программное изменение регистратора
,
0 RaMMaL
 
31.05.13
09:29
Всем привет. Народ подскажите как программно изменить регистратор в регистре. Пробую вот таким способом, но ничего не в результате выполнения этой процедуры не происходит, старый регистратор как был так и остался

               НаборЗаписей = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(стр.Регистратор);
       НаборЗаписей.Прочитать();
       для каждого строкаОС из НаборЗаписей цикл
           строкаОС.Регистратор = ДокументКорректировкиРегистра;
       КонецЦикла;
       НаборЗаписей.Записать();
1 Maxus43
 
31.05.13
09:37
НаборЗаписей = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(стр.Регистратор);
       НаборЗаписей.Прочитать();
НаборЗаписей2 = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей2.Отбор.Регистратор.Установить(стр.РегистраторВТОРОЙ);
НаборЗаписей2.Загрузить(НаборЗаписей.Выгрузить());
НаборЗаписей2.Записать();
2 Maxus43
 
31.05.13
09:38
+ возможно перед выгрузкой надо очистить колонку регистратор у загружаемой ТЗ, надо проврить, не помню
3 RaMMaL
 
31.05.13
09:40
(2) Ок спасибо, попробуем
4 abjurer
 
31.05.13
09:43
Не очистить, а заполнить.

НаборЗаписей = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(стр.Регистратор);
       НаборЗаписей.Прочитать();
       ВременнаяТаблица = НаборЗаписей.Выгрузить();
       ВременнаяТаблица.ЗаполнитьЗначения(стр.РегистраторВТОРОЙ, "Регистратор");
НаборЗаписей2 = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей2.Отбор.Регистратор.Установить(стр.РегистраторВТОРОЙ);
НаборЗаписей2.Загрузить(ВременнаяТаблица);
НаборЗаписей2.Записать();
5 Maxus43
 
31.05.13
09:57
(4) отбор на наборе2 стоит, так что можно и очистить емнип, безразницы
6 RaMMaL
 
31.05.13
10:01
Не выходит, пишет что запись с такими ключевыми полями существует
7 Maxus43
 
31.05.13
10:02
(6)>(4)
8 RaMMaL
 
31.05.13
10:09
(7) я сделал по принципу (4)
9 Maxus43
 
31.05.13
10:10
НаборЗаписей2.Отбор.Регистратор.Установить(стр.РегистраторВТОРОЙ);
НаборЗаписей2.Прочитать();
Сообщить(НаборЗаписей2.Количество());
10 RaMMaL
 
31.05.13
10:27
(9) И что это даст?
11 Maxus43
 
31.05.13
10:33
(10) а непонятно разве?
12 Maxus43
 
31.05.13
10:34
короче код в студию полный
13 RaMMaL
 
31.05.13
10:42
Хм, ладно черт с этими регистраторами. как удалить запись в регистре по регистратору? Я думаю не маиться переписью этих регистраторов а просто удалить существующие записи (предварительно сохранив их в таблицу) и после загрузить их, только уже с новым регистратором
14 Maxus43
 
31.05.13
10:44
НаборЗаписей = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(стр.Регистратор);
наборзаписей.Записать(); //вот и удаление
15 RaMMaL
 
31.05.13
10:47
А кода конкретного нет, я делал обрезку базы, и натолкнулся на такую отвратную вещь как регистр  сведений непереодический. И теперь пытаюсь перебить записи с документом корректировки, чтобы документы старых регистраторов можно было спокойно грохнуть
16 Maxus43
 
31.05.13
11:08
независимый может? нет у независимых регистратора, никуда ты их не свернёшь, просто удаляй, если эти данные не нужны уже
17 abjurer
 
31.05.13
11:16
(7) странно это. но тогда долгий путь. читаем набор записей по старому регистратору в таблицу значений или в табличную часть документа (нового регистратора). удаляем старые записи. пишем новые. все это желательно в одной транзакции.
18 RaMMaL
 
31.05.13
11:59
(7) Ну вобщем я примерно так и сделал, выгрузил старые записи в ТЗ, поудалял их из регистра, и загрузил из ранее сохраненной ТЗ в регистр, но уже с новым регистратором
19 RaMMaL
 
31.05.13
12:00
"RaMMaL
18 - 31.05.13 - 11:59
(7) Ну вобщем я примерно так и сделал, выгрузил старые записи в ТЗ, поудалял их из регистра, и загрузил из ранее сохраненной ТЗ в регистр, но уже с новым регистратором"

ошибка в сообщении (18)  не (7) а (17)
20 RaMMaL
 
31.05.13
12:02
Примерно так :

       Для Каждого стр из ТабДвиж цикл
       НаборЗаписей = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(стр.Регистратор);
       НаборЗаписей.Записать();
   КонецЦикла;
   ТабДвиж.ЗаполнитьЗначения(НовыйДокументРегистратор, "Регистратор");
   НаборЗаписей2 = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
   НаборЗаписей2.Отбор.Регистратор.Установить(НовыйДокументРегистратор);
   НаборЗаписей2.Загрузить(ТабДвиж);
   НаборЗаписей2.Записать();
21 hhhh
 
31.05.13
14:03
(20) в цикле-то нафига записывать?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой