Экспорт налоговых накладных в свою учетную систему
Экспорт налоговых накладных в свою учетную систему
Добрый день!
Есть задача получить список налоговых накладных из медка в свою учетную систему. Всех накладных, и своих и присланных контрагентами.
Выборку из журнала сделал:
PrimDocs:=medocapp.GetPrimaryDocs;
Reestr:=PrimDocs.GetPrimaryReestr(10100,-1,StrToDate('10.01.2017'),StrToDate('13.01.2017'));
Reestr.First;
While not Reestr.Eof do begin
Doc:=medocapp.OpenDocumentByCode(367548, true);
RstDS:=Doc.DataSets('',1);
?????????????????????
Reestr.Next;
end;
Вот в указанном месте прочитал заглавную часть НН могу, а как прочитать информацию о товаре/услуге? Вот в чем вопрос!
Пробовал RstDS:=Doc.DataSets('TAB1',1); появляется дополнительная информация, но похоже не та и только одна строчка.
Очень нужна помощь!
Спасибо!
Есть задача получить список налоговых накладных из медка в свою учетную систему. Всех накладных, и своих и присланных контрагентами.
Выборку из журнала сделал:
PrimDocs:=medocapp.GetPrimaryDocs;
Reestr:=PrimDocs.GetPrimaryReestr(10100,-1,StrToDate('10.01.2017'),StrToDate('13.01.2017'));
Reestr.First;
While not Reestr.Eof do begin
Doc:=medocapp.OpenDocumentByCode(367548, true);
RstDS:=Doc.DataSets('',1);
?????????????????????
Reestr.Next;
end;
Вот в указанном месте прочитал заглавную часть НН могу, а как прочитать информацию о товаре/услуге? Вот в чем вопрос!
Пробовал RstDS:=Doc.DataSets('TAB1',1); появляется дополнительная информация, но похоже не та и только одна строчка.
Очень нужна помощь!
Спасибо!
Re: Экспорт налоговых накладных в свою учетную систему
Все правильно делаете. Только неправильно перебираете. Это же датасет, значит его надо построчно считать:Пробовал RstDS:=Doc.DataSets('TAB1',1); появляется дополнительная информация, но похоже не та и только одна строчка.
Синтаксис 1С такой ("переведите" на свою систему):
table = ОтчетВх.DataSets("TAB1"); //она же RstDS:=Doc.DataSets('',1); //получаем датасет
table.First(); //позиционируемся на 1 записи
Пока НЕ table.EOF Цикл //цикл
Сообщить(Отчет.GetValue("TAB1", "TAB1_A8")); //перебираем поля
.....
table.Next(); //продолжить поиск
КонеЦЦикла;
Востаннє редагувалось 31 січня 2017, 13:01 користувачем Inkognito, всього редагувалось 1 раз.
Re: Экспорт налоговых накладных в свою учетную систему
Gavryuk, как успехи?
Re: Экспорт налоговых накладных в свою учетную систему
Дык ктож Вам скажет................Inkognito писав:....... как успехи?
![Дразнится :P](./images/smilies/icon_razz.gif)
https://www.youtube.com/watch?v=1Q54t3-3ZaE
ХутинПуйло!
ХутинПуйло!
Re: Экспорт налоговых накладных в свою учетную систему
priup писав:Дык ктож Вам скажет................Inkognito писав:....... как успехи?
![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
По перечню позиций получаю нужно количество строк, но в каждой из них суммаа всех строк. Даже колличество суммируется (килограммы с метрами складываются в том числе).
Как поборю, обязательно отпишусь.
пысы: всем сопереживающим спасибо!
-
- Повідомлень: 717
- З нами з: 13 червня 2012, 09:38
Re: Экспорт налоговых накладных в свою учетную систему
Навіщо складувать кілограми з метрами, коли у них різний код одиниці виміру?Gavryuk писав:Даже колличество суммируется (килограммы с метрами складываются в том числе).
Востаннє редагувалось 31 січня 2017, 16:36 користувачем poltava_energy, всього редагувалось 1 раз.
-
- Повідомлень: 717
- З нами з: 13 червня 2012, 09:38
Re: Экспорт налоговых накладных в свою учетную систему
poltava_energy писав:Навіщо складувать кілограми з метрами, коли у них різний код одиниці виміру?Gavryuk писав:Даже колличество суммируется (килограммы с метрами складываются в том числе).
Re: Экспорт налоговых накладных в свою учетную систему
Я би теж хотів це знати. Але з розробниками поспілкуватися схоже марно прагнути.poltava_energy писав:Навіщо складувать кілограми з метрами, коли у них різний код одиниці виміру?Gavryuk писав:Даже колличество суммируется (килограммы с метрами складываются в том числе).
-
- Повідомлень: 717
- З нами з: 13 червня 2012, 09:38
Re: Экспорт налоговых накладных в свою учетную систему
До чого тут розробникиGavryuk писав:Я би теж хотів це знати. Але з розробниками поспілкуватися схоже марно прагнути.poltava_energy писав:Навіщо складувать кілограми з метрами, коли у них різний код одиниці виміру?Gavryuk писав:Даже колличество суммируется (килограммы с метрами складываются в том числе).
![Удивлён :o](./images/smilies/icon_e_surprised.gif)
Вам пан Інкогніто підсказав дієвий алгоритм:
Поля потрібно перебирати самому, і самому ж слідкувати за відповідністю одиниць.Inkognito писав:Сообщить(Отчет.GetValue("TAB1", "TAB1_A8")); //перебираем поля
Re: Экспорт налоговых накладных в свою учетную систему
У жодного із класів не має такого методу. Використовую Deplhi. Я розумію, що то мої проблеми, тому на цьому і не акцентував увагу.poltava_energy писав: Вам пан Інкогніто підсказав дієвий алгоритм:Поля потрібно перебирати самому, і самому ж слідкувати за відповідністю одиниць.Inkognito писав:Сообщить(Отчет.GetValue("TAB1", "TAB1_A8")); //перебираем поля
Поля перебирати я і сам умію, та перебирати треба записи. Вони перебираються:
CardCode:=Reestr.Fields.Item['CARDCODE'].Value;
Doc:=medocapp.OpenDocumentByCode(CardCode, true);
RstDS:=Doc.Card;
RstDS:=Doc.DataSets('TAB1',2);
RstDS.First;
while not RstDS.Eof do begin
memo1.Lines.add(RstDS.Fields.Item[9].name+'->'+rstds.FldVal[9]+
RstDS.Fields.Item[14].name+'->'+FloatToStr(rstds.FldVal[14]));
rstDS.Next;
end;
Я правильно перебираю?
Але всі записи повертають одне й те саме значення: суму по стовпчиках з усіх записів. І я про це писав, ви не звернули увагу.
-
- Повідомлень: 717
- З нами з: 13 червня 2012, 09:38
Re: Экспорт налоговых накладных в свою учетную систему
Кинь сюди zip-архів проекту, гляну по свободі як матиму вільний час та натхнення...Gavryuk писав:У жодного із класів не має такого методу. Використовую Deplhi. Я розумію, що то мої проблеми, тому на цьому і не акцентував увагу.
Re: Экспорт налоговых накладных в свою учетную систему
додав
- Вкладення
-
- MeDOC.rar
- (172.71 Кіб) Завантажено 25 разів
Re: Экспорт налоговых накладных в свою учетную систему
Доречі дивна штука виходить:
команда
Reestr:=PrimDocs.GetPrimaryReestr(10100,-1,StrToDate('10.01.2017'),StrToDate('13.01.2017'));
Reestr.First;
Doc:=medocapp.OpenDocumentByCode(CardCode, true);
RstDS:=Doc.Card;
rstds.Fields.Item['DOCNAME'].value
видає все як потрібно "Ïîäàòêîâà íàêëàäíà ¹41523 â³ä 13.01.2017"
а схожа комбінація
Doc:=medocapp.OpenDocumentByCode(367190, true);
RstDS:=Doc.DataSets('TAB1',1);
rstds.First;
for i:=0 to RstDS.Fields.Count-1 do begin
try
val:=rstds.Fields.Item[RstDS.Fields.Item.name].value;
s:=string(val);
except s:='?????' end;
видає:
CARDCODE ->1468760
CODE ->1358802
RECNO ->6
TAB1_51 ->0
TAB1_A1 ->10
TAB1_A10 ->268011.99
TAB1_A110 ->0
TAB1_A111 ->0
TAB1_A12 ->0
TAB1_A13 ->?????
TAB1_A131 ->0
TAB1_A14 ->?????
TAB1_A141 ->1336
TAB1_A15 ->757.724
TAB1_A16 ->2274.62
TAB1_A17 ->0
TAB1_A171 ->0
TAB1_A18 ->0
TAB1_A19 ->0
TAB1_A8 ->80
TAB1_A9 ->0
TAB1_RATE ->0
Чомусь стрінг викливає except. Дивно.
команда
Reestr:=PrimDocs.GetPrimaryReestr(10100,-1,StrToDate('10.01.2017'),StrToDate('13.01.2017'));
Reestr.First;
Doc:=medocapp.OpenDocumentByCode(CardCode, true);
RstDS:=Doc.Card;
rstds.Fields.Item['DOCNAME'].value
видає все як потрібно "Ïîäàòêîâà íàêëàäíà ¹41523 â³ä 13.01.2017"
а схожа комбінація
Doc:=medocapp.OpenDocumentByCode(367190, true);
RstDS:=Doc.DataSets('TAB1',1);
rstds.First;
for i:=0 to RstDS.Fields.Count-1 do begin
try
val:=rstds.Fields.Item[RstDS.Fields.Item.name].value;
s:=string(val);
except s:='?????' end;
видає:
CARDCODE ->1468760
CODE ->1358802
RECNO ->6
TAB1_51 ->0
TAB1_A1 ->10
TAB1_A10 ->268011.99
TAB1_A110 ->0
TAB1_A111 ->0
TAB1_A12 ->0
TAB1_A13 ->?????
TAB1_A131 ->0
TAB1_A14 ->?????
TAB1_A141 ->1336
TAB1_A15 ->757.724
TAB1_A16 ->2274.62
TAB1_A17 ->0
TAB1_A171 ->0
TAB1_A18 ->0
TAB1_A19 ->0
TAB1_A8 ->80
TAB1_A9 ->0
TAB1_RATE ->0
Чомусь стрінг викливає except. Дивно.
Re: Экспорт налоговых накладных в свою учетную систему
Усьо, панове!
Розібрався. Собака зарита дуже поганенько.
Ось тут: RstDS:=Doc.DataSets('TAB1',0);
Отам у кінці замість ноліка якщо вбамбехать 1, то й будуть тоді підсумки. Хоча кількість рядків видає як для самого змісту.
Коротше, ставимо 0 і насолоджуємося.
Усім дякую!
Розібрався. Собака зарита дуже поганенько.
Ось тут: RstDS:=Doc.DataSets('TAB1',0);
Отам у кінці замість ноліка якщо вбамбехать 1, то й будуть тоді підсумки. Хоча кількість рядків видає як для самого змісту.
Коротше, ставимо 0 і насолоджуємося.
Усім дякую!
Re: Экспорт налоговых накладных в свою учетную систему
Пропоную взагалі не вказувати після коми нічого. Завжди так роблю, ще й здивувася, для чого там якісь ще параметри.
1) Основний датасет main:=Doc.DataSets();
2) Таблиця table:=Doc.DataSets('TAB1');
1) Основний датасет main:=Doc.DataSets();
2) Таблиця table:=Doc.DataSets('TAB1');
Re: Экспорт налоговых накладных в свою учетную систему
Ось для чого:Inkognito писав:Пропоную взагалі не вказувати після коми нічого. Завжди так роблю, ще й здивувася, для чого там якісь ще параметри.
1) Основний датасет main:=Doc.DataSets();
2) Таблиця table:=Doc.DataSets('TAB1');
[Error] ViewNN.pas(109): Not enough actual parameters
-
- Повідомлень: 717
- З нами з: 13 червня 2012, 09:38
Re: Экспорт налоговых накладных в свою учетную систему
Пробачте за мій хрансузький.... але в документації зазначено наступне:Gavryuk писав:Отам у кінці замість ноліка якщо вбамбехать 1, то й будуть тоді підсумки. Хоча кількість рядків видає як для самого змісту.
Коротше, ставимо 0 і насолоджуємося.
Власне саме це і є причина ексепшна при зверненні до певних полів, тому що у підсумковій таблиці ці поля зі стрінгами не проініціалізовані (хоча там має бути пусто1.1Структура документа
Документ состоит из: тела документа (MAIN,0) и подтаблиц (TABn,0), итоговых строк для подтаблиц (TABn,1).
![Злой или очень раздражён :evil:](./images/smilies/icon_evil.gif)
![Злой или очень раздражён :evil:](./images/smilies/icon_evil.gif)
![Злой или очень раздражён :evil:](./images/smilies/icon_evil.gif)
А видає помилку: [Error] ViewNN.pas(109): Not enough actual parameters тому що у вас явні звернення через інтерфейс IZDataSet, аби було через OleVariant, то можна було б писати із без останнього параметра.
Первіряв власним кодом, який написаний на базі вашого:
Код: Виділити все
Memo.Clear();
medoc := CreateComObject(CLASS_ZApplication) as IZApplication;
pdocs := medoc.GetPrimaryDocs();
dateBeg := EncodeDate(2016, 06, 30);
dateEnd := EncodeDate(2016, 06, 30);
reest := pdocs.GetPrimaryReestr(10100, (-1), dateBeg, dateEnd);
m(reest.RecordCount);
m(reest.Fields.Count);
reest.First();
mds(reest);
docum := medoc.OpenDocumentByCode(reest.Fields.Item['CARDCODE'].Value, true);
docds := docum.Card;
m('--- docum.Card');
m(docds.RecordCount);
m(docds.Fields.Count);
docds.First();
// mds(docds);
// docds := docum.DataSets('MAIN', 0);
docds := docum.DataSets('TAB1', 1);
m('--- docum.TAB1');
m(docds.RecordCount);
m(docds.Fields.Count);
mds(docds);
m('--- field');
field := docds.Fields.Item['TAB1_A13'];
olev := field.Value;
m(olev);
Re: Экспорт налоговых накладных в свою учетную систему
Так, мій косяк. Майже всі неприємності в дрібницях.poltava_energy писав: Пробачте за мій хрансузький.... але в документації зазначено наступне:Власне саме це і є причина ексепшна при зверненні до певних полів, тому що у підсумковій таблиці ці поля зі стрінгами не проініціалізовані (хоча там має бути пусто1.1Структура документа
Документ состоит из: тела документа (MAIN,0) и подтаблиц (TABn,0), итоговых строк для подтаблиц (TABn,1).![]()
![]()
побвивавби).
![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
Заради справедливості слід зауважити, і з присутніх ніхто не помітив.
Будьмо уважними!
Дякую.
Re: Экспорт налоговых накладных в свою учетную систему
В 1С77 программе "Пока НЕ table.EOF Цикл " возникает ошибка,Inkognito писав:Все правильно делаете. Только неправильно перебираете. Это же датасет, значит его надо построчно считать:Пробовал RstDS:=Doc.DataSets('TAB1',1); появляется дополнительная информация, но похоже не та и только одна строчка.
Синтаксис 1С такой ("переведите" на свою систему):table = ОтчетВх.DataSets("TAB1"); //она же RstDS:=Doc.DataSets('',1); //получаем датасет
table.First(); //позиционируемся на 1 записи
Пока НЕ table.EOF Цикл //цикл
Сообщить(Отчет.GetValue("TAB1", "TAB1_A8")); //перебираем поля
.....
table.Next(); //продолжить поиск
КонеЦЦикла;
методом проб(вывел на экран значение, подсмотрел состояния) нашел правильную, надо " Пока table.EOF<>-1 Цикл "
иначе можно перебирать по позиционно зная число строк table.RecordCount();