Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Подключение к базе через OLE. , Не закрывается сеанс 1С, создаваемый OLE.          
Talkman Подменю пользователя
сообщение 22.05.20, 15:37
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Из: Черкассы
Спасибо сказали: 2 раз
Рейтинг: 2

Добрый день. Есть две базы 1С 7.7 ПУБ глубоко переработанные. 1С 7.7 0,27. Конфигурации идентичные. Сделал отчет анализа продаж с подключением из одной базы 1С в другую по OLE. Отчет работает, показывает нужные данные, но после завершения процедуры анализа сеанс 1С, созданный OLE подключением не закрывается. Итого 5-7 нажатий кнопки анализировать и в системе висит куча сеансов 1С. Вопрос: как правильно завершать подключение по OLE, чтобы оно закрывалось после завершения процедуры. Мой пример подключения по OLE (кусок кода).
Код
    Там = СоздатьОбъект("V77.Application"); 
    КаталогБазыОЛе  = СокрЛП(Константа.Туда);
    ПользовательОле = "***";
    ПарольОле       = "***";
    МонопольныйРежимOLE = ""; // для немонопольного запуска указать пустую строку!
    ЗапускБезЗаставки = 0;       // для появления заставки (например, чтобы наблюдать
    // процесс запуска базы OLE визуально) поставьте здесь "0"
    РезультатПодключения = Там.Initialize ( Там.RMTrade , "/d" + СокрЛП(КаталогБазыОле) + " /n" + СокрЛП(ПользовательОле) +    " /p" + СокрЛП(ПарольОле) + МонопольныйРежимOLE, ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
    Если РезультатПодключения = 0 Тогда
        Предупреждение("Не удалось подключится к указанной базе - проверьте вводные!");
    КонецЕсли;  

        Би = СоздатьОбъект("БухгалтерскиеИтоги");
    Би.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Склад,2);
    Би.ИспользоватьСубконто(ВидыСубконто.ТМЦ,СТМЦ);
    Би.ВыполнитьЗапрос(КонДата, КонДата, "281");
    Би.ВыбратьСубконто(ВидыСубконто.ТМЦ);
    Пока Би.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл                                    //Анализ остатков на магазине эта база
        Если Би.СКД(3) <= 0 Тогда
            Продолжить;
        КонецЕсли;
        Ы = "";
        Т.НайтиЗначение(Би.Субконто(ВидыСубконто.ТМЦ),Ы,"Т");
        Т.ПОлучитьСтрокуПоНомеру(Ы);
        Т.ОстМ = Би.СКД(3);  
        Состояние("Заполнение остатками в этой базе");
    КонецЦикла;        
    
    СкладТам = Там.CreateObject("Справочник.МестаХранения");
    Если СкладТам.НайтиПоНаименованию(СокрЛП(Склад.Наименование),0) = 0 ТОгда
        Сообщить("Не могу там найти склад "+СокрЛП(Склад.Наименование));  
        возврат;
    КонецЕсли;    
    СТМЦТам = Там.CreateObject("СписокЗначений");
    ТМЦТАМ = Там.CreateObject("Справочник.ТМЦ");
    Т.ВыбратьСтроки();
    Пока Т.ПолучитьСтроку() = 1 Цикл
        Если ТМЦТам.НайтиПоКоду(Т.Код,0) = 1 Тогда
            СТМЦТам.ДобавитьЗначение(ТМЦТам.ТекущийЭлемент());
            Состояние("Формирование списка товаров для анализа в ТОЙ базе")
        КонецЕсли;    
    КонецЦикла;    
    БиТам = Там.CreateObject("БухгалтерскиеИтоги");
    БиТам.ИспользоватьСубконто(Там.ВидыСубконто.МестаХранения,СкладТам,2);
    БиТам.ИспользоватьСубконто(Там.ВидыСубконто.ТМЦ,СТМЦТам);
    БиТам.ВыполнитьЗапрос(КонДата, КонДата, "281");                                           //Анализ остатков на магазине ТА база
    БиТам.ВыбратьСубконто(Там.ВидыСубконто.ТМЦ);
    Пока БиТам.ПолучитьСубконто(Там.ВидыСубконто.ТМЦ) = 1 Цикл
        Если БиТам.СКД(3) <= 0 Тогда
            Продолжить;
        КонецЕсли;
        Ы = "";  
        Т.НайтиЗначение(БиТам.Субконто(Там.ВидыСубконто.ТМЦ).Код,Ы,"Код");
        Т.ПОлучитьСтрокуПоНомеру(Ы);
        Т.ОстМ = Т.ОстМ + БиТам.СКД(3);
        Состояние("Заполнение остатками в Той базе");
    КонецЦикла;


Сообщение отредактировал Vofka - 22.05.20, 16:44

denis84 Подменю пользователя
сообщение 22.05.20, 15:56
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 98
Из: Украина
Спасибо сказали: 27 раз
Рейтинг: 27

Talkman @ Сегодня, 16:37 * ,
Добрый день! В 1с 8 РазорватьСоединение();

Talkman Подменю пользователя
сообщение 22.05.20, 15:58
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Из: Черкассы
Спасибо сказали: 2 раз
Рейтинг: 2

denis84 @ Сегодня, 16:56 * ,
Семерка у меня.

wanjaas Подменю пользователя
сообщение 22.05.20, 16:29
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Там = "";

Naghual Подменю пользователя
сообщение 22.05.20, 16:56
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 93
Из: Днепропетровск
Спасибо сказали: 20 раз
Рейтинг: 20

Перед Там = "";
Выполнить Там.ЗавершениеРаботыСистемы.
(как-то так. пишу по памяти)


Signature
Я желаю всем Счастья!

sava1 Подменю пользователя
сообщение 22.05.20, 17:06
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2278
Из: Проскуров
Спасибо сказали: 541 раз
Рейтинг: 529.1

убрать вопрос у пользователя про завершение работы

denis84 Подменю пользователя
сообщение 23.05.20, 11:39
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 98
Из: Украина
Спасибо сказали: 27 раз
Рейтинг: 27

Talkman @ Вчера, 16:37 * ,
Добрый день! Вот такой вариант
 
БазаОЛЕ.ЗавершитьРаботуСистемы(0);


nik389 Подменю пользователя
сообщение 23.05.20, 12:19
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 109
Из: Украина
Спасибо сказали: 29 раз
Рейтинг: 26

убрать вопрос, как вам подсказали, это первое
если все равно остается в памяти, убивать все переменные, являющиеся потомками Там = СоздатьОбъект("V77.Application"); , и сам Там тоже

Talkman Подменю пользователя
сообщение 25.05.20, 6:40
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Из: Черкассы
Спасибо сказали: 2 раз
Рейтинг: 2

Сегодня опробую, спасибо.

Talkman Подменю пользователя
сообщение 25.05.20, 8:00
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Из: Черкассы
Спасибо сказали: 2 раз
Рейтинг: 2

Вопрос при завершении работы системы отсутствует. Я грешу на ДЛЛку BARCODE. Она после завершения сеанса 1С выдает рекламное сообщение. Хотя меня смущает, что такие же оле подключения в коде других объектах 1С сеанс завершают без проблем.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 02.06.20, 15:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!