Имя: Пароль:
1C
1С v8
Правка регистра накопления
0 inmortal203
 
05.09.13
12:36
Делаю следующее:

    // Движения по документу
    Если Не Отказ Тогда
        ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоТаре, ТаблицаПоБланкам, Отказ, Заголовок);
        Если НЕ ФактическиПрибыл Тогда
            УстановитьАктивностьДвиженийПоРегистру("ВнутренниеЗаказы",Ложь);
        КонецЕсли;
    КонецЕсли;

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

КонецПроцедуры

Это все в модуле документа.
НаборЗаписей.Выгрузить() - пустая таблица. Почему?

УТП 8.2 Обычное приложение
1 rbcvg
 
05.09.13
12:38
"Почему?" - из-за отборов.
2 inmortal203
 
05.09.13
12:40
(1) что ж им надо то если и без них вроде бы никак?

    НаборЗаписейРегистра = Движения[Регистр];
    НаборЗаписейРегистра.Прочитать();
Дает тоже пусто
3 inmortal203
 
05.09.13
12:45
чуть модифицировал


    НаборЗаписейРегистра = Движения[Регистр];
    НаборЗаписейРегистра.Прочитать();
    НаборЗаписейРегистра.УстановитьАктивность(Значение);
4 inmortal203
 
05.09.13
12:47
еще предположения?)
5 Михаил Козлов
 
05.09.13
12:50
Прочитать - в регистр еще не записаны движения. Берите прямо из коллекции движений.
6 inmortal203
 
05.09.13
12:57
(5) Не в том месте видимо вызывал процедурку) но спасибо.
Пока решил переносом в модуль формы ПослеЗаписи()
7 Михаил Козлов
 
05.09.13
12:58
(6) Не надо в модуле формы. Посмотрите в отладчике в процедуре проведения коллекцию движений.
8 inmortal203
 
05.09.13
13:11
(7) Почему не стоит так делать?
9 Fish
 
гуру
05.09.13
13:14
(8) Потому что документ могут проводить не из формы.
10 Михаил Козлов
 
05.09.13
13:14
Проводить могут и из формы списка и программно. Общее правило: все, что касается объекта, делается в модуле.
11 inmortal203
 
05.09.13
13:35
Понял, доведу до рабочего состояния задуманное и перенесу в модуль документа)
12 inmortal203
 
05.09.13
13:37
Но в данном случае перепроведение документа имеет смысл для этой задачи только при проведении из формы, так как только после установки или снятия флажка на форме изменяется активность записей... но опять же не исключаю в будущем программного проведения)
13 inmortal203
 
05.09.13
13:39
Еще вопрос... что если мне теперь нужен отбор не только по регистратору, но и по виду движения?
14 Нуф-Нуф
 
05.09.13
13:41
(13) накладывай отбор по регистратору, а потом в выборке уже смотри