-
-
Обсуждения на сайте Альта-Софт
-
Суммы из ГТД и ПС в одном отчете
Модераторы: Renat, Gala, alta_olg, expert, Lemur
-
- Постоянный участник
- Сообщения: 15
- На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.
Получил: 0 ед.
Суммы из ГТД и ПС в одном отчете
Добрый день!
Самостоятельно разработали отчет для подсчета сумм проехавших ГТД по паспорту сделки.
Сейчас столбцы выглядят примерно так: Номер ПС, количество ГТД, сумма по ГТД.
Есть ли возможность из этого отчета "залезть" в ПС и вытащить оттуда сумму ПС, при условии, что ПС привязан к ГТД только через номер в 44 графе ГТД?
В итоге хотим получить отчет из 4х столбцов: Номер ПС, количество ГТД, сумма по ГТД, сумма ПС.
Проблема в том, что в отчете указывается DocType = GTD либо PS1. Т.е. пока мне кажется, что нельзя "пробежать" сразу по двум типам документов и вытащить из них все что надо... Только отдельный отчет для каждого типа документа.
Самостоятельно разработали отчет для подсчета сумм проехавших ГТД по паспорту сделки.
Сейчас столбцы выглядят примерно так: Номер ПС, количество ГТД, сумма по ГТД.
Есть ли возможность из этого отчета "залезть" в ПС и вытащить оттуда сумму ПС, при условии, что ПС привязан к ГТД только через номер в 44 графе ГТД?
В итоге хотим получить отчет из 4х столбцов: Номер ПС, количество ГТД, сумма по ГТД, сумма ПС.
Проблема в том, что в отчете указывается DocType = GTD либо PS1. Т.е. пока мне кажется, что нельзя "пробежать" сразу по двум типам документов и вытащить из них все что надо... Только отдельный отчет для каждого типа документа.
-
- Аксакал
- Сообщения: 671
- На форуме: c 14 ноя 2004
- Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.
Получил: 102 ед.
Re: Суммы из ГТД и ПС в одном отчете
Да, Вы правы "пробежать" сразу по двум документам нельзя. Отчет строится по документам определенного типа.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
-
- Постоянный участник
- Сообщения: 15
- На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.
Получил: 0 ед.
Re: Суммы из ГТД и ПС в одном отчете
Спасибо! Действительно все нашлось и заработало, очень полезные функции.
-
- Аксакал
- Сообщения: 671
- На форуме: c 14 ноя 2004
- Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.
Получил: 102 ед.
Re: Суммы из ГТД и ПС в одном отчете
Не за что!LevZabudko писал(а):Спасибо! Действительно все нашлось и заработало, очень полезные функции.
Будут вопросы, пишите, постараюсь ответить.
-
- Постоянный участник
- Сообщения: 15
- На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.
Получил: 0 ед.
Re: Суммы из ГТД и ПС в одном отчете
Добрый день!
Возникла необходимость выгружать 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 работает нормально.
Возникла необходимость выгружать 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 работает нормально.
-
- Аксакал
- Сообщения: 671
- На форуме: c 14 ноя 2004
- Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.
Получил: 102 ед.
Re: Суммы из ГТД и ПС в одном отчете
Да, спасибо, будем разбиратьсяLevZabudko писал(а): Произошла ошибка в алгоритме расчета: Access violation at address и т.д.".
-
- Постоянный участник
- Сообщения: 15
- На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.
Получил: 0 ед.
Re: Суммы из ГТД и ПС в одном отчете
То же самое для CMR документов типа E3CMR. Отчет не выгружает ничего... Начальство хочет отчеты, а достать их никак нельзя
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
-
- Аксакал
- Сообщения: 671
- На форуме: c 14 ноя 2004
- Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.
Получил: 102 ед.
Re: Суммы из ГТД и ПС в одном отчете
Подправил, была ошибочка в обработке эд2 документов.LevZabudko писал(а):То же самое для CMR документов типа E3CMR. Отчет не выгружает ничего... Начальство хочет отчеты, а достать их никак нельзя
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
Исправленная версия будет на днях.
Следующие пользователи поблагодарили Sergey за это собщение: LevZabudko
-
- Постоянный участник
- Сообщения: 15
- На форуме: c 22 окт 2012
Сказал: 3 ед.
Получил: 0 ед.
Получил: 0 ед.
Re: Суммы из ГТД и ПС в одном отчете
Обновил Альту. Ошибка пропала, но документы все равно не открываются. Например, пробую запустить отчет по документу E3CMR, а он ничего не выдает. 0 документов как будто бы. Вы можете исправить эти ошибки? По документу ДО1 отчет так же не работает, если запустить отчет именно по нему. Вызов ДО1 по номеру не пробовал.Sergey писал(а):Подправил, была ошибочка в обработке эд2 документов.LevZabudko писал(а):То же самое для CMR документов типа E3CMR. Отчет не выгружает ничего... Начальство хочет отчеты, а достать их никак нельзя
Скажите, пожалуйста, примерные сроки устранения этих ошибок...
Исправленная версия будет на днях.
Вызов 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 (ЖД накладная) ?
-
- Аксакал
- Сообщения: 671
- На форуме: c 14 ноя 2004
- Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.
Получил: 102 ед.
Re: Суммы из ГТД и ПС в одном отчете
Необходимо посмотреть непосредственно на вашем компьютере, что происходит.LevZabudko писал(а): Скажите, пожалуйста, сможете ли вы поправить модуль Отчеты так, чтобы он нормально работал хотя бы с документами DO1Report, E3CMR и RailwayBill (ЖД накладная) ?
Не могли бы Вы написать письмо по адресу spb<гав>alta.ru с указанием своих контактных данных.
-
- Аксакал
- Сообщения: 671
- На форуме: c 14 ноя 2004
- Откуда: Санкт-Петербург
Сказал: 4 ед.
Получил: 102 ед.
Получил: 102 ед.
Re: Суммы из ГТД и ПС в одном отчете
Нет, ошибки нету. Этот отчет строится не по ЭД2-ДО1, а по ДО1 (см. Прочие, СВХ).LevZabudko писал(а): П.С.: еще у вас ошибка в отчете Report125.dat - он не работает. Во-первых там тип документа DO1, а не DO1Report стоит, а во-вторых даже если поменять на DO1Report я вижу, что он находит 196 документов, но ни один из них не обрабатывает. Выводит в таблицу 0 записей.