7.7 Две SQL БД в одной конфигурации!

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем AUS, 4 июн 2007.

  1. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Допустим, что имееть SQL конфигурация по управлению гостиничным комплексом причем самонаписанная.
    Необходимо с другой SQL БД вытаскивать отчеты по телефонным переговорам!
    Данная SQL БД лежит на соседнем SQL сервере.
    Как в отчетах обратиться к этому соседнему SQL серверу причем к конкретной БД на нем?
  2. Aptem
    Offline

    Aptem

    Регистрация:
    15 май 2007
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    через OLE
  3. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    а примерчик кода обращения можно?

    просто освоил экспорт через OLE а вот импорт пока нет ((
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Интересно :unsure:
    Обмен через OLE идет одновременно в двух базах. Если ты делаешь экспорт из одной, то в это же время данные импортируются в другую. Если вопрос о том, с какой базы инициализировать обмен, то сбор данных - это половина освоенного тобой экспорта (при экспорте сначала идет сбор данных, потом их перенос). Не должно составить труда в этом разобраться.
  5. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Дык я OLE при экспорте не для SQL применял ((
    А так по серенькому Excel и прочие мелочи!
    А тут надо именно за SQL зацепиться...
    Найти там табличку и из неё нужные данные по запросу пособрать!
  6. Aptem
    Offline

    Aptem

    Регистрация:
    15 май 2007
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    :unsure:


    вот тебе примерчик импорт-экспорта: B) писал полгода назад, должно работать

    КОНФИГА САМОПИСНАЯ!!!
    п
    Код:
    ерем ва;
    //*******************************************
    Процедура Сформировать()
    ДБ=СоздатьОбъект("V77s.Application");
    Дб.Initialize(ДБ.RMTrade,"/D \\server\db\superbase /N Администратор /P 2222222",);
    Спр=Дб.createobject("Справочник.Номенклатура");
    ШК=Дб.createobject("Справочник.ИсходящиеШтрихКоды");
    Тт=Дб.createobject("Справочник.КлассификаторЕдиниц");
    ЕП=Дб.createobject("Справочник.ЕдиницыПрихода");
    Тт.ВыбратьЭлементы();
    Пер=Дб.Перечисление.ТипыНоменклатуры;
    Спр.ВыбратьЭлементы();
    СпрТов=СоздатьОбъект("Справочник.Товары");
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    
    Если Спр.ЭтоГруппа()=0 Тогда
    //   	Сообщить(Спр.ТекущийЭлемент().Наименование);
    ШК.ИспользоватьВладельца(Спр,0);
    Шк.ВыбратьЭлементы();
    Если Шк.Выбран()=1 Тогда
    Пока ШК.ПолучитьЭлемент()=1 Цикл
    
    СпрТов.Новый();
    //	Сообщить(ШК.Наименование+" товар  "+Спр.ТекущийЭлемент().Наименование+"***"+(Спр.ТекущийЭлемент().ЕдиницаУчета.Наименование));
    СпрТов.Код=Число(СокрЛП(Шк.Наименование));
    СпрТов.Наим=Спр.ТекущийЭлемент().Наименование;
    СпрТов.Артикул=Спр.ТекущийЭлемент().Код;
    СпрТов.К=1;
    СпрТов.ЕдиницаИзмерения=СокрЛП(Спр.ТекущийЭлемент().ЕдиницаУчета.Наименование);
    СпрТов.ЦенаПродажи=Спр.ЦенаПродажи;
    Попытка
    СпрТов.Записать();
    Исключение
    
    КонецПопытки;
    КонецЦикла;
    
    ИначеЕсли СокрЛП(Спр.ТекущийЭлемент().ЕдиницаУчета.Наименование)="кг." Тогда
    СпрТов.Новый();
    //		Сообщить("22"+Строка(Формат(Спр.ТекущийЭлемент().Код,"Ч(0)5.0"))+" у товара"+Спр.ТекущийЭлемент().Наименование+"***"+(Спр.ТекущийЭлемент().ТипТовара));
    СпрТов.Код=Число("22"+Строка(Формат(Спр.ТекущийЭлемент().Код,"Ч(0)5.0")));
    СпрТов.Наим=Спр.ТекущийЭлемент().Наименование;
    СпрТов.Артикул=Спр.ТекущийЭлемент().Код;
    СпрТов.К=1;
    СпрТов.ЕдиницаИзмерения=СокрЛП(Спр.ТекущийЭлемент().ЕдиницаУчета.Наименование);
    СпрТов.ЦенаПродажи=Спр.ЦенаПродажи;
    Попытка
    СпрТов.Записать();
    Исключение
    КонецПопытки;
    КонецЕсли;
    //   	Сообщить("*************************************************");
    
    КонецЕсли;
    КонецЦикла;
    //*************************************************************************
    
    
    КонецПроцедуры
    
  7. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    2 Aptem Respect! Будем посматреть!
  8. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    1. Поднял локально SQL Server назвал 'as'.
    2. Приатачил БД назвал 'Barsum'.
    3. Нашел в ней нужную табличку под именем 'Results'.

    Требуеться в 1С сделать отчётец с выводом на печать.
    Для этого думаю создать Запрос в котором по условиям из таблицы нужно выбрать только соответсвтующие условиям.

    P.S. Таблица 'Resulta' содержит свыше двух миллионов записей. Из них нужно выбрать по условию существующие. Условия будут задаваться в форме Отчета.
    По постановке задачи мне не нужно копировать эти данные в Справочники 1С, а тупо собрать отчёт и вывести на печать.

    вот.....

    ни кто таких запросов не составлял случаем ?
    как это проще провернуть ?
  9. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    2 Aptem

    Я так понимаю ты обращался не напрямую к SQL серверу а к БД 1С работающей под SQL.
    Я правильно понял?

    Или я ошибаюсь ((

    Дело в том, что БД SQL из которой следует вытащить данные в моём случае далеко не 1С-вская...
  10. Aptem
    Offline

    Aptem

    Регистрация:
    15 май 2007
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    ты понял правильно.. к SQL надо как-то так:

    Connect = CreateObject("ADODB.Connection");
    Connect.Mode=1;
    ServerName = "192.168.0.1";
    DSN = "superbase";
    UID = "user";
    PWD = "password";
    ConnectString = "Provider=SQLOLEDB;Data Source="+ServerName+";Initial Catalog="+DSN+";UID="+UID+";PWD="+PWD+"";

    Connect.ConnectionString = ConnectString;

    Connect.Open();

    Message("State = "+String(Connect.State));


    как дальше еще не разобрался
  11. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    аха! всё верно!
    а дальше на языке Basic...
    чёт на подобии вот этого:
    сижу вот учу этот самый Basic... от мелкософта.....
    + сюда же запрос из SQL типа:
  12. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Однако получилось! :unsure:
    Выкладываю код - вдруг кому пригодиться!
  13. taramaz
    Offline

    taramaz

    Регистрация:
    21 ноя 2006
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Спасибо мне это очень помогло.
    Я выгружаю из Галактики в 1с, как доделаю выложу.
  14. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    выкладывай! думаю всяко пригодиться! а то у меня тут новый комплекс назревает! :unsure:

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