"В общем, я поглядел... через OLE в v77 в качестве параметров функций можно передавать только значения неагрегатных типов данных, то есть, числа, строки, даты в формате строк и т.п.<br>Поэтому конструкция вида<br>o.НазначитьВид(o5.Элемент, "Материалы")<br>работать не будет, тем более, что НазначитьВид - не является методом объекта V77.Application, как бы, по хорошему тут надо применять:<br>o.EvalExpr("НазначитьВид(??????,""""Материалы"""")")<br>но у нас не получится кинуть указатель на o5.Элемент через EvalExpr, поэтому предлагаю такой вариант:<br>в глобальном модуле конфигурации 1С-а сделать:<br>Функция глСоздатьЭлементРасходов(КодВладельца, ДатаУстановкиЗначений, Наименование, КодЭлемента, Норма, КолПрод, ВидЭлемента) Экспорт<br> СозданныйЭлемент=ПолучитьПустоеЗначение();<br> Номенклатура=СоздатьОбъект("Справочник.Номенклатура");<br> Если Номенклатура.НайтиПоКоду(КодВладельца)=1 Тогда<br> НормыРасходов=СоздатьОбъект("Справочник.НормыРасходов");<br> НормыРасходов.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());<br> НормыРасходов.Новый();<br> НормыРасходов.Наименование=Наименование;<br> НормыРасходов.ВидЭлемента=ВидЭлемента;<br> НужныйСправочник=СоздатьОбъект("Справочник."+?(ВидЭлемента=1,"Материалы","Номенклатура"));<br> Если НужныйСправочник.НайтиПоКоду(КодЭлемента)=1 Тогда<br> НазначитьВид(НормыРасходов.Элемент, НужныйСправочник.Вид());<br> НормыРасходов.Элемент=НужныйСправочник.ТекущийЭлемент();<br> НормыРасходов.Записать();<br> НормыРасходов.Норма.Установить(Дата(ДатаУстановкиЗначений),Норма);<br> НормыРасходов.КолПрод.Установить(Дата(ДатаУстановкиЗначений),КолПрод);<br> СозданныйЭлемент=НормыРасходов.ТекущийЭлемент();<br> КонецЕсли;<br> КонецЕсли;<br> Возврат(СозданныйЭлемент);<br>КонецФункции<br><br>и ваш модуль в .Net переделать так:<br>Dim o, o2, o4, o5 As Object<br> Dim spr2 As String = "тест"<br> o = CreateObject("V77.Application")<br> o.Initialize("16440", "/DC:\1C_basa_UPP", " ")<br><br> o2 = o.CreateObject("Справочник.Материалы")<br> If o2.ВыбратьЭлементы > 0 Then<br> While o2.ПолучитьЭлемент > 0<br> If o2.ЭтоГруппа < 1 Then<br> Exit While<br> End If<br> End While<br> End If<br> 'Сейчас в о2.ТекущийЭлемент материал который нужно завести в справочник НормыРасходов<br> o5 = o.CreateObject("Справочник.НормыРасходов")<br> o4 = o.CreateObject("Справочник.Номенклатура")<br> If o4.ВыбратьЭлементы > 0 Then<br> While o4.ПолучитьЭлемент > 0<br> If o4.ЭтоГруппа < 1 Then<br> o5 = o.EvalExpr("глСоздатьЭлементРасходов(""""" & o4.Код & """"",""""01.01.1980"""",""""" & spr2 & """"",""""" & o2.Код & """"",13,1,1)")<br> End If<br> End While<br> End If<br> o5 = 0<br> o4 = 0<br> o2 = 0<br> o = 0<br><br><br>Маленькое замечание.<br>У вас странный алгоритм. Если выкинуть обрамление получится:<br>НормыРасходов = СоздатьОбъект("Справочник.НормыРасходов");<br>НормыРасходов.ВыбратьЭлементы();<br>Пока НормыРасходов.ПолучитьЭлемент()=1 Цикл<br> НормыРасходов.Новый();<br> ...<br>КонецЦикла;<br><br>то есть, у вас внутри выборки создается новый элемент, принадлежащий выборке, при этом выборка поведет себя непонятно как. Это ненормально"