v7: Не работает ВыбратьЭлементы через OLE. #559595


#0 by wraithik
Вот код на шарпе: [WebMethod]        public НоменклатураКратко[] ПолучитьИнформациюОТоварах(string КодРодителя)                НоменклатураКратко инфо = new НоменклатураКратко; Вываливает на любом вызове метода СпрНоменклатура или СпрРодитель с ошибкой System.NotImplementedException: Метод или операция не реализована. Чего делать?
#1 by wraithik
Global.v7 точно с 1Ской, т.к. другой сервис дергающий функцию из глобального модуля пашет на ура.
#2 by wraithik
вот пример с мисты: Б) Доступ к справочникам и документам базы OLE (через функцию "CreateObject"): После создания объекта справочника или документа к ним применимы все методы, касающиеся таких объектов в 1С: СпрОле.ВыбратьЭлементы; КонецЦикла; Вроде все так же делаю, а не пашет :(
#3 by andrewks
СпрНоменклатура.ИспользоватьРодителя(СпрРодитель); выполняется нормально?
#4 by wraithik
нет так тоже пробовал:  СпрРодитель.FindByCode(КодРодителя);
#5 by wraithik
не выполняется не один метод по справочникам.
#6 by Темный Эльф
А если, скажем, попробовать англоязычный вариант написания?
#7 by andrewks
объекты окромя справочников пробовал?
#8 by wraithik
} Не пашет. На FindByCode отваливается.
#9 by GreyK
Так попробуй: Global.v7.EvalExpr("СоздатьОбъект(""""Справочник.Номенклатура"""");
#10 by wraithik
так не работает у меня объекты создаются. проблемы дальше при вызове методов справочников.
#11 by wraithik
так тоже не работает: Вылетает на второй строке.
#12 by GreyK
Строчка: "В ОЛЕ передаются только баззовые типы данных" тебе о чем-нибудь говорит, может где-нибудь видел такую?
#13 by andrewks
а где он не-базовые передаёт? строки только вижу
#14 by wraithik
я еще справочники гоняю. Их нельзя что ли? Список значений или таблицу вынуть то можно хоть?
#15 by GreyK
"СоздатьОбъект"
#16 by GreyK
Разрешаю :)
#17 by wraithik
А откуда сия строчка? через ОЛЕ можно гонять вообще что угодно. Через вэб - только то что умеет сериализоваться.
#19 by andrewks
чо за бред?
#20 by GreyK
+ Если сумеешь засунуть в 7.7 список или таблицу, то и вытащить сможешь*)
#21 by andrewks
в шарпе обязательно типизировать переменную?
#22 by Cthulhu
трабла походже "на этой стороне". "не держит" дайнамик-переменная ссылку на оле-объект (или как-то криво держит). а попробуй в глобальнике оле в элемент массива-глоб.переменной помещать ссылку на созданный в оле-контексте же объект, и с ней прямо в оле-контексте шаманить... мож поможет?..
#23 by wraithik
Ну я так же делаю :(
#24 by wraithik
обязательно dynamic - тип позднего связывания, короче читай вариант или не типизированный.
#25 by wraithik
не фига не понял :) с глобального контекста все пашет.
#26 by GreyK
Ну давай рассказывай, про то как космич.., и тихонечко переходи к тому как саздать в 7ке объект. Может ты уже нарыл способ без передачи текста типа ".EvalExpr("CreateObject(" а я тут со стрыми правилами лезу.
#27 by andrewks
у тебя динамик есть в определении типа
#28 by skunk
нет ... ты пробуешь перед выборкой заюзать родителя ...
#29 by andrewks
а object нельзя указать?
#30 by Cthulhu
: о! может в этом проблема. отложенное то связывание - оно нетипизированное до тех пор, пока... а как только - так и приводится, теряя что не надо бы терять... : в ОЛЕ-контексте глоб.переменная-массив. элементу этого массива присваивай СоздатьОбъект(..) и т.д..
#31 by wraithik
тоже не пашет :(
#32 by wraithik
там связывание вообще не работает, оно через IDispatch или отработает или ошибку кинет.
#33 by GreyK
Это что: "OLE_ВернутьСписокСправочника(КодРодителя);"? Продам СП, недорого...
#34 by wraithik
Хватит нести чушь! вот так заработало: Type v7Type = Type.GetTypeFromProgID("V77.Application", true);
#35 by wraithik
ну и дальше в таком духе писец как не удобно, но пашет юзал вот этот пример: Автору большое спасибо. Да еще и инфостарт лежит :(
#36 by wraithik
Вопрос: можно как нить это ( добавить в статью про OLE на Мисте?
#37 by andrewks
а смысл? чё там вкусного, чего нет на мисте?
#38 by wraithik
Там вкусное одно: как с C# лезть в 1С. Я до этого лазил через OLE но с 1С 7/8, и механизм был отлажен. А здесь пришлось веб-сервис для 7-ки писать, и выбрал C# для этого и наткнулся на проблемы. Короче, с Шарпа нельзя лезть через dynamic, а надо вручную дергать интерфейс COM-объекта 1Ски. Этого на Мисте я не нашел. Я думаю разница в коде видна не вооруженным глазом. Поэтому предлагаю расширить статью примером того, как надо лезть в 1С из Шарпа.
#39 by andrewks
я так понял, нет разницы в коде, нужно типизацию переменной делать правильно, как я и предложил в . или не так?
#40 by wraithik
Не так. Качни по ссылке и глянь CSник. Там механизм вызова методов другой. Все делает через InovokeMember, а не через позднее связывание. Если честно, то позднее связывание тоже должно пахать через InovokeMember, но в шарпе оно почему то так не взлетает :(
#41 by Torquader
В 1С прекрасно лазится на VBScript или даже через объекты в PHP!
#42 by 1Сергей
СпрНоменклатура.ИспользоватьРодителя(СпрРодитель.ТекущийЭлемент);
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С