|
не вызывается обрабока проведения | ☑ | ||
---|---|---|---|---|
0
Dmitry017
30.03.13
✎
23:28
|
Проблема. Раньше была обработка проведения.
Надо было вручную отдельно поработать с другим регистров. Я сделал так как было написано в книге по курсам 1С: изменил ОбработкаПроведения на ОбработкаПроведения1 (чтобы не затёрлось),затем зашёл в Движения документа и создал движение по нужному мне регистру. Таким образом система автоматически создала новую процедуру ОбработкаПроведения. После этого новую созданную процедуру я переименовал в УменьшениеОстатковТоваров, а старую ОбработкаПроведения1 в ОбработкаПроведения. После этого у меня перестало работать. Проведение не пашет. По всей процедуре понатыкал точки останова, нигде не останавливается. Смотрю на изменение регистров накопления, не Меняются. Вот код Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр РезервыНоменклатуры Приход Движения.РезервыНоменклатуры.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл ТекущийОстаток = ОпределениеОстатка(ТекСтрокаТовары.Номенклатура); //если не хватает товара, выход из функции Если ТекущийОстаток < ТекСтрокаТовары.Количество Тогда Сообщить("Не хватает товаров на складе"); Возврат; КонецЕсли; Движение = Движения.РезервыНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Склад = Склад; Движение.Резерв = ТекСтрокаТовары.Количество; Движение.ПоСчёту = Ссылка; //происходит движение по ригистру ОстаткиТоваров УменьшениеОстатковТоваров() КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры &НаСервере Функция ОпределениеОстатка(ТекТовар) //необходимо предварительно проверить, достаточно ли товара на складе Если ЗначениеЗаполнено (Ссылка) Тогда ВременнойМомент = Новый МоментВремени(Дата, Ссылка); Иначе ВременнойМомент = Неопределено; КонецЕсли; //далее делаем фильтр, чтобы найти нужный товар в регистре накопления ФильтрТоваров = Новый Структура; ФильтрТоваров.Вставить("Номенклатура", ТекТовар); ФильтрТоваров.Вставить("Склад", Склад); ТаблицаОстатков = РегистрыНакопления.ОстаткиТоваров.Остатки(ВременнойМомент, ФильтрТоваров, , "Количество"); Возврат ТаблицаОстатков.Итог("Количество"); КонецФункции // ОпределениеОстатка() Процедура УменьшениеОстатковТоваров() //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр ОстаткиТоваров Расход Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Склад = Склад; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
1
Dmitry017
30.03.13
✎
23:30
|
а нет. всё. нашёл ошибку. не поставил точку с запятой. Только очень странно что я прошёл синтаксис-контроль, когда здесь не хватало точки с запятой после вызова функции
УменьшениеОстатковТоваров(); КонецЦикла; |
|||
2
andreymongol82
30.03.13
✎
23:30
|
Ужас. Ужас-Ужас-Ужас!
Процедура ОбработкаПроведения(Отказ, Режим) и там не останавливается? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |