[Logo] Форум ПАРУС
Создание отчетов  XML
Индекс форума » Разработка на платформе Парус-Торнадо
Автор Сообщение
SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

SARGEANT wrote:Вообще-то в parus.chm написано, что и атрибут Organization, и атрибут Counteragent — обязательные. Каким образом может оказаться, что они окажутся незаполненными?

Мне не нужно знать, каким образом могут оказаться незаполненными, что там творится с БД, мне нужно обеспечить отсутствие ошибок "В экземпляре объекта не задана ссылка на объект" при построении отчета.
SARGEANT wrote:хорошо,
но как узнать в какой dll находится класс Parus.Business.Counteragent,
и где ее взять, эту dll?
в parus.chm это не написано

Библиотеки прикладных решений есть в файлах pkg (это архив с подписью), в кэше клиента, в кеше сервера.
Object Browser можно натравить на все dll и поиском найти что нужно.
SARGEANT wrote:но почему здесь вдруг второй параметр авторы шаблона написали, а в ранее приведенном примере, при всём точно том же — не написали:
http://support.parus.ru/forum/posts/list/30/101645.page#572914
var kpp = document.Organization.With(x => x.Counteragent).With(x => (string)x.KPP);

Автору шаблона виднее, в каком случае как писать. Здесь мы обсуждаем как работает метод.

Это сообщение было изменено 2 раз. Последнее изменение было в 26.11.2013 09:04:19

[Email] [ICQ]
SARGEANT
Опытный пользователь

Зарегистрирован: 01.02.2013 14:12:25
Сообщений: 1980
Оффлайн

Спасибо!

но вообще-то здесь мы обсуждаем именно то, в каком случае как следует писать. Как работает метод - это лишь один из вторичных вопросов, возникших в результате этого обсуждения.

но это уж мелочи, в принципе всё теперь пока понятно. Спасибо огромное! масса заморочек сэкономлена
DUKHNOV
Новичок

Зарегистрирован: 30.10.2013 12:06:59
Сообщений: 133
Оффлайн

"...то ли лыжи не едут, то ли я..." (с)

Первый блин комом, ошибки исправляю, но вот ещё одна, подскажите.

Ошибка запуска сервиса: Ошибка компиляции скриптов отчёта!
c:\ProgramData\Parus.TornadoServer\Reports\x8jtkp7t.0.cs(127,27) : error CS1501: Ни одна из перегрузок метода 'GetKBK' не принимает '1' аргумент(ов)
c:\ProgramData\Parus.TornadoServer\Reports\x8jtkp7t.0.cs(355,11) : error CS0103: Имя 'document' отсутствует в текущем контексте
Parus.Reporting.Model.Exceptions.BuildException: Ошибка компиляции скриптов отчёта!
c:\ProgramData\Parus.TornadoServer\Reports\x8jtkp7t.0.cs(127,27) : error CS1501: Ни одна из перегрузок метода 'GetKBK' не принимает '1' аргумент(ов)
c:\ProgramData\Parus.TornadoServer\Reports\x8jtkp7t.0.cs(355,11) : error CS0103: Имя 'document' отсутствует в текущем контексте
в Parus.Net.AsyncServiceExecution.AsyncServiceExecutionTask.Run(IAsyncTaskContext context)
в Parus.Net.AsyncTasks.Managers.ServerAsyncManager.RunTaskProc(TaskHolder taskHolder)
 Имя файла Счет1_1.xml [Disk] Скачать
 Описание Описание отсутствует
 Размер файла 145 Kbytes
 Загружено:  7 раз(а)

Это сообщение было изменено 9 раз. Последнее изменение было в 27.11.2013 17:28:26

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

В определении метода GetKBK не указали параметры.
[Email] [ICQ]
DUKHNOV
Новичок

Зарегистрирован: 30.10.2013 12:06:59
Сообщений: 133
Оффлайн

С грехом пополам нашел где указываются параметры)))
Добавил, откомпилировался, выгрузился, но сам КБК не выводит.

Последняя версия отчета прикреплена. Помогите разобраться, чую я что-то пропустил в функции GenerateDataSet или не разобрался в With в функции GetKBK
 Имя файла Счет1_1.xml [Disk] Скачать
 Описание Описание отсутствует
 Размер файла 147 Kbytes
 Загружено:  8 раз(а)

Это сообщение было изменено 2 раз. Последнее изменение было в 28.11.2013 17:18:44

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

Что то не вижу кода биндинга для m_Text4.
[Email] [ICQ]
DUKHNOV
Новичок

Зарегистрирован: 30.10.2013 12:06:59
Сообщений: 133
Оффлайн

Да!!! Спасибо! Заработало!!!
 Имя файла Счет1_1.xml [Disk] Скачать
 Описание Описание отсутствует
 Размер файла 147 Kbytes
 Загружено:  21 раз(а)

KOJEV
Пользователь

Зарегистрирован: 07.11.2012 13:08:41
Сообщений: 313
Оффлайн

С отчетами, у которых код в самом шаблоне более-менее ясно. А как быть с теми стандартными отчетами, у которых код в самой системе (Главная книга, Журналы операций) ? Например, изменить вывод номеров счетов в главной книге (разбить, скажем поподробнее пробелами). Или добавить какую-то еще информацию в строки. Она может и не по законодательству, но клиенту нужна. В 7-ке в шаблоне писали gettablefield и select и вынимали все что нужно (можно). А сейчас, получается, надо или процедуру сбора dataset'а менять (это вообще крайний случай=нереально на практике) или воспроизводить ее отдельно и поддерживать код самостоятельно при изменениях в системе ? Т.е. просто редактированием шаблонов уже не отделаешься ?

+ Еще одно интерсует, нигде не нашел. Как можно (и можно ли) управлять выводом/невыводом строк в зависимости от информации в этой строке ? Например, в строке есть цифра по но одной графе, но нет по другой. В этом случае - не выводим всю строку. Если в обоих графах есть, то выводим. Или это тоже на уровне источника данных нужно учитывать ?

Это сообщение было изменено 1 раз. Последнее изменение было в 03.12.2013 14:49:47

DUKHNOV
Новичок

Зарегистрирован: 30.10.2013 12:06:59
Сообщений: 133
Оффлайн

Доброго времени суток.
Нужно выводить в отчет адрес грузополучателя.
Опять же исследуя этот вопрос столкнулся со следующим кодом всё в том же Счете:

var address = document.Organization.Counteragent.With(x => x.GetJuridicalAddressAsAddress(document.DocDate));
к сожалению он выводит адрес грузоотправителя.

Отсюда вопросы:
1. Каким образом можно использовать спецификации классов, как обычными свойствами не проходит (к примеру есть спецификация Address)?
2. Придется ли мне использовать класс Parus.Business.BaseSupplyAgreement, раз там явно указано свойство Consignee (Грузополучатель), или есть способ попрямее?
3. Какие ещё интересные методы скрыты от нас в Parus.chm? Ведь GetJuridicalAddressAsAddress() работает как раз со спецификацией Address или я ошибаюсь?

Это сообщение было изменено 1 раз. Последнее изменение было в 03.12.2013 17:06:02

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

KOJEV wrote:С отчетами, у которых код в самом шаблоне более-менее ясно. А как быть с теми стандартными отчетами, у которых код в самой системе (Главная книга, Журналы операций) ?

В отчете в любом случае Вы получаете DataSet, информацию в таблицах которого можно изменять.
Посмотрите структуру и наполнение таблиц под отладкой, и пишите код изменения информации в нужных полях нужных таблиц.

KOJEV wrote:+ Еще одно интерсует, нигде не нашел. Как можно (и можно ли) управлять выводом/невыводом строк в зависимости от информации в этой строке ? Например, в строке есть цифра по но одной графе, но нет по другой. В этом случае - не выводим всю строку. Если в обоих графах есть, то выводим. Или это тоже на уровне источника данных нужно учитывать ?

Опять же формирование отчета зависит от наполнения таблиц сформированного источника данных. Удалите строки в источнике, и их не будет в отчете.
Другой вариант - использование кода биндинга свойства Visible компонентов отчета, таких как BandHeader, BandFooter.

Это сообщение было изменено 1 раз. Последнее изменение было в 04.12.2013 08:26:27

[Email] [ICQ]
SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

DUKHNOV wrote:Отсюда вопросы:
1. Каким образом можно использовать спецификации классов, как обычными свойствами не проходит (к примеру есть спецификация Address)?
2. Придется ли мне использовать класс Parus.Business.BaseSupplyAgreement, раз там явно указано свойство Consignee (Грузополучатель), или есть способ попрямее?
3. Какие ещё интересные методы скрыты от нас в Parus.chm? Ведь GetJuridicalAddressAsAddress() работает как раз со спецификацией Address или я ошибаюсь?

1. Из спецификаций классов можно, например, используя Linq-запросы, производить выборки по любым критериям, выполнять перечисление foreach..
2. Куда прямее, если там есть нужное Вам свойство?
3. Различных методов-расширений к различным классам в бизнес-коде существует довольно большое количество. Их наличие и описание можно увидеть, например, через Object Browser, как уже описывалось выше.

Это сообщение было изменено 1 раз. Последнее изменение было в 04.12.2013 08:34:26

[Email] [ICQ]
DUKHNOV
Новичок

Зарегистрирован: 30.10.2013 12:06:59
Сообщений: 133
Оффлайн

SHIBANOV wrote:
1. Из спецификаций классов можно, например, используя Linq-запросы, производить выборки по любым критериям, выполнять перечисление foreach..
2. Куда прямее, если там есть нужное Вам свойство?


Пардон, у класса Parus.Business.Budget.CalculationsBases тоже есть свойство Consignee... Это моя невнимательность.

В руководстве по программированию описано, что спецификация - это коллекция.
"...Кроме атрибутов бизнес-класс может оперировать коллекциями объектов других бизнес-классов (спецификациями)..."


Имеются ввиду коллекции в терминах C#.Net или есть какие то нюансы?

Это сообщение было изменено 2 раз. Последнее изменение было в 04.12.2013 15:40:40

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

DUKHNOV wrote:Имеются ввиду коллекции в терминах C#.Net или есть какие то нюансы?

Да, коллекции в терминах .NET

Это сообщение было изменено 1 раз. Последнее изменение было в 04.12.2013 21:20:57

[Email] [ICQ]
V_KACHALOVA
Новичок

Зарегистрирован: 26.06.2013 16:13:26
Сообщений: 39
От: Виктория Качалова
Оффлайн

Подскажите, пожалуйста, как в таблице отчета поменять местами стоки и колонки?
SARGEANT
Опытный пользователь

Зарегистрирован: 01.02.2013 14:12:25
Сообщений: 1980
Оффлайн

приведите пример
иначе можно понять задачу неоднозначно:
1) поменять строки с колонками
2) или поменять строки между собой, колонки между собой

в любом случае без примера задача не понятна
и не понятно зачем это нужно
V_KACHALOVA
Новичок

Зарегистрирован: 26.06.2013 16:13:26
Сообщений: 39
От: Виктория Качалова
Оффлайн

SARGEANT wrote:
1) поменять строки с колонками


Отчет Анализ расчетов ЗП. Нужно приблизить его вид к Сводной ведомости из П7

Это сообщение было изменено 1 раз. Последнее изменение было в 06.12.2013 11:14:03

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

V_KACHALOVA wrote:Отчет Анализ расчетов ЗП. Нужно приблизить его вид к Сводной ведомости из П7

Этот отчет выводит строки и колонки в соответствии с экранным представлением таблицы анализа. А экранное представление можно изменять шаблонами анализа.

Это сообщение было изменено 1 раз. Последнее изменение было в 06.12.2013 11:59:45

[Email] [ICQ]
V_KACHALOVA
Новичок

Зарегистрирован: 26.06.2013 16:13:26
Сообщений: 39
От: Виктория Качалова
Оффлайн

SHIBANOV wrote: А экранное представление можно изменять шаблонами анализа.


Не подскажите, как это сделать?

Это сообщение было изменено 1 раз. Последнее изменение было в 06.12.2013 13:54:53

NABOKIKH
Опытный пользователь
[Avatar]

Зарегистрирован: 01.08.2012 14:05:10
Сообщений: 1610
Оффлайн

