Передача массива из JavaScript в 1С #560478


#0 by Cmyk32
Всем привет! В JS у меня есть функция getArray, возвращающая массив. В 1С код: МассивЗаказов = ЭлементыФормы.Карта.Документ.parentWindow.eval("getArray"); Программа выдает ошибку "Итератор для значения не определен". Подскажите, как обработать COMОбъект?
#1 by skunk
для х = 1 по размер цикл
#2 by H A D G E H O G s
1) По индексу перебирай, если вообще там com объект вернулся 2) Правильнее будет возвратить ComSafeArray - стандартный механизм обмена массивами в COM
#3 by H A D G E H O G s
нет
#4 by H A D G E H O G s
Хотяяяя, но нет скорее всего. сообщить(МассивЗаказов.Get(x));
#5 by Cmyk32
#6 by Cmyk32
ComSafeArray используется и для получения массива в 1с, не только для передачи?
#7 by H A D G E H O G s
По сабжу : "Че???"
#8 by Cmyk32
:))))))) Примеры в нете про выгрузку с помощью comSafeArray ИЗ 1С, мне надо В 1С? плохо ищу?
#9 by H A D G E H O G s
А не надо искать - надо его тупо получить в 1С и перебрать. В чем сложность? COMSafeArray (COMSafeArray) COMSafeArray (COMSafeArray) Методы: Конструкторы: Из COMSafeArray Из массива 1 Из массива 2 По типу элемента 1 По типу элемента 2 Описание: Объектная оболочка над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами. Для передачи массива в качестве параметра метода COM-объекта необходимо построить COMSafeArray нужной размерности с нужным типом элемента и указать построенный COMSafeArray в качестве значения входного параметра. Другие объекты 1С:Предприятия можно использовать в качестве значений входных параметров типа Массив только при наличии исчерпывающей информации о типах параметров в библиотеке типа COM-объекта. Результат метода COM-объекта или значение выходного параметра типа Массив всегда представляется объектом COMSafeArray. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. Пример: См. также: COMSafeArray, конструктор Из COMSafeArray
#10 by H A D G E H O G s
Ах да, вот еще:
#11 by Serginio1
Попробуй GetValue, он кстати и для массивов Net
#12 by Cmyk32
А как его получить, а не сформировать?
#13 by H A D G E H O G s
откуда я знаю? Как ты вот его получаешь?: В java-скрипты я - не ездун.
#14 by Serginio1
А что отладчик говорит?
#15 by Cmyk32
Тип возвращаемого значения - ComОбъект не работает
#16 by Serginio1
Для интереса посмотри, что возвращает Метод valueOf Результат: строковое значение Метод valueOf возвращает примитивное значение массива. Для этого все элементы массива преобразуются в строки, и эти строки объединяются в одну строку через запятую. Иными словами, этот метод возвращает тот же результат, что и метод toString. А цикл от 0
#17 by Serginio1
для х = 0 по МассивЗаказов.length-1 цикл сообщить(МассивЗаказов[х]);
#18 by Cmyk32
Так и есть. Результат - значения через запятую. length - поле объекта не обнаружено. Это может быть связано с тем, что у меня массив неограниченной длины?
#19 by Cmyk32
Нет, не помогло
#20 by Cmyk32
В js минимализм: var adressArray = new Array; функция по добавлению элемента: function addAdressToArray (NewAdress) { И функция, возвращающая значение в 1с: function getArray {return AdressArray;}
#21 by AquaKosh
Передача массивов между 1С и js уже 100 раз обсуждалась - в поиск.
#22 by Serginio1
Интересно, что ри этом он показывает элементы 0 и 1. При этом других свойсв нет. Это может быть только при итераторе. сообщить(МассивЗаказов[х]);
#23 by Cmyk32
Про это чтоли? Здесь нет решения. У меня так не работает.
#24 by Fragster
#25 by Fragster
недавно столкнулся с тем, что по OLE у выборки из результата запроса нет Выборка.Количество, есть Выборка.Count только...
#26 by Cmyk32
{Форма.Форма}: Метод объекта не обнаружен (length) Для Сч = 0 по МассивЗаказов.length-1 Цикл Как-будто объект вообще никак не обрабатывается
#27 by Fragster
а item работает? я просто давно в яваскрипт не залезал, не помню, что там у него... вроде у массива length, хотя могу ошибаться... а еще оно регистрочувствительное...
#28 by Cmyk32
все верно length. Но не работает) и item
#29 by Serginio1
Судя по 15 должен работать итератор. Какую ошибку выдает МассивЗаказов[0]?
#30 by Serginio1
Кстати и в итератор работает. Проверь еще
#31 by Serginio1
Вообщето для добавления существует push
#32 by Cmyk32
{Форма.Форма}: Получение элемента по индексу для значения не определено
#33 by Cmyk32
ты можешь свой пример еще раз выложить?
#34 by Serginio1
Тое есть перед вызовом, итератора в отладчике показывает два элемента, и при этом заявляет, что итератор неопределен?
#35 by Cmyk32
Да\ Может у меня каких-то библиотек 1с-их нет?
#36 by Cmyk32
Блииииннн!! Вот так работает: МассивЗаказов["0"]
#37 by Cmyk32
Почему?
#38 by Serginio1
видно индексер строковый
#39 by Cmyk32
от чего может зависеть? по первой придется извращаться:
#40 by Serginio1
А МассивЗаказов.Количество что выдает? или Count
#41 by Cmyk32
А вот и не работает это все (количество, count) с массивом заказов)) У меня уже белочка начинается))))
#42 by smaharbA
ЭлементыФормы.Карта.Документ.script.getArray
#43 by smaharbA
#44 by Serginio1
Интересно, а как же 1С узнает количество и значение элементов? Явно не так, но на безрыбье ... Спасибо интересно.
#45 by orefkov
В скрипт передавай пустой массив 1С, и добавляй в него. Скрипт: "function myFunction(result) Вызов из 1С: Результат = Новый Массив; ЭлементыФормы.Карта.Документ.parentWindow.myFunction(Результат);
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям