|
16.04.2007, 11:45 | #1 |
Участник
|
Добрый день. Подскажите, пожалуйста, почему при добавлении новой строки в перемещение, она всегда становится последней? TransferLine::OnInsert() Код: TestStatusOpen; TransLine2.RESET; TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000; ReserveTransferLine.VerifyQuantity(Rec,xRec); DimMgt.InsertDocDim( DATABASE::"Transfer Line",DocDim."Document Type"::" ","Document No.","Line No.", "Shortcut Dimension 1 Code","Shortcut Dimension 2 Code"); |
|
16.04.2007, 12:11 | #2 |
Участник
|
А почему бы и нет? Что вас в таком алгоритме не устраивает?
|
|
16.04.2007, 12:19 | #3 |
Участник
|
Непонятно с точки зрения пользовтеля. Если я завожу новую строку между 10 и 11ой, например, значит, есть у меня на это причины; будь добра встать между 10ой и 11ой. В конце-концов, так необходимо видеть их в накладной. Для строк продажи такого не сделали, а вот для перемещений почему-то есть. |
|
16.04.2007, 12:43 | #4 |
Участник
|
Цитата:
Сообщение от Mary
Непонятно с точки зрения пользовтеля. Если я завожу новую строку между 10 и 11ой, например, значит, есть у меня на это причины; будь добра встать между 10ой и 11ой. В конце-концов, так необходимо видеть их в накладной. Для строк продажи такого не сделали, а вот для перемещений почему-то есть. |
|
16.04.2007, 12:53 | #5 |
Участник
|
Цитата:
Хорошо, этот вариант можно рассмотреть. Вопрос переходит в следующий: на какие проблемы мы можем натолкнуться, закомментировав указанную ниже часть кода из TransferLine::OnInsert: Код: TransLine2.RESET; TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000; |
|
16.04.2007, 12:40 | #6 |
Участник
|
Вы привели пример
Цитата:
"Line No." := TransLine2."Line No." + 10000;
|
|
16.04.2007, 12:50 | #7 |
Участник
|
satir, уточните, плз., что Вы имеете в виду. Если я что-то неверно инерпретирую, подскажите что. |
|
16.04.2007, 12:56 | #8 |
Участник
|
Просто человек, писавший код в триггере OnInsert() (в части поиска номера последней строки в документе) не знал о свойстве формы AutoSplitKey.
|
|
16.04.2007, 13:00 | #9 |
Участник
|
Цитата:
TransLine2.RESET;
TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000; |
|
16.04.2007, 13:06 | #10 |
Участник
|
|
|
16.04.2007, 13:11 | #11 |
Участник
|
Цитата:
Вопрос переходит в следующий: на какие проблемы мы можем натолкнуться, закомментировав указанную ниже часть кода из TransferLine::OnInsert
|
|
16.04.2007, 13:25 | #12 |
Участник
|
|
|
16.04.2007, 13:18 | #13 |
Участник
|
Цитата:
Сатир, если можете ответить за свои слова - объясните, пожалуйста, какие конкретно проблемы могут возникнуть, при комментировании вышеуказанного кода. |
|
16.04.2007, 13:57 | #14 |
Участник
|
Дело в том, что строки в Transfer Line вставляются не только из формы !!!
Отгрузите 2 строки с товаром, а потом через Object Disigner посмотрите - в Transfer Line будет 4 строки. Не хочу копаться в коде, но мне кажется именно поэтому этот код прописан. Чтоб где-то написать INSERT(TRUE) и не заморачиваться |
|
16.04.2007, 14:07 | #15 |
Участник
|
Цитата:
TransLine2.RESET;
TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000; |
|
16.04.2007, 14:14 | #16 |
Участник
|
на форме не получим. AutoSplitKey.
Получим, возможно, при учете отгрузки, созданной из транзита |
|
16.04.2007, 14:26 | #17 |
Участник
|
|
|
16.04.2007, 14:17 | #18 |
Участник
|
Код: IF "Line No." = 0 THEN BEGIN TransLine2.RESET; TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000; END; |
|
16.04.2007, 14:23 | #19 |
Участник
|
Проверил: и отгрузка и приемка работают без этого куска кода.
__________________
Вот такие, брат, дела! |
|
16.04.2007, 14:20 | #20 |
Участник
|
Уважаемый satir!
На форме 5741 "Перемещение Заказ Субформа" во всем известном свойстве AutoSplitKey стоит значение Yes. В первичном ключе таблицы 5741 "Перемещение Строка" включено поле Line No. - Integer. Свойство AutoSplitKey как раз и отвечает за автоматическое присвоение целочисленному полю в первичном ключе нового значения. Попробуйте закомментировать указанные Марией строки кода и проверьте работу перемещения. Боюсь, что результат Вас удивит. Как раз с целью понимания смысла этих строк и был задан вопрос. А отправлять человека учить мат. часть и при этом в следующем же посте указывать на свою несостоятельность, как минимум, неэтично.
__________________
Вот такие, брат, дела! |
|