Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   странное поведение 1с - не очищает движения регистров с первого раза (http://forums.kuban.ru/f1040/strannoe_povedenie_1s_-_ne_ochishaet_dvizheniya_registrov_s_pervogo_raza-3748166.html)

specx 22.02.2013 08:53

странное поведение 1с - не очищает движения регистров с первого раза
 
Хочу в документе возвратОтПокупателя ( 1с комплексная 7.7 DBF ) сделать одну хитрую штуку. чтобы 1С при проведении документа штатно сделала движения регистров остатки, партии, потом я их "перехватываю" в момент формирования проводок, и беру оттуда суммы чтобы сделать немного другие проводки ( суть - понадобилось чтобы возврат сначала на транзит счет бух операцию делал ) . потом я хочу эти движения убрать ! все получается, но есть один глюк. - движения регистра убираются, если документ провести второй раз. то есть первый раз провожу - движения регистра остаются ! второй раз нажимаю "провести" - все - они убираются . очищение делаю так - в самом конце процедуры ОбработкаПроведения :

ОчиститьДвижения("Регистр.ОстаткиТМЦ");
ОчиститьДвижения("Регистр.ПартииНаличие");

Reaper 22.02.2013 10:27

Нормальные герои всегда идут в обход? Отредактировать шаблон проводок в предприятии для тебя унизительно?

specx 22.02.2013 10:46

Неа, тут посложней дело, надо если один флажок в документе - то так делать, иначе - по штатному механизму. и само главное - шаблон проводок я отредактирую - но регистры то останутся. а тут надо чтобы проводки были а регистров не было. но проводки пусть штатный механизм комплексной делает - регистры - проводки. потом просто убиваем эти регистры. а проводки я потом подменяю перехватываю в глобальн модуле ( по этому флажку ). но если флажок не установлен - то надо чтобы работал штатный механизм комплексной. то есть - просто лень - хотелось заставить 1сный механизм сработать ( не писать самому списания по ФИО лифо среднее)

Jimbo 22.02.2013 12:06

какой то огород городим!!! оло-ло

USSR 22.02.2013 12:15

нифига не понял, но вот если ты делаешь движения, а потом их читаешь, то это должен быть облом. Все движения надо сразу запоминать в таблицу значений, чтобы их можно было использовать
А чем не устраивает автоматическое удаление движений?

bma1 22.02.2013 12:41

[quote=USSR;29195080]А чем не устраивает автоматическое удаление движений? [/quote]
Слишком просто.

specx 22.02.2013 12:52

Мне надо ( придумал что можно так сделать )- чтобы документ был проведенным, проводки были, но в особом случае - другие( по шаблонам не сделать - надо перехватывать ) , а вот движений регистров чтобы не было. проводки самому рисовать в данном случае неохота - нужно чтобы сработал типовой механизм по шаблонам ( а они базируются на движениях регистров ). автоматическое удаление движений тут не причем вроде.

specx 22.02.2013 13:07

притом, что это работает очень успешно. только единственный глюк - если документ проводится "впервые" то движения не удаляются. потом, если провести его снова ( нажать кнопку провести ) , или выйти и войти и провести, или обработкой провести, движения регистров - пропадают. вот и спрашиваю что за притча такая ?? почему с первого раза не удаются ? и как бы обойти это чтобы с первого разу удалялось

USSR 22.02.2013 23:58

"по шаблонам не сделать - надо перехватывать", "проводки самому рисовать в данном случае неохота - нужно чтобы сработал типовой механизм по шаблонам"
Какие то противоречивые желания. Ты хочешь все таки типовые проводки, которые будут нанизаны на движения регистров справочником хозопераций, но без этих самых движений регистров? То есть: - движения -> типовой механизм хозопераций -> проводки -> удалить проводки ?
Если так, то почему стали не нужны движения? Может есть другое решение твоего особенного учета? Надо всегда плясать от печки, то есть не от частной проблемы (удалить вдруг ставшие ненужными движения), а от общей задачи (почему вдруг в конфигурации, построенной на регистрах оперативного учета стали не нужны движения регистров, а проводки, основанные на этих движениях - нужны). Согласись, странно? Что это за проводки такие хитрые и движения ненужные?

Reaper 23.02.2013 00:29

8-USSR > Ы. Тут интересное кино вырисовывается. Долг покупателя уменьшается как в бухгалтерском, так и в управленческом контуре. Товар проходит только по бух. учету, где-то на "транзитном счете". Интересно, что же это за "транзитный счет"? Уж не 94-й ли?

specx 25.02.2013 09:47

Да, кино интересное, спрашиваю про одно , спрашивают зачем это нужно. вобщем, еще более подробно : счет не 94. Аудиторы потребовали буха чтобы процесс возврата от покупателя проходил через "транзит". придумали такую схему , в том числе и программную ( может и кривовато конечно ). старый документ ВозвратОтПокупателя - делает проводки на транзитный счет 41.8 ( завели в плане счетов ), то есть товар приходит на этот счет , а по регистрам - он не должен приходить , даже на какой нибудь специально созданный "виртуальный" склад. Затем, когда товар реально приходит на склад - завели в конфигурации новый документ , ПриходИзВозврата. который и делает проводки 41.1 - 41.8 и по регистрам приход . Так вот чтобы работал штатный механизм 1с комплексной по регистрам, я в возврате от покупателя - код оставляю как есть - типовой, в глобальнике перехватываю 41.1 по нему - подменяю проводку на 41.8. а затем - в конце обработкипроведения возвратаотпокупателя - очищаю регистры. так они , очищаются, только когда документ проводится 2 ( ДВА ) раза. про это я спрашивал.

Том 25.02.2013 10:37

Автор, юзай принудительно алгоритм из ОбработкаУдаленияПроведения().
Скорее всего ситуация возникает при перепроведении документа без отмены проведения, тогда регистры не обнуляются до начала процедуры проведения, а потом переписываются уже на результат.

BigBro 25.02.2013 12:06

из процедуры обработки проведения ломать результаты этой процедуры - да вы знаете толк в извращениях.
в (11) правильный ответ

specx 25.02.2013 12:44

12-BigBro >в обработкеУдаленияПроведения ничего нужного нет. там код по удалению партий товаров. а результаты процедуры я можно сказать не ломаю, а изменяю :). это же документированная функция - ОчиститьДвижения()- сама 1с ее активно применяет в типовых, но в начале проведения. тем более, что у меня случай когда часть проводко все же остается типовыми, то есть надо очистить движения только по товарам ( такая хотелка ). транзит только по товару, а задолженность клиента и по регистру и по провокдам остается.

Том 25.02.2013 13:27

СпецХ, то, что я описал выше имеет смысл в случае, если надо получить движение по регистру без учета движухи текущего документа, т.е. надо сначала очистить то что он насоздавал, а затем считать (бывает надо забежать по регистрам вперед). В снеговике проще - можно поменять флаг Записывать на Ложь, в 7ке уж лучше вычистить это на уровне алгоритма.

Том 25.02.2013 13:37

14+ последнее я написал - если нужно вычистить текущее создаваемое при проведении.

specx 25.02.2013 13:40

14-Том >не подскажешь тогда , как это сделать ( мне как раз и надо забежать по регистрам вперед ). может тогда и не надо этого что я сделал.

Том 25.02.2013 14:32

16 - вот простой вариант
Процедура ОбработкаПроведения()
ОчиститьДвижения("Регистр.Новый");
//чтоб считалось, что текущий документ уже не проведен

Рег = СоздатьОбъект("Регистр.Новый");

Рег.ВыбратьИтоги();
// - тут можно даты вписать

Пока Рег.ПолучитьИтог()=1 Цикл
Продолжить;
//здесь работаем с результатом
КонецЦикла;
.... и т.д.

specx 25.02.2013 16:21

17-Том >Спасибо, но это то чего мне как раз не хотелось делать, обрабатывать самому эти итоги...

Том 25.02.2013 17:08

Ну так, там вроде можно отборов напхать :)))
Можно чёрным запросом работать, но это уже ближе к черной магии

USSR 26.02.2013 03:46

Полный изврат, все сделано наоборот. В чем проблема завести специальный регистр "ТоварвВПути", по нему приходное движение и "надеть"требуемые проводки, затем возвратом все закрывать. И никаких упражнений с регистрами "а ля проктолог"и товар видно в регистре. Тем более, что комплексная - это конфигурация оперативного учета + натянутого на регистры бухгалтерского, а не наоборот

specx 26.02.2013 09:52

20-USSR >согласен насчет доп регистра - можно по нему доп отчеты делать . - а суммы проводок на транзит откуда брать ? или самому рисовать( не хочется изобретать велосипеды - тем более что типовая все это делает ) , или брать из механизма типовой , как я и сделал. весь смысл - чтобы убрать ( чтобы не было ) движений по остаткам и партиям , а бух проводки были.

USSR 26.02.2013 19:02

(21)Зачем рисовать? достаточно скопировать требуемые записи справочника хозоперации и подставить в него свой регистр

specx 25.04.2013 09:15

Кстати, докладываю. проблему свою все таки решил как мне надо ( обошел ). давно еще встречал не помню только кто автор идеи. вобщем, при записи документа возврата !!вызывается обработка которая закрывает первоначальный документ, затем я в ней анализирую есть ли требуемые движения регистра, если есть - то в обработке перепровожу изначальный док. ну и в закрытии возврата также прописано немного. Спасибо всем за отклики. могу тут код разместить.


Текущее время: 06:19. Часовой пояс GMT +3.