Имя: Пароль:
1C
1С v8
изменение кода
0 r2d24
 
18.09.13
11:58
Подскажите с кодом:
Этот код находится в модуле объекта документа и он работает.
Я хочу перенести этот код в модуль обработки, и там он ругается на "Движения", не могли бы подсказать как исправить ошибки?

Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную  изменения будут утеряны!!!

    // регистр ПартииТоваровНаСкладах Расход
    Движения.ПартииТоваровНаСкладах.Записывать = Истина;
    Движения.ПартииТоваровНаСкладах.Очистить();
    Движение = Движения.ПартииТоваровНаСкладах.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Номенклатура = Номенклатура;
    Движение.Склад = Склад;
    Движение.Количество = Количество;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

Заранее спасибо
1 ДенисЧ
 
18.09.13
11:59
Движения - это переменная объекта Документ. Пляши отсюда.
2 Apokalipsec
 
18.09.13
11:59
Обработка не делает движения по регистрам, движения делает документ.
3 Михаил Козлов
 
18.09.13
11:59
Вместо Движения используйте набор записей с отбором по регистратору.
4 ОбычныйЧеловек
 
18.09.13
12:03
(0) Замени свой код на это:

    //СсылкаНаДокумент - Ссылка на документ по которому делаем движения
    
    НаборЗаписей=РегистрыНакопления.ПартииТоваровНаСкладах.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
    НаборЗаписей.Прочитать();
    Если НаборЗаписей.Количество()>0 Тогда
        НаборЗаписей.Очистить();        
    КонецЕсли;

    Движение=Движения.ПартииТоваровНаСкладах.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Номенклатура = Номенклатура;
    Движение.Склад = Склад;
    Движение.Количество = Количество;

    НаборЗаписей.Записать();
5 ОбычныйЧеловек
 
18.09.13
12:05
Вместо
Движение=Движения.ПартииТоваровНаСкладах.Добавить();

Это
Движение=НаборЗаписей.Добавить();
6 PLAstic242
 
18.09.13
12:05
Столько ответов и всё мимо. Неужели не понятны причины вопроса?

r2d24, тебе необходимо создать свой общий модуль, где ты будешь складывать свои доработки. Создать подписчик на событие "При проведении" нужного документа. Процедуру подписчика создай в своём общем модуле. Туда передаётся параметр "Источник" - вот у него и есть реквизит "Движения".
Получается, сам код не надо менять кроде добавленной строки:
Движения = Источник.Движения;
7 Sabbath
 
18.09.13
12:11
(6) по-моему, это излишне и задача не в том
(0) Вообще зачем это надо? Записывать движения документа не перепроводя документ что ли? Как-то не хорошо :)
8 Sabbath
 
18.09.13
12:13
(0) а по теме у тебя переменная Движения не определена. Я думаю в твоем случае это
Движения = ДокументОбъект.Движения;
Ну а ДокументОбъект соответственно надо получить)