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

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

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

Повідомлення PetroP » 28 листопада 2016, 15:10

Перечень типов есть в HBSDOC. Попробуйте новые:
10050 - Акцизна накладна
10051 - Розрахунок коригування до акцизної накладної
10052 - Акт інвентаризації
10053 - Заявка на поповнення
10070 - Ттн на спирт етиловий
10071 - Ттн на алкогольні напої

vatikan
Повідомлень: 8
З нами з: 22 листопада 2016, 18:32

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

Повідомлення vatikan » 29 листопада 2016, 18:30

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

Попытка       
      App = Новый COMОбъект("MEDOC.ZApplication");
      НачПериода = ДобавитьМесяц(ТекущаяДата(), -1);
      ТекГод = Формат(НачПериода, "ДФ=гггг");
      ТекМесяц = Формат(НачПериода, "ДФ=М");
      ТекЧисло = Формат(НачПериода, "ДФ=д");
      НачПериода = Строка(ТекГод + ","+ ТекМесяц + ","+ ТекЧисло);
      СтрокаЗапроса=Строка("CharCode='J1203001' AND PerDate>='") + Строка(НачПериода) + Строка("'");
      ТаблицаДоков = App.DocumentsDataSet(СтрокаЗапроса);
      Сообщить("Всього знайдено документів: "+ТаблицаДоков.RecordCount);
      Пока НЕ ТаблицаДоков.EOF Цикл
         КодДокумента = Число(ТаблицаДоков.FldVal("Code"));
         Если ЗначениеЗаполнено(КодДокумента) тогда
            Документ = App.OpenDocumentByCode(КодДокумента);
            main = Документ.DataSets("MAIN");
            Сообщить("Дата="+main.Fields.Item("N2").value);
            Сообщить("Номер="+main.Fields.Item("N3").value);
         КонецЕслИ;
         ТаблицаДоков.Next();
      КонецЦикла;                   
   Исключение
      Сообщить("Ошибка выполнения метода", СтатусСообщения.Важное);
      Возврат;
   КонецПопытки;
А есть еще поле Сообщить("Дата="+main.Fields.Item("N10").value); оно вроде бы за это и отвечает, по крайней меря я его анализирую на 0/1 и вроде как работает

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

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

Повідомлення Inkognito » 29 листопада 2016, 18:49

reestrANN = App.GetPrimaryReestr("10050", "-1", НачалоДня(ДатаНачала), КонецДня(ДатаОкончания));
Всего = reestrANN.RecordCount();
//Сообщить("Всего = "+ Всего);

Пока НЕ reestrANN.EOF Цикл

Тип = ?(reestrANN .Fields.Item("Doc_move").Value=1, "исходящий", "входящий");
ДокНомер = Строка(reestrANN .Fields.Item("Doc_num").Value) ;
ДокДата = Строка(reestrANN .Fields.Item("Doc_Date ").Value) ;
Сообщить("Это " + Тип + " документ: номер " + ДокНомер + " от " + ДокДата );

reestrANN.Next();
КонецЦикла;

- разве не проще и логичнее? Проверить не на чем, но по идее должно сработать
Востаннє редагувалось 02 грудня 2016, 10:09 користувачем Inkognito, всього редагувалось 3 разів.

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

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

Повідомлення Inkognito » 01 грудня 2016, 12:22

vatikan, получилось выбрать нужную информацию примером выше?

vatikan
Повідомлень: 8
З нами з: 22 листопада 2016, 18:32

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

Повідомлення vatikan » 02 грудня 2016, 00:19

Строка

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

reestrANN = App.GetPrimaryReestr("10050", "-1", НачалоДня(ДатаНачала), КонецДня(ДатаОкончания)); 
чего то не выполняется
Выбираю по своей старой схеме, той что описал выше

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

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

Повідомлення Inkognito » 02 грудня 2016, 10:09

Выполняется, но дает нулевой результат.
Просьба уважаемых дилеров сообщить в БО, что код поиска "Акцизных накладных" с использованием СОМ технологии не работает. Пример кода:
Поиск акцизных накладных | Показать
App = Новый COMОбъект("MEDOC.ZApplication");
reestrANN = App.GetPrimaryReestr("10050", "-1", НачалоДня(ДатаНачала), КонецДня(ДатаОкончания));
Всего = reestrANN.RecordCount();
Сообщить("Всего = "+ Всего);
Взял период с 01.12.2016 по 31.12.2016, завел акцизную накладную.
В результате выполнения поиска: "Всего=0" , т.е. метод не рабочий.

ЗображенняЗображення

Гудлайн
Повідомлень: 29
З нами з: 21 лютого 2013, 16:54

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

Повідомлення Гудлайн » 14 грудня 2016, 14:11

Снова у меня вопрос по AcceptDoc объекта Sender. Подтверждение входящих НН и РК работает, а попробовал для первички типа Счет или Акт - ничего не происходит. Метод Sender.Send(0) возвращает 0 и никаких ошибок.
Что я делаю не так?

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

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

Повідомлення PetroP » 14 грудня 2016, 14:47

