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

Родин Евгений

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

Повідомлення Родин Евгений » 16 жовтня 2012, 15:44

OlegBom
1) Да, нужно ждать когда выпустим orgId = Application.SeekOrg(+ параметры ) ;
Сейчас ее нет. Реализовали вчера утром. Протестировал к обеду, работает. Но официально ее еще нет.
2) Да, все верно. Просто копировал из своего примера, поэтому произошла нестыковка теории и практики. Спасибо, поправлю.
3) DataSet - это общетеоретический термин. Думаю, Вы знаете.
На практике для СОМ-обмена используется Doc.DataSets();
Сейчас подумаю, как лучше это перефразировать в Инструкции. Похоже, и правда нужно как-то стандартизировать описание.

Доработал. Вот последний вариант на сегодняшний день:
Вкладення
16-10-2012.rar
(108.43 Кіб) Завантажено 72 разів

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

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

Повідомлення OlegBom » 22 жовтня 2012, 13:52

Спасибо, Евгений!
С нетерпением жду изменений!

Родин Евгений

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

Повідомлення Родин Евгений » 22 жовтня 2012, 16:20

незачто. Кстати, сейчас в реализации еще две - для чтения из Медка и передачи в сторонню программу. Как сделаем, протестирую, тоже включим в описание.

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

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

Повідомлення OlegBom » 23 жовтня 2012, 14:29

Евгений, Application - откуда взялся этот обьект?Чей он?
В описании он взялся из ниоткуда и сразу используем его метод SeekOrg(....).
orgId = Application.SeekOrg( "едрпоу", "филиал" ).
Что-то упущено.

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

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

Повідомлення OlegBom » 23 жовтня 2012, 14:37

я так понял в контексте - это идентично App.

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

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

Повідомлення OlegBom » 23 жовтня 2012, 14:39

поставил 97 - обновление,
SeekOrg( ..) - нету там?

Родин Евгений

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

Повідомлення Родин Евгений » 23 жовтня 2012, 14:47

Нету. Системное обновление сместилось на следующую версию, т.к. в нем будет много (очень много) всего нового. Предполагаем выпустить в 10х числах, если снова не придется выпускать какое-то обновление с формами отчетности.

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

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

Повідомлення OlegBom » 23 жовтня 2012, 14:59

Жаль! Буду ждать.

---Billy---
Повідомлень: 18
З нами з: 06 квітня 2012, 13:15

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

Повідомлення ---Billy--- » 23 жовтня 2012, 16:08

Добрый день!
ZApp=СоздатьОбъект("medoc.ZApplication");
orgId = ZApp.SeekOrg("*****");

orgId = ZApp.SeekOrg("*****");
{D:\СЕЕК_ТЕСТ.ERT(30)}: Поле агрегатного объекта не обнаружено (SeekOrg)

я так понял ещё не реализована функция?
ЗЫ: версия 097

---Billy---
Повідомлень: 18
З нами з: 06 квітня 2012, 13:15

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

Повідомлення ---Billy--- » 23 жовтня 2012, 16:09

пока писал уже ответили)
тогда другой вопросик:
с помощью ZDocument.CreateDocument можно будет закидывать и НН, если да, то [BSTR charCode] = "J1201204"?

Родин Евгений

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

Повідомлення Родин Евгений » 23 жовтня 2012, 16:22

OlegBom
Могу привести пример использования (пЕДРПОУ, пФил - полеЕДРПОУ, полеФилиала - передаются из 1С):
Филиал можно не передавать, - в большинстве случаев он непонадобится. Просто в Медке ЕДРПОУ+филиал = составной ключ.

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

Попытка 
		App=СоздатьОбъект("MEDOC.ZApplication"); 
//			Предупреждение("Успешно подключились к программе M.E.DOC.");
	Исключение 
			Предупреждение("Приложение M.E.DOC не запущено !"); 
		Возврат; 
	КонецПопытки;   

	Попытка 	
		Если пФил="    " Тогда
						orgId = App.SeekOrg(пЕДРПОУ,);  
				  КонецЕсли;   
		Исключение 
				Предупреждение("Предприятия не существует в M.E.DOC :" + РазделительСтрок + "ЕДРПОУ : " + пЕДРПОУ + РазделительСтрок + РазделительСтрок +
				"Проверьте :" + РазделительСтрок + "- внесен ли код ЕДРПОУ корректно" + РазделительСтрок + 
				"Если да, создайте в M.E.DOC новое предприятие.");    
		Возврат;   	
	КонецПопытки;
App=СоздатьОбъект("MEDOC.ZApplication");
Фактически 1С будет пытаться найти Медок в запущенных процессах. Нето, что он берется из ниоткуда...
Просто считается, что Медок уже запущен и висит в процессах. Как видите, если это не так, - добавил обработку Ексепшена.
Филиал (в примере выше) текстовое поле (как и ЕДРПОУ) и потому проверяется 4 символа. Если поле филиала незаполнено

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

Если пФил="    "
, тогда обходимся без филиала. Может можно было и красивее реализовать... небольшой программист по 1С. Только начал программировать.

---Billy---
Да, только указанный Вами код - это Додаток2, а не НН.
Советую использовать CreateDocumentByParam (в Вашем случае).

---Billy---
Повідомлень: 18
З нами з: 06 квітня 2012, 13:15

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

Повідомлення ---Billy--- » 23 жовтня 2012, 16:39

Родин Евгений
по CreateDocumentByParam НН попадает во входящие...

Родин Евгений

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

Повідомлення Родин Евгений » 23 жовтня 2012, 16:42

При формировании НН добавьте код:

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

// 0 = Входящая НН 1 = Исходящая
rsMain.Fields.Item("NAKL_TYPE").Value=1;   
Ссылка 1
Ссылка 2, пункт 4.2 (там для ZDI, но это касается и СОМ).

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

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

Повідомлення OlegBom » 23 жовтня 2012, 20:41

Евгений!
>App=СоздатьОбъект("MEDOC.ZApplication");
>Фактически 1С будет пытаться найти Медок в запущенных процессах. Нето, что он берется из ниоткуда...

это я знаю, просто в описании ошибка :)

orgId = Application.SeekOrg( "едрпоу", "филиал" ) ;
надо
orgId = App.SeekOrg( "едрпоу", "филиал" ) ;
так как Application нигде больше не встречается.
По этому я и уточнял про Application, мало ли, а вдруг что-то в описании пропущено и есть такой обьект.
Спасибо.

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

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

Повідомлення OlegBom » 28 жовтня 2012, 19:42

Евгений!
Почему после команды
odataset:=omedok:DocumentsDataSet("PerDate =DateValue('26.10.2012') AND CharCode='J1201004'",.T.)
когда я проверяю odataset:RecordCount, то у меня 0.

А когда использую
odataset:=omedok:DocumentsDataSet("CharCode='J1201004'",.T.)
то odataset:RecordCount возвращает 334.
Хотя существует НН за 26.10.2012 число.

Да и 334 не совсем понятно, так как папка "Вхідні" содержит 19, а "Вихідні" 314. 314+19=333.
В "Корзине" - 53.
С ув. Олег!

Родин Евгений

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

Повідомлення Родин Евгений » 29 жовтня 2012, 09:31

в базе -одно предприятие, или несколько? По-умолчанию считывает все записи, которые есть в базе. Вполне допускаю, что в сумму могли попасть НН других предприятий. Если пришлете базу данных, скажу больше.
П.С. насколько я понял, Вы хотите из Медка перенести НН в 1С?

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

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

Повідомлення OlegBom » 29 жовтня 2012, 21:39

Да Евгений, в базе несколько предприятий!.
>насколько я понял, Вы хотите из Медка перенести НН в 1С?
Именно, хочу из Медка закачать НН, которые пришли от поставщиков.
Если можете направить в нужное русло, как правильно делать, буду благодарен.

А как выслать базу?

Родин Евгений

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

Повідомлення Родин Евгений » 29 жовтня 2012, 22:00

Как раз этой задачей вскоре займусь (сейчас занимаюсь передачей В Медок).
Скажем, не все там просто (из Медка). Завтра попытаюсь узнать больше. Базу не нужно, вот лучше подумать (мне) как в запросе точный код предприятия передавать. Видимо, тоже как-то получить и использовать orgId = App.SeekOrg();

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

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

Повідомлення OlegBom » 30 жовтня 2012, 11:52

Евгений, спасибо! Жду.Желаю успеха.
С ув. Олег!

Родин Евгений

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

Повідомлення Родин Евгений » 16 листопада 2012, 00:03

Выпущены несколько новых функций, в том числе упомянутая - в 098.
Справка будет доработана в ближайшее время, скорее всего в 099 версии.
Советую ее дождаться, - есть новые способы создания документа, с дополнительными параметрами.

Відповісти

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