| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Фильтрую справочник Товары по полю "Общий Товарный Но.": 
		
		
		
		
		
		
		
	Item.RESET; Item.SETFILTER(Item."Common Item No.",FORMAT(ItemNo)); IF Item.FIND('-') THEN BEGIN ..... Когда ItemNo (тип Code 40 - так же как и поле "Common Item No.") содержит хотя бы один нецифровой символ - все ок. Но когда там число - фильтр не работает. Кто-нибудь может помочь? Заранее благодарю.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от WhiteSwan
			 
 
			Фильтрую справочник Товары по полю "Общий Товарный Но.": 
		
	Item.RESET; Item.SETFILTER(Item."Common Item No.",FORMAT(ItemNo)); IF Item.FIND('-') THEN BEGIN ..... Когда ItemNo (тип Code 40 - так же как и поле "Common Item No.") содержит хотя бы один нецифровой символ - все ок. Но когда там число - фильтр не работает. Кто-нибудь может помочь? Заранее благодарю. Item.SETFILTER(Item."Common Item No.",'%1',ItemNo); не поможет?  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от WhiteSwan
			 
 
			Фильтрую справочник Товары по полю "Общий Товарный Но.": 
		
	Item.RESET; Item.SETFILTER(Item."Common Item No.",FORMAT(ItemNo)); IF Item.FIND('-') THEN BEGIN ..... Когда ItemNo (тип Code 40 - так же как и поле "Common Item No.") содержит хотя бы один нецифровой символ - все ок. Но когда там число - фильтр не работает. Кто-нибудь может помочь? Заранее благодарю. Кроме того непонятно, зачем FORMAT(ItemNo), если ItemNo - это Code 40?  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Item.SETRANGE(Item."Common Item No.",ItemNo);
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			К сожалению, ни один из предложенных способов не помогает. Может каким-то образом сказывается, что данные в переменную ItemNo считываются из Excel? Уточню код: 
		
		
		
		
		
		
		
	ExcelBuffer.ReadSheet; ... IF ExcelBuffer.GET(r, 2) THEN EVALUATE(ItemNo,ExcelBuffer."Cell Value as Text"); Item.RESET; Item.SETFILTER(Item."Common Item No.",FORMAT(ItemNo)); IF Item.FIND('-') THEN BEGIN ... ItemNo - это глобальная переменная в рамках объекта Report.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Напиши так 
		
		
		
		
		
		
		
	Код: Item.RESET;
Item.SETFILTER(Item."Common Item No.",FORMAT(ItemNo));
Item.FIND('-'); | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я бы еще попробовал дополнить строку 
		
		
		
		
		
		
		
	EVALUATE(ItemNo,ExcelBuffer."Cell Value as Text"); заменив ее на EVALUATE(ItemNo,DELCHR(' ','<',ExcelBuffer."Cell Value as Text")); дабы отсечь возможные ведущие пробелы в ItemNo.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Мне кажется, Nav интерпретирует полученное из Excel значение как число, а не как строку, хотя ItemNo - это Code 40. 
		
		
		
		
		
		
		
	В дебаггере можно видеть, что значение ItemNo = 5 409 (отображается с пробелом после цифры 5, как будто это тысячи). Удаление пробелов с помощью DELCHR не помогло.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			--дубль--
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Пиши так: Код: Item.RESET;
Item.SETrange(Item."Common Item No.",FORMAT(ItemNo,0,1));
Item.FIND('-');Код: Item.RESET;
IF ExcelBuffer.GET(r, 2) THEN BEGIN
  Item.SETrange(Item."Common Item No.",ExcelBuffer."Cell Value as Text");
  Item.FIND('-');
  ...
end; | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Storkich
			 
 
			Цитата: 
	
Пиши так: Код: Item.RESET;
Item.SETrange(Item."Common Item No.",FORMAT(ItemNo,0,1));
Item.FIND('-');Код: Item.RESET;
IF ExcelBuffer.GET(r, 2) THEN BEGIN
  Item.SETrange(Item."Common Item No.",ExcelBuffer."Cell Value as Text");
  Item.FIND('-');
  ...
end; 
		 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В том то и дело, что в Excel все чисто - четыре последовательных символа '5409'. Это Nav придумывает что-то своё.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Можно еще попробовать FORMAT(Value,0,2); в куске кода предложенном выше.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
"Cell Value as Text" := DELCHR(FORMAT(XlWrkSht.Range(xlColID + xlRowID).Value),'<',' '); на "Cell Value as Text" := DELCHR(FORMAT(XlWrkSht.Range(xlColID + xlRowID).Value, 0, 1),'<',' ');  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Milk
			 
 
			Можно попробовать в таблице Excel Buffer (если Вы пользуетесь ей) в функции ReadSheet заменить строчку 
		
	"Cell Value as Text" := DELCHR(FORMAT(XlWrkSht.Range(xlColID + xlRowID).Value),'<',' '); на "Cell Value as Text" := DELCHR(FORMAT(XlWrkSht.Range(xlColID + xlRowID).Value, 0, 1),'<',' '); И так, чтоб легче жилось, в панели управления, в регионалных настройках, в настройке форматов чисел, удали разделитель разрядов и вставь там пробел.  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			аГа, по-умолчанию в региональных настройках стоит 255-й символ. Его замена на пробел решит ваши проблемы. Или удалять все 255-е символы кодом.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |