Имя: Пароль:
1C
1С v8
OLE к 77 контекст доступа
,
0 Snik_666
 
22.07.11
22:32
Добрый вечер! Подскажите правильный контекст доступа ?

код
s_path = "_path";
   s_user = "е";
   s_pass = "1";
   
   COM_77 = Новый COMОбъект("V77s.Application");
   V77 = COM_77.Initialize(COM_77.RMTrade, "/D" + s_path + " /N" + s_user + " /P" + s_pass, "NO_SPLASH_SHOW");//, "NO_SPLASH_SHOW"
   Если НЕ V77 Тогда
       Сообщить("Не удачная попытка входа в 77");
       Возврат;
   КонецЕсли;    
   
   ТЗ = COM_77.CreateObject("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Склад");
   ТЗ.НоваяКолонка("РегистраторВид");
   ТЗ.НоваяКолонка("ДатаДок");


Выдает ошибку

Ошибка при установке значения атрибута контекста (Вспомогательный): Типы не совпадают (0)
   Ит.ИспользоватьПланСчетов(COM_77.ПланыСчетов.Вспомогательный);

   ТЗ.НоваяКолонка("НомерДок");
   ТЗ.НоваяКолонка("КвоПрих");
   ТЗ.НоваяКолонка("КвоРасх");
   ТЗ.НоваяКолонка("СтоимостьПрих");
   ТЗ.НоваяКолонка("СтоимостьРасх");
   
   ВыбРазделительУчета = COM_77.CreateObject("Справочник.Фирмы");
   Если ВыбРазделительУчета.НайтиПоКоду("2") = 1 Тогда
       Фирма = ВыбРазделительУчета.ТекущийЭлемент();
   КонецЕсли;
   ТМЦ = COM_77.CreateObject("Справочник.ТМЦ");
   Если ТМЦ.НайтиПоКоду(СокрЛП(КодТМЦ77)) = 1 Тогда
       ВыбСубконто1 = ТМЦ.ТекущийЭлемент();
   Иначе
       Сообщить("ТМЦ с кодом "+КодТМЦ77+"  ненайдено");
   КонецЕсли;
   
   
   Ит = COM_77.CreateObject("БухгалтерскиеИтоги");
   Ит.ИспользоватьПланСчетов(COM_77.ПланыСчетов.Вспомогательный);
   Ит.ИспользоватьРазделительУчета(Фирма);
   ВидыСубконто = COM_77.ВидыСубконто;
   Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ВыбСубконто1, 1);
   Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1);
   Ит.ВыполнитьЗапрос(НачПериода, КонПериода, "281",,, 1, "Операция", "СК");
   Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения);
   Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл
       Ит.ВыбратьСубконто(ВидыСубконто.ТМЦ);
       Пока Ит.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл
           Ит.ВыбратьПериоды();
           Пока Ит.ПолучитьПериод() = 1 Цикл
               ТЗ.НоваяСтрока();
               //Сообщить("Ит.Операция.Документ="+Ит.Операция.Документ);
               ДокСсылка = Ит.Операция.Документ;
               Док = COM_77.CreateObject("Документ");
               Док.НайтиДокумент(ДокСсылка);
               
               ТЗ.Склад = СокрЛП(Ит.Субконто(ВидыСубконто.МестаХранения).Наименование);
               ТЗ.РегистраторВид = Док.ТекущийДокумент().Вид();
               Ч="";М="";С="";
               Док.ПолучитьВремя(Ч,М,С);
               ТЗ.ДатаДок = СокрЛП(Док.ДатаДок)+" "+Ч+":"+М+":"+С;
               ТЗ.НомерДок = Док.НомерДок;
               ТЗ.КвоПрих = Ит.ДО(3);
               ТЗ.КвоРасх = Ит.КО(3);
               ТЗ.СтоимостьПрих = Ит.ДО()*1.2;
               ТЗ.СтоимостьРасх = Ит.КО()*1.2;
               
               ДокСсылка = "";
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   
   
   
   Сообщить("ТЗ из 77 заполнена!  "+ТЗ.КоличествоСтрок()+" строк");
   
   ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
   ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
   ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
1 Snik_666
 
22.07.11
22:32
Выдает ошибку

Ошибка при установке значения атрибута контекста (Вспомогательный): Типы не совпадают (0)
   Ит.ИспользоватьПланСчетов(COM_77.ПланыСчетов.Вспомогательный);
2 andrewks
 
22.07.11
22:44
план счетов ч/з CreateObject и ЗначениеПоИдентификатору попробуй сделать
3 Snik_666
 
22.07.11
22:52
сделал

ПС = COM_77.ПланыСчетов;
   Вспомогательный = ПС.ЗначениеПоИдентификатору("Вспомогательный");

так теперь далее...


{Форма.Форма(44)}: Ошибка при установке значения атрибута контекста (ТМЦ): Типы не совпадают (0)
   Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ВыбСубконто1, 1);
4 andrewks
 
22.07.11
22:54
короче, юзай CreateObject и не ешь мозги
5 Snik_666
 
22.07.11
23:11
ВидыСубконто = COM_77.ВидыСубконто;
   МестаХранения = ВидыСубконто.ЗначениеПоИдентификатору("МестаХранения");    
   ТМЦ = ВидыСубконто.ЗначениеПоИдентификатору("ТМЦ");
   
   Ит = COM_77.CreateObject("БухгалтерскиеИтоги");
   Ит.ИспользоватьПланСчетов(Вспомогательный);
   Ит.ИспользоватьРазделительУчета(Фирма);
   Ит.ИспользоватьСубконто(ТМЦ, ВыбСубконто1, 1);
   Ит.ИспользоватьСубконто(МестаХранения,, 1);
   Ит.ВыполнитьЗапрос(НачПериода, КонПериода, "281",,, 1, "Операция", "СК");
   Ит.ВыбратьСубконто(МестаХранения);


Форма.Форма(49)}: Ошибка при вызове метода контекста (ИспользоватьСубконто): Типы не совпадают (2)
   Ит.ИспользоватьСубконто(МестаХранения,, 1);

непойму ну почему именно на Ит.ИспользоватьСубконто(МестаХранения,, 1); если Ит.ИспользоватьСубконто(ТМЦ, ВыбСубконто1, 1); стоит раньше
идентиф МестаХранения в 77 точно
6 andrewks
 
22.07.11
23:23
МестаХранения=COM_77.EvalExpr("ВидыСубконто.ЗначениеПоИдентификатору(""МестаХранения"")";
7 Snik_666
 
22.07.11
23:28
ВидыСубконто = COM_77.ВидыСубконто;
   МестаХранения = COM_77.EvalExpr("ВидыСубконто.ЗначениеПоИдентификатору(""МестаХранения"")");
   ТМЦ = ВидыСубконто.ЗначениеПоИдентификатору("ТМЦ");
   
   Ит = COM_77.CreateObject("БухгалтерскиеИтоги");
   Ит.ИспользоватьПланСчетов(Вспомогательный);
   Ит.ИспользоватьРазделительУчета(Фирма);
   Ит.ИспользоватьСубконто(ТМЦ, ВыбСубконто1, 1);


тоже самое
{Форма.Форма(48)}: Ошибка при вызове метода контекста (ИспользоватьСубконто): Типы не совпадают (2)
   Ит.ИспользоватьСубконто(МестаХранения,, 1);
8 andrewks
 
22.07.11
23:31
ну блин, прояви смекалку! ТМЦ так же надо определить.

у тебя в методы v77 должны попадать только простые типы и объекты v77. всё, остальное - лесом
9 Snik_666
 
22.07.11
23:35
Так ругается именно на строчке
Ит.ИспользоватьСубконто(МестаХранения,, 1);

тмц подобно переписывал , тоже самое...
10 andrewks
 
22.07.11
23:37
покажи, какой у тебя сейчас код
11 Snik_666
 
22.07.11
23:42
Вспомогательный = COM_77.EvalExpr("ПланыСчетов.ЗначениеПоИдентификатору(""Вспомогательный"")");
   МестаХранения = COM_77.EvalExpr("ВидыСубконто.ЗначениеПоИдентификатору(""МестаХранения"")");
   ТМЦ           = COM_77.EvalExpr("ВидыСубконто.ЗначениеПоИдентификатору(""ТМЦ"")");
   Сообщить("МестаХранения= "+МестаХранения.Идентификатор());
   Сообщить("ТМЦ= "+ТМЦ.Идентификатор());

   Ит = COM_77.CreateObject("БухгалтерскиеИтоги");
   Ит.ИспользоватьПланСчетов(Вспомогательный);
   Ит.ИспользоватьРазделительУчета(Фирма);
   Ит.ИспользоватьСубконто(ТМЦ, ВыбСубконто1, 1);
   Ит.ИспользоватьСубконто(МестаХранения,, 1);
   Ит.ВыполнитьЗапрос(НачПериода, КонПериода, "281",,, 1, "Операция", "СК");
   Ит.ВыбратьСубконто(МестаХранения);
   Пока Ит.ПолучитьСубконто(МестаХранения) = 1 Цикл
       Ит.ВыбратьСубконто(ТМЦ);
       Пока Ит.ПолучитьСубконто(ТМЦ) = 1 Цикл
           Ит.ВыбратьПериоды();
           Пока Ит.ПолучитьПериод() = 1 Цикл

рез:
МестаХранения= МестаХранения
ТМЦ= ТМЦ

{Форма.Форма(50)}: Ошибка при вызове метода контекста (ИспользоватьСубконто): Типы не совпадают (2)
   Ит.ИспользоватьСубконто(МестаХранения,, 1);
12 andrewks
 
22.07.11
23:45
Ит.ИспользоватьСубконто(МестаХранения,"", 1);
13 Snik_666
 
22.07.11
23:48
(12) точно бли , СПАСИБО!  и уже когда-то натыкался... 100 лет назад что параметры незаполненые по оле пустыми надо.

СПАСИБО!