Доступ к МедКу через объекты

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Доступ к МедКу через объекты

Повідомлення PetroP » 31 березня 2017, 17:13

Не. Как раз проблема на локальном. Странно.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 26 травня 2017, 14:02

Надо бы подключиться к базе Медка. Кто-нибудь может подсказать, что не так?
Код | Показать
ПутьКБазеДанных = "C:\ProgramData\MedocIS\MedocIS\db\ZVIT.FDB";
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "driver={Firebird/InterBase(r) driver};uid=SYSDBA;pwd=masterkey;database="+ПутьКБазеДанных+";";
Попытка
Соединение.Open();
Исключение
Сообщить("Не удалось подключиться к базе: " + ОписаниеОшибки());
КонецПопытки;
Не удалось подключиться к базе: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(8)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

agtrif
Повідомлень: 113
З нами з: 24 січня 2014, 14:31

Re: Доступ к МедКу через объекты

Повідомлення agtrif » 26 травня 2017, 15:10

Inkognito писав:Надо бы подключиться к базе Медка. Кто-нибудь может подсказать, что не так?
Код | Показать
ПутьКБазеДанных = "C:\ProgramData\MedocIS\MedocIS\db\ZVIT.FDB";
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "driver={Firebird/InterBase(r) driver};uid=SYSDBA;pwd=masterkey;database="+ПутьКБазеДанных+";";
Попытка
Соединение.Open();
Исключение
Сообщить("Не удалось подключиться к базе: " + ОписаниеОшибки());
КонецПопытки;
Не удалось подключиться к базе: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(8)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Там dll надо подкинуть
У меня так подключалось, на примере, другой базы, ну думаю разберетесь.

Код: Виділити все

	

ФайлЗагрузки = "192.168.1.46/3070:D:\Base\Mybase.fdb";
 	
	ФайлДЛЛ = "D:\Base\fbclient.dll";     // Проблемма у Вас с этой dll , он должен быть такой-же как у медка
	Соединение      = Новый COMОбъект("ADODB.Connection");
    Команда         = Новый COMОбъект("ADODB.Command");
    НаборЗаписей    = Новый COMОбъект("ADODB.RecordSet");

    Соединение.ConnectionString     = "driver=Firebird/InterBase(r) driver; Dialect=3; CHARSET=WIN1251; Uid=SYSDBA;Pwd=masterkey;Dbname="+ФайлЗагрузки + ";client="+ФайлДЛЛ;
    Соединение.ConnectionTimeOut    = 1200;
    Соединение.CursorLocation       = 3;
    try
        Соединение.Open(Соединение.ConnectionString);
        //Сообщить("Соединение успешно уставнолено !!!");
    except
        Сообщить("Невозможно установить соединение с Firebird:
        | "+ОписаниеОшибки());
        Возврат;
    endtry;	

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 26 травня 2017, 15:49

В каталоге Медка такого файла вообще нет... Скачать для ФБ 2.1 откуда-то нужно, верно?
П.С. у меня действительно установлен отдельно ФБ с незапамятных времен. Тут: C:\Program Files (x86)\Firebird\Firebird_2_1\bin
Попробовал подставить:
Код | Показать
ФайлЗагрузки = "C:\ProgramData\MedocIS\MedocIS\db\ZVIT.FDB";
ФайлДЛЛ = "C:\Program Files (x86)\Firebird\Firebird_2_1\bin\fbclient.dll"; // Проблемма у Вас с этой dll , он должен быть такой-же как у медка
Соединение = Новый COMОбъект("ADODB.Connection");
Команда = Новый COMОбъект("ADODB.Command");
НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");

Соединение.ConnectionString = "driver=Firebird/InterBase(r) driver; Dialect=3; CHARSET=WIN1251; Uid=SYSDBA;Pwd=masterkey;Dbname="+ФайлЗагрузки + ";client="+ФайлДЛЛ;
Соединение.ConnectionTimeOut = 1200;
Соединение.CursorLocation = 3;
try
Соединение.Open(Соединение.ConnectionString);
Сообщить("Соединение успешно уставовлено !!!");
except
Сообщить("Невозможно установить соединение с Firebird:
| "+ОписаниеОшибки());
Возврат;
endtry;
Ошибка та же :(
| Показать
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Для эксперимента, попробовал встроенную ДЛЛку использовать:
fbembed.dll | Показать
ФайлДЛЛ = "C:\ProgramData\MedocIS\MedocIS\32\fbembed.dll";
ФайлДЛЛ = "C:\ProgramData\MedocIS\MedocIS\64\fbembed.dll";
Тоже самое.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 26 травня 2017, 16:41

Бинго. Скачал отсюда: https://www.firebirdsql.org/en/odbc-driver/
Скачал и установил: Firebird_ODBC_2.0.0.148_x64.exe
Методом научного тыка: ФайлДЛЛ = "C:\Program Files (x86)\Firebird\Firebird_2_1\bin\fbclient.dll";
Соединение установлено успешно :)

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 26 травня 2017, 17:13

Рано радовался. Подключиться и работать можно, только если Медок не запущен. В противном случае выдает: "File Database is not found"
Данными нужно обмениваться в режиме реального времени. Что делать?

BlackOwl
Повідомлень: 429
З нами з: 02 липня 2016, 12:47

Re: Доступ к МедКу через объекты

Повідомлення BlackOwl » 26 травня 2017, 19:05

Inkognito писав:Рано радовался. Подключиться и работать можно, только если Медок не запущен. В противном случае выдает: "File Database is not found"
Данными нужно обмениваться в режиме реального времени. Что делать?
Мёд локальный, только 1 юзверь могёт работать и усё! Походу надо на сетевушку переходить со всеми (1 или 2) вытекающими службами. А может, я ошибаюсь... :oops:

agtrif
Повідомлень: 113
З нами з: 24 січня 2014, 14:31

Re: Доступ к МедКу через объекты

Повідомлення agtrif » 27 травня 2017, 08:22

Inkognito писав:Рано радовался. Подключиться и работать можно, только если Медок не запущен. В противном случае выдает: "File Database is not found"
Данными нужно обмениваться в режиме реального времени. Что делать?
А Вы сетевое подключение используете ? (с указанием имени или ip)

Тут я бы без медка проверил:
Выходии из медка.
Запускаем один экземпляр 1с. Проверяем работу, например циклом бегаем по базе.
Запускаем второй экземпляр 1с. Если подключение происходит и все работает, значит в 1с делаем все правильно.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 27 травня 2017, 08:50

Локальный медок. Имитирую пользователя, который зашел в обе программы, и из 1С должен вызывать код, который читает/записывает данные из Медка (а что делать? Разработчики не хотят дорабатывать методы АПИ, потому придется самому читать/записывать нужное прямым коннектом к базе).

Проверял:
1) Запустил указанный выше код, когда Медок не запущен. Все супер.
2) Запустил локальный Медок, запустил код, - не коннектится.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 29 травня 2017, 15:17

Проверил на сетевом Медке, все работает корректно (когда в Медке есть пользователь).
А с локальным не хочет работать, если есть зашедший пользователь :(

BlackOwl
Повідомлень: 429
З нами з: 02 липня 2016, 12:47

Re: Доступ к МедКу через объекты

Повідомлення BlackOwl » 29 травня 2017, 15:22

Inkognito писав:Проверил на сетевом Медке, все работает корректно (когда в Медке есть пользователь).
А с локальным не хочет работать, если есть зашедший пользователь :(
у меня такое же было, когда пытался зайти IBexpert'ом, вот и подумал на это :roll:

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 29 травня 2017, 18:38

То есть для локального Медка выхода нет? Мне не удастся убедить клиентов покупать сетевую лицензию только для этого.
Нужен способ работать с локальным Медком через АДО в то же время, когда с ним работает 1С (для локального Медка).

Metelya
Повідомлень: 144
З нами з: 02 лютого 2012, 12:04

Re: Доступ к МедКу через объекты

Повідомлення Metelya » 15 червня 2017, 15:29

Подскажите, есть ли возможность получить программно информацию из квитанции № 1 по полученной налоговой накладной, а именно вот эту

Виявлені помилки:

Відповідно до п.74.2 ст.74 ПКУ функціонує система моніторингу відповідності ПН/РК критеріям оцінки ступеня ризиків (СМКОР). Період з 01.04.2017 до 01.07.2017 є перехідним періодом, протягом якого процедура визначена п.201.16 ст 201 ПКУ здійснюється без фактичного зупинення реєстрації ПН/РК у ЄРПН. За результатами опрацювання СМКОР виявлено невідповідність обсягів постачання обсягам придбання по товарах згідно з УКТ ЗЕД: 8708 .
Відправник: Автоматизована система "Єдине вікно подання електронних документів" ДФС України, версія 2.2.12.14


"За результатами опрацювання СМКОР виявлено невідповідність обсягів постачання обсягам придбання по товарах згідно з УКТ ЗЕД: 8708 ."
Вот такую налоговую надо бы выделить в списке, как предложение разработчикам Медка

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 16 червня 2017, 10:06

Теоретично, так (взято з інструкції з СОМ):
App = Новый COMОбъект("MEDOC.ZApplication");
prim = App.GetPrimaryDocs()
KVT = prim.GetDocKVT(ExDocID); //Або KVT = prim.GetDocKVT(“”,Cardcode);
....
Сообщить(KVT.Fields.Item("KVT_TEXT").Value);
Сообщить(KVT.Fields.Item("KVT_SIGN").Value);

Metelya
Повідомлень: 144
З нами з: 02 лютого 2012, 12:04

Re: Доступ к МедКу через объекты

Повідомлення Metelya » 20 червня 2017, 08:54

Inkognito писав:Теоретично, так (взято з інструкції з СОМ):
App = Новый COMОбъект("MEDOC.ZApplication");
prim = App.GetPrimaryDocs()
KVT = prim.GetDocKVT(ExDocID); //Або KVT = prim.GetDocKVT(“”,Cardcode);
....
Сообщить(KVT.Fields.Item("KVT_TEXT").Value);
Сообщить(KVT.Fields.Item("KVT_SIGN").Value);
Спасибо буду пробовать

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 22 червня 2017, 14:55

Ради эксперимента, тоже попробовал. Текст квитанции указанным методом не отображает.
Найти альтернативный метод не удалось.

olegyudin
Повідомлень: 47
З нами з: 18 липня 2012, 12:23

Re: Доступ к МедКу через объекты

Повідомлення olegyudin » 21 грудня 2018, 16:25

Добрый день!

Не подскажите, что неправильно написано:
omedok := CreateObject("MEDOC.ZApplication")
orgid:=omedok:seekorg(my_okpo_is,"")
odoc :=omedok:GetPrimaryDocs()
omain:=odoc:OpenOrCreateDocument(orgid,"VN001",,,"111111",0)

Ошибка "Несовпадение типов"

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Доступ к МедКу через объекты

Повідомлення PetroP » 21 грудня 2018, 17:11

На какой строке ошибка?

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: Доступ к МедКу через объекты

Повідомлення Inkognito » 21 грудня 2018, 17:48

Код, переведенный на язык 1С, ошибок не выдает...
Может, модуля "Интеграция" нет действующего (АПИ Медка стал платным полгода назад)?

olegyudin
Повідомлень: 47
З нами з: 18 липня 2012, 12:23

Re: Доступ к МедКу через объекты

Повідомлення olegyudin » 21 грудня 2018, 18:30

Модуль интеграции куплен.
Ошибка на строке
omain:=odoc:OpenOrCreateDocument(orgid,"VN001",,,"111111",0)

Відповісти

Повернутись до “1C”