Как удалить движение по регистру? #138546


#0 by MitjaT
Здравствуйте!Можно ли как-то из обработки удалить движение по определенному остаточному регистру, выполненному определенным документом?  Понятно, что так просто это не сделать.Как быть? Очень надо!v7.7Заранее благодарен!
#1 by Oblomov
Распроведи документ который делает эти движения
#2 by MitjaT
Так в том-то и дело, что распроводить документ нельзя, он потом может не провестись.А из обработки никак нельзя?Можно не из обработки, а из другого (фиктивного) документа, но как, не трогая документ, который выполнил данное движение?
#3 by Alexaha
2. тогда пиши этот фиктивный док, чтобы при проведении он как бы сторнировал нужные тебе движения
#4 by Oblomov
2 Что такое движение регистра?Количество +2 ДокПрих_1Количество -1 ДокРасх_1Количество +3 ДокПрих_2Зачем тебе может понадобиться удалить движениеКоличество -1 ДокРасх_1 ?Если чтобы скорректировать Количество тогда в обработке пиши что то наподобие:Регистр.МойРегистр.Документ = ДокРасх_1;
#5 by Фауст
Сделай лучше документ который сторнирует движения твоего документа, скорее всего тебе этого будет достаточно. В идеологии 1С77 движения регистров не могут менятся кроме как проведением/распроведением документа.
#6 by Oblomov
+4 В смысле в документе сторно.
#7 by Фауст
4) "Если чтобы скорректировать Количество тогда в обработке пиши что то наподобие:" - Имется ввиду ОбработкаПроведения !!!!!P.S. надеюсь
#8 by Oblomov
2 Естественно :-) Не в Сформировать же :-)Хотя согласен, двусмысленно получилось.
#9 by MitjaT
Нет, идея такая:Прежние программеры неправильно написали один документ, который стал зачем-то дописывать два расхода по одному регистру, в которых сумма расзода одна и та же, но отличающаяся по знаку (не спрашивайте, зачем - сам не знаю). Причем в одном из расходов пустует одно измерение (ну забыл дописать). Все работает, но в отчете по некоторым клиентам вылетают глюки.Так вот, алгоритм какой? Мне просто надо пробежаться по всем движениям, посмотреть, в каких пустует данное измерение, и удалить его, а вместе с ним - и его "двойник", который можно легко отыскать, веди документ-создатель этих движений - один.Ведь храняться как-то же эти движения? Можно же посмотреть движения, сделанный данным документом. Мне хотя бы сделать на более низком уровне, но как хранятся эти движения?
#10 by Фауст
А может они так и задумывали, может это и не глюки вовсе.Но если твердо решил и сомнений нет что чтото испортишь то можно исправить алгоритм проведения, потом перепровести документы. А если движения у тебя автоматом не удаляются можно еще проще. Но модуль переписывать придется и перепроводить. Другие способы мне не извесны.
#11 by MitjaT
:Я твердо решил и сомнений нет!Переписать и перепровести, в общем-то, не сложно. Но тут другая проблема.Есть второй документ: "Оплата", который списывает долги, но списывает долги не по определенным документам, а по системе FIFO, т.е. одной суммой можно списать долги по нескольким расходным документам.
#12 by Фауст
Ну после всех манипуляций, перепроведи и оплату.
#13 by otto
Если только уверен:Как вариант: подчистить непосредственно в дбф-ке или sql-таблицах
#14 by AAAChel
Технология удаления на физическом уровне такова:1. В словаре DD или DDS(для SQL) ищете документ, запоминаете названия таблиц остатков и движений: RA..,RG2. В журнале 1SJOURN находите требуемый документ, выписываете IDDOC3. В таблицах RA.., RG находите записи с IDDOC равным нашему4. Удаляете лишние записи в RA,RGНо лучше перепровести штатным образом по обычному или алтернативному алгоритму(в зависимости от того, что Вам надо)
#15 by VZ
А теперь прочти еще раз высказывания автора, и подумай, что ты ему советуешь...
#16 by otto
я бы так поправилМожно попробовать снять признак удалять движения автоматически. В обработчике ОтменаПроведения поделить записи. Потом установить признак что документ проведен. Ну и снова поставить признак удалять движения автоматически. Хотя могу врать 7-ку давно вживую не видел
#17 by VZ
Регистрозависимое перепроведение можно организовать с применением ТурбоМД ;) Технология: создаем специальный модуль для подмены настоящего, который делает движения из ТЗ. Далее обработка: берет очередной док, вытаскивает из него движения, творит ТЗ (как это правильно должно бы быть). Перепроводит док (который пользуется при этом "подмененным" модулем")... И т.д. После окончания процедуры просто отключаем ТурбоМД ;) Кстати, при такой схеме можно править, не выгоняя юзеров из базы ;)
#18 by MitjaT
Спасибо всем за стремление помочь!Некоторые советы я реализать за 1 день не смогу (14,17), но все равно спасибо!Завтра буду пробовать, о результатах сообщу!Но склоняюсь все-таки к перепроведению, заранее подробно изучив механизмы проведения этих 2х документов и временно удалив проверки на наличие товаров на складе и т.д.Спасибо!
#19 by Пудель
Можно написать так, чтобы перед перепроведением запоминались все нужные движения документа (где хотите), а при проведении временно не делалось ничего, кроме делания именно этих нужных движений - не рассчитывать, а брать такие же.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С