Имя: Пароль:
1C
1С v8
v8: Ручное изменение движений документа
0 story
 
25.09.12
08:31
Подскажите в модуле документа (проведение=запретить) есть процедура

Процедура ПередЗаписью(Отказ,РежимЗапси,РежимПроведения)
   УстановитьДату=ЭтоНовый() ИЛИ Движения.ОстаткиМатериалов.Модифицированность();
   Если Не УстановитьДату Тогда
       Запрос1=Новый Запрос(
           "ВЫБРАТЬ
           |    ВводНачальныхОстатковНоменклатуры.Дата
           |ИЗ
           |    Документ.ВводНачальныхОстатковНоменклатуры КАК ВводНачальныхОстатковНоменклатуры
           |ГДЕ
           |    ВводНачальныхОстатковНоменклатуры.Ссылка = &Ссылка");
       Запрос1.УстановитьПараметр("Ссылка",Ссылка);
       РезультатВыборки=Запрос1.Выполнить().Выбрать();
       РезультатВыборки.Следующий();
       
       УстановитьДату=РезультатВыборки.Дата<>ЭтотОбъект.Дата
   КонецЕсли;
   
   Если УстановитьДату Тогда
       Если не Движения.ОстаткиМатериалов.Выбран() и не Движения.ОстаткиМатериалов.Модифицированность() тогда
           Движения.ОстаткиМатериалов.Прочитать();
       КонецЕсли;
       Для Каждого Запись из Движения.ОстаткиМатериалов Цикл
           Запись.Период=ЭтотОбъект.Дата;
       КонецЦикла;
   КонецЕсли;

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

Сделал внешнюю обработку для проверки, следующий код:
ДокументСылка=Документы.ВводНачальныхОстатковНоменклатуры.НайтиПоНомеру("000000001");
ДокументОбъект=ДокументСылка.ПолучитьОбъект();
ДокументОбъект.Дата=Дата("20110926");    
ДокументОбъект.Записать();

В итоге почему-то период у движений этого документа не обновляется. Если меняем дату документа через форму-интерактивно, то все работает.
1 macana
 
25.09.12
08:56
На то и тебе и ручной режим где сам все ручками указываешь
2 BigShmax
 
25.09.12
09:16
А в чем заключается вопрос?
3 Godofsin
 
25.09.12
09:19
РежимЗаписи.Проведение
4 story
 
25.09.12
09:50
По идее вот этот код вносит изменения в период
Если УстановитьДату Тогда
       Если не Движения.ОстаткиМатериалов.Выбран() и не Движения.ОстаткиМатериалов.Модифицированность() тогда
           Движения.ОстаткиМатериалов.Прочитать();
       КонецЕсли;
       Для Каждого Запись из Движения.ОстаткиМатериалов Цикл
           Запись.Период=ЭтотОбъект.Дата;
       КонецЦикла;
   КонецЕсли;

Почему при программном редактировании эти изменения не сохраняются?
5 story
 
25.09.12
09:51
РежимЗаписи.Проведение У документа проведение запрещено.
6 Шапокляк
 
25.09.12
09:54
(0) УстановитьДату=ЭтоНовый() ИЛИ Движения.ОстаткиМатериалов.Модифицированность();
значит при выполнении обработки у вас УстановитьДату=Ложь и код в ПриЗаписи не отрабатывает
7 story
 
25.09.12
13:34
Этот код отрабатывает:
Для Каждого Запись из Движения.ОстаткиМатериалов Цикл
           Запись.Период=ЭтотОбъект.Дата;
       КонецЦикла;

Проверял в отладчике. НО в итоге в базу это не сохраняется!
8 Шапокляк
 
25.09.12
13:44
(7) осталось только записать их.