Загрузка из Медка документов

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Загрузка из Медка документов

Повідомлення OlegBom » 10 липня 2014, 14:52

Как выполнить с помощью COM- технологии, загрузку налоговой накладной(которую прислал контрагент на утверждение) во внешнюю учетную систему?

aleksiychuk
Повідомлень: 24
З нами з: 28 травня 2014, 11:53

Re: Загрузка из Медка документов

Повідомлення aleksiychuk » 10 липня 2014, 15:02

Вам необходимо:
1) Найти документ.
2) Зачитать его поля.

Все методы, которые нужно использовать описаны в инструкции по COM-объектам (интеграция с учетными системами), которая есть в корне M.E.Doc (help-manuals-Инструкция по COM-объектам)

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 10 липня 2014, 19:18

Извините, за настойчивость. Алексей ( aleksiychuk) а Вы инструкцию сами читали то?

Я например перечитал несколько раз и не увидел. Как я могу из "реестра первичных документов" в МЕДКЕ прочитать только налоговые накладные, например за 01/07/2014 и загрузить их в свою учетную систему.
Мне как минимум надо получить массив со следующими данными.
- номер налоговой накладной
- номер ЕДРПОУ контрагента или налоговый номер
- суммы итоговые (20%, 0% и т.д. колонки в НН) для без НДС - Усього за розділом I в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для НДС - Податок на додану вартість - розділ III в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для ИТОГО. - Загальна сума з ПДВ - розділ IV в НН

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 10 липня 2014, 19:41

Может в инструкции по СОМ-объектам (интеграция с учетными системами) это раздел 2.4 ?

Вроде как ф-я DocumentsDataSet . Но я не понял что я получу за "Объект таблица документов по условию". Как данные вытаскивать из этого обьекта?

>Получить список документов по условию
>Параметры:
>String CondString – строка условия поиска. Должна иметь
>стандартный синтаксис оператора SQL WHERE.
>Возвращает:
>Объект таблица документов по условию .

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 11 липня 2014, 16:07

Уважаемые программисты! Я получу ответ на свой вопрос?

Как данные вытаскивать из этого обьекта DocumentsDataSet ?

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 11 липня 2014, 16:13

Кроме всего прочего программа не понимает строку

filterTbl:Fields:Item("STAN")

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 11 липня 2014, 16:17

Может вообще нельзя из МЕДКА прочитать данные о полученных налоговых накладных от контрагента из модуля "Реестр первичных документов"?

Так скажите, а то я уже второй день мучаюсь.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 11 липня 2014, 17:04

И как-то "STAN " - абсолютно не ассоциируется с направлением.
Из инструкции
-----------------------------
Для новой первички, STAN может принимать значения:
-15 Всі
1 Вхідний
2 Вихідний
-2 Архів
1 Корзина
---------------------------------------------
Ведь в модуле "реестр первичных документов" в Медке СТАН - это (всі, на опрацюванні, архів, корзина) ,
а НАПРЯМОК (всі, вхідні,вихідні).

Что-то логика хромает.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 11 липня 2014, 17:51

filterTbl.Fields.Item("DOCTYPE").Value = 0; //тип документа
filterTbl.Fields.Item("PERFROM").Value = "01.01.2012"; //период с
filterTbl.Fields.Item("PERTO").Value = "01.01.2013"; //период по
filterTbl.Fields.Item("PARTNEREDRPOU").Value = "9912312611"; //ЕДРПОУ контрагента
filterTbl.Fields.Item("PARTNERDEPT").Value = ""; //Код филиала контрагента
filterTbl.Fields.Item("STAN").Value = 2; //1 - входящие 2 - исходящие
reestrFil.ApplyFilter();


Где взять перечень Item. Так как вижу что нет Item, который переключает дату с позиции "За период" на "Интервал".
Так как установка PERFROM и PERTO ничего не дает, если не переключить в позицию "Интервал".

Белокопытов Геннадий
Универсал (склонность - системные вопросы)
Повідомлень: 10116
З нами з: 13 січня 2012, 11:21

Re: Загрузка из Медка документов

Повідомлення Белокопытов Геннадий » 11 липня 2014, 17:54

OlegBom
Здравствуйте!
Ваш вопрос передан в отдел разработки. После проверки, специалисты данного направления предоставят соответствующий ответ

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 11 липня 2014, 18:05

Я надеюсь переданы два вопроса.

1)Как данные вытаскивать из этого обьекта DocumentsDataSet ?
2)Где взять перечень Item (filterTbl.Fields.Item("PARTNEREDRPOU").Value = "9912312611"; //ЕДРПОУ контрагента ) для обьекта filterTbl.

И как мне решить задачу.

Как я могу из "реестра первичных документов" в МЕДКЕ прочитать только налоговые накладные, например за 01/07/2014 и загрузить их в свою учетную систему.
Мне как минимум надо получить массив со следующими данными.
- номер налоговой накладной
- номер ЕДРПОУ контрагента или налоговый номер
- суммы итоговые (20%, 0% и т.д. колонки в НН) для без НДС - Усього за розділом I в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для НДС - Податок на додану вартість - розділ III в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для ИТОГО. - Загальна сума з ПДВ - розділ IV в НН

aleksiychuk
Повідомлень: 24
З нами з: 28 травня 2014, 11:53

Re: Загрузка из Медка документов

Повідомлення aleksiychuk » 11 липня 2014, 18:44

'Получение документа по чаркоду
'SENDSTT 14 Получено
'STATUS 14 Импортовано
Cnd = "CharCode = 'J1201005' AND PerDate >= '01.07.2014' and PerDate < '01.08.2014' and SENDSTT = 14 and STATUS = 4"

DocCode = 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
rsSomeDoc.First
DocCode = rsDocs.FldVal("Code")'уникальный код документа
if DocCode > 0 then
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
'SomeDoc.GblVal("имя поля") получение значение из документа
end if
rsSomeDoc.next
Wend

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 12 липня 2014, 13:56

Добрый день!
Извините меня за мою настойчивость. Но то что Вы прислали, как-то непонятно.
Начинаем анализировать. После символов ------------ мой комментарий к строке выше.

'SENDSTT 14 Получено
--------------(это комментарий) если это поле =14, то это полученные документы
'STATUS 14 Импортовано
--------------(это комментарий) если это поле =14, то это импортированные документы. Хотя зачем мне импортированные, меня интересуют присланные в Медок моими клиентами.
Cnd = "CharCode = 'J1201005' AND PerDate >= '01.07.2014' and PerDate < '01.08.2014' and SENDSTT = 14 and STATUS = 4"
--------------переменной Cnd присвоили строку фильтр для SELECT и здесь уже проблема . ПОЧЕМУ STATUS =4 , и что такое 4.Вверху написано 14.
--------------ГДЕ ПРАВДА?
DocCode = 0
--------------переменной DocCode присвоили 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
--------------переменная rsDocs указывает на обьект с массивом документов выбранных SELECT при помощи фильтра Cnd методом DocumentsDataSet.
rsSomeDoc.First
-------------- А ЧТО ЭТО ЗА обьект rsSomeDoc??? Смысл то вроде понятен, мы стаем на первую запись в таблице. Но при реализации в моей учетной системе не получается.
-------------- Я НЕ ЗНАЮ ЧТО ЭТО ЗА ОБЬЕКТ rsSomeDoc??? Замена его на rsDocs непомогает.
DocCode = rsDocs.FldVal("Code")'уникальный код документа
-------------- чтение уникального кода документа.
if DocCode > 0 then
-------------- если код документа > 0
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
-------------- то с помощью метода OpenDocumentByCode открываем его.
-------------- И ГДЕ ОПИСАНИЕ ЭТОГО МЕТОДА OpenDocumentByCode??? В инструкции его нет
'SomeDoc.GblVal("имя поля") получение значение из документа
-------------- и радостно получаем значения полей из этого документа
-------------- я то здесь догадываюся, что мне надо пойти в Медок посмотреть електронный вид налоговой накладной
-------------- и там прописаны поля документа.И если я не ошибся то возможно прочитаю их значение.
end if
-------------- конец условия
rsSomeDoc.next
-------------- передвигаемся дальше по таблице, которая представлена обьектом rsSomeDoc, КОТОРЫЙ НИГДЕ НЕ ОПИСАН И НЕ ОПРЕДЕЛЁН???!!!
Wend
-------------- конец цикла. Интересно А ГДЕ ЕГО НАЧАЛО??? Где WHILE??? Может если б Вы прислалили весь цикл, то часть вопросов отпала бы сама собой.

С уважением жду ответа.

aleksiychuk
Повідомлень: 24
З нами з: 28 травня 2014, 11:53

Re: Загрузка из Медка документов

Повідомлення aleksiychuk » 14 липня 2014, 11:20

Добрый день.
Вот скрипт,который Вам надо:

On Error Resume Next
set App = CreateObject("Medoc.ZApplication")
Cnd = "CharCode = 'J1201005' AND PerDate >= '26.07.2013' and PerDate < '01.11.2014' and SENDSTT = 14"

DocCode = 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
rsDocs.First
While Not rsDocs.EOF
DocCode = rsDocs.FldVal("Code")'уникальный код документа
if DocCode > 0 then
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
SomeDoc.GblVal("имя поля") получение значение из документа
end if
rsDocs.next
Wend

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 14 липня 2014, 15:43

Добрый день! Спасибо за скрипт.

rsDocs.EOF - эта строка, переведённая для моей учетной системы
rsDocs:EOF() - вызывает ошибку
-----------------------------------------------------------------------------------
Член группы не найден. Object has no member with this name EOF
Аргумент[1] = EOF

Run FEVAL : MEMOEVAL
line : 10
string: oTablDocs:Eof()
-----------------------------------------------------------------------------------
МОжет этот метод не доступен?

aleksiychuk
Повідомлень: 24
З нами з: 28 травня 2014, 11:53

Re: Загрузка из Медка документов

Повідомлення aleksiychuk » 14 липня 2014, 15:48

Для этого необходимо, чтобы был запущен медок и выполнен вход в предприятие.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 14 липня 2014, 15:52

Все так и сделано
с помощью этой строки
-user Admin -org 13961362','D:\ProgramData\Medoc\Medoc\ezvit.exe

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 14 липня 2014, 15:54

rsDocs := oMedokApp:DocumentsDataSet(cSql)

обьект rsDocs - прекрасно создается. ТОлько работать с ним не получается.

ВОт что вижу

rsDocs:SysObject (N) 163 370 928
rsDocs:License (C)
rsDocs:CLSID (C)
rsDocs:owner (O) ActiveXObject
rsDocs:Server (C)
rsDocs:Interface (N) 185 701 940
rsDocs:__resource
rsDocs:Cargo (U) NIL
rsDocs:__noivar (U) NIL
rsDocs:InterfaceName (C) IPrimaryDocs
rsDocs:UseMarshalling (L) .T.
rsDocs:EventHandlers (A) {}

У меня создается такое вечатление, что с обьектом DocumentsDataSet - невозможно работать через MEDOC.ZApplication.
Вы там где-то чего-то блокируете.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: Загрузка из Медка документов

Повідомлення OlegBom » 14 липня 2014, 16:32

"Член группы не найден".
Как я понимаю, происходит обращение к несуществующему методу/свойству.

При этом вот такие вещи работают на ура.
..............................................................
omedok := CreateObject("MEDOC.ZApplication")
...
odoc:=omedok:CreateDocumentByParam("J1201005",0,DTOC(dDate),1)
omain:=odoc:DataSets("MAIN")
osod:=odoc:DataSets("TAB1")
odoc:UpdateSysFields()
omain:Edit()
и т.д
Это запись налоговой накладной напрямую в Медок.
Аж обидно, записать могу, а прочитать нет.

aleksiychuk
Повідомлень: 24
З нами з: 28 травня 2014, 11:53

Re: Загрузка из Медка документов

Повідомлення aleksiychuk » 14 липня 2014, 17:06

По скрипту проверили, запись файл и чтение работают.
Сохраните, пожалуйста, текст программы в файл с расширением vbs и выполните еще раз.

Відповісти

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