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

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

Вы имя типа с пространством имен указываете?
[Email] [ICQ]
SARGEANT
Опытный пользователь

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

да, вот так:
var tmp = new Accessibility.IAccessible();

тогда жалуется, как было сказано.
если указать без Accessibility, то есть так:
var tmp = new IAccessible();

то не жалуется, действительно. Но радоваться было рано. Это, как выясняется, означает лишь что пространство Accessibility и так доступно в скрипте. Оно везде доступно, никакой ссылки для него не надо по-любому, проверять на примере Accessibility была у меня плохая идея.

Хорошо, тогда проверяем на System.Windows.Forms
То есть выбираем в ссылках обе строки в которых написано System.Windows.Forms (они различаются тем что при них написаны разные версии: 2.0.0.0 и 1.0.5000.0), и в скрипте пишем так:
var tmp = new MessageBox();

тогда жалуется, как и раньше:
The type or namespace name 'MessageBox' could not be found (are you missing a using directive or an assembly reference?)

То есть всё равно не кушает. То есть ссылки в Торнадо игнорирует.
SHIBANOV
Пользователь

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

Создавайте объект с указанием пространства имен, или включайте его в список using.
[Email] [ICQ]
SARGEANT
Опытный пользователь

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


это я тоже попробовал, только уж не стал забивать логами форум.

Если написать
var tmp = new System.Windows.Forms.MessageBox();
или написать System.Windows.Forms в Usings (то есть в тех Usings, которые в дереве скриптов, на одном уровне с Referencies)

то жалуется так же, как в самом начале, в первом посте по этому вопросу. То есть говорит что namespace Windows не существует в System
SHIBANOV
Пользователь

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

В референсах оставьте одну ссылку. У Вас две разных версий.

Это сообщение было изменено 1 раз. Последнее изменение было в 07.11.2013 16:50:22

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

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


не-а..

Так же жалуется. Я уже вижу, что реализация этих ссылок в xml-ном шаблоне - фуфел. Посмотрите, как это выглядит на листе Parameters. Там просто написано в ячейке вот это, строковое значение:
System.Windows.Forms
и всё! безо всяких уточнений. Если две ссылки указать - то два раза пишет это же самое, и только
Фуфел. Дальше не написали, некогда дожаривать было, слишком кушать хотелось. Это как генератор отчетов в Парус7, помните? редактируешь скрипт, а он не сохраняется, и всё. И не говорит ничего

так что действительно игнорируются ссылки в Торнадо. Хотя в редакторе отчетов они как бы и есть
SHIBANOV
Пользователь

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

Ну доработают значит. Раз не работает пока.
За годы создания отчетов для Торнадо никому пока не понадобилось даже потестировать эту возможность

Это сообщение было изменено 1 раз. Последнее изменение было в 07.11.2013 21:47:16

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

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

оптимистично
впрочем, это правильно. Лучше рассчитывать на лучшее, чем на худшее

Что касается "никому не понадобилось" - то это, увы, и плохо. Никто не берется изобретать

В Парусе вообще народных изобретений было мало, а в Парусе10, похоже, будет еще меньше, потому что шифруются непонятно зачем (в смысле закрывают информацию). Поэтому судьба стать "народной программой", такой как 1С - Парусу никогда не грозит. Никто не станет изобретать ни ToySQL, ни OpenConf, ничего другого такого. А вместе с этим не грозит и судьба стать большой фирмой, как 1С..
SHIBANOV
Пользователь

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

Оракулом подрабатываете?

В Парусе как раз народных изобретений достаточно много, кто во что горазд. У кого то хуже, у кого то лучше.
Простора для мысли во всех продуктах Паруса достаточно на мой взгляд. И 10-я версия в этом плане ничуть не хуже. Только более организованный подход изначально. ИМХО

Это сообщение было изменено 1 раз. Последнее изменение было в 08.11.2013 12:22:10

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

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

1) оракулом тут как раз быть не требуется. То есть не обязательно уметь смотреть вперед - достаточно посмотреть назад.

То есть на то, где мы есть, по сравнению с 1С.
При этом по народным изобретениям не претендую, конечно, на большие знания, но по-моему в 1Се их больше на порядки. Хотя, согласен, в 1Се 8осьмом не так много, как было в 7м. Тем хуже для 1Сов. Но они уже настолько выросли, что могут себе позволить шифроваться. А нам - рановато, мягко говоря.

2) "Организованный подход" в той его части, которая касается подписывания кода - пожалуй разумен. Фирма таким образом заведомо получает доступ ко всем сторонним разработкам, что, надеюсь, позволит ей лучше держать нос по ветру.

Но зачем при этом шифроваться, то есть искусственно ограничивать доступ к информации - не понимаю. У нас в Парусе сейчас проблема не в утечке ноу-хау. А в уходе клиентов из-за плохого сопровождения. А плохое оно - в том числе из-за недостаточности информации. И утечка клиентов идет прямо КАТАСТРОФИЧЕСКАЯ.

Поэтому закрытие информации - это прямо-таки самоубийственная политика. А не "организованный подход"!

Это сообщение было изменено 1 раз. Последнее изменение было в 08.11.2013 14:56:52

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

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

Так никто не закрывает информацию!
Есть доступ к исходным кодам после вступления в партнерскую программу, есть использование общедоступных технологий .NET, а то что у Вас не получилось библиотеку к коду отчета подключить, так это дело поправимое. Причем, как мне сегодня стало известно, уже поправленное
[Email] [ICQ]
SARGEANT
Опытный пользователь

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

Алексей, Вы за один оптимизм соберёте рейтинг больше всех разработчиков. Не говоря уже о рейтинге за Ваши разработки
:up:

а о деле вот что:
речь шла не столько об этих несчастных Referencies, сколько о том закрытии информации, которое заключается в ЗАКРЫТОЙ прикладной документации. Она должна быть не только открытой безо всякого там "обучения" (мы в 21м веке живем или в Древней Греции, чтобы обязательно лицезреть учителя в процессе обучения?), но и даже без партнерской программы, то есть для всех желающих совершенно.
SARGEANT
Опытный пользователь

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

и это вовсе не революция.

это лишь то, как было в Парус7 и 8.
исходники - по крайней мере в достаточной степени - там доступны любому. И это правильно!

от нас немало ушло программистов. НИКТО из них сейчас не программирует для Парус. Увы. Они млин уходят и переводят наших клиентов на 1С. Это становится уже невесело.

Так что утечка ноу-хау - это точно не то, чего надо бояться Парусу. Никому его ноу-хау не надо, увы.
TANKA
Новичок

Зарегистрирован: 08.11.2012 17:14:27
Сообщений: 125
Оффлайн

Добрый день!
Пытаюсь подключить самый первый отчет из руководства по созданию отчетов, возникли сложности.. ругается:

Ошибка запуска сервиса: Ошибка компиляции скриптов отчёта!
c:\ProgramData\Parus.TornadoServer\Reports\8flihc1-.0.cs(301,29) : error CS0234: Имя типа или пространства имен 'Dataset' отсутствует в пространстве имен 'System.Data' (пропущена ссылка на сборку?)
Parus.Reporting.Model.Exceptions.BuildException: Ошибка компиляции скриптов отчёта!
c:\ProgramData\Parus.TornadoServer\Reports\8flihc1-.0.cs(301,29) : error CS0234: Имя типа или пространства имен 'Dataset' отсутствует в пространстве имен 'System.Data' (пропущена ссылка на сборку?)


В скриптах отчета - Add assembly reference - system assemblies - ищу System.data - есть две строчки, обе версии 2.0.0.0

Подскажите, какие дальнейшие действия? В самом начале какие-то сложности, аж настрой пропал

Это сообщение было изменено 1 раз. Последнее изменение было в 20.11.2013 11:55:16

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

Зарегистрирован: 14.01.2013 15:49:52
Сообщений: 680
От: Парус
Оффлайн

TANKA wrote:
error CS0234: Имя типа или пространства имен 'Dataset' отсутствует в пространстве имен 'System.Data' (пропущена ссылка на сборку?)

DataSet проверьте написание.
в C# идентификаторы case sensitive.

Это сообщение было изменено 1 раз. Последнее изменение было в 20.11.2013 11:57:30

TANKA
Новичок

Зарегистрирован: 08.11.2012 17:14:27
Сообщений: 125
Оффлайн

M_USHAKOV
ох, спасибо, а я тут голову ломаю во всех местах проверила, в одном пропустила

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

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

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

http://support.parus.ru/forum/posts/list/79806.page#439049
делали перекачку данных из кадров «семёрки» в торнадо Использовали не тот функционал, который предоставляли дилеры в нашем регионе, а с нуля разрабатывали. Сначала реализовывали сами скрипты на t-sql, а потом на vfp добавляли к ним строками данные из базы и закачивали. Перекачали всё: все словари, сотрудников, документы, лицевые счета