V_KACHALOVA wrote:
Не подскажите, как это сделать?

Словари - шаблоны аналитических отчетов. указываете нужные группировки и выбираете в параметрах Анализа.
Если нужно чтоб поумолчанию по отмеченным ведомостям анализ был именно в таком виде, то исправьте и переименуйте Шаблон №2

Это сообщение было изменено 2 раз. Последнее изменение было в 06.12.2013 22:48:46

PSYDIAMOND
Пользователь
[Avatar]

Зарегистрирован: 30.10.2013 12:04:55
Сообщений: 614
От: Михаил Малыхин
Оффлайн

вопрос такой по бух справкам: откуда берется значение поля OperationNameAndReason ?
и в целом интересует актуальное содержимое класса Parus.Business.Accounting.Core.Budget.EntryDocumentBudgetTransaction
[Email]
V_KACHALOVA
Новичок

Зарегистрирован: 26.06.2013 16:13:26
Сообщений: 39
От: Виктория Качалова
Оффлайн

Изменяя шаблон Анализа ЗП нужный вид не получается.
Выводится в виде 1, а требуется вид как на рисунке 2
[Thumb - 1.PNG]
 Имя файла 1.PNG [Disk] Скачать
 Описание Описание отсутствует
 Размер файла 73 Kbytes
 Загружено:  5 раз(а)

[Thumb - 2.PNG]
 Имя файла 2.PNG [Disk] Скачать
 Описание Описание отсутствует
 Размер файла 24 Kbytes
 Загружено:  1 раз(а)

SARGEANT
Опытный пользователь

Зарегистрирован: 01.02.2013 14:12:25
Сообщений: 1980
Оффлайн

а что именно Вы пробовали изменять в шаблоне Анализа ЗП?
V_KACHALOVA
Новичок

Зарегистрирован: 26.06.2013 16:13:26
Сообщений: 39
От: Виктория Качалова
Оффлайн

SARGEANT wrote:а что именно Вы пробовали изменять в шаблоне Анализа ЗП?


А разве там много чего менять можно? источник, мнемокод, наименование и порядковый номер

Это сообщение было изменено 1 раз. Последнее изменение было в 12.12.2013 09:06:53

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

V_KACHALOVA wrote:Изменяя шаблон Анализа ЗП нужный вид не получается.
Выводится в виде 1, а требуется вид как на рисунке 2

Именно в таком виде на данный момент получить не удастся. Нужно написать пожелание в Журнал событий добавить источники анализа для видов ВУ, типов ВУ.

Это сообщение было изменено 1 раз. Последнее изменение было в 12.12.2013 11:41:22

[Email] [ICQ]
PSYDIAMOND
Пользователь
[Avatar]

Зарегистрирован: 30.10.2013 12:04:55
Сообщений: 614
От: Михаил Малыхин
Оффлайн

повторяю:
вопрос такой по бух справкам: откуда берется значение поля OperationNameAndReason ?
и в целом интересует актуальное содержимое класса Parus.Business.Accounting.Core.Budget.EntryDocumentBudgetTransaction
[Email]
SARGEANT
Опытный пользователь

Зарегистрирован: 01.02.2013 14:12:25
Сообщений: 1980
Оффлайн

а где Вы видите это поле OperationNameAndReason? никто ведь гадать не будет. Нужно выложить всю информацию, необходимую чтобы воспроизвести ситуацию. Куда идти, какие кнопки нажимать, чтобы это увидеть

что касается исходников (если под этим подразумевалось "актуальное содержимое класса"), то исходники можно лишь требовать от Москвы, и наверно не на форуме, а более юридически обоснованными методами. Ведь форум никого ни к чему не обязывает
PSYDIAMOND
Пользователь
[Avatar]

Зарегистрирован: 30.10.2013 12:04:55
Сообщений: 614
От: Михаил Малыхин
Оффлайн

насколько я понимаю алгоритм следующий:
через дизайнер отчетов открываю "Бухгалтерская справка ОКУД ф. 0504833.xml" выгруженную из базы. Иду по цепочке от источника данных до конкретного поля таблицы. откуда взялись остальные поля мне понятно, ибо можно найти их либо в "parus.chm", либо в конфиге формы "Бухгалтерские справки.profile", либо же xml'ках которые находятся в pkg.
так вот, конкретное поле "OperationNameAndReason" которое должно быть либо свойством класса, либо членом таблицы я не нашел.
Верно ли я ищу?
[Email]
SARGEANT
Опытный пользователь

Зарегистрирован: 01.02.2013 14:12:25
Сообщений: 1980
Оффлайн

Никакое поле, в том числе и OperationNameAndReason, не обязано быть атрибутом класса или полем таблицы базы данных. Какое-нибудь расчетное поле, формируемое программой из других данных, и всё

Поэтому и смотреть, откуда оно берется, следует в той программе. То есть, очевидно, в программе
Parus.Business.Accounting.Core.Budget.Reports.EntryDocumentBudgetReport.GenerateDataSet(Manager, entryDocumentBudget);

поэтому странно, что Вас интересует класс Parus.Business.Accounting.Core.Budget.EntryDocumentBudgetTransaction
?

Актуальный список его атрибутов (как и список атрибутов любого другого класса), как уже сказал Шибанов, можно посмотреть в Object Browser
http://support.parus.ru/forum/posts/list/30/101645.page#578715
http://support.parus.ru/forum/posts/list/60/101645.page#582916

Атрибута OperationNameAndReason нет ни у этого класса, ни у заголовка бух.справки — класса EntryDocumentBudget

Могу лишь предположить, что значение берется из поля Содержание, то есть EntryDocumentBudget.Contents

Вообще ходить по классам – это гадать на кофейной гуще. Мы что здесь, подрядились расколоть шифр гитлеровской «Энигмы»? так его умные люди в своё время не раскалывали, а брали боевой операцией немецкие подлодки, вместе с шифром, да и всё.

Надо смотреть программу, формирующую данные. То, что доступа к исходному коду этой программы у внедренцев нет — это бессмысленный волюнтаризм Москвы. Такого безобразия до сих пор не бывало ни в Парусе, ни в 1С. Исходники всегда были доступны. Кто же будет внедрять без исходников?!

Это сообщение было изменено 2 раз. Последнее изменение было в 13.12.2013 20:43:46

DUKHNOV
Новичок

Зарегистрирован: 30.10.2013 12:06:59
Сообщений: 133
Оффлайн

Здравствуйте.

Проблема следующая:

Ошибка запуска сервиса: Report page contains object '_FilterDatabase', that not described in 'Parameters' sheet
Parus.Reporting.Model.Exceptions.ImportException: Report page contains object '_FilterDatabase', that not described in 'Parameters' sheet
в Parus.Net.AsyncServiceExecution.AsyncServiceExecutionTask.Run(IAsyncTaskContext context)
в Parus.Net.AsyncTasks.Managers.ServerAsyncManager.RunTaskProc(TaskHolder taskHolder)

Добавил вот это:

System.Data.DataView view = new System.Data.DataView(specData); //сортировка по имени объекта ОС
System.Data.view.Sort = "ObjectName ASC";

В функцию GenerateDataSet.

Отчет прикрепляю. Поясните, что и где не дочитал
 Имя файла Книга учета объектов ОС.xml [Disk] Скачать
 Описание Описание отсутствует
 Размер файла 187 Kbytes
 Загружено:  2 раз(а)

Это сообщение было изменено 1 раз. Последнее изменение было в 17.12.2013 16:33:44

SHIBANOV
Пользователь

Зарегистрирован: 06.11.2012 10:30:16
Сообщений: 513
От: Алексей Шибанов
Оффлайн

В отчете присутствует имя _FilterDatabase, которое не описано на листе параметров.
Имя нужно удалить. Но так как оно скрытое, сначала нужно установить атрибут ss:Hidden.
Открываете отчет в текстовом редакторе в кодировке UTF-8, находите <NamedRange ss:Name="_FilterDatabase" ss:RefersTo="=стр2!R7C1:R7C13" ss:Hidden="1"/>, меняете ss:Hidden="0", сохраняете файл.
[Email] [ICQ]
 
Индекс форума » Разработка на платформе Парус-Торнадо
Перейти: