Имя: Пароль:
1C
1С v8
COMObject и неправильное представление\преобразование числа?
0 НаборДанных
 
21.02.15
12:23
Здравствуйте!
Что-то торможу, подмогните, кто чем может:
http://prntscr.com/67w7ye
Суть:
Подключаюсь к другой базе по COM, пытаюсь записать данные в РС Адресный классификатор, остальное понятно из картинки.
1 НаборДанных
 
21.02.15
12:25
Строка ЗаписьАдреса.Код = КлассификаторАдресов.Область(Сч, 1, Сч, 1).Текст; до скрина выглядела как ЗаписьАдреса.Код = Число(КлассификаторАдресов.Область(Сч, 1, Сч, 1).Текст);
Результат там ровно такой-же.
2 НаборДанных
 
21.02.15
19:25
111
3 Cyberhawk
 
21.02.15
19:28
Что тебя смущает-то на картинке в подчеркнутом красным?
4 Сергиус
 
21.02.15
19:31
(0)КлассификаторАдресов это макет насколько я понимаю..ты его получаешь на стороне источника COM соединения?
5 НаборДанных
 
21.02.15
19:35
(3)То, что из макета я достаю одно значение, а присваивается по итогу другое.
(4) Нет макет у меня во внешней обработке.
6 НаборДанных
 
21.02.15
19:38
Я так понял, уперся в ограничения типа вариант?
7 Сергиус
 
21.02.15
19:41
(6)А почему ты ЗаписьАдреса.Код присваиваешь строку? Делай
ЗаписьАдреса.Код = Число(..)
8 Cyberhawk
 
21.02.15
19:42
"из макета я достаю одно значение" покажи на картинке
9 НаборДанных
 
21.02.15
19:44
(7)Строка ЗаписьАдреса.Код = КлассификаторАдресов.Область(Сч, 1, Сч, 1).Текст; до скрина выглядела как ЗаписьАдреса.Код = Число(КлассификаторАдресов.Область(Сч, 1, Сч, 1).Текст);
Результат там ровно такой-же.

(8)Ну на картинке и видно, что, даже не в макете, в файле, одно значение, а после присваивания другое.
10 НаборДанных
 
21.02.15
19:44
(9)- в макете* все же
11 Cyberhawk
 
21.02.15
19:45
(9) Блин, подчеркни или ткни - где увидеть два разных значения-то?
12 Cyberhawk
 
21.02.15
19:45
Я вижу дважды одно и то же число на картинке
13 Cyberhawk
 
21.02.15
19:46
А, дошло
14 Рэйв
 
21.02.15
19:46
(0)Несмотря на то, что простые типы свободна ходят по COM..
Лучше бы их через несколько точек не брать напрямую, а присваивать предварительно переменной. Может поможет:-)
15 НаборДанных
 
21.02.15
19:47
(11) Бляха муха, ну что уже подчеркивать то?
9 900 000 000 000 001 000 000 000
9 900 000 000 000 000 000 000 000
16 Рэйв
 
21.02.15
19:47
не факт конечно, но ..
17 НаборДанных
 
21.02.15
19:47
(14)Испробовано, не помогло.
18 НаборДанных
 
21.02.15
19:49
Там есть иные значения типа:
2 200 000 000 000 000 000 000 000
2 300 000 000 000 000 000 000 000
Оо видимо округление хз из чего идет.... платформа .106
19 Cyberhawk
 
21.02.15
19:49
1. А если коду записи адреса присваивать в обертке "Число" - тоже единичка посередине будет?
2. Если точку останова поставить сразу после строки, где присваивается "Код", картинка не изменится?
20 НаборДанных
 
21.02.15
19:52
(19)
1 - см(0) и (9)
2 - Нет не изменится, там и переменная введена, все же осле присваивания изменяется числ.
21 НаборДанных
 
21.02.15
19:58
22 НаборДанных
 
21.02.15
19:59
В общем, вопрос, кто - то из многоуважаемых all ставил себе задачу автоматизации процесса обновления кладр'а на 100500 _ТИПОВЫХ_ _ФАЙЛОВЫХ_ базах? Как решали?
23 Cyberhawk
 
21.02.15
20:03
А не через СОМ все нормально отрабатывает в целевой инфобазе?
24 Cyberhawk
 
21.02.15
20:03
(можешь скинуть обработку с присвоением кода - проверю у себя)
25 НаборДанных
 
21.02.15
20:05
(23)Да конечно, это перенесенная во внешку загрузка Кладр.
(24) Держите https://dl.dropboxusercontent.com/u/37577359/ВОЗагрузкаАдресногоКлассификатора.epf
26 Cyberhawk
 
21.02.15
20:49
У меня такой же косяк (8.3.5.1248, 8.2.16.352). В партнерке дан ответ, что это косяк СОМ-технологии и даны пути обхода: https://partners.v8.1c.ru/forum/topic/531252
27 НаборДанных
 
21.02.15
21:14
(26)Сейчас временно нет доступа в партнерку, сделай скрин всей страницы fireshot'ом и выложи в открытую плиз.
28 НаборДанных
 
21.02.15
21:15
Или тут запили ответ плиз!
29 Сергиус
 
21.02.15
22:29
Автор, проверил у себя - в табло тоже отображался код с единичкой. Но когда после этого зашел в удаленную базу, там был нормальный код с ноликами. У меня такое ощущение, что это именно проблема отображения в табло, а реально записывается нормальное число.
30 Hmster
 
21.02.15
23:23
(0) я тоже с такой проблемой давно столкнулся
v8: Передача больших чисел через ComConnector.
проблема в том что в данном случае 1С работает с очень большими числами, а вот винда такие большие числа не поддерживает.
я преобразовывал в строку и передавал строку, коннектор уже сам преобразовывает в число.
31 Torquader
 
22.02.15
00:12
В OLE по-умолчанию, используется тип double - у него точность 17 знаков, так что если число имеет больше знаков, то нужно его передавать как строку - иначе они потеряются.
Понятно, что есть decimal, currency и big-int, но их поддержку никто не обещал, так как им было просто лень выбирать тип хранения от точности числа.
32 DirecTwiX
 
22.02.15
00:28
(22) Я ставил. Был такой же косяк... Ответ в (31)
33 Cyberhawk
 
22.02.15
05:45
(28) https://www.dropbox.com/s/3z2e4o73t8y65b9/FireShot%20Capture%20-%20Платформа%20-%7D%20Проблемы%20при%20обработ_%20-%20https___partners.v8.1c.ru_forum_topic_531252.png?dl=0
Обрати внимание на то, что большинство тут толкуют о передаче чисел через COM туда, ане обратно.
В (29) проверил - у меня код тоже записался корректно (без единички посередине).
34 НаборДанных
 
22.02.15
10:19
Да, всем спасибо, сделал, закрываем, так и думал, что уперся в ограничения типа.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан