Не загружает количество в документ из exсel

1. user1928830 06.02.24 10:42 Сейчас в теме
всем привет .помогите найти причину не грузит в таб часть документа количество


оп=	Об.Материалы.Добавить(); 			
		Оп.Номенклатура =Справочники.Номенклатура.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст);			
		Оп.Упаковка  =  Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);  
		
		
	    кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 3).ТекущаяОбласть.Текст);
 		
		Если кол=0 Тогда 
			Продолжить;
		КонецЕслИ;
		
		
		Оп.Количество=  (Кол);  
		
		Сообщить("Добавлен в документ "+Об);
	
	 		//сообщить(оп.Количество);
	
		    об.Записать();
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. yispepotri 06.02.24 11:07 Сейчас в теме
Как всегда формат вашего вопроса сложен для понимания
(1)мое предположение

в этой строке вы передаете число текстом, а в ТЧ должно быть Число. Необходимо преобразовать в Число.
кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 3).ТекущаяОбласть.Текст);
3. user1928830 06.02.24 11:11 Сейчас в теме
(2) вот так делаю ДанныеФайла.Колонки.Добавить("Кол", Новый ОписаниеТипов("Число"));


на число( кол) ругается не могу преобразовать .
4. yispepotri 06.02.24 11:13 Сейчас в теме
(3)
достаточно так преобразовывать
нЧисло = Число("125");


не сразу увидел, а почему ругается?
5. user1928830 06.02.24 11:19 Сейчас в теме
(4)"applicationErrorInfo": {
"errors": [
[
"{ВнешняяОбработка.Обработка1.Форма.Форма.Форма(91)}: Преобразование значения к типу Число не может быть выполнено",
[
"ScriptRuntimeError",
"ScriptUseError"
],
"",
""
]
],
"stack": [
[
"ВнешняяОбработка.Обработка1.Форма.Форма.Форма",
110,
"\u0009Команда1НаСервере();"
],
[
"ВнешняяОбработка.Обработка1.Форма.Форма.Форма",
91,
"\u0009\u0009Оп.Количество= Число(Кол); "
]
],
"stackHash": "8580F01052F141048251812548E38E1F"
}
9. spacecraft 06.02.24 12:03 Сейчас в теме
(1)
кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 3).ТекущаяОбласть.Текст);

Если получаете Тест и пытаетесь его привести к числу, то должны учитывать что в Текст может быть неразрывный пробел для чисел более 999. Что не даст прямого приведения к типу Число.
11. user1928830 06.02.24 12:05 Сейчас в теме
(9)да уже прочитал про это . а как быть ? как тут обойти это
12. spacecraft 06.02.24 12:06 Сейчас в теме
(11) самое простое это читать по значению.
Ну, или
Кол = СтрЗаменить(Кол, Символы.НПП, "");
13. user1928830 06.02.24 12:14 Сейчас в теме
да обработка даже 1 в количество записать не может . дело тут в чем то другом .
19. yispepotri 06.02.24 12:53 Сейчас в теме
(13) сам реквизит Количество ТЧ какого типа? точно количество
20. user1928830 06.02.24 13:03 Сейчас в теме
(19)нашел .что есть количество , есть количество упаковок . колонка количество - количество упаковок

попробовал записать 1 . прокатило . теперь пробую из ексель записать в документ

есть подозрение .что там пересчет идет в упаковки
21. yispepotri 06.02.24 13:08 Сейчас в теме
(20) Скорее всего он и записывает, просто вы добавляете в один реквизит, а на форме выводится другой
22. user1928830 06.02.24 13:44 Сейчас в теме
подскажите как тут проверку сделать ?

Кол = СтрЗаменить(Кол, Символы.НПП, "");


более 1000 симолов
6. yispepotri 06.02.24 11:20 Сейчас в теме
(5) отладкой посмотрите, значение Кол какого типа, возможно Неопределено
7. user1928830 06.02.24 11:25 Сейчас в теме
(6) всегда числовой . но выкидывает с ошибкой
8. yispepotri 06.02.24 11:53 Сейчас в теме
(7)без преобразование в Число, имеет тип Число?
10. user1928830 06.02.24 12:04 Сейчас в теме
14. anton13m 4 06.02.24 12:33 Сейчас в теме
(10)
Ну скопируй сюда, что там показывается. Это тебе нужно или нам отгадывать?
Тебе уже сказали, не любую строку можно к числу привести.
15. пользователь 06.02.24 12:34
Сообщение было скрыто модератором.
...
16. пользователь 06.02.24 12:37
Сообщение было скрыто модератором.
...
17. пользователь 06.02.24 12:38
Сообщение было скрыто модератором.
...
18. пользователь 06.02.24 12:45
Сообщение было скрыто модератором.
...
23. user1928830 06.02.24 13:58 Сейчас в теме
(12) тут если число больше 999 она вылетает с ошибкой . сделал проверку

не срабатывает

Кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 2).ТекущаяОбласть.Текст);

Кол = СтрЗаменить(Кол, Символ(160),"");
Оп.КоличествоУпаковок=Число(Кол);


(8)
24. user1928830 06.02.24 13:59 Сейчас в теме
вылетает если число больше 999 кто знает как решить?

такое не помогло

Кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 2).ТекущаяОбласть.Текст);

Кол = СтрЗаменить(Кол, Символ(160),"");
Оп.КоличествоУпаковок=Число(Кол);
25. yispepotri 06.02.24 14:05 Сейчас в теме
(24)может длина реквизита ограничена в 3 символа? увеличить ее
26. user1928830 06.02.24 14:07 Сейчас в теме
(25) пробую ,вообщем 1000 и выше не пропускает остальные все норм зашло
27. user1928830 06.02.24 14:10 Сейчас в теме
(25)длина у числа 15 .тут дело в преобразовании ,
28. yispepotri 06.02.24 14:12 Сейчас в теме
(27) так если ставить свое значение, не из екселя, выше 1000, он проставляет?
29. user1928830 06.02.24 14:14 Сейчас в теме
(28)да в документе он проставляет . вручную
но загрузить 1000 он не хочет все остальные ок до 1000
30. yispepotri 06.02.24 14:16 Сейчас в теме
(29)не совсем понятно, что вы имеете ввиду
31. user1928830 06.02.24 15:01 Сейчас в теме
(30)числа .которые больше 999 не загружает
32. yispepotri 06.02.24 15:05 Сейчас в теме
(31)пришлите скриншот отладки в значении которое передается и скрин самого реквизита ТЧ Количество какие там значения стоят
33. user1928830 06.02.24 15:09 Сейчас в теме
(32)1 с 1000 как 0 видит в отладчике
34. yispepotri 06.02.24 15:10 Сейчас в теме
36. anton13m 4 06.02.24 15:12 Сейчас в теме
(34)
У него пробел в строке "1 000", может и догадается его тоже заменять.
38. user1928830 06.02.24 15:20 Сейчас в теме
(36)а что не видно .что я его убираю?

оп=	Об.Материалы.Добавить(); 			
		Оп.Номенклатура =Справочники.Номенклатура.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст);			
		Оп.Упаковка  =  Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст);  
		
		 Кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 2).ТекущаяОбласть.Текст); 
		 
		 Кол = СтрЗаменить(Кол, Символ(160),"");
		 
		 		 
		 
	   	Оп.КоличествоУпаковок= Кол; 
		Сообщить(Оп.Номенклатура);
		сообщить( кол );
Показать
39. yispepotri 06.02.24 15:22 Сейчас в теме
(38)покажите пожалуйста 2 скриншота в двух точках, Кол = из екселя и Кол= замена пробелов, какие там значения
40. user1928830 06.02.24 15:23 Сейчас в теме
(36)
(39) не дает преобразовать в число 1000
Прикрепленные файлы:
41. yispepotri 06.02.24 15:24 Сейчас в теме
(40) убрать точки
Кол = СтрЗаменить(Кол, ".","");


и преобразовать в Число
44. anton13m 4 06.02.24 15:28 Сейчас в теме
(41)
суть я думаю вы поняли

Да вы оптимист, ему в самом начале эту идею дали, как видно, не особо и понял.
45. user1928830 06.02.24 15:29 Сейчас в теме
(44)в самом начале эту идею не давали не придумывайте .
47. anton13m 4 06.02.24 15:31 Сейчас в теме
(45)
эту идею не давали

В 9 и 12 сообщениях что было?
48. user1928830 06.02.24 15:32 Сейчас в теме
(47)кол= (табДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0;")+"C" + 3).ТекущаяОбласть.Текст);

Если получаете Тест и пытаетесь его привести к числу, то должны учитывать что в Текст может быть неразрывный пробел для чисел более 999. Что не даст прямого приведения к типу Число.
49. yispepotri 06.02.24 15:33 Сейчас в теме
(44)пробел убрать предлагали, точку не нашел, если не прав, скажите номер коммента
50. anton13m 4 06.02.24 15:41 Сейчас в теме
(49)
пробел убрать предлагали

Так не в точке дело, с самого начала ему сказали, что в строке не должно быть лишних символов, хоть пробел, хоть неразрывный пробел.
51. user1928830 06.02.24 15:41 Сейчас в теме
52. yispepotri 06.02.24 15:45 Сейчас в теме
(51) мой гов..вариант))

Кол = СтрЗаменить(Кол, ",","");
Кол = Число(СтрЗаменить(Кол, ".",","));


53. anton13m 4 06.02.24 15:48 Сейчас в теме
(51)
В 1000 нет в 1 000 есть, а в 1.000 есть точка, а в 1,000 есть запятая, а еще есть 1е3.
В общем, удачи тебе в твоих начинаниях.
54. user1928830 06.02.24 15:50 Сейчас в теме
(53)в каких начинаниях ? я с 2000 годов .в 1с

и что в 1,000 есть запятая в 1с она тоже есть на том же месте .что теперь?
42. anton13m 4 06.02.24 15:25 Сейчас в теме
(38)
а что не видно .что я его убираю?

Не видно.
Символ с кодом 160 и символ пробел " " это разные символы.
43. user1928830 06.02.24 15:26 Сейчас в теме
(42)ну эту проверку тут предложили хотя она с " " один фиг .
46. anton13m 4 06.02.24 15:29 Сейчас в теме
(43)
ну эту проверку тут предложили

Ну так сравните коды символов, которые вы заменяете и какие есть в строке
Символ(160)≠Символ(32)
35. user1928830 06.02.24 15:12 Сейчас в теме
лови
Прикрепленные файлы:
37. yispepotri 06.02.24 15:14 Сейчас в теме
(35)так Количество в этой точке остановы вы еще не заполнили, естественно оно 0 будет равно
55. user1928830 06.02.24 16:17 Сейчас в теме
решение
		 Кол = СтрЗаменить(Кол, ",", "");		 
		 
	   	Оп.КоличествоУпаковок=(кол); 
		Сообщить(Оп.Номенклатура);
		сообщить( кол );
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот