Имя: Пароль:
1C
 
Как завершить работу V83 Application?
0 Гений 1С
 
гуру
24.07.20
15:07
Раньше помнил, счас забыл.
Connector.ЗавершитьРаботуСистемы(ложь) не катит
Connector.ExitSystem(ложь) не катит

А что катит?
1 John83
 
24.07.20
15:10
Connector = "";
?
2 ILM
 
гуру
24.07.20
15:12
(1) Connector = Неопределено;
Кошернее будет?
3 Ненавижу 1С
 
гуру
24.07.20
15:17
Connector это не Application
4 Гений 1С
 
гуру
24.07.20
15:30
(3) Серьезно?
    Коннектор = Новый COMОбъект("V83.Application");
    Коннектор.Visible = True;
    Попытка
        Соединение = Коннектор.Connect(ПараметрыПодключения);
    Исключение
        Предупреждение ("Ошибка подключения!");
        Возврат;
    КонецПопытки;
5 Гений 1С
 
гуру
24.07.20
15:32
Кстати, она и метод ОткрытьФорму не видит, хотя Чистов пишет, что должно работать:
https://expert.chistov.pro/public/403150/

Цель в общем-то сформировать отчет в другой базе.
6 John83
 
24.07.20
15:48
для форм вроде как ОЛЕ использовали
7 fisher
 
24.07.20
15:59
(4) V83.COMConnector <> V83.Application
8 Ненавижу 1С
 
гуру
24.07.20
16:02
(4) что ты там назвал Коннектор это твое личное дело, но коннектор это не апликейшн
9 dangerouscoder
 
24.07.20
17:24
(8) Установить OLE соединение

Соединение = Новый COMОбъект("V83.Application");

Установить COM соединение

Соединение = Новый COMОбъект("V83.COMConnector");
10 dangerouscoder
 
24.07.20
17:27
у кого нибудь получилось под wine поднять COMConnector?
11 Гений 1С
 
гуру
24.07.20
18:00
(8) я буквоедством не страдаю. Люблю, когда буквоед клюёт на провокации.
В общем, почти все получилось, кроме закрытия апликатиона, да еще и отчет выводится нужной структуры, но пустой, если после открытия нажать на Сформировать руками, то выводится, странно. Гм, как же закрыть аппликатион?

    ПараметрыПодключения = ОтчетыСервер.ПараметрыПодключенияКБазе(ТекБаза);
    Коннектор = Новый COMОбъект("V83.Application");
    Коннектор.Visible = True;
    Попытка
        Соединение = Коннектор.Connect(ПараметрыПодключения);
    Исключение
        Предупреждение ("Ошибка подключения!");
        Возврат;
    КонецПопытки;    
    
        
    //Запускаем там отчет
    ИмяФайла = "D:\Users\SOsipov\Documents\res.xls";
    ИмяФайлаXML = "D:\Users\SOsipov\Documents\настройки отчета 2.xml";
    ФормаОтчета = Коннектор.GetForm("Отчет.МойОтчет.Форма");
    
    ЧтениеXML = Коннектор.NewObject("ЧтениеXML");
    ЧтениеXML.ОткрытьФайл(ИмяФайлаXML);
    НастройкиКомпоновкиДанных = Коннектор.СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    ФормаОтчета.Открыть();
    ФормаОтчета.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);
    ФормаОтчета.СкомпоноватьРезультат(Коннектор.РежимКомпоновкиРезультата.Непосредственно);
    ФормаОтчета.СкомпоноватьРезультат(Коннектор.РежимКомпоновкиРезультата.Непосредственно);
    ФормаОтчета.ОтчетТабличныйДокумент.Записать(ИмяФайла, Коннектор.ТипФайлаТабличногоДокумента.XLS);
    ФормаОтчета.Закрыть();
12 Гений 1С
 
гуру
24.07.20
18:01
(9) да, Коннект = Соединять. Водка Коннектед, как говорится.
13 Aleksey
 
24.07.20
18:17
(11) Сам уже месяц мучаюсь. Подключаюсь из 7-ки через V83.Application и все хорошо кроме завершения работы. Висит в памяти зараза, хоть ты тресни. Так что подпишусь на тему

P.S. а зачем тебе
Коннектор.Visible = True;
Не в смысле строка а всмысле почему True, а не false?
14 Гений 1С
 
гуру
24.07.20
18:30
(13) чтобы 1С в фоне невидимая не болталась и не жрала память, чтобы видима была.


ГМ, мне админ подсказал, почему не запускается COM. Надо запускать 32-разрядную 1С, а не 64-разрядную. Тогда норм.

