Имя: Пароль:
1C
1С v8
Процедура ПередЗаписью() и Ссылка
0 serpentt
 
16.05.12
11:36
Здравствуйте..
Помогите начинающему
в документе есть процедура ПередЗаписью()

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
  ...
  ...
  мЗакрытиеСмены = (Не ЗначениеЗаполнено(Ссылка.ОтчетОРозничныхПродажах)
                    И  ЗначениеЗаполнено(ОтчетОРозничныхПродажах));
  ...
КонецПроцедуры

Внешней обработкой делаю выборку документов и пытаюсь внести в данный документ ИЗМЕНЕИЯ в реквизит "ОтчетОРозничныхПродажах".
Но когда отрабатывает Предопределенная процедура ПередЗаписью()а первом условии
(Ссылка.ОтчетОРозничныхПродажах) нет изменений.
можно как-то програмнео передать в процедуру ПередЗаписью() что бы и в Ссылка.ОтчетОРозничныхПродажах были теже изменения что и в реквизите ОтчетОРозничныхПродажах?
1 mikecool
 
16.05.12
11:37
нет, нельзя
2 mikecool
 
16.05.12
11:38
тут как раз идет сравнение того что есть сейчас с тем, что было до изменения
3 Rizhij_Nikitos
 
16.05.12
11:39
А ты пробывал получил по ссылке объект, и его потом менять и записать и сработает втоя процедура перед записью, если понял правильно твой вопросы, выглядит это так.
НашОбъект = ТвояСсылкаНаОбъект.ПолучитьОбъект();
НашОбъект.Реквизит = ЗначениеДляНужногоРеквизита;
НашОбъект.Записать();

И все изменения будут.
4 ptrtss
 
16.05.12
11:40
В начале ПередЗаписью должно стоять

   Если ОбменДанными.Загрузка  Тогда
       Возврат;
   КонецЕсли;


А ты когда получаешь объект документа в обработке ставь .ОбменДанными.Загрузка = ИСТИНА

И запись будет просто с изменением реквизита
5 Rizhij_Nikitos
 
16.05.12
11:40
А вопрос прочитал не правильно.
(0) тебе надо делать так, в процедуре ПриЗаписи, ты получаешь у тебя щас и что потом будет.
6 Rizhij_Nikitos
 
16.05.12
11:43
СсылкаНаОбъект будет показывать, что щас в базе хранится, а в ЭтотОбъект, что есть по факту в документе.
7 KAO111
 
16.05.12
11:47
Если ЭтоНовый() тогда
// в ссылке точно ничего нет - можно не сравнивать
Иначе
КонецЕсли;
8 serpentt
 
16.05.12
11:54
(3) все так и делаю но не взлетает
Пока ВыборкаЧековККМ.Следующий() Цикл
           ЧекККМОбъект = ВыборкаЧековККМ.Ссылка.ПолучитьОбъект();
           //ЧекККМОбъект.УстановитьПометкуУдаления(Истина); //   Удалить()
           Попытка
               ЧекККМОбъект.ОтчетОРозничныхПродажах = "";
               
               ЧекККМОбъект.Записать();
           Исключение
               Сообщить(ИнформацияОбОшибке().Описание);
           КонецПопытки;
           Попытка
               ЧекККМОбъект.УстановитьПометкуУдаления(Истина);
           Исключение
               Сообщить(ИнформацияОбОшибке().Описание);
           КонецПопытки;
           
           Сообщить(ЧекККМОбъект);
       КонецЦикла;
9 serpentt
 
16.05.12
12:04
(4) Спасибо... помогло