#0
by Diter
Как можно в регистре сохранить прошлые движения документа при проведении его с новыми параметрами. Есть очень простой регистр "Отменённые заявки", в котором нужно фиксировать все заявки, которые отменялись. Отменённой считается заявка, у которой удалили подчинённые документы (документы-продолжения) или просто разорвали связь с ними. Заявка потом может быть исполнена заново с заведением новых документов на её основании. Регистр этот нужен для отслеживания "ненадёжных" клиентов, которые "воду варят". При отмене заявки в регистр делается запись. При повторном исполнении заявки хочется, чтобы в регистр добавилась запись, противоположная первой (как бы сторнируя её). Так вот это то и не получается. Т.к. работать я могу только в модуле документа, сделал так. 1. проведение с параметром Провести(параметр) и обработкаПроведения(Параметр). В зависимости от его значения и решаю нужно делать запись в этот регистр (если идёт отмена) или не нужно (проводим новую заявку). 2. При проведении без параметра (исполнение заявки) .... вот тут то косяк и кроется. В регистре остаётся только последняя ("сторнирующая") запись. Первая - исчезает. Как быть? Посоветуйте пожалуйста. Заренее спасибо. Особая просьба доморошенным острякам - не напрягайтесь. Структура регистра : Измерения : ДатаОтмены - Дата Ресурс : Ключ - Число - длина 1 - точность 0 Поясню по ключу. При "сторнировании" отмены заявки делаю движение приход с ключом -1. В результате по остаткам 0, а информация о попытке отмены заявки есть. Может чего не так в регистре сделал?
#1
by NDV
Делаем два регистра и проводим по одному или другому в зависимости от надобности. Провести(<Режим>,<Знач>) - в процедуру ОбработкаПроведения передаем <Знач> и далее по обстоятельствам.
#3
by NDV
Ах да, обязательно, в условии ОбработкиПроведения, еще и чистим движения документа в неиспользуемом регистре "ОчиститьДвижения("Регистр.ХХХ")".
#4
by Diter
Так не хотелось бы два регистра делать. А как тогда поступать при отмене проведения? В ОбработкаУдаленияПроведения ставить ОчиститьДвижения?
#5
by NDV
Примерно так: А два регистра... Ну в крайнем случае, если потребуется сделать отчет под названием "ВотЧтоБылоБыЕслиБыЗаказыНеОтменяли", можно получить движения или сразу остатки по двум рег-и и просуммировать их.
#6
by Diter
Это понятно. Как сделать отмену проведения документа с очисткой движений если : Синтаксис: ОчиститьДвижения(<ВидыДвижений>) Назначение: Удалить движения документа. ...... Замечание: Данный метод доступен только при отключенном в конфигурации флаге ''Автоматическое удаление движений''. Метод доступен только в Модуле документа в ПРЕДОПРЕДЕЛЁННОЙ ПРОЦЕДУРЕ ОбработкаПроведения.
#9
by NDV
По-моему, непроведенный документ, ровно как и снятый с проведения документ не имеет имеет движений по регистрам. Если я ошибаюсь, тогда: В ОбработкаУдаленияПроведения собираем все регистры через метаданные и чистим их. Соответственно, непроведенный док, не двигает регистры, проведенный с условием только один из регистров. Только не понятно, зачем снимать док с проведения, если нужно учитывать все состояния заказов. Ведь достаточно перепровести его с другим условием...
#10
by Diter
Док нужно отменить вообще (пометить на удаление) при этом нужно очистить движения. Спасибо за содержательный совет. Вас не Билл Гейтс зовут? Может Нуралиев? Вы так всё знаете. Вы таким родились? Подскажите хоть один документ где это сделано.
#11
by Diter
Так в том то и дело, что ОчиститьДвижения работает только в процедуре ОбработкаПроведения
#14
by NDV
Ну да... :) И все-таки, по-моему, еще непроведенный документ, ровно как и снятый с проведения документ (соответственно и помеченный на удаление) не имеет никаких движений по регистрам.
#16
by Diter
Тут ты совершенно прав. Даже при снятой галке "Автоматическое удаление движений" при распроведении документа регситры очишаются автоматом. А по поводу ОчиститьДвижение попробуй разместить где нибудь не в ОбработкаПроведенияи получишь "Недопустимая команда" сообщение 1С.
#17
by NiGMa
Diter, если ты хочешь иметь в регистре все старые движения - тебе нужно просто запретить удаление и отмену проведения этого документа. Ты же правильно пишешь, что при распроведении документа все его движения удаляются асолютно безусловно. А в ОбработкаПроведения до того, как напишешь ОчиститьДвижения можно их выбрать, проанализировать, сохранить - в общем все, что хочешь. Вот здесь и копай!
#20
by 427
Специально для Дитеров - типовая российская ТиС почти вся так сделана. Признак АвтоУдаление Дитеров не установлен и в большинстве доков есть клавиша "провести" для "допроведения"...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Количество измерений в регистре сведений?
- V8.0 Сохранить движения при отмене проведения.
- Получить движения документа в модуле подписки на событие при проведении документа.
- Не могу установить вид движения в регистре накопления
- Реально ли удалить документ непосредственно, оставив движения в регистре?
- v7: Пропадают движения в регистре при повтором проведении
- v7: Не могу сохранить отчет в формате xls. Меню "Сохранить как" не активно. Этокак ?
- Как запретить регистратору удалять движения в определенном регистре?
- Какие есть способы писать движения в регистр при проведении документа?
В этой группе 1С
- 1С не помещается на экран
- Кросс таблица
- Обработчик прерываний от таймера
- вывод данных по определенной группе сотрудников
- Назначить тип периодическому неопределенному реквизиту
- Крякозябры в меню 1С 7.7 в терминальном режиме windows 2003 server
- Как из 1С 77 отправить сообщение пользователям в Windows Messenger?
- OLE,OLE,OLE
- Общепит от АСТОР...
- Фича номер два. Сделано специально для дятлов. Еще одна...
- Алгоритм расчета себестоимости
- Исключение из запроса забалансовых счетов.
- привязка реквизитов к границам формы в интерфейсе документа
- Товарооборот как определить?
- Как сделать выборку документов по времени ???
- Как в 1С создать новый GUID ???
- Несколько контрагентов - одно юр лицо?
- Можно ли программно открыть форму календаря в 7.7
- Как вывести проводки определенного вида документа?
- выгрузка из ресторана в общепит