Имя: Пароль:
1C
1С v8
не вызывается обрабока проведения
0 Dmitry017
 
30.03.13
23:28
Проблема. Раньше была обработка проведения.
Надо было вручную отдельно поработать с другим регистров. Я сделал так как было написано в книге по курсам 1С: изменил ОбработкаПроведения на ОбработкаПроведения1 (чтобы не затёрлось),затем зашёл в Движения документа и создал движение по нужному мне регистру. Таким образом система автоматически создала новую процедуру ОбработкаПроведения. После этого новую созданную процедуру я переименовал в УменьшениеОстатковТоваров, а старую ОбработкаПроведения1 в ОбработкаПроведения. После этого у меня перестало работать. Проведение не пашет. По всей процедуре понатыкал точки останова, нигде не останавливается. Смотрю на изменение регистров накопления, не Меняются.

Вот код

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

   // регистр РезервыНоменклатуры Приход
   
   Движения.РезервыНоменклатуры.Записывать = Истина;
   Для Каждого ТекСтрокаТовары Из Товары Цикл
       
       ТекущийОстаток = ОпределениеОстатка(ТекСтрокаТовары.Номенклатура);
       //если не хватает товара, выход из функции
       Если ТекущийОстаток < ТекСтрокаТовары.Количество Тогда
           Сообщить("Не хватает товаров на складе");
           Возврат;
       КонецЕсли;
       
       Движение = Движения.РезервыНоменклатуры.Добавить();
       Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
       Движение.Период = Дата;
       Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
       Движение.Склад = Склад;
       Движение.Резерв = ТекСтрокаТовары.Количество;
       Движение.ПоСчёту = Ссылка;
       
       //происходит движение по ригистру ОстаткиТоваров
       УменьшениеОстатковТоваров()
   КонецЦикла;

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



&НаСервере
Функция ОпределениеОстатка(ТекТовар)

   //необходимо предварительно проверить, достаточно ли товара на складе
   Если ЗначениеЗаполнено (Ссылка) Тогда
       ВременнойМомент = Новый МоментВремени(Дата, Ссылка);
   Иначе
       ВременнойМомент = Неопределено;
   КонецЕсли;
   
   //далее делаем фильтр, чтобы найти нужный товар в регистре накопления
   ФильтрТоваров = Новый Структура;
   ФильтрТоваров.Вставить("Номенклатура", ТекТовар);
   ФильтрТоваров.Вставить("Склад", Склад);

   ТаблицаОстатков = РегистрыНакопления.ОстаткиТоваров.Остатки(ВременнойМомент, ФильтрТоваров, , "Количество");
   Возврат ТаблицаОстатков.Итог("Количество");
   

КонецФункции // ОпределениеОстатка()


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

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

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
1 Dmitry017
 
30.03.13
23:30
а нет. всё. нашёл ошибку. не поставил точку с запятой. Только очень странно что я прошёл синтаксис-контроль, когда здесь не хватало точки с запятой после вызова функции
УменьшениеОстатковТоваров();
   КонецЦикла;
2 andreymongol82
 
30.03.13
23:30
Ужас. Ужас-Ужас-Ужас!
Процедура ОбработкаПроведения(Отказ, Режим) и там не останавливается?