|
Розница 2.0 Программно заполнить ТЧ док ПоступлениеТовара Не заполняется Количес | ☑ | ||
---|---|---|---|---|
0
planod
05.03.13
✎
17:18
|
Всем привет. Есть xml-файл, в котором хранится информация о поступлении товара. Содержимое этого файла необходимо преобразовать в документ поступление товара. Имеется такой код:
ТЗ = Новый ТаблицаЗначений;; ТЗ.Колонки.Добавить("Номенклатура"); ТЗ.Колонки.Добавить("Количество"); ТЗ.Колонки.Добавить("Коэффициент"); ТЗ.Колонки.Добавить("Цена"); ПутьКФайлу = "C:\Users\Администратор\Desktop\Перенос\Обработки\from77.xml"; Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьКФайлу); Пока Чтение.Прочитать() Цикл Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента и Чтение.Имя = "ДанныеДокумента" Тогда Пока Чтение.ПрочитатьАтрибут() Цикл Если Чтение.Имя = "Контрагент" Тогда Контрагент = Чтение.Значение; КонецЕсли; Если Чтение.Имя = "НомерДок" Тогда НомерДок = Чтение.Значение; КонецЕсли; Если Чтение.Имя = "ДатаДок" Тогда ДатаДок = Чтение.Значение; КонецЕсли; КонецЦикла; КонецЕсли; Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента и Чтение.Имя = "Номенклатура" Тогда НоваяСтрока = ТЗ.Добавить(); Пока Чтение.ПрочитатьАтрибут() Цикл Если Чтение.Имя = "Ном" Тогда НоваяСтрока.Номенклатура = Чтение.Значение; КонецЕсли; Если Чтение.Имя = "Количество" Тогда НоваяСтрока.Количество = Чтение.Значение; КонецЕсли; Если Чтение.Имя = "Коэффициент" Тогда НоваяСтрока.Коэффициент = Чтение.Значение; КонецЕсли; Если Чтение.Имя = "Цена" Тогда НоваяСтрока.Цена = Чтение.Значение; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; НовоеПоступление = Документы.ПоступлениеТоваров.СоздатьДокумент(); Если Справочники.Контрагенты.НайтиПоНаименованию(Контрагент) = Неопределено Тогда Сообщить("Не найден контрагент "+Контрагент); КонецЕсли; НовоеПоступление.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент).Ссылка; СтрокаДата = Сред(ДатаДок,0,4)+Сред(ДатаДок,6,2)+Сред(ДатаДок,9,2); НовоеПоступление.Дата = Дата(СтрокаДата); НовоеПоступление.Комментарий = "Перенесен из ТиС 7.7 за номером "+НомерДок; НовоеПоступление.Склад = Справочники.Склады.НайтиПоНаименованию("Склад"); НовоеПоступление.Организация = Справочники.Организации.НайтиПоНаименованию("ИП"); НовоеПоступление.Магазин = Справочники.Магазины.НайтиПоНаименованию("Магазин"); Для НомерСтроки = 0 По ТЗ.Количество() - 1 Цикл Попытка СтрокаТЧ = НовоеПоступление.Товары.Добавить(); СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТЗ[НомерСтроки].Номенклатура); СтрокаТЧ.Цена = ТЗ[НомерСтроки].Цена; СтрокаТЧ.Сумма = ТЗ[НомерСтроки].Количество*ТЗ[НомерСтроки].Цена; СтрокаТЧ.Количество = Число(ТЗ[НомерСтроки].Количество); Исключение Сообщить("Не найдена номенклатурная позиция!"); КонецПопытки; КонецЦикла; НовоеПоступление.Записать(); Сообщить("Создание документа завершено"); И вот тут получается ньюанс: в Табличной части не заполняется поле Количество. В чем я ошибся? |
|||
1
sapphire
05.03.13
✎
17:20
|
Если Чтение.Имя = "Количество" Тогда try НоваяСтрока.Количество = Число(Чтение.Значение); except endtry; КонецЕсли;
|
|||
2
sapphire
05.03.13
✎
17:21
|
(0) Неужели сложно догадаться, что Чтение.Значение скорее всего строка....
|
|||
3
planod
05.03.13
✎
17:24
|
(1)
СтрокаТЧ.Количество = Число(ТЗ[НомерСтроки].Количество); пытаюсь же преобразовать... |
|||
4
КонецЕсли
05.03.13
✎
17:25
|
Убери неразрывный пробел в строке с числом. СтрЗаменить.
|
|||
5
sapphire
05.03.13
✎
17:26
|
(3) ТЗ[НомерСтроки].Количество - если ТЗ типизирована, то нуль будет
|
|||
6
sapphire
05.03.13
✎
17:26
|
(4) в 77 НП нет вроде как
|
|||
7
Тарантул
05.03.13
✎
17:30
|
Если Чтение.Имя = "Количество" Тогда НоваяСтрока.Количество = Чтение.Значение; КонецЕсли;
Тип столбца "Количество" - число? Тогда и нулевое значение присвоится. смотрел что в таблице в этом столбце? |
|||
8
planod
05.03.13
✎
17:33
|
Поставил
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число")); Все равно количество не ставится.... |
|||
9
Тарантул
05.03.13
✎
17:35
|
(8) так хотя бы так попробуй:
Если Чтение.Имя = "Количество" Тогда НоваяСтрока.Количество = 0+Чтение.Значение; КонецЕсли; |
|||
10
planod
05.03.13
✎
17:36
|
Тип переменной - число, проверил с помощью ТипЗнч()
|
|||
11
Тарантул
05.03.13
✎
17:37
|
(10) Чтение.Значение - строка наверное
|
|||
12
planod
05.03.13
✎
17:38
|
(11) так я её сразу преобразую с помощью Число() по совету(1)
|
|||
13
Тарантул
05.03.13
✎
17:39
|
Если Чтение.Имя = "Количество"
условие выполняется? |
|||
14
planod
05.03.13
✎
17:42
|
(13) да, с помощью Сообщить() значение количество выводится...
|
|||
15
sapphire
05.03.13
✎
17:44
|
(14) Преобразовать строку в число как тебе и было предложено в (1) религия не позволяет?
|
|||
16
planod
05.03.13
✎
17:45
|
(15) читай (12)
|
|||
17
sapphire
05.03.13
✎
17:47
|
(16) Код?
|
|||
18
planod
05.03.13
✎
17:49
|
(17)
Если Чтение.Имя = "Количество" Тогда НоваяСтрока.Количество = 0+Число(СтрЗаменить(Чтение.Значение,Символы.НПП,"")); КонецЕсли; |
|||
19
sapphire
05.03.13
✎
17:51
|
(18) В условие заходит?
Если Чтение.Имя = "Количество" Тогда НоваяСтрока.Количество =0+Число(СтрЗаменить(Чтение.Значение,Символы.НПП,"")); // Встань сюда отладчиком КонецЕсли; |
|||
20
planod
05.03.13
✎
17:58
|
(19) да заходит, спасибо большое за советы и терпение, проблема оказалось в логике документа... У табличной части два реквизита: "Количество" и "КоличествоУпаковок".... На форме в табличной части заголовок висит Количество, а отражается значение реквизита "КоличествоУпаковок".....
|
|||
21
sapphire
05.03.13
✎
18:01
|
(20) Вот видишь...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |