• Обсуждения на сайте Альта-Софт

Суммы из ГТД и ПС в одном отчете

вопросы по работе с программным обеспечением

Модераторы: Renat, Gala, alta_olg, expert, Lemur

Ответить
LevZabudko
Постоянный участник
Сообщения: 15
На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.

Суммы из ГТД и ПС в одном отчете

Сообщение LevZabudko »

Добрый день!
Самостоятельно разработали отчет для подсчета сумм проехавших ГТД по паспорту сделки.
Сейчас столбцы выглядят примерно так: Номер ПС, количество ГТД, сумма по ГТД.

Есть ли возможность из этого отчета "залезть" в ПС и вытащить оттуда сумму ПС, при условии, что ПС привязан к ГТД только через номер в 44 графе ГТД?
В итоге хотим получить отчет из 4х столбцов: Номер ПС, количество ГТД, сумма по ГТД, сумма ПС.

Проблема в том, что в отчете указывается DocType = GTD либо PS1. Т.е. пока мне кажется, что нельзя "пробежать" сразу по двум типам документов и вытащить из них все что надо... Только отдельный отчет для каждого типа документа.
Sergey
Аксакал
Сообщения: 671
На форуме: c 14 ноя 2004
Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение Sergey »

LevZabudko писал(а):Добрый день!
Проблема в том, что в отчете указывается DocType = GTD либо PS1. Т.е. пока мне кажется, что нельзя "пробежать" сразу по двум типам документов и вытащить из них все что надо... Только отдельный отчет для каждого типа документа.
Да, Вы правы "пробежать" сразу по двум документам нельзя. Отчет строится по документам определенного типа.
Но вытащить документ другого типа в самом отчете можно.
Для работы, с так называемыми "взаимосвязанными" (т.е. документы связаны по номеру, например ДТС, Опись, КТС и т.д.) документами, есть несколько функций:
FindDoc(DocType:String):Boolean и OpenDoc(Doc:TDoc,DocType:String):TDoc
Например:
[info]
...
DocType = GTD
...
[Discribe]
Var
KTSExist:Boolean;
KTSDoc:TDoc;
Begin
// Ищем КТС
IF FindDoc('KTS') Then
Begin
KTSExist:=OpenDoc(KTSDoc,'KTS');
IF KTSExist Then
Begin
......
// Закрываем КТС.
KTSDoc.CloseDoc;
End;
End;
End;

В Вашем же случае документы ГТД и ПС не взаимосвязанные, вам подойдут вот эти функции:
FindNumDoc(DocType,DocNum:String):Boolean и OpenNumDoc(Doc:TDoc,DocType,DOcNum:String):TDoc
Например:
[info]
...
DocType = GTD
...
[Discribe]
Var
PSSExist:Boolean;
PSDoc:TDoc;
PSNum:String;
Begin
PSNum:=Get44Doc(0,'','03031','44.Num',True);
IF FindNumDoc('PS1',PSNum) Then
Begin
PSExist:=OpenNumDoc(PSDoc,'PS1',PSNum);
IF PSExist Then
Begin
PSSum:=PSDoc.GetField('3_5');
......
// Закрываем
PSDoc.CloseDoc;
End;
End;
End;

Для доступа к полям воспользуйтесь функциями:
TDoc.GetField(FName:String):String и TDoc.GetNumField(FName:String):Extdended

ЭД документ, который привязан к ГТД через опись, можно получить с помощью функции:
Function GetOpnDoc(Doc:TDoc;Code,DocNum,DocDate:String):Boolean;
Следующие пользователи поблагодарили Sergey за это собщение: LevZabudko
LevZabudko
Постоянный участник
Сообщения: 15
На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение LevZabudko »

Спасибо! Действительно все нашлось и заработало, очень полезные функции.
Sergey
Аксакал
Сообщения: 671
На форуме: c 14 ноя 2004
Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение Sergey »

LevZabudko писал(а):Спасибо! Действительно все нашлось и заработало, очень полезные функции.
Не за что!
Будут вопросы, пишите, постараюсь ответить.
LevZabudko
Постоянный участник
Сообщения: 15
На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение LevZabudko »

Добрый день!
Возникла необходимость выгружать RailwayBill из БД (Ж/Д Накладные). Сделал отчет, который через опись находит номера накладных и по номеру пытается их открыть. Но, при попытке доступа к полю накладной выскакивает ошибка "Документ такой-то, Произошла ошибка в алгоритме расчета: Access violation at address и т.д.".

Сделал ручную проверку. Я знаю что в БД есть Накладная с номером "51116226", пытаюсь открыть этот документ. Он открывается, потому что сообщение "1" выскакивает на экран. А после возникает ошибка, описанная выше.

