8.х ОБМЕН COM соединение 7.7-->8.1

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем mialord, 20 фев 2010.

  1. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Пытаюсь подключиться к базе на платформе 7.7
    Код:
    	V77 = Новый COMОбъект("V77L.Application");
    МонопольныйРежимOLE = "";
    ЗапускБезЗаставки = 1;
    РезультатПодключения = V77.Initialize(V77.RMTrade , "/d" +
    СокрЛП(ИмяКаталогаБазы) + " /n" + СокрЛП(Пользователь)+
    " /p" + СокрЛП(Пароль) + МонопольныйРежимOLE,
    ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
    Сообщить(Строка(РезультатПодключения));
    Если РезультатПодключения = 0 Тогда
    Предупреждение("Не удалось подключится к указанной базе - проверьте вводные!");
    Возврат;
    КонецЕсли;
    
    8.1:
    Платформа - 1С:Предприятие 8.1 (8.1.15.14)
    Конфигурация - Бухгалтерия предприятия, редакция 1.6 (1.6.22.4)
    7.7:
    Платформа - 1С:Предприятие 7.7 (7.70.027)
    Конфигурация - Бухгалтерский учет, ред. 4.4 (7.70.446)
    Обновлению Бухгалтерский учет, ред. 4.4 (7.70.446) не подлежит в виду ужасных изменений сделанных штатным программистам, тут даже платформу опасно менять.
    Все парамеры заданы правильно, но при подключении РезультатПодключения всегда равен ЛОЖЬ.
    база данных расположена локально
    Код:
    V77 = Новый COMОбъект("V77L.Application")
    
    Пытаюсь понять причины, код использован рабочий, однако почему нгет подключения понять не могу, кто встречался, или может я всё-таки где-то написал код неправильно!!!
    В диспетчере задач после каждой попытки появляется процесс 1cv7l.exe
    Благодарю за идеи!
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    // Переменная База - строка содержащая путь к базе 1С 7.7
    // Возвращает переменную содержащую в себе COM-объект 1С 7.7
    Функция ПодключитьсяКOLE(База)
    Попытка
    v7 = Новый COMObject("V1CEnterprise.Application");
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат Null;
    КонецПопытки;
    
    Попытка
    Открыта = v7.Initialize(v7.RMTrade, "/D""" + База+ """ /M ", "NO_SPLASH_SHOW");
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат Null;
    КонецПопытки;
    
    Если Не Открыта Тогда
    Сообщить(ОписаниеОшибки());
    Возврат Null;
    КонецЕсли;
    
    Возврат v7;
    КонецФункции
    
    
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Попробуй с этими же параметрами запустить 1сv7l.exe из коммандной строки.
  4. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Не уверен что это хороший вариант, жду уже 10 минут, восьмёрка гразит процессор на 20%
    Код:
    Открыта = v7.Initialize(v7.RMTrade, "/D""" + База+ """ /M ", "NO_SPLASH_SHOW");
    
    Ответа пока не дождался!
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Странно... У меня запускается "в лет" - проверено только что.
    У тебя ничего 7.7 не блокирует? Правильно сказал nomad_irk - попробуй в командной строке

    в виду ужасных изменений сделанных штатным программистам
    Проверь в 7.7 процедуру в глобальном модуле
    Код:
    ПриНачалеРаботыСистемы()
    
    
    м.б. используются вызовы каких-либо библиотек типа TurboBL - на Windows2003 с ней могут быть проблемы

    Попробуй еще так:
    Создай в 7.7 новую базу (просто пустую) и сохрани ее. Попробуй обратиться к ней. Если запуститься - надо воевать с переделанной
  6. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    А вот мой вариант, может кому понадобится
    Код:
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    ~Подключение: Подключение = ПодключитьсяКOLE();
    Если Подключение = Неопределено Тогда
    Ответ = Вопрос("Ошибка подключения к базе источнику, не правильно введены учетные данные. Повторить соединение?", 
    РежимДиалогаВопрос.ПовторитьОтмена, 60, КодВозвратаДиалога.Отмена, "Подключение к базе данных");
    Если Ответ = КодВозвратаДиалога.Отмена Тогда
    Отказ = Истина;
    Иначе
    Перейти ~Подключение;
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры
    
    // Подключение к OLE 1С:Предпряитие 7.7 с запросом авторизации
    //
    Функция ПодключитьсяКOLE() Экспорт
    
    V77 = Новый COMОбъект("V77L.Application");
    ЗапускБезЗаставки = 1;
    РезультатПодключения = V77.Initialize(V77.RMTrade , "/d" +
    "",
    ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
    //Сообщить(Строка(РезультатПодключения));
    Если РезультатПодключения = 0 Тогда
    Возврат Неопределено;
    КонецЕсли;
    
    Возврат v77;
    
    КонецФункции
    
    
    Запускает окно выбора базы 1С 7.7 и пользователя, после прохождения авторизации возвращает подключение к объекту.
    А у меня не запускает, процесс 1cv7l.exe появляется, на этом всё, а 8-ка постоянно висит.
    Теперь у меня при запуске моей обработки появляется окошко авторизации базы 7-ки, а потом открывается основная форма обработки для работы с базой.
    Всем спасибо!
  7. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Подскажите кто знает. Как из 8-ки сделать запрос в бухгалтерию 7.7 для получения тадлицы остатков по всей иерархии счетов 70 и 71 в разрезе субконто Сотрудники и Подразделения. С 7-ой работаю мало...
  8. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Код:
     		Ит = глСерверOLEWHNWS.CreateObject("БухгалтерскиеИтоги");
    ОлеВидСубконтоСотрудники = глСерверOLEWHNWS.EvalExpr("ВидыСубконто.Сотрудники");
    Ит.ИспользоватьСубконто(ОлеВидСубконтоСотрудники);
    ОлеВидСубконтоПодразделения = глСерверOLEWHNWS.EvalExpr("ВидыСубконто.Подразделения");
    Ит.ИспользоватьСубконто(ОлеВидСубконтоПодразделения);
    Ит.ВыполнитьЗапрос(ДатаОстатков, ДатаОстатков, "70,71");
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1) = 1 Цикл
    Сотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Ит.Субконто(1).Наименование));
    Если Сотрудник.Пустая() Тогда
    НовыйСотрудник = Справочники.ФизическиеЛица.СоздатьЭлемент();
    НовыйСотрудник.Наименование = СокрЛП(Ит.Субконто(1).Наименование);
    НовыйСотрудник.Записать();
    Сотрудник = НовыйСотрудник.Ссылка;
    КонецЕсли;
    Ит.ВыбратьСубконто(2);
    Пока Ит.ПолучитьСубконто(2) = 1 Цикл
    
    
  9. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    А нельзя из бухгалтерии 7.7 получить таблицу бухгалтерский итогов? Мне нужно получить данные, потом проанализировать, а так я получается в слепую иду.
  10. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Что значит таблицу бухгалтерских итогов?

    Странно, что метод не срабатывает, у меня так все работает.
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если метод ПолучитьСчет сработал то и ПолучитьСубконто тоже должен работать. У счекта БИ которого вы шерстите вообще есть субсчета? И какой объект получили БИ - посмотрите.

    Т.к. метод сообщить и предупреждение не покажут - будем извращаться
    Код:
    т=СоздатьОбъект("Текст");
    Т.ДобавитьСтроку(ТипЗначенияСтр(БИ));
    Т.Записать("c:1c.msg");
    
    
    
  12. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Это значит получить данные от 1С 7.7 в виде таблицы, а не так, что приходится всё обходить и то вылетает, то не вылетает описанная мной ранее ошибка. Мне надо чтоб сделал запрос к 7.7 как результат вернулась таблица значений с остатками по счетам в разрезе субсчетов и субконто.
    И как получить ресурс, остаток по счёту?
  13. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    В 7.7. выгрузить итоги в таблицу нельзя.

    "ресурсов" в понимании 8 нет, есть функции (Сальдо конечно дебетовое) СКД() - сумма, СКД("К") - количество, СКД("В") - валюта, СКК(), СКК("К"), СКК("В"), то же самое развернутое СКДРС(), СККРС.

    Все методы и функции описаны в Синтаксис-помощнике ветке Бухгалтерские итоги - Итоги - Период итогов - Режим запроса

Поделиться этой страницей