| 
			
			 | 
		#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"); | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А почему бы и нет? Что вас в таком алгоритме не устраивает?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Непонятно с точки зрения пользовтеля. Если я завожу новую строку между 10 и 11ой, например, значит, есть у меня на это причины; будь добра встать между 10ой и 11ой. В конце-концов, так необходимо видеть их в накладной. Для строк продажи такого не сделали, а вот для перемещений почему-то есть.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вы привели пример 
		
		
		
		
		
		
		
	Цитата: 
	
		
			"Line No." := TransLine2."Line No." + 10000;
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Mary
			 
 
			Непонятно с точки зрения пользовтеля. Если я завожу новую строку между 10 и 11ой, например, значит, есть у меня на это причины; будь добра встать между 10ой и 11ой. В конце-концов, так необходимо видеть их в накладной. Для строк продажи такого не сделали, а вот для перемещений почему-то есть.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 satir, уточните, плз., что Вы имеете в виду. Если я что-то неверно инерпретирую, подскажите что.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Хорошо, этот вариант можно рассмотреть. Вопрос переходит в следующий: на какие проблемы мы можем натолкнуться, закомментировав указанную ниже часть кода из TransferLine::OnInsert: Код: TransLine2.RESET;
TransLine2.SETFILTER("Document No.",TransHeader."No.");
IF TransLine2.FIND('+') THEN
  "Line No." := TransLine2."Line No." + 10000; | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Просто человек, писавший код в триггере OnInsert() (в части поиска номера последней строки в документе) не знал о свойстве формы AutoSplitKey.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			TransLine2.RESET; 
TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000;  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Вопрос переходит в следующий: на какие проблемы мы можем натолкнуться, закомментировав указанную ниже часть кода из TransferLine::OnInsert
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Сатир, если можете ответить за свои слова - объясните, пожалуйста, какие конкретно проблемы могут возникнуть, при комментировании вышеуказанного кода.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Дело в том, что строки в Transfer Line вставляются не только из формы !!! 
		
		
		
		
		
		
		
	Отгрузите 2 строки с товаром, а потом через Object Disigner посмотрите - в Transfer Line будет 4 строки. Не хочу копаться в коде, но мне кажется именно поэтому этот код прописан. Чтоб где-то написать INSERT(TRUE) и не заморачиваться  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			TransLine2.RESET; 
TransLine2.SETFILTER("Document No.",TransHeader."No."); IF TransLine2.FIND('+') THEN "Line No." := TransLine2."Line No." + 10000;  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			на форме не получим. AutoSplitKey. 
		
		
		
		
		
		
		
	Получим, возможно, при учете отгрузки, созданной из транзита  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Код: 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; | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Уважаемый satir! 
		
		
		
		
		
		
			На форме 5741 "Перемещение Заказ Субформа" во всем известном свойстве AutoSplitKey стоит значение Yes. В первичном ключе таблицы 5741 "Перемещение Строка" включено поле Line No. - Integer. Свойство AutoSplitKey как раз и отвечает за автоматическое присвоение целочисленному полю в первичном ключе нового значения. Попробуйте закомментировать указанные Марией строки кода и проверьте работу перемещения. Боюсь, что результат Вас удивит. ![]() Как раз с целью понимания смысла этих строк и был задан вопрос. А отправлять человека учить мат. часть и при этом в следующем же посте указывать на свою несостоятельность, как минимум, неэтично. 
				__________________ 
		
		
		
		
	Вот такие, брат, дела!  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
 
		
				__________________ 
		
		
		
		
	Вот такие, брат, дела!  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 |