IF GetField('7_1.Num')='0000020' Then Begin
NaklNum := '51116226';
IF FindNumDoc('RailwayBill',NaklNum) Then
Begin
NaklExist:=OpenNumDoc(NaklDoc,'RailwayBill',NaklNum);
IF NaklExist Then
Begin
ShowMessage('1');
ShowMessage(NaklDoc.GetField('Number'));
End;

End;
End;

П.С. проблема возникает только с некоторыми типами документов. Например, тот же E2I работает нормально.
Sergey
Аксакал
Сообщения: 671
На форуме: c 14 ноя 2004
Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение Sergey »

LevZabudko писал(а): Произошла ошибка в алгоритме расчета: Access violation at address и т.д.".
Да, спасибо, будем разбираться
LevZabudko
Постоянный участник
Сообщения: 15
На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение LevZabudko »

То же самое для CMR документов типа E3CMR. Отчет не выгружает ничего... Начальство хочет отчеты, а достать их никак нельзя :(
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
Sergey
Аксакал
Сообщения: 671
На форуме: c 14 ноя 2004
Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение Sergey »

LevZabudko писал(а):То же самое для CMR документов типа E3CMR. Отчет не выгружает ничего... Начальство хочет отчеты, а достать их никак нельзя :(
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
Подправил, была ошибочка в обработке эд2 документов.
Исправленная версия будет на днях.
Следующие пользователи поблагодарили Sergey за это собщение: LevZabudko
LevZabudko
Постоянный участник
Сообщения: 15
На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение LevZabudko »

Sergey писал(а):
LevZabudko писал(а):То же самое для CMR документов типа E3CMR. Отчет не выгружает ничего... Начальство хочет отчеты, а достать их никак нельзя :(
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
Подправил, была ошибочка в обработке эд2 документов.
Исправленная версия будет на днях.
Обновил Альту. Ошибка пропала, но документы все равно не открываются. Например, пробую запустить отчет по документу E3CMR, а он ничего не выдает. 0 документов как будто бы. Вы можете исправить эти ошибки? По документу ДО1 отчет так же не работает, если запустить отчет именно по нему. Вызов ДО1 по номеру не пробовал.

Вызов E3CMR по номеру так же не работает. Документ находит, а открыть не открывает. Вот пример кода:
PSNum := OPNDoc.GetField('Doc.Num');
PSExist:=FALSE;
IF FindNumDoc('E3CMR',PSNum) Then
Begin
ShowMessage('Документ существует');
PSExist:=OpenNumDoc(PSDoc,'E3CMR',PSNum);
IF PSExist Then
BeginShowMessage('Документ открыт');
ShowMessage(PSDoc.GetField('RegistrationDocument_RegID'));
PSDoc.CloseDoc;
End;
End;

Сообщение "Документ существует выводится", а вот остальные - нет.

П.С.: еще у вас ошибка в отчете Report125.dat - он не работает. Во-первых там тип документа DO1, а не DO1Report стоит, а во-вторых даже если поменять на DO1Report я вижу, что он находит 196 документов, но ни один из них не обрабатывает. Выводит в таблицу 0 записей.

Скажите, пожалуйста, сможете ли вы поправить модуль Отчеты так, чтобы он нормально работал хотя бы с документами DO1Report, E3CMR и RailwayBill (ЖД накладная) ?
Sergey
Аксакал
Сообщения: 671
На форуме: c 14 ноя 2004
Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение Sergey »

LevZabudko писал(а): Скажите, пожалуйста, сможете ли вы поправить модуль Отчеты так, чтобы он нормально работал хотя бы с документами DO1Report, E3CMR и RailwayBill (ЖД накладная) ?
Необходимо посмотреть непосредственно на вашем компьютере, что происходит.
Не могли бы Вы написать письмо по адресу spb<гав>alta.ru с указанием своих контактных данных.
Sergey
Аксакал
Сообщения: 671
На форуме: c 14 ноя 2004
Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.

Re: Суммы из ГТД и ПС в одном отчете

Сообщение Sergey »

LevZabudko писал(а): П.С.: еще у вас ошибка в отчете Report125.dat - он не работает. Во-первых там тип документа DO1, а не DO1Report стоит, а во-вторых даже если поменять на DO1Report я вижу, что он находит 196 документов, но ни один из них не обрабатывает. Выводит в таблицу 0 записей.
Нет, ошибки нету. Этот отчет строится не по ЭД2-ДО1, а по ДО1 (см. Прочие, СВХ).
Ответить