| v8: Допроведение документаКлючевые слова: проведение,документ,регистр,набор записей
 
 
 Однажды мне поставили задачу - нужно обработать стандартные проводки, сделанные документом и некоторые из них изменить. Также изменения должны коснуться некоторых регистров. Я вставлял свой код коррекции в конец процедуры ОбработкаПроведения.
 
 Но дело в том, что при проведении документа движения могут быть сохранены в коллекции Движения или непосредственно записаны в регистр.
 
 Я долго парился по этому поводу, пока не понял, что можно проверить свойство Модифицированность() у конкретного регистра в коллекции Движения, если оно истина - то движения находятся в коллекции и ждут автоматической записи в конце проведения, если ложь - то движения уже записаны в регистр или не записывались вообще.
 
 Короче, набор движений для корректировки я получал функцией:
 
 
 
Функция НаборДвиженийДокументаПолучить(П, Регистр, ИзОбъекта=истина)
    ИмяРегистра = Метаданные.НайтиПоТипу(ТипЗнч(Регистр)).Имя;
    //Если модифицирован
    Если НЕ П.Объект.Движения[ИмяРегистра].Модифицированность() Тогда
        НЗ=П.Объект.Движения[ИмяРегистра];
        НЗ.Отбор.Регистратор.Установить(П.Ссылка);
        НЗ.Прочитать();
    КонецЕсли;
    
    Возврат П.Объект.Движения[ИмяРегистра];
КонецФункции
 А записывать ничего не нужно. Изменения сами запишутся в конце работы процедуры ОбработкаПроведения.
 
 |