Переписал на СОМ:

    ПараметрыПодключения = ОтчетыСервер.ПараметрыПодключенияКБазе(ТекБаза);
    //Коннектор = Новый COMОбъект("V83.Application");
    ОбъектКоннектор = Новый COMОбъект("V83.COMConnector");
    Попытка
        Коннектор = ОбъектКоннектор.Connect(ПараметрыПодключения);
    Исключение
        Предупреждение ("Ошибка подключения: " + ОписаниеОшибки());
        Возврат;
    КонецПопытки;    
    
    //===Получаем настройки
    ИмяФайла = "D:\Users\SOsipov\Documents\res.xls";
    ИмяФайлаXML = "D:\Users\SOsipov\Documents\настройки отчета 2.xml";
        
    ЧтениеXML = Коннектор.NewObject("ЧтениеXML");
    ЧтениеXML.ОткрытьФайл(ИмяФайлаXML);
    НастройкиКомпоновкиДанных = Коннектор.СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    
    //===Запускаем там отчет
    ТекМенеджерОтчета = Коннектор.Отчеты.МойОтчет;
    ТекОтчет = ТекМенеджерОтчета.Создать();
    
    СхемаКомпоновкиДанных = ТекОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    КомпоновщикМакета = Коннектор.NewObject("КомпоновщикМакетаКомпоновкиДанных");
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных);
    ПроцессорКомпоновкиДанных = Коннектор.NewObject("ПроцессорКомпоновкиДанных");
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,, Истина);
    
    
    ПроцессорВывода = Коннектор.NewObject("ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент");
    Таблица = Коннектор.NewObject("ТабличныйДокумент");
    
    ПроцессорВывода.УстановитьДокумент(Таблица);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    
    Таблица.Записать(ИмяФайла, Коннектор.ТипФайлаТабличногоДокумента.XLS);

Но осталась проблема, отчет пустой выводится. Ладно, с этим я разберусь уже. Видимо, каких-то параметров не хватает.
15 Василий Алибабаевич
 
24.07.20
19:18
За вот такие перлы в коде :
"
ИмяФайла = "D:\Users\SOsipov\Documents\res.xls";
ИмяФайлаXML = "D:\Users\SOsipov\Documents\настройки отчета 2.xml";
"
нужно давать семь лет пожизненного расстрела. И ни к чему сложнее метлы не допускать.
16 Ненавижу 1С
 
гуру
24.07.20
19:48
Автор, ты лучше выуч, чем connector от application отличается, а своё "буквоед клюет" оставь, а то как попугай.
17 runoff_runoff
 
24.07.20
19:49
чтобы открыть форму.. Application нужно..
18 runoff_runoff
 
24.07.20
19:52
V83c.Application для тонкого
19 Гений 1С
 
гуру
24.07.20
20:35
Сукко, я нашел, почему в СКД не формируется, а вручную формируется. Посказка: это ЗУП, детка.
20 Гений 1С
 
гуру
24.07.20
20:36
(15) я пока делаю отладочный прогон, не ной.
21 Гений 1С
 
гуру
24.07.20
20:36
(16) у тебя есть сомнения, что я понимаю в чем разница?
22 Гений 1С
 
гуру
24.07.20
20:52
Короче, котаны, делюсь ценным знанием.
В ЗУП сделали крайне непрозрачную хрень с запросами-заглушками, начинающимися на Представления_, вот пример:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
    "" КАК ТабельныйНомер,
    ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
    ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
    ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) КАК ВидЗанятости,
    ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПриема,
    ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения,
    ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка) КАК Состояние
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников

Чтобы отчет заработал нужным образом, его нужно обработать, заменить тексты запросов на нормальные, без этого сколько бы я не бился, не получилось бы.
Потратил 2 часа на этот "селезневский" обратный инжиниринг.
Ставил в бесконечном цикле, чтобы не переключать COM, потом понял, какие поля не рассчитывает и дошло до меня.

Вот этот код без бесконечного цикла можно использовать для ЗУП 3.0, уфф....


    Пока Истина Цикл
        
    ЧтениеXML = Коннектор.NewObject("ЧтениеXML");
    ЧтениеXML.ОткрытьФайл(ИмяФайлаXML);
    НастройкиКомпоновкиДанных = Коннектор.СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    ЧтениеXML.Закрыть();
    
    //===Запускаем там отчет
    ТекМенеджерОтчета = Коннектор.Отчеты.ОдинИзТиповыхОтчетовЗУП;
    ТекОтчет = ТекМенеджерОтчета.Создать();
    Коннектор.ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ТекОтчет);
    
    СхемаКомпоновкиДанных = ТекОтчет.СхемаКомпоновкиДанных; //ТекОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    //НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    КомпоновщикМакета = Коннектор.NewObject("КомпоновщикМакетаКомпоновкиДанных");
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных);
    ПроцессорКомпоновкиДанных = Коннектор.NewObject("ПроцессорКомпоновкиДанных");
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,, Истина);
    
    
    ПроцессорВывода = Коннектор.NewObject("ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент");
    Таблица = Коннектор.NewObject("ТабличныйДокумент");
    
    ПроцессорВывода.УстановитьДокумент(Таблица);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    
    
    Таблица.Записать(ИмяФайла, Коннектор.ТипФайлаТабличногоДокумента.XLS);
    КонецЦикла;
23 Гений 1С
 
гуру
24.07.20
21:04
Просьба админам переименовать ветку в "Как завершить работу V83.Application, почему не формируются отчеты в ЗУП по COM (решено)"
24 acht
 
24.07.20
21:43
user sosipov [x]
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший