Всем привет, может кто-нибудь подскажет как лучше обработать ситуацию. Есть документ Перемещение товаров. У него завели реквизит Дата приема. Реквизит закрыли от изменения пользователям. Механизм работы такой, что пользователь должен подтвердить перемещение и только тогда у него на остатках появяться товары. При подтверждении Дата приема устанавливается Текущая дата на сервере 1С. Проблема возникает в том, что при оперативном проведении документа время меняется и дата приема получаеться меньше даты документа, что не верно. Пытался обработать ситуацию в Обработке проведения. Это привело к тому, что движения по регистру документ делает верно, но при повторном открытии дата приема остаеться старая, видимо потому что реквизит устанавливаеться в обработке проведения и не проходит процедуры При Записи и Перед Записью. Как быть в такой ситуации, очень не охота открывать доступ пользователям.
По теме из базы знаний
- Валовая прибыль по виду цен на дату документа (от закупочных цен) для УТ 11, КА и ERP
- [Расширение] УНФ: Дополнительный контроль остатков (списания) товаров на дату документа (как в 1С:Бухгалтерии)
- Заполнение СЗВ-ТД по дате документа-основания
- Регистрация изменений для обмена по дате документа
- Дополнительный контроль остатков на дату документа. КА 2
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Tiger86, в этих процедурах её нет, упоминаеться только при установке флага "Подтвердить" (событие при изменении). Далее в обработке проведения такой код ДатаПриема = Дата; Если проводить документ не закрывая, то он будет показывать из-за этой строки Модифицированность.
(6) SPID, Если подряд нажимать Проведение (оперативное), то каждый раз дата документа будет изменяться на секунды. Например я провожу документ в 10.00, Следующий раз я жму провести в 10.05 (время документа получаеться 10.05), при этом в процедуре ПередЗаписью время документа будет 10.00, а когда документ проведеться время будет в 10.05. Таким образом получаеться Дата документа (время) 10.05, а дата приема (время) 10.00. В этом и есть проблема.
(15) Salavat, Так Дата документа при оперативном проведении будет равно ТекущаяДата() (если конечно алгоритмы ПередЗаписью не выполняются достаточно долго).
Нужно еще добавить условие вида: Если РежимПроведения = оперативно тогда ДатаПриема = ТекущаяДата() Иначе ДатаПриема = Дата.
Нужно еще добавить условие вида: Если РежимПроведения = оперативно тогда ДатаПриема = ТекущаяДата() Иначе ДатаПриема = Дата.
(23) Salavat, к какой форме? как я понял надо просто записать реквизит опираясь на результаты проведения.
а указание режима запись - для проведенного документа просто перезаписывает реквизиты объекта, не вызывая проведение - так что этим нужно пользоваться с осторожностью.
а прибавлять к дате время и надеяться что за 2 секунды документ проведется... а в друг нет - какие нить тормоза или блокировки - данные будут неактуальные
а вообще лучше вот так
ПослеЗаписи (в модуле объекта)
а если это стандартная конфа, тогда еще перед Записать(РежимЗаписиДокумента.Запись) добавить ОбменДанными.Загрузка = Истина; - что бы отсечь разные ненужные вычисления(опереации).
Только вот объект записывается иногда 2 раза...
а указание режима запись - для проведенного документа просто перезаписывает реквизиты объекта, не вызывая проведение - так что этим нужно пользоваться с осторожностью.
а прибавлять к дате время и надеяться что за 2 секунды документ проведется... а в друг нет - какие нить тормоза или блокировки - данные будут неактуальные
а вообще лучше вот так
ПослеЗаписи (в модуле объекта)
Если дата > ДатаПриема Тогда
ДатаПриема = Дата;
Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
а если это стандартная конфа, тогда еще перед Записать(РежимЗаписиДокумента.Запись) добавить ОбменДанными.Загрузка = Истина; - что бы отсечь разные ненужные вычисления(опереации).
Только вот объект записывается иногда 2 раза...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот