AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.04.2007, 11:45   #1  
Mary is offline
Mary
Участник
 
45 / 10 (1) +
Регистрация: 27.02.2004

Добрый день.
Подскажите, пожалуйста, почему при добавлении новой строки в перемещение, она всегда становится последней?

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  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
А почему бы и нет? Что вас в таком алгоритме не устраивает?
Старый 16.04.2007, 12:19   #3  
Mary is offline
Mary
Участник
 
45 / 10 (1) +
Регистрация: 27.02.2004

Непонятно с точки зрения пользовтеля.
Если я завожу новую строку между 10 и 11ой, например, значит, есть у меня на это причины; будь добра встать между 10ой и 11ой. В конце-концов, так необходимо видеть их в накладной.
Для строк продажи такого не сделали, а вот для перемещений почему-то есть.
Старый 16.04.2007, 12:40   #4  
satir is offline
satir
Участник
Аватар для satir
 
77 / 10 (1) +
Регистрация: 09.06.2006
Вы привели пример
Цитата:
"Line No." := TransLine2."Line No." + 10000;
Может стоит посмотреть вимательнее на код?
Старый 16.04.2007, 12:43   #5  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Цитата:
Сообщение от Mary Посмотреть сообщение

Непонятно с точки зрения пользовтеля.
Если я завожу новую строку между 10 и 11ой, например, значит, есть у меня на это причины; будь добра встать между 10ой и 11ой. В конце-концов, так необходимо видеть их в накладной.
Для строк продажи такого не сделали, а вот для перемещений почему-то есть.
а вы ключ новый добавте для таблицы Transfer Line и объясните пользователям как пользоваться сортировкой в строковой части документа.
Старый 16.04.2007, 12:50   #6  
Mary is offline
Mary
Участник
 
45 / 10 (1) +
Регистрация: 27.02.2004

satir, уточните, плз., что Вы имеете в виду. Если я что-то неверно инерпретирую, подскажите что.
Старый 16.04.2007, 12:53   #7  
Mary is offline
Mary
Участник
 
45 / 10 (1) +
Регистрация: 27.02.2004
Цитата:
Сообщение от balashov Посмотреть сообщение
а вы ключ новый добавте для таблицы Transfer Line и объясните пользователям как пользоваться сортировкой в строковой части документа.

Хорошо, этот вариант можно рассмотреть.
Вопрос переходит в следующий: на какие проблемы мы можем натолкнуться, закомментировав указанную ниже часть кода из TransferLine::OnInsert:
Код:
TransLine2.RESET;
TransLine2.SETFILTER("Document No.",TransHeader."No.");
IF TransLine2.FIND('+') THEN
  "Line No." := TransLine2."Line No." + 10000;
Старый 16.04.2007, 12:56   #8  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Просто человек, писавший код в триггере OnInsert() (в части поиска номера последней строки в документе) не знал о свойстве формы AutoSplitKey.
Старый 16.04.2007, 13:00   #9  
satir is offline
satir
Участник
Аватар для satir
 
77 / 10 (1) +
Регистрация: 09.06.2006
Цитата:
TransLine2.RESET;
TransLine2.SETFILTER("Document No.",TransHeader."No.");
IF TransLine2.FIND('+') THEN
"Line No." := TransLine2."Line No." + 10000;
Видно, что ищется последняя запись и к найденному номеру строки прибавляется 10000. -> Получаем строку с номером больше последней на 10000. Посмотрите ключ (первый) к таблице и вам все станет ясно.
Старый 16.04.2007, 13:06   #10  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от satir Посмотреть сообщение
Видно, что ищется последняя запись и к найденному номеру строки прибавляется 10000. -> Получаем строку с номером больше последней на 10000. Посмотрите ключ (первый) к таблице и вам все станет ясно.
Так ей и так все ясно ) Она не понимает почему так..
Старый 16.04.2007, 13:11   #11  
satir is offline
satir
Участник
Аватар для satir
 
77 / 10 (1) +
Регистрация: 09.06.2006
Цитата:
Вопрос переходит в следующий: на какие проблемы мы можем натолкнуться, закомментировав указанную ниже часть кода из TransferLine::OnInsert
Хреново будет, да простят меня читающие. Лучше, если вы пойдете какие-нибудь курсы или сдадите тест по программингу в Navision.
Старый 16.04.2007, 13:18   #12  
Mary is offline
Mary
Участник
 
45 / 10 (1) +
Регистрация: 27.02.2004
Цитата:
Сообщение от satir Посмотреть сообщение
Хреново будет, да простят меня читающие. Лучше, если вы пойдете какие-нибудь курсы или сдадите тест по программингу в Navision.

Сатир, если можете ответить за свои слова - объясните, пожалуйста, какие конкретно проблемы могут возникнуть, при комментировании вышеуказанного кода.
Старый 16.04.2007, 13:25   #13  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от satir Посмотреть сообщение
Хреново будет, да простят меня читающие. Лучше, если вы пойдете какие-нибудь курсы или сдадите тест по программингу в Navision.
А что именно будет хреново? А то я 3 года с нави, а не знаю, где и что поломается.. Объясните мне. Персонально. Сатир.
Старый 16.04.2007, 13:57   #14  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Дело в том, что строки в Transfer Line вставляются не только из формы !!!
Отгрузите 2 строки с товаром, а потом через Object Disigner посмотрите - в Transfer Line будет 4 строки.

Не хочу копаться в коде, но мне кажется именно поэтому этот код прописан. Чтоб где-то написать INSERT(TRUE) и не заморачиваться
Старый 16.04.2007, 14:07   #15  
satir is offline
satir
Участник
Аватар для satir
 
77 / 10 (1) +
Регистрация: 09.06.2006
Цитата:
TransLine2.RESET;
TransLine2.SETFILTER("Document No.",TransHeader."No.");
IF TransLine2.FIND('+') THEN
"Line No." := TransLine2."Line No." + 10000;
Удаляем этот код -> Получаем первый раз сторку с "Line No." = 0, первый раз это пройдет, если нет в данном документе номера строки = 0, второй - получим error по ключу. При условии, конечно, что вы не вписываете номер строки вручную.
Старый 16.04.2007, 14:14   #16  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
на форме не получим. AutoSplitKey.

Получим, возможно, при учете отгрузки, созданной из транзита
Старый 16.04.2007, 14:17   #17  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Код:
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:20   #18  
Yuriy is offline
Yuriy
Участник
 
150 / 10 (1) +
Регистрация: 25.02.2003
Адрес: Москва
Уважаемый satir!
На форме 5741 "Перемещение Заказ Субформа" во всем известном свойстве AutoSplitKey стоит значение Yes. В первичном ключе таблицы 5741 "Перемещение Строка" включено поле Line No. - Integer. Свойство AutoSplitKey как раз и отвечает за автоматическое присвоение целочисленному полю в первичном ключе нового значения. Попробуйте закомментировать указанные Марией строки кода и проверьте работу перемещения. Боюсь, что результат Вас удивит.
Как раз с целью понимания смысла этих строк и был задан вопрос.
А отправлять человека учить мат. часть и при этом в следующем же посте указывать на свою несостоятельность, как минимум, неэтично.
__________________
Вот такие, брат, дела!
Старый 16.04.2007, 14:23   #19  
Yuriy is offline
Yuriy
Участник
 
150 / 10 (1) +
Регистрация: 25.02.2003
Адрес: Москва
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Код:
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:26   #20  
Mary is offline
Mary
Участник
 
45 / 10 (1) +
Регистрация: 27.02.2004
Цитата:
Сообщение от randrews Посмотреть сообщение
на форме не получим. AutoSplitKey.

Получим, возможно, при учете отгрузки, созданной из транзита

Попробовала. И частичные отгрузки и приемки нескольких строк. Работает корректно..
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:37.