Гудлайн писав:Снова у меня вопрос по AcceptDoc объекта Sender. Подтверждение входящих НН и РК работает, а попробовал для первички типа Счет или Акт - ничего не происходит.
Код приведите.
Гудлайн писав:Метод Sender.Send(0) возвращает 0 и никаких ошибок.
Заметил такое поведение со 150 версии. При этом документы отправляются.

Гудлайн
Повідомлень: 29
З нами з: 21 лютого 2013, 16:54

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

Повідомлення Гудлайн » 14 грудня 2016, 15:40

PetroP писав:[Код приведите.
Вот код в 1C7/7

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

	ДокМедок = MeDocApp.OpenDocumentByCode(CardCode, 0);
	Если ДокМедок.Card.FldVal("SENDSTT") <> 14 Тогда
		Предупреждение("Документ уже подтвержден ранее.");
		Возврат 0;
	КонецЕсли;
	
 	DocID = ДокМедок.Card.FldVal("DOCID"); ДокМедок = "";
		
	Попытка
		Sender = MeDocApp.GetDocSender();
		Sender.AcceptDoc(DocID, 1);
		Ответ = Sender.Send(0);  //0-контрагенту
	Исключение
		Предупреждение("Не удалось отправить подтверждение!");
	КонецПопытки;
При попытке отправки подтверждения для счета/Акта в медке ничего не происходит. Статус не меняется и после обновления журнала.
PetroP писав:Метод Sender.Send(0) возвращает 0. Заметил такое поведение со 150 версии. При этом документы отправляются.
При отправке документов в ГФС - уже давно, при отправке документов контрагенту - недавно. Отправка подтверждения для входящих НН и РК работает исправно и сейчас.

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

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

Повідомлення PetroP » 20 грудня 2016, 16:54

Вопрос о загрузке первичных документов в Медок через COM.
Создаем документ и записываем число с третьим знаком после запятой (например, количество в таблице товаров или работ). Открываем в Медке документ и видим, что третье число просто проигнорировано. Т. е. 1.001 превращается в 1, а 0.001 - в 0.
При ручном редактировании документа в Медок третий знак сохраняется.
Опробовано на многих шаблонах.
Баг или фитча?

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

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

Повідомлення Inkognito » 20 грудня 2016, 18:42

Проявил такое около месяца назад. Даже не информировал, т.к. знаю что с таким вопросом уже обращались, и реакция нулевая.
Проблема есть, но решать ее не хотят, не важно баг это или фича.

Юра_01
Повідомлень: 296
З нами з: 24 жовтня 2012, 15:45
Звідки: Харьков

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

Повідомлення Юра_01 » 07 лютого 2017, 17:45

Добрый день, кто может подсказать не могу подключиться к медку стыковкой 1с пишет (Не удалось подключить компоненту "AddIn.Medoc1C". Возможно, не указаны настройки MEDOC)
Запускаю медок через ezvit.exe, ezvitnet.exe результат один и тот же.
был на 2003 серве, все работало перешли на новый сервер 2016 стандарт, не пашет((

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

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

Повідомлення Inkognito » 10 лютого 2017, 17:55

Если ОС выше ХР (его аналог 2003) - подключение работает через... пень колоду.

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

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

Повідомлення Inkognito » 10 лютого 2017, 17:57

Копайте в сторону прав пользователя ОСи, реестра, хз чего еще :( Мне не удалось на 100% найти причину проблемы. Библиотека очень чувствительна к операционной системе, от нее бы вообще отказаться, и работать через чистый СОМ.

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

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

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

Бывают ситуации, когда приходится программно обновлять в Медке ранее загруженный документ (например, налоговую накладную).
Если попытаться обновить документ (используя для получения метод OpenOrCreateByExDocID), который открыт в Медке, возникает не просто ошибка, а полный вылет Медка.
Кто как обыгрывает данную ситуацию?
Может есть какой-то метод, обратный ShowDocument?

swimmer
Повідомлень: 1
З нами з: 29 березня 2017, 16:21

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

Повідомлення swimmer » 29 березня 2017, 16:37

Вопрос о загрузке "J0147102" "Відомості про особу яка бере участь у контрольованих операціях" в Медок через COM.
Doc = App.OpenOrCreateByExDocID("J0147102", 12, PDate, , ИД, 0);
Как обратится к реквизиту "Номер порции"?
К остальным "достучался" без проблем...
Спасибо...

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

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

Повідомлення Inkognito » 30 березня 2017, 21:10

... каталог установленного медка\tmpl\J0147102.xfld
Открывайте блокнотом.
<field name="N12" type="text" descr=" № порції" len="2" xsdname="R00G1" />
Соответственно, в поле N12 вставляйте нужное значение:
rsMain.Fields.Item("N12").Value = ЗначениеПорции;
Востаннє редагувалось 31 березня 2017, 12:55 користувачем Inkognito, всього редагувалось 2 разів.

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

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

Повідомлення Inkognito » 31 березня 2017, 12:19

PetroP
У меня и этот метод в обработке, и открытие.... вылета не было ни разу.

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

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

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

Inkognito
Медок локальный?

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

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

Повідомлення Inkognito » 31 березня 2017, 16:11

Да. Намек понял, надо будет как-то проверить на сетевом.

Відповісти

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