|
![]() |
#1 |
Moderator
|
Цитата:
Сообщение от miklenew
![]() fed, а можно спросить, может разбирался последний параметр в этом методе childBuffer он для чего.
static InventMovement constructNoThrow(Common buffer,boolean transferReceipt = false,Common childBuffer = NULL) Чё-то полез смотреть, он практически нигде не используется, а там где используется не разрушив мозг я не смог понять что это. Мысль была похоже красивая какая-то, но смысла так и не понял. Спасибо. По понятным причинам, подход жизнеспособен и применим только в тех видах складских движений, в которых допустимо частичное движение. Если мы все складское движение делаем сразу на полное количество - подход не сработает. Последний раз редактировалось fed; 16.05.2008 в 16:37. |
|
|
За это сообщение автора поблагодарили: miklenew (4). |
![]() |
#2 |
Участник
|
Спасибо fed.
Помогло ключевое слово “дочерние”. Теперь мозги встали на место. ![]() Если взять к примеру заказ. Смысл параметр childbuffer имеет только если включена регистрация отгрузочной накладной. При обычной разноске документа по строке сначала изменяется строка, изменение строки приводит к изменению проводок. А документ создаётся как бы рехешем(тавар вдогонку), непосредственно никак не влияя на проводки. С salesPickingLisJournalLine дело обстоит по другому. При создании отгрузочной накладной (если включена регистрация. Если не включена, то всё происходит как с обычным документом по строке заказа) не происходит изменение строки и проводки. Просто происходит рождение шариков в буферной зоне salesPickingLisJournalLine при этом в строках документа и в проводках осталось всё по прежнему и только при регистрации отгрузочной накладной эти шарики перетекая начинают влиять на строку заказа изменяя проводки. Поэтому и нужно главный буфер (salesLine) и дочерний буфер (salesPickingLisJournalLine), чтобы слепить эти шарики вместе, и получить другие шарики. Последний раз редактировалось miklenew; 17.05.2008 в 09:30. |
|
![]() |
#3 |
MCITP
|
![]() Цитата:
![]() Проводки меняются, там прописываются поля TransChildType и TransChildRefId. И в случае когда эти поля прописаны, работать с этим "мувментом" можно только с использованием "ChildBuffer". Резервировать, например - не зря ж там в классах InventUpdate везде условия "понатыканы" типа: X++: inventTrans.TransChildType == movement.transChildType() && inventTrans.TransChildRefId == movement.transChildRefId() && X++: movement = InventMovement::construct(inventTrans);
if (movement.childBuffer().RecId)
{
buffer = movement.childBuffer();
movement = InventMovement::construct(buffer);
} Сорри что старую тему поднял, просто случайно наткнулся...
__________________
Zhirenkov Vitaly |
|
Теги |
производство, склад, crm2011 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|