Метод GetNNResponseNN

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

Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 11:45

App = Новый COMОбъект("MEDOC.ZApplication");
govReq = App.GetGovRequest();
Doc = govReq.GetNNResponseNN("3", "", "", Дата(2017, 06, 06), "10100", "123456789000"); //ИНН заменен, был реальный
Из справки | Показать
IZDocument GetNNResponseNN(dataset NN),
Поля в NN(string NN_NUM1, string NN_NUM2, string NN_NUM3, date DOCDATE, string DOC_TYPE, string IPNsel)
Метод, що повертає витяг, де є інформація про реєстрацію ПН/РК
Якщо накладна не зареєстрована – то функція поверне пустий документ (оскільки витяг відсутній)
Параметри:
DOC_TYPE – тип документа (ПН або RK)
NN_NUM1 – номер накладної (порядковий номер)
NN_NUM2 – номер накладної (вид діяльності)
NN_NUM3 – номер накладної (номер філії)
DOCDATE – дата документа
IPNsel – ІПН продавця
Результат | Показать
Ошибка при вызове метода контекста (GetNNResponseNN)
по причине:
Неверное число параметров
Еще один не работающий метод?... Параметры подставлены в соответствии со справкой.
П.С. при разработке метода, явно забыли добавить параметр docMove.

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 11:58

Параметр один - таблица.
Сначала надо создать таблицу с полями string NN_NUM1, string NN_NUM2, string NN_NUM3, date DOCDATE, string DOC_TYPE, string IPNsel.
А потом эту таблицу передать в параметр метода GetNNResponseNN.

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

Re: Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 12:15

PetroP
Попробовал два способа:
Тест 1 | Показать
Таб = Новый ТаблицаЗначений();
Таб.Колонки.Добавить("NN_NUM1");
Таб.Колонки.Добавить("NN_NUM2");
Таб.Колонки.Добавить("NN_NUM3");
Таб.Колонки.Добавить("DOCDATE");
Таб.Колонки.Добавить("DOC_TYPE");
Таб.Колонки.Добавить("IPNsel");

Стр = Таб.Добавить();
Стр.NN_NUM1 = "3";
Стр.NN_NUM2="";
Стр.NN_NUM3="";
Стр.DOCDATE = Дата(2017, 06, 06);
Стр.DOC_TYPE = "10100";
Стр.IPNsel = "123456789000";


Doc = govReq.GetNNResponseNN(Таб);
Тест 2 | Показать

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

Стр = ТЧ1.Добавить();
Стр.NN_NUM1 = "3";
Стр.NN_NUM2="";
Стр.NN_NUM3="";
Стр.DOCDATE = Дата(2017, 06, 06);
Стр.DOC_TYPE = "10100";
Стр.IPNsel = "123456789000";

Doc = govReq.GetNNResponseNN(ТЧ1);
Ошибка в обоих случаях: Типы не совпадают (1)
Можете помочь разобраться, ЧЯДНТ?

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 12:26

Нет, это же одинесные объекты, медок их не поймет.
Медовая таблица создается методом GetEmptyDataSet.

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

Re: Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 13:06

Тест GetEmptyDataSet | Показать
Ds= App.GetEmptyDataSet();
Ds.Fields.AddField("NN_NUM1", 1);
Ds.Fields.AddField("NN_NUM2", 1);
Ds.Fields.AddField("NN_NUM3", 1) ;
Ds.Fields.AddField("DOCDATE", 9); //11
Ds.Fields.AddField("DOC_TYPE", 1);
Ds.Fields.AddField("IPNSEL", 1);

Ds.Fields.Item("NN_NUM1").Value = "3";
Ds.Fields.Item("NN_NUM2").Value ="";
Ds.Fields.Item("NN_NUM3").Value ="";
Ds.Fields.Item("DOCDATE").Value = '2017, 06, 06';//Дата(2017, 06, 06);
Ds.Fields.Item("DOC_TYPE").Value ="10100";
Ds.Fields.Item("IPNSEL").Value = "123456789000";
А с датой что не так? Пробовал коды 9 и 11, результат одинаков.

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 13:12

Для даты, емнип, "6".

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

Re: Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 13:22

| Показать
AddField ( string fieldName, ZDataTypeEnum fieldType );
Метод додавання поля у таблицю. Метод викликається кожного разу при додаванні нового поля.

Типи полів:
zdtUnknown = 0,
zdtString = 1,
zdtSmallint = 2,
zdtInteger = 3,
zdtWord = 4,
zdtBoolean = 5,
zdtFloat = 6,
zdtCurrency = 7,
zdtBCD = 8,
zdtDate = 9,
zdtTime = 10,
zdtDateTime = 11
Если поставить код 6 для даты, Медок вылетает...

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 13:23

Пробуйте еще "4" или "5".

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 13:28

Текущее описание:
AddField ( string fieldName, ZDataTypeEnum fieldType );
Метод добавления поля в таблицу. Метод вызывается каждый раз
при добавлении нового поля.
Типи полей:
typeLong = 0;
typeFloat =1;
typeText = 2;
typeBool = 3;
typeDate = 4;
typeTime = 5;
typeDateTime = 6.

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

Re: Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 13:46

Интересно... в описаниии из "C:\ProgramData\Medoc\Medoc\help\manuals" описано 6 типов, а на сайте в "formaty_import-export.doc" --- 11 типов.
Коды 4,5,6 | Показать
Ошибка при вызове метода контекста (GetNNResponseNN)
Doc = govReq.GetNNResponseNN(Ds);
по причине:
Неизвестная ошибка
9 и 11 тоже не работают....

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 14:29

Приведите полный код.

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

Re: Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 17:32

Это он и есть:
Код | Показать
Ds= App.GetEmptyDataSet();
Ds.Fields.AddField("NN_NUM1", 1);
Ds.Fields.AddField("NN_NUM2", 1);
Ds.Fields.AddField("NN_NUM3", 1) ;
Ds.Fields.AddField("DOCDATE", 9); //11
Ds.Fields.AddField("DOC_TYPE", 1);
Ds.Fields.AddField("IPNSEL", 1);

Ds.Fields.Item("NN_NUM1").Value = "3";
Ds.Fields.Item("NN_NUM2").Value ="";
Ds.Fields.Item("NN_NUM3").Value ="";
Ds.Fields.Item("DOCDATE").Value = '2017, 06, 06';//Дата(2017, 06, 06);
Ds.Fields.Item("DOC_TYPE").Value ="10100";
Ds.Fields.Item("IPNSEL").Value = "123456789000";
Если у Вас есть пример реального документа, возьмите его номер, дату, и ИНН, попробуйте подставить. Получится?

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 18 грудня 2017, 18:34

Я вижу его работу следующим образом:

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

Ds = App.GetEmptyDataSet();
Ds.Fields.AddField("NN_NUM1", 2);
Ds.Fields.AddField("NN_NUM2", 2);
Ds.Fields.AddField("NN_NUM3", 2);
Ds.Fields.AddField("DOCDATE", 4);
Ds.Fields.AddField("DOC_TYPE", 2);
Ds.Fields.AddField("IPNSEL", 2);

Ds.Append();
Ds.Fields.Item("NN_NUM1").Value = "999";
Ds.Fields.Item("NN_NUM2").Value = "";
Ds.Fields.Item("NN_NUM3").Value = "";
Ds.Fields.Item("DOCDATE").Value = '20171101';
Ds.Fields.Item("DOC_TYPE").Value = "ПН";
Ds.Fields.Item("IPNSEL").Value = "012345678901";

govReq = App.GetGovRequest();

Doc = govReq.GetNNResponseNN(Ds);

tabl = Doc.DataSets("TAB1");
На практике не применял, т. к. пользуюсь только "GetNNResponse" и "GetNNresponseList".

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

Re: Метод GetNNResponseNN

Повідомлення Inkognito » 18 грудня 2017, 19:08

Ошибки не возникает, если взять вышеприведенный код.
Но при попытке прочитать содержимое (хотя бы на уровне названий полей), уже вызывает ошибку Медка:
| Показать
Всего = tabl.RecordCount(); //"Неизвестная ошибка", в 1С
Для Лч = 0 По Всего - 1 Цикл
Сообщить(tabl.Fields.Item(Лч).Name);
КонецЦикла;
В общем, результата нет. Да и сам метод, судя по описанию, оперирует "Витягами", а не ищет информацию по заданным параметрам в реестре первичных документов. Указанные Вами методы, сулдя по описанию, тоже ищут информацию в Витягах. Значит, тоже не подходят.
Цель: найти данные регистрации по дате, номеру, типу, направлению - без использования трудозатратного метода GetPrimaryReestr(), который на больших объемах (тысячи документов в день) просто нереально тормозит систему.

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

Re: Метод GetNNResponseNN

Повідомлення PetroP » 19 грудня 2017, 11:36

У меня RecordCount ошибки не дает, но он всегда равен нулю. Видимо либо метод GetNNResponseNN не работает, либо я не понимаю, как он работает...

Відповісти

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