Это круто. Скажите пожалуйста:

1) где написано, какая таблица соответствует классу? На первый взгляд, имена таблиц равны именам классов, без точек. Например, классу
Parus.Business.CashlessSettlement.PaymentOrder
соответствует таблица
ParusBusinessCashlessSettlementPaymentOrder

Но как на самом деле программа определяет нужную таблицу, и где эти таблицы расписаны? В 1Се 7едьмом был автоформируемый системой файл описания структуры с расширением .DD, где имена таблиц были все прописаны. А здесь где узнать? или действительно можно положиться на правило имя таблицы = имени класса без точек?

2) какой tid соответствует тому или иному классу? Это надо, чтобы писать запросы по связанным таблицам. Не в отчете запрос писать, а в натуре, например в SQL Server Management Studio чтобы его гонять. Это надо при лечении косяков в базе

Например, надо выбрать все банковские счета контрагента, указанного в качестве получателя в исходящем ПП номер 5. Номер документа физически хранится в таблице ParusBusinessDocument. Делаем запросом отбор:
select *
from ParusBusinessDocument
where DocNumber = '5'

Отбирается большое число записей. Как узнать, записи с каким tid относятся к исходящим платежным поручениям?
NADEZHDA_K
Новичок
[Avatar]

Зарегистрирован: 02.11.2012 18:54:33
Сообщений: 22
Оффлайн

SARGEANT, спасибо за оценку и за вопросы)))

1) Если честно, то не помню, где прописано насчёт точек, но при перекачке данных точно убирали точки и тем самым получали название таблицы))) По-моему программисты дилеров в нашем регионе давали нам вариант закачки, которую мы не использовали, а там было выбрано именно такое соответствие. Главное одно: при закачке мы полагались на такое соответствие, оно верно)
Например, таблица ParusBusinessDocument - класс Parus.Business.Document (Документ)

Как работает система "внутри" я не знаю Могу лишь предполагать) Но есть файл структуры для системы "Кадры в медицине", который я уже выкладывала) Может быть есть и другие - у меня их нет(

Как с ним работали:
- Можно по дереву: Общее -> Базовый документ -> Document (видим Parus.Business.Document)
- Можно найти Классы -> Parus.Business.Document

2) Соответствия tid определяли либо по файлу структуры, либо методом "научного тыка" Сейчас расскажу про оба)

- Метод определения Tid по файлу структуры
В файле структуры для класса существует раздел "Ссылочные атрибуты". Там есть поля "Имя", "Описание", "Тип ссылки".
Например, для класса Parus.Business.Document (Документ) ссылочные атрибуты:

Имя Описание Тип ссылки
DocTypeRef Тип документа Parus.Business.DocType (Типы документов)
State Состояние Parus.Business.ObjectState (Состояние объекта)
Organization Организация Parus.Business.ServedOrganization (Обслуживаемая организация)
ThroughAnalytics Сквозная аналитика Parus.Business.ThroughAnalytics (Сквозная аналитика)

Так вот. Ссылкой на таблицу типов документов Parus.Business.DocType является поле с именем DocTypeRef_tid: мы просто добавляем подстроку "_tid" к названию поля. Точно не помню: есть ли исключения, но в большинстве случаев работало))))

- Метод "научного тыка"
Открываем SQL Server Management Studio. Находим таблицу Parus.Business.Document. Открываем столбцы
  • tid
    id
    Prefix
    DocNumber
    DocDate
    Year
    DocTypeRef_tid
    DocTypeRef_id
    State_tid
    State_id
    Organization_tid
    Organization_id
    ThroughAnalytics_tid
    ThroughAnalytics_id

  • ...

    Поля DocTypeRef_tid +DocTypeRef_id являются ссылкой на таблицу. Отбрасываем подстроку "_tid". Получаем "DocTypeRef". Предполагаем, что это "Типы документов". Ищем таблицу, название которой содержит что-то напоминающее "DocType". Это ParusBusinessDocType. А затем начинаем проверять ссылки: создаём новый запрос, и добавляем join:



    либо без select'ов просто смотрим: поле ParusBusinessDocument.DocTypeRef_tid = 109, а ParusBusinessDocType.tid тоже равно 109! Значит, соответствие верно!

    3)
    SARGEANT wrote:Отбирается большое число записей. Как узнать, записи с каким tid относятся к исходящим платежным поручениям?

    Набросала запрос. Если что-то не так поняла, скажите, пожалуйста)))


    Запрос создавала на основе файла со структурой, "проваливаясь" в ссылочные таблицы))))

    Только у меня нет платёжек для кадров, поэтому я взяла к примеру документы с типом "Приказ")) А так всё правильно: лучше сначала отладить запрос/ запросы в базе, а потом строить отчёт: при создании отчёта может возникнуть много вопросов, а если ещё и с select'ами что-то, то это замедлит отладку всего отчёта.

    Самое удобное, когда база данных "под рукой": можно сразу же проверить все запросы)
     Имя файла MedicinePersonnel.chm [Disk] Скачать
     Описание структура "Кадры в медицине"
     Размер файла 438 Kbytes
     Загружено:  5 раз(а)

    [Thumb - структура.JPG]
     Имя файла структура.JPG [Disk] Скачать
     Описание пример работы с файлом структуры
     Размер файла 194 Kbytes
     Загружено:  11 раз(а)


    Надежда) Можно на ты)))
    [Email]
    M_USHAKOV
    Пользователь
    [Avatar]

    Зарегистрирован: 14.01.2013 15:49:52
    Сообщений: 680
    От: Парус
    Оффлайн

    Ужос какой
    таблица realtypes содержит карту соответствия имен и ТИД
    NADEZHDA_K
    Новичок
    [Avatar]

    Зарегистрирован: 02.11.2012 18:54:33
    Сообщений: 22
    Оффлайн

    M_USHAKOV wrote:Ужос какой
    таблица realtypes содержит карту соответствия имен и ТИД

    точно! я и забыла Ковыряла сегодня базу, вспоминала, а не вспомнила))) давно это было)
    а так какая разница? главное - результат.

    Надежда) Можно на ты)))
    [Email]
    M_USHAKOV
    Пользователь
    [Avatar]

    Зарегистрирован: 14.01.2013 15:49:52
    Сообщений: 680
    От: Парус
    Оффлайн

    NADEZHDA_K wrote:
    а так какая разница? главное - результат.

    "Плохому научите"

    Это сообщение было изменено 1 раз. Последнее изменение было в 28.01.2014 10:30:38

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

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

    а чему плохому-то?
    Надежда просто пространно описала тот постоянно применяемый всеми (и Москвой, без сомнения, тоже) алгоритм определения, куда ссылаются поля с суффиксом _tid, _id

    в нем всё правильно. Разве есть другие алгоритмы?
    Он просто не имеет отношения к вопросу о realtypes. Но ничего «плохого»

    NADEZHDA_K wrote:есть файл структуры для системы "Кадры в медицине", который я уже выкладывала) Может быть есть и другие - у меня их нет

    Как с ним работали:
    - Можно по дереву: Общее -> Базовый документ -> Document (видим Parus.Business.Document)

    Спасибо, Надежда,
    да, с файлом MedicinePersonnel.chm всё понятно. Есть ведь еще и файл parus.chm, где структура по всем модулям, а не только по Кадрам медицины.

    плохо что:
    - в MedicinePersonnel нету общепринятых и совершенно необходимых вкладок Указатель и Поиск
    - в parus.chm эти вкладки, слава богу, есть, но зато нет русскоязычного содержания на вкладке Содержание. А ведь пользователь в программе видит всё на русском языке — каким образом он должен догадываться, что платежные поручения, например, — это класс PaymentOrder?

    В справке на вкладке Указатель должны быть перечислены русскоязычные наименования, наряду с англоязычными — как иначе-то?

    NADEZHDA_K wrote:Ссылкой на таблицу типов документов Parus.Business.DocType является поле с именем DocTypeRef_tid
    ..
    Набросала запрос. Если что-то не так поняла, скажите, пожалуйста

    Спасибо!
    но вопрос, действительно, был не о том.

    Со ссылками по tid+id дело-то ясное, по крайней мере программисту по базам данных. Выяснить, на какую таблицу ссылается та или иная пара полей tid+id, можно по-правильному, то есть так же как в любой базе данных, например как в Оракле или в FoxPro. То есть по таким полям есть соответствующие внешние ключи. Например, для полей DocTypeRef_id, DocTypeRef_tid в таблице ParusBusinessDocument есть внешний ключ FK_ParusBusinessDocument_object$DocTypeRef_id$DocTypeRef_tid, в котором явным образом и прописано, на какую таблицу идет ссылка:
    REFERENCES [dbo].[ParusBusinessDocType] ([id], [tid])

    Хотя согласен, обычно проще догадаться по названию.

    Вопрос стоит не о типах документов, а о классах. То есть не о том, как отобрать документы по типу документа, а как отобрать документы по классу документа. Это не совсем то же, хотя да, наверно, изначально стоявшую практическую задачу «найти в таблице в базе тот док который видим в программе» — вполне можно решать через типы документов, а не через классы

    Но вопрос возник о классах. То есть конкретно например о том, как узнать, какой tid у документов, находящихся в разделе «Исходящие платежные поручения». Поэтому ответ
    M_USHAKOV wrote:таблица realtypes содержит карту соответствия имен и ТИД

    ближе к сути дела. Спасибо!

    хотя по-прежнему не известно, как узнать какое значение в поле Name в этой таблице соответствует разделу «Исходящие платежные поручения». В parus.chm название «Исходящие платежные поручения» поминается один-единственный раз — таким именем назван класс
    Parus.Business.CashlessSettlement.ExtractDocMatchingPOAlgorithm

    этот класс, согласно таблице realtypes имеет tid 929
    но записей с таким tid в таблице ParusBusinessDocument не существует

    Приходится уже танцевать от обратного, и наоборот по tid из таблицы ParusBusinessCashlessSettlementPaymentOrder выяснять, что платежным поручениям соответствует класс Parus.Business.CashlessSettlement.Budget.PaymentOrderBudget

    Это сообщение было изменено 2 раз. Последнее изменение было в 29.01.2014 11:23:06

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

    Зарегистрирован: 21.06.2013 13:00:10
    Сообщений: 451
    Оффлайн

    Даже не знаю, как правильно сформулировать вопрос, но попробую:
    есть таблица ParusBusinessPerson в поле которой Sex явно записаны id пола.

    Как узнать какому id соответствует мужской/женский/не определен пол?

    * вот пришла такая мысль, что id - это идентификатор, а tid идентификатор таблицы?*

    Незабудка
    [Email] [WWW]
    SHIBANOV
    Пользователь

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

    Можно определить по метаданным. Метаданные хранятся в бизнес-сборках.
    Смотрите DomainEnumValue id

    Это сообщение было изменено 2 раз. Последнее изменение было в 31.01.2014 08:51:18

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

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

    NotDefinitely

    перепутали "не определенО" и "неопределЁнно"

    Это сообщение было изменено 3 раз. Последнее изменение было в 03.02.2014 10:02:48

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

    Зарегистрирован: 21.06.2013 13:00:10
    Сообщений: 451
    Оффлайн

    SHIBANOV wrote:Можно определить по метаданным. Метаданные хранятся в бизнес-сборках.


    А как это будет на рабоче-крестьянском? Ну... где и как смотреть? Это какой-то xml-файл внутри pkg-файла?
    [Email] [WWW]
    SARGEANT
    Опытный пользователь

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

    причем и расширение у него обычно .metadata

    Это сообщение было изменено 1 раз. Последнее изменение было в 03.02.2014 10:03:12

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

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

    хотя это так написано в документации "Программирование на Торнадо"

    и вроде видел где-то эти файлы .metadata, но теперь похоже что дежа вю

    а на самом деле где их выцепить - не знаю. Не могу найти. Только в базе есть таблица metadata_backup. Там что-то есть, но то ли..
    KOJEV
    Пользователь

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

    Есть ли какая-то более-менее структурированная информация по настройке шаблонов печати приказов ? Для начала хотя бы принцип привязки шаблонов к типам приказов. Попробовал привязать "свое" по аналогии как стандартный - все равно печатается стандартный и выбора никакого не было. Вроде и приоритет менял так-сяк - без эффекта. Как данные собирать это даже более понятно . Тему почитал, но вроде такого не было.

    Это сообщение было изменено 1 раз. Последнее изменение было в 31.01.2014 14:27:53

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

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

    соседняя же тема про это. То, что темы две, вместо одной, - это наша с вами собственная недоработочка. Юзеров форума то есть

    см. там, начиная с поста:
    http://support.parus.ru/forum/posts/list/101645.page#458040

    и особенно пост
    http://support.parus.ru/forum/posts/list/101645.page#460842

    только может оказаться, что всё это полностью или частично устарело
     
    Индекс форума » Разработка на платформе Парус-Торнадо
    Перейти: