Сторінка 24 з 27

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

Додано: 24 листопада 2016, 00:32
Inkognito
Фига себе задачка...
Вообще непонятно, зачем Вам наибольший номер, когда 1С сама нумерует автоинкрментом. Разве что пара нерадивых пользователей вручную создают, вместо выгрузки из 1С. Если так, то лучше всех посадить на 1С, да и спокойно выгружать из нее. Тогда технические вопросы вообще исчезнут.

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

Додано: 24 листопада 2016, 10:31
PetroP
Inkognito писав:SELECT card.code
FROM card
WHERE code=(SELECT MAX(card.code) FROM card) and card.form='12740'
Подскажите, это через ODBC?

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

Додано: 24 листопада 2016, 10:34
vatikan
To PetroP, да

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

Додано: 24 листопада 2016, 10:37
PetroP
Подскажите, каким драйвером пользуетесь и какая строка подключения? Давненько работал, сейчас в Вин10 что-то не могу найти подход...

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

Додано: 24 листопада 2016, 10:45
vatikan

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

	ПутьКБазеДанных = "C:\ProgramData\Medoc\Medoc\db\ZVIT.FDB";
	Соединение = Новый COMОбъект("ADODB.Connection");
	Соединение.ConnectionString = Вычислить(Шаблон("driver={Firebird/InterBase(r) driver};uid=SYSDBA;pwd=masterkey;database="+ПутьКБазеДанных+";"));
	Попытка
		Соединение.Open();
	Исключение
		Сообщить("Не удалось подключиться к базе: " + ОписаниеОшибки());
		Возврат 0;
	КонецПопытки;
Как то так, у меня Windows 10
Я ставил Firebird_ODBC_2.0.3.154_Win32.exe

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

Додано: 24 листопада 2016, 11:02
PetroP
Да, все так. Видно с разрядностью проблемы...

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

Додано: 24 листопада 2016, 22:49
PsAnc
Привет знатокам!
Пытаюсь побороть проблему:
После обращения к справочнику "CARD" Медок теряет равновесие и падает (при записи сразу, иногда при чтении).
Может кто сталкивался с решением.
Буду признателен за совет.

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

Додано: 24 листопада 2016, 23:25
Inkognito
Встречал такое на сетевых Медках, на локальных - никогда.

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

Додано: 24 листопада 2016, 23:32
PsAnc
Верно, сетевое.
Удавалось справиться с проблемой?

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

Додано: 25 листопада 2016, 01:13
Inkognito
Нет, не удавалось. Видимо, проблема в самой реализации СОМ технологии Медка. Ее дорабатывать нужно.
П.С. делал такое извращенство, - разворачивал локальный Медок на другом компе, на первом тушил службу и подкидывал базу второму, где успешно делал свои манипуляции, возвращал базу, и запускал службу сетевого Медка снова. Все это конечно в нерабочее время. А что делать... нормальной реализации по чтению/записи таблиц CARD, FORM (на других не пробовал, но похоже дело не в таблицах а службе или СОМ технологии совместно со службой) не реализовали и похоже не собираются.

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

Додано: 25 листопада 2016, 07:50
PsAnc
Спасибо огромное, что поделились опытом.
Теперь понимаю, что это проблемы не с моим софтом.
Но как решать? пока в недоумении :(
Похоже придется менять идею или писать кучу ненужного кода :cry:

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

Додано: 25 листопада 2016, 10:10
Inkognito
Таблицу CARD на запись это серьезно :D Используйте методы создания документов, они корректно запишут документ в CARD (OpenOrCreateByExDocID, как основной).
Чтение лучше тоже выполнять методами АПИ: DocumentsDataSet и GetPrimaryReestr.
Примечание: второй метод сырой,
- не выбирает акцизные накладные, о чем информировал разработчиков, и которые конечно не считают нужным отреагировать;
- нет возможности фильтровать не по дате документа, а дате регистрации.
Мне лично редактирование таблиц напрямую понадобилось всего пару раз. Вообще для этих целей рекомендуется IBExpert, просто хотел сделать обработку которой бы могли пользоваться бухгалтера. Им напрямую давать доступ к базе конечно нельзя. Накоммитят свои делайты, потом пойми что было :)

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

Додано: 25 листопада 2016, 10:39
PsAnc
Да я в общем-то не собираюсь с "CARD" делать что-либо неприличное :)
Но в ней живет ExDocId и родить его там я могу только методом OpenOrCreateByExDocID.
А если документ создан интерактивно или пришел от контрагента?
И я хочу создать его автоматом в 1С.
Ну, к примеру, прислал мне поставщик счет на оплату.
Я хочу это событие отследить в авторежиме, и создать счет в 1С автоматом.
Скажете, что извращение? Так а в чем тогда идея ЭДО? В экономии бумаги?

Можно привязываться к чему-то другому - (CardCode, DocId).
Я не против, но тогда методы, работающие через ExDocId, не подходят.
Нужно выкручиваться. Что не всегда возможно, как например, Show.
Можно придумать как обойти. Только это через пень-колоду.

Какой-то СОМ-инстумент слегка костыльный выходит.

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

Додано: 25 листопада 2016, 10:43
PetroP
PetroP писав:Подскажите, каким драйвером пользуетесь и какая строка подключения? Давненько работал, сейчас в Вин10 что-то не могу найти подход...
Выделил время и разобрался.
Вот с такими параметрами все заработало | Показать
* классический сервер (с суперсервером не экспериментировал, но тоже должно работать);
* как сервис, а не приложение (в этом была проблема);
* копировать библиотеку в системный каталог;
* классическое название библиотеки (и в этом была проблема).

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

Додано: 25 листопада 2016, 10:50
PetroP
PsAnc, делать прямую запись в БД в таких случаях - потенциально нарываться на кончину такой БД.
Понятное дело, что реализованные методы не успевают за запрошенными. Но если даже не запрашивать, то ничего с места не сдвинется.

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

Додано: 25 листопада 2016, 10:57
Inkognito
PsAnc
Золотые слова, Юрий Бенедиктович... два года назад обращался с этим вопросом к разработчикам. И вроде даже Геннадий кинул ссылку разрабам. А они видимо забили.
Тема: Необходимы новые методы
Сообщение ОТ: 04 мар 2015, 10:15
Продолжаем:
Необходим метод, который присвоит и сохранит ExDocID входящему документу, параметром может выступать Dic_ID датасета GetPrimaryReestr(). Очередной костыль найден в виде чтения/записи таблицы CARD, но он работает нестабильно на больших базах, и в сетевой среде. Необходима реализация со стороны разработчика.
| Показать
П.С. можно напомнить разработчикам о таких достижениях науки и техники, как Skype, личка, телефон, Viber, фейсбук. Вопросы решаются гораздо быстрее и качественнее, когда они обсуждаются и существует feedback (обратная связь). Уже прошло много времени, а обратной связи не было еще ни с одним из моих виртуальных коллег-автоматизаторов 1С, которые обращались с вопросами/предложениями (да, мы держим руку на пульсе современных разработок и делимся опытом постоянно).
А чтобы в бочку дягтя добавить ложку Меда (да-да, вам не послышалось), - лично обещаю большую мясную пицуу и ящик пива тому специалисту-разработчику, который наконец-то займется интеграцией 1С + мое радушие на просторах соцсетей :)

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

Додано: 25 листопада 2016, 11:13
PsAnc
Почитал старые сообщения из этой темы.
Раньше такой специалист (ответственный по удовлетворению потребностей программистов) был. :D
И судя по написанному обратная связь таки работала.
А сейчас не вижу.
Хотя опыт тех, кто реально вредряет разработанное, он же бесценный (потому, что за него платить не нада)
Берите и пользуйтесь. Заплатите только зарплату своему сотруднику.

В общем, присоединяюсь и готов от себя лично и пиццу и пиво )))

Напишу конечно разработчикам тоже. Хотя бы для количества запросов.
Может когда-то и отреагируют.

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

Додано: 25 листопада 2016, 15:49
vatikan
Подскажите кто знает. Работаю с медком через odbc, как отличить входящий документ от исходящего, не вижу в таблице CARD такого признака. Мне нужно отличить Входящую акцизную накладную от Исходящей?

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

Додано: 25 листопада 2016, 16:36
Inkognito
Вот если бы метод GetPrimaryReestr() содеражал кроме обычных накладных еще и акцизные, не пришлось бы делать через... CARD

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

Додано: 28 листопада 2016, 14:22
Inkognito
vatikan
А впрочем, я вижу при создании нового шаблона новые, не описанные типы документов. В том числе - акцизную накладную.
Значит, у нее есть и свой код типа, а значит GetPrimaryReestr() должен корректно найти акцизные накладные. Это нас неактуализированная справка вводит в заблуждение.
Выход,- нужно звонить и спрашивать, какого лешего не обновлена инструкция, и какой код DocType соответствует "Акцизной накладной".
Отличить входящую от исходящей будет возможно, используя данный метод GetPrimaryReestr()