Задача: используя "свою" конфигурацию необходимо получить и обработать данные о взаиморасчетах клиента с различными организациями (т.е. базами). Возможно-ли это реализовать?
Спасибо!
Задача: используя "свою" конфигурацию необходимо получить и обработать данные о взаиморасчетах клиента с различными организациями (т.е. базами). Возможно-ли это реализовать?
Спасибо!
Я думаю, да. Попробуйте через OLE-объекты.
Smic
спасибо! как раз нашел очень понятное руководство на эту тему.
здесь: http://www.sinor.ru/~my1c/knowhow/v7&OLE.html
тогда вопрос вслед: а к нескольким базам одновременно можно подключиться таким образом?
Можно, почему бы и нет.
1.Открыта новая радиостанция для юзеров под названием RТ FМ. По ней будут транслироваться чтения различных мануалов и ответы на часто задаваемые вопросы.
2. "Помогая ленивым людям, ты помогаешь им сесть на свою шею" Сян-Цзы
а вот еще вопрос:
а можно сделать так, что-бы подключение было "теневым", т.е. что-бы не появлялось окно выбора базы?
я пробовал указывать параметры /D /N и /P явно, но это все равно не избавляет от этого...
спасибо.
Для примера:
"C:\Program Files\1Cv77\BIN\1Cv7.exe" ENTERPRISE /D"D:\Kot\DB\Mart\bistrov\" /U"D:\Kot\DB\Mart\bistrov\" /N"Main" /P"parol"
Fosihas
если честно, то я не понял вашего примера![]()
у меня написно так:
БазаОЛЕ=СоздатьОбъект("V77M.Application");
Пользователь="Админ";
Пароль="qwerty";
Каталог="C:\Program Files\1Cv77\Bases\base2003\";
Результат=БазаОЛЕ.Initialize(БазаОЛЕ.RMTrade,
"/D"+Каталог+
" /N"+Пользователь+
" /P"+Пароль,
"NO_SPLASH_SHOW");
и при этом окно выбора базы появляется... что надо исправить-добавить что-бы оно не появлялось?
спасибо
subadm, Извини я не о том, а по твоему вопросу, несмогу помочь.
subadm, окно выбора базы не появиться, если вызываемая база прописана в списке баз. А Инициализация правильная
moroder
При запуске конфигурации она выдергивает из реестра подключенные пользователем базы и выводит их в виде списка, откуда в дальнейшем и выбирается база к которой производится подключение через OLE. Так-что все базы заведомо прописаны в списке баз... И не смотря на это окно выбора все равно выскакивает...
И еще, как мне прочитать реквизит "Контрагент" документа из OLE-базы?
Вот что я делаю:
ДокОЛЕ=БазаОЛЕ.CreateObject("Документ.РасходнаяНакладная"); // ok!
ДокОЛЕ.ВыбратьДокументы(); // ok!
Док.Новый(); // ok!
Док.Номер=ДокОЛЕ.НомерДок; // ok!
Док.Наименование=ДокОЛЕ.Операция.Содержание; // ok!
Док.Дата=ДокОЛЕ.ДатаДок; // ok!
Док.Сумма=ДокОЛЕ.Операция.СуммаОперации; // ok!
Док.ИдБазы=КодБазы; // ok!
//опробованные варианты//
контр=Строка(ДокОЛЕ.ПолучитьАтрибут("Контрагент")); // не работает!!!
контр=ДокОЛЕ.ПолучитьАтрибут("Контрагент"); // не работает!!!
контр=ДокОЛЕ.Контрагент; // не работает!!!
Док.Контрагент=контр; // ok!
Док.Записать(); // ok!
subadm, Дорогой, спасибо, что решил пролечить меня, но если список баз выдается значит не совпадает путь доступа к базе: ведь доступ к базе можно организовать по разному: а) Через абсолютный сетевой путь б) Через постоянно подключенный сетевой ресурс (буква у юзеров может быть разной) в) Через локальный путь (если возможно).
И если путь указан не такой как прописан в реестре, то список пренепременно появиться...
п.2.
контр=ДокОЛЕ.Контрагент; должно работать, только учитывай что ты получишь: ты получишь Объект типа ОЛЕ, который нельзя просто взять и присвоить в текущей базе как это делаешь ты:
Док.Контрагент=контр;
Естественно не прокатит.
У элемента ДокОЛЕ.Контрагент; можно прочитать код или какой-либо другой реквизит и по нему найти в текущей базе его аналог (или образ) и уже найденный элемент использовать...
Ээх, слишком простой жизни вы хотите батенька.![]()
moroder
Извини, не хотел чтобы это прозвучало как поучение... (Куда мне)
по первому пункту:
а какой вид записи использовать: тот что в реестре (типа С:\\1C\\Base) или вида C:\1C\Base (его то я и использую)?
по второму пункту:
сделал как ты посоветовал:
контр=Строка(ДокОЛЕ.Контрагент.Наименование);
все работает!!!
спасибо.
По п.1 может подскажешь?![]()
Не народ, все фигня. Вам надо решение? Их есть у меня.
Проблема в следующей строке:
Каталог="C:\Program Files\1Cv77\Bases\base2003\";
А вернее в пробеле "Program Files". Просто он ее передает в одинарных ковычках, а 1С (как и винды) доходит в анализе только до "C:\Program " - и считает это каталогом.
Вообще держать базы в каталоге Програм файлз - моветон такой силы, что аж дыханье спирает.
Решение:
1)Перенести базу в каталог где в пути нет ниодного пробела
2) передавать строку как
Каталог="""C:\Program Files\1Cv77\Bases\base2003\""";
С уважением, Рустам.
"Пишите письма мелким почерком" :-). Ответ ГАРАНТИРОВАН
точно-точно, еще и базу по "нормальному пути нужно расположить".
1.Открыта новая радиостанция для юзеров под названием RТ FМ. По ней будут транслироваться чтения различных мануалов и ответы на часто задаваемые вопросы.
2. "Помогая ленивым людям, ты помогаешь им сесть на свою шею" Сян-Цзы
training1C
спасибо огромное!!! все работает!!!
Всегда пожалуйста.
С уважением, Рустам.
"Пишите письма мелким почерком" :-). Ответ ГАРАНТИРОВАН
Подскажите, плиз, что значит ключ /U?Сообщение от Fosihas
User ...
Рабочий каталог юзера (не обязателен) ...
Все отрабатывает отлично. Просто внимательно проверь путь к базе, имя и пароль пользователя.Сообщение от subadm
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)