Вход | Регистрация

1С:Предприятие ::

Метки: 

Корректировка записей в регистре накопления

Я
   doublenick
 
22.02.18 - 10:23
Подскажите, плиз.

Есть заполненный регистр накопления, туда добавлено НовоеПоле (измерение). Как без повторного проведения документов обновить записи регистра, чтобы заполнить это новое поле?

НаборЗаписей = РегистрыНакопления.ВнутренниеЗаказы.СоздатьНаборЗаписей();

А дальше?
 
  Рекламное место пустует
   Любопытная
 
1 - 22.02.18 - 10:29
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаРегистратор);
НаборЗаписей.Прочитать();
ТЗ = НаборЗаписей.Выгрузить();
ТЗ.ЗаполнитьЗначения(Значение, ИмяПоля);
НаборЗаписей.Загрузить(ТЗ);

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

Примерно так
   Mort
 
2 - 22.02.18 - 10:30
Отбор.Регистратор.Установить()/Прочитать()/..../Записать()
   Serg_1960
 
3 - 22.02.18 - 10:35
:)
Отбор/Выгрузить/(изменить)/Загрузить/Записать - читать необязательно, а вот Удалить исходное, как мне кажется, - надо.
   Serg_1960
 
4 - 22.02.18 - 10:48
Имхо, если автора понимать буквально, то работу срегистром надо начинать с запроса. Типа вот так:

    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ВашРегистр.Регистратор КАК Регистратор
    |ИЗ
    |    РегистрНакопления.ВашРегистр КАК ВашРегистр";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    НаборЗаписей = РегистрыНакопления.ВашРегистр.СоздатьНаборЗаписей();
    
    Пока Выборка.Следующий() Цикл
        
        НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
        
        ВсеЗаписи = НаборЗаписей.Выгрузить();
        ... в цикле или как-то по другому изменить записи ...
        НаборЗаписей.Загрузить(ВсеЗаписи);
        НаборЗаписей.Записать();
        
    КонецЦикла;
   doublenick
 
5 - 22.02.18 - 11:18
В общем, сделал так. Всем спасибо.
    ВыборкаДокументов = Документы.ВнутреннийЗаказ.Выбрать();
    
    Пока ВыборкаДокументов.Следующий() Цикл
        
        НаборЗаписей = РегистрыНакопления.ВнутренниеЗаказы.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДокументов.Ссылка);
        НаборЗаписей.Прочитать();
        
        Для Каждого Запись Из НаборЗаписей Цикл
               Запись.клПодразделениеПотребитель = Запись.ВнутреннийЗаказ.ПодразделениеИсполнитель;
        КонецЦикла;    
        
        НаборЗаписей.Записать();
        
    КонецЦикла;
   Mankubus
 
6 - 22.02.18 - 11:40
(5) в (4) лучше код, у вас выбираются даже не проведенные документы
   doublenick
 
7 - 22.02.18 - 11:54
(6) Согласен - но у меня они все проведены)
   Serg_1960
 
8 - 22.02.18 - 12:31
(7) Методически правильнее алгоритм "от регистратора", а не от документа. Вы не озвучили конфигурацию, поэтому рекомендую убедиться что ВнутреннийЗаказ - это единственный документ-регистратор у этого регистра. Что скорее всего не так, - у меня, например, 14 типов документов являются регистраторами для ВнутренниеЗаказы.
   doublenick
 
9 - 22.02.18 - 15:04
(8) Я сначала тоже об этом подумал, но, не вдаваясь в тонкости конфигурации, результат однозначно правильный - что через регистратор, что через измерение ВЗ.


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует