![]() |
![]() |
![]() |
|
Интересная проблема с перемещние и расходом в одном документе | ☑ | ||
---|---|---|---|---|
0
Finex
08.10.04
✎
16:20
|
Значит так, есть конфа ТиС для Укр (1С 7.7). Стояла задача в том чтобы одновременно в Расх. Накл-й сделат и перемещение с другого склада (Указаного в строке)на склад указанный в шапке РН и списание его этого склада. То есть движение должно быть такое:
Кол-во до проведения на Скл1=0; РН со склада Скл1 в которой указано что товар перемещается со Скл2 (движения): - Скл2 Холодильник 1шт +Скл1 Холодильник 1шт -Скл1 Холодильник 1шт Вот так должно быть, НО проблема в том что при проведении РН новым документом то есть когда не делается временный рассчет итогов все нормально, делаются именно такие движения а при его перепроведении задним числом (неважно был он проведен или нет) движения по перемещению делаются, а последнее 3-е движение нет, даже ничего не пишет. Пробовал поддерживать временный рассчет в актуальном состоянии или рассчитывать регистры "ПО" а не "НА". Но ничего не получается, помогает только отключение временного расчета, тогда он все берет правильно. Я понимаю что как бы док-т еще не проведен до конца, а я хочу взять уже итоги учитывая его движения, но ведь проходит же этот прикол когда итоги берутся на ТА, то есть не рассчитываются. |
|||
1
F427
08.10.04
✎
16:23
|
расчет ПО видит то, чего он видеть не должен...
расчет НА этого не видит Если не делает движений при НА - см алгоритм... |
|||
2
Шапокляк
08.10.04
✎
16:25
|
Не очень понятна проблема. Вы во временном расчете что проверяете-то? Остатки на складе откуда списывать надо, что ли?
По-моему нужно при перепроведении рассчитывать На документ остатки на складе откуда перемещают и все. Если их хватает, то делать сразу два движения - перемещение и списание. Если в модуле подряд два движения описаны, то как второе может не выполниться??? |
|||
3
Finex
08.10.04
✎
17:25
|
Дело в том что процедура по регистру остатков простая, я там переделал. НО списание по партиям весьма сложно и не хочется его переписывать. Суть в чем, сначала идет списание и приходование как перемещение, то есть делается таблица по остатках по партиям. То есть остатки берутся 1 раз при перемещении и потом еще раз при расходе, так вот при последнем движеннии таблица партий пустая, то есть он не видит партии, если же временного рассчтеа не делатется, например при приведении нового документа со сдвигом ТА то все он видит и правильно списывает, т оесть при получении итогов без рассчета все нормально, но дже если сделать временный рассчте по ТА, то глюк, т оесть временный рассчет в любом случае бочинит.
|
|||
4
Finex
08.10.04
✎
17:30
|
По модулю идет так:
Процедура ОбработкаПроведения() ДвиженияОстатки(); ДвиженияПартииПерем();-- то есть сначала делаются все перемещения ДвиженияПартии(); а потом все расходы обычные КонецПроцедуры То есть я пршел к выводу что временный рассчте не видит движения сделанные этим же документом, несмолтря на оператор Рег.Актуальность(1) |
|||
5
Шапокляк
08.10.04
✎
17:38
|
Как-то не достигается понимание у нас и все тут.
Складские партии, да? Вся проблема-то как раз и состоит в том, что на момент временного расчета нет на складе откуда списываем таких партий. Если вы результаты временного расчета суете в ТЗ, то после первого движения нужно видоизменять таблицу, т.е. Движения перемещения - стандартная процедура по партиям, появление этих партий в таблице на складе списания - стандартная процедура списания. У Вас так? Можно иную схему воплотить в жизнь: Для перемещения стандартная процедура по партиям - запоминание в таблице движений регистров (их как бы пары - минус с одним складом и плюс с другим). Далее в таблице отыскиваются минусовые движения и делаются точно такие же минусовые движения, но со складом списания. Во загнула, да? В разговорном жанре попроще бы как-то вышло :-)) |
|||
6
Finex
08.10.04
✎
17:42
|
Да ДвиженияПартииПерем() стандартная процедура взятая из документа "Перемещение" а потом списывается стандартной процедурой самой РН. Насчет иной схемы, согласен, неплохо, Но хочется малой кровью, ведь видит же он эти движения без рассчета. Так подозреваю что тут глюк именно ВременногоРассчета.
|
|||
7
Шапокляк
08.10.04
✎
17:51
|
Да вот как раз и подозрения, что не видит он нифига. Проверить бы как-то...
|
|||
8
F427
08.10.04
✎
18:02
|
переписывай вторую процедуру.. там немного поправить надо...
|
|||
9
Finex
08.10.04
✎
23:59
|
Немного это в описаном мной случае, а когда скажем на скл1 есть 1 Шт , еще одну перемещаем (то есть у нас 2 отдельных строки)и списываем 2, то есть не все так просто, а еслибы еще 1С-ка обходила их все построчно, ан нет херячит все в сптисок значений и потом накладывает фильтры.
|
|||
10
F427
09.10.04
✎
07:13
|
если ты делаешь перемещение на СКЛ1, а затем списание с него - то списание может не увидеть остатков на СКЛ1... Добавть в таблицу остатков сделанное перемещение и аккуратно сверни ее... Ибо алгоритм списания проверяет остатки по таблице, в предположении, что каждый товар присутствует одной строкой...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |