Сторінка 1 з 1

Как получить реестр отчетов через com

Додано: 17 березня 2020, 15:23
kvatik
Добрый день.
Пишу интеграцию с Медком через COM (Medoc.ZApplication)
Есть метод GetPrimaryReestr для получения реестра первичных документов.
Есть ли аналогичный метод для реестра отчетов? Мне необходимо вытащить из Медка Таблицы данных плательщика налогов (J1312303).

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 15:49
kvatik
Подскажите пожалуйста хотя бы где спросить, очень надо.

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 17:05
priup
kvatik писав:
18 березня 2020, 15:49
Подскажите пожалуйста хотя бы где спросить, очень надо.
Попросите Вашего продавца МЕДОК вопрос в БО отослать!!

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 17:38
Белокопытов Геннадий
kvatik
Добрый день. На текущий момент для работы с реестром отчетов СОМ методов, аналогичных GetPrimaryReestr, нет.
Вы можете посмотреть вариант DocumentsDataSet из описания существующих методов.
Если вам необходима индивидуальная доработка, можете также обратиться к обслуживающей организации или по форме обратной связи на оф. сайте, ссылка

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 17:41
Inkognito
DS = App.DocumentsDataSet("PerDate > DateValue('01.01.2019')"); //датасет за пеірод з 01.01.2019, поставте свій варіант
DS.Filter = "Charcode=J1312303"; //фільтр за чаркодом, щоб тільки такі звіти залишились
DS.First(); //позиціювання в першу стрічку датасета

Пока НЕ DS.EOF Цикл //цикл

Cardcode = Формат(DS.Fields.Item("Cardcode").Value,"ЧГ="); //внутрішній код
PerDate = DS.Fields.Item("PerDate").Value; //період звіту
Сообщить("Cardcode=" + Cardcode + "; PerDate =" + PerDate); //для наглядності
// читаємо документ
док = App.OpenDocumentByCode(Cardcode);
MAIN= док.DataSets("MAIN"); //шапка
TAB1= док.DataSets("TAB1"); //таблиця
//далі свій код
//
DS.Next(); //наступна стрічка
КонецЦикла;

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 17:44
kvatik
Огромнейшее спасибо!!!! :)

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 18:02
kvatik
При выполнении App.DocumentsDataSet медок крашится (((
Ну буду ковырять.

Re: Как получить реестр отчетов через com

Додано: 18 березня 2020, 20:01
Белокопытов Геннадий
kvatik писав:
18 березня 2020, 18:02
При выполнении App.DocumentsDataSet медок крашится (((
Ну буду ковырять.
Необходимо более детальное понимание, что вы выполняете и что в логах программы.

Re: Как получить реестр отчетов через com

Додано: 19 березня 2020, 11:34
kvatik
Inkognito писав:
18 березня 2020, 17:41
DS = App.DocumentsDataSet("PerDate > DateValue('01.01.2019')"); //датасет за пеірод з 01.01.2019, поставте свій варіант
DS.Filter = "Charcode=J1312303"; //фільтр за чаркодом, щоб тільки такі звіти залишились
DS.First(); //позиціювання в першу стрічку датасета

Пока НЕ DS.EOF Цикл //цикл

Cardcode = Формат(DS.Fields.Item("Cardcode").Value,"ЧГ="); //внутрішній код
PerDate = DS.Fields.Item("PerDate").Value; //період звіту
Сообщить("Cardcode=" + Cardcode + "; PerDate =" + PerDate); //для наглядності
// читаємо документ
док = App.OpenDocumentByCode(Cardcode);
MAIN= док.DataSets("MAIN"); //шапка
TAB1= док.DataSets("TAB1"); //таблиця
//далі свій код
//
DS.Next(); //наступна стрічка
КонецЦикла;
Cardcode = Формат(DS.Fields.Item("CODE").Value,"ЧГ=");
Все получилось спасибо.
P.S. С датой тоже что-то отбор не получился, но так как мы решили грузить все, то фильтр по дате не нужен.

Re: Как получить реестр отчетов через com

Додано: 19 березня 2020, 11:35
kvatik
Итоговый код | Показать
    // получаем данные с МЕДКА
    Попытка
        App = Новый COMОбъект("Medoc.ZApplication")
    Исключение
Сообщить(НСтр("ru = 'Подключение не выполнено. Возможные причины:';uk = 'Підключення не виконано. Можливі причини:'") + Символы.ПС +
НСтр("ru = '- M.E.Doc не запущен.';uk = '- M.E.Doc не запущений.'") + символы.ПС +
НСтр("ru = '- не выполнен вход в предприятие из списка.';uk = '- не виконаний вхід у підприємство зі списку.'"), СтатусСообщения.Важное);
        Возврат;
    КонецПопытки;                
    
ОргМедок = App.GetCurrEdrpou();
Если Не УстановитьОрганизацию(ОргМедок) Тогда
Сообщить("Не найдена организация, выбранная в Медке, по коду ЕДРПОУ " + ОргМедок, СтатусСообщения.Важное);
Возврат;
КонецЕсли;
//DS = App.DocumentsDataSet("PerDate > DateValue('01.02.2020') AND PerDate < DateValue('01.03.2020') AND Charcode='J1312303'");
DS = App.DocumentsDataSet("Charcode='J1312303'");
//DS.Filter = "Charcode=J1312303";
DS.First();
    
    Пока НЕ DS.EOF Цикл
    
     //Cardcode = Формат(DS.Fields.Item("Cardcode").Value,"ЧГ=");
     Cardcode = Формат(DS.Fields.Item("CODE").Value,"ЧГ=");
     Если Cardcode="" Тогда
     DS.Next();
Продолжить;
КонецЕсли;
     PerDate = DS.Fields.Item("PerDate").Value;
     Сообщить("Cardcode=" + Cardcode + "; PerDate =" + PerDate);
     //
     Doc = App.OpenDocumentByCode(Cardcode);
     rsMain= Doc.DataSets("MAIN");
    
    КонтрагентИНН = rsMain.Fields.Item("FIRM_INN").Value;
    
    НоваяСтрока_Документы = _Документы.Добавить();
    НоваяСтрока_Документы.CARDCODE = rsMain.Fields.Item("CARDCODE").Value;
    НоваяСтрока_Документы.CODE = rsMain.Fields.Item("CODE").Value;
    НоваяСтрока_Документы.Документ = НайтиДокументПоКодуМедка(НоваяСтрока_Документы.CARDCODE);
    Если Не ЗначениеЗаполнено(НоваяСтрока_Документы.Документ) Тогда
НоваяСтрока_Документы.ЗагружатьДокумент = Истина;
КонецЕсли;
    
     rsTab= Doc.DataSets("TAB1");
    СчетчикТЧ = rsTab.RecordCount;
    Пока СчетчикТЧ <> 0 Цикл
        
        НоваяСтрока = ДанныеДокументов.Добавить();
        НоваяСтрока.CARDCODE = rsTab.Fields.Item("CARDCODE").Value;
        НоваяСтрока.CODE = rsTab.Fields.Item("CODE").Value;
        НоваяСтрока.TAB1_ = rsTab.Fields.Item("TAB1_").Value;
        НоваяСтрока.TAB1_A1 = rsTab.Fields.Item("TAB1_A1").Value;
        НоваяСтрока.TAB1_A2 = rsTab.Fields.Item("TAB1_A2").Value;
        НоваяСтрока.TAB1_A3 = rsTab.Fields.Item("TAB1_A3").Value;
        НоваяСтрока.КодУКТВЭД_приобретения = НайтиКлассификаторУКТВЭД(НоваяСтрока.TAB1_A2);
        НоваяСтрока.КодУКТВЭД_поставки = НайтиКлассификаторУКТВЭД(НоваяСтрока.TAB1_A3);
        
        СчетчикТЧ = СчетчикТЧ-1;
        rsTab.Next();    
    КонецЦикла;
    
     //
     DS.Next();
    КонецЦикла;