Имя: Пароль:
1C
1C 7.7
v7: Как создать документ нужного вида по ОЛЕ в 8.2
0 sanek_kop
 
26.07.12
13:19
Столкнулся с такой проблемой. Есть вид документа в переменке ВидДок, необходимо создать документ по ОЛЕ из 7.7 в 8.2 данного вида. Знаю что это делается так База82.Документы[ВидДок].СоздатьДокумент(, но 7.7 ругается на конструкцию Документы[ВидДок]. Есть какие-нибудь варианты, кроме указывания всех документов в конфигурации через "если тогда"?
1 sanek_kop
 
26.07.12
15:21
Нашел ответ своими силами, хотя немного извратный. Если вдруг кто-то столкнется с похожей проблемой. Решил по средствам компоненты RainBow

Перем База;
Перем ДокумОбъект;
//*******************************************
Процедура Сформировать()
   
   v8 = СоздатьОбъект("V82.ComConnector");
   
   База = v8.Connect("File="""+СокрЛП("D:\base82")+""";Usr=""" + СокрЛП("Юз") + """;Pwd =""" + СокрЛП("Пор")  + """;");
   Если База = 0 Тогда
       Сообщить("Не удалось инициализировать базу бухгалтерии!","!");
       Возврат;
   КонецЕсли;
   
   Если глУстановитьВК("rainbow.dll") = 0 Тогда
       
       //завершим робота...
       Сообщить("Косяк Компоненты!");
       Возврат;
       
   КонецЕсли;
   
   Класс = СоздатьОбъект("ClassContext");
   Класс.AssignContext(Контекст);
   ВидДока    = "ПриходнаяНакладная";
   ДокумОбъект = "";
   КодДляВыполнения    = "ДокумОбъект = База.Документы." + ВидДока + ".СоздатьДокумент();";
   
   Класс.AssignSource(КодДляВыполнения);
   
   Если Класс.Compile() = 0 Тогда
       Сообщить("Косяк компиляции");
   ИначеЕсли Класс.Execute() = 0 Тогда
       Сообщить("Косяк выполнения");
   КонецЕсли;
   
   //ДокумОбъект    = База.Документы.Получить(ВидДока).СоздатьДокумент();
   Сообщить("Документ " + ДокумОбъект);
   
   ДокумОбъект.Дата    = ТекущаяДата();
   ДокумОбъект.УстановитьВремя();
   ДокумОбъект.УстановитьНовыйНомер();
   
   ДокумОбъект.Записать();
КонецПроцедуры