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

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

SARGEANT wrote:
PSYDIAMOND wrote:а теперь тоже самое на диалекте PostresSql


И что?
Значит запросы писать мы будем под конкретную СУБД MSSQL. Зная, что на Postgres работать они не будут, если в них используются функции MSSQL. Вроде всё ясно и обычно. Что не так?

Ффсе...
Пы Сы
"Учиться вам надо, барин"
SARGEANT
Опытный пользователь

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

-

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

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

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

M_USHAKOV wrote:Форум не является местом сбора FeatureRequest`s

Это как у небезызвестного Бориса Грызлова "Парламент не место для дискуссий"
То есть бессмысслица, сказанная потому что по сути - крыть нечем

M_USHAKOV wrote:Учиться Вам надо. барин

Так ведь и Вам надо.
Например не мешало бы прочить док по ToySQL http://1csql.ru/materials/files/toysql/doc/toysql2_usersguide.rar
, где в теме 3.1.7 SELECT

приведен пример запроса

из которого УЖЕ видно, КАК решить проблему всех функций MSSQL в языке запросов. Надо всего лишь в синтаксисе языка запросов потребовать, чтобы элементы метаданных отличались синтаксически от прочего кода. Например были заключены в квадратные скобки, как у данного автора. И еще выражения у него тоже синтаксически отличаются - заключены в круглые скобки.

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

Впрочем, учиться никогда не поздно, как Вы верно заметили
PSYDIAMOND
Пользователь
[Avatar]

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

ай, ну вас
[Email]
ERMAX
Новичок

Зарегистрирован: 14.11.2012 17:30:50
Сообщений: 125
Оффлайн

PSYDIAMOND wrote:

Нууу, если хотите избежать magic numbers обратите внимание на Parus.Business.MonthsEnum


Знать бы как на него внимание то обратить. Открываю tornado.chm и закрываю, в 7-ке как-то проще было разобраться, там конечно
вавилоны в запросе не наведешь, но было проще. GetTableField() - 90% пожеланий пользователей за 5-10 минут!

Всем спасибо, я понял масштабность проблемы, узнал про язык запросов и исполнитель запросов торнадо,
может и посмотрю когда-нибудь или какую бумажку выложат, с двумя тремя типичными примерами создания колонок с
использованием того же Parus.Business.MonthsEnum в том числе, для простых специалистов сопровождения.



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

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

SARGEANT wrote:
Впрочем, учиться никогда не поздно, как Вы верно заметили

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

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

Как и следовало ожидать, уважаемые оппоненты расписались в своей несостоятельности. То есть сказать не могут совсем ничего

ERMAX wrote:я понял масштабность проблемы

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

ERMAX wrote:примерами создания колонок с использованием того же Parus.Business.MonthsEnum

да этот Enum предложили Вам чисто для методологической красоты решения. То есть это предложение того же уровня, что я предложил переписать CASE более коротким образом

С этим Enum решение у Вас выглядело бы примерно так (в tornado.chm не смотрел, слова придумал сам, но суть верна):

CASE DATEPART(MONTH,DocDate)
WHEN Parus.Business.MonthsEnum.January THEN 'январь'
WHEN Parus.Business.MonthsEnum.February THEN 'февраль'

Это может выглядит красивее, но по сути ничего не меняет. И конечно значительно больше букв чем было без Enum
PSYDIAMOND
Пользователь
[Avatar]

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

SARGEANT wrote:

Это может выглядит красивее, но по сути ничего не меняет. И конечно значительно больше букв чем было без Enum


почти угодали. только там трех символьные месяца а-ля Feb и с нуля
[Email]
SARGEANT
Опытный пользователь

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

посмотрел в tornado.chm
я был прав

Только месяцы там обозначаются первыми тремя буквами английского названия, то есть Jan, Feb и т.п.

Плюс что значения от нуля. А не от единицы. То есть писать с этим Enum надо так:

CASE DATEPART(MONTH,DocDate) -1
WHEN Parus.Business.MonthsEnum.Jan THEN 'январь'
WHEN Parus.Business.MonthsEnum.Feb THEN 'февраль'
SARGEANT
Опытный пользователь

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

-

Это сообщение было изменено 1 раз. Последнее изменение было в 02.07.2016 17:47:48

NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Помогите пожалуйста сделать доп колонки "Дата приказа" и "Номер приказа" в Журнале отпусков кадров. Если пытаюсь получить приказ то выдает ошибку



А допустим примечание из пункта приказа вытащить получилось
[Email]
SARGEANT
Опытный пользователь

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

так уберите Order. Если судить по аналогии с тем Вашим вариантом, который работает

Просто SELECT DocNumber FROM
SARGEANT
Опытный пользователь

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

а, оказывается Order - это еще одна таблица. А то я думал опечатка просто

Раз таблица, то видимо она должна быть прицеплена в запрос. Через точку значит не работает. То есть примерно так:


NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Раз таблица, то видимо она должна быть прицеплена в запрос. Через точку значит не работает. То есть примерно так:


(SELECT o.DocNumber FROM [ParusYug.Business.Personnel.OrderItem] oi INNER JOIN [ParusYug.Business.Personnel.Order] o ON o.Identity = oi.Order
WHERE CONVERT (Object, oi.Identity) = ext.OrderItem)

В вашем запросе тоже ошибку выдает
[Email]
SARGEANT
Опытный пользователь

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

1) Жалоба «unexpected token "o"» незаконна. Согласно документации «Прикладное программирование в системе торнадо.doc», тема «Серверная часть\Язык запросов к БД»:
Язык запросов использует синтаксис стандартного языка запросов SQL. Исключениями являются ограничения в наборе функций и в расширенном описании составных атрибутов (колонок)

Таким образом, алиасы таблиц понимать обязан. То есть эта жалоба - это ошибка платформы

2) Оказывается, согласно этой же теме в документации, атрибуты через точку - понимает. То есть писать Order.DocNumber, как было написано в Вашем исходном запросе - можно.

Тогда предположим, что запрос, выложенный Вами сюда, - не соответствует запросу, положенному реально в доп.колонку. Ведь в выложенной Вами жалобе программы на этот запрос написано: http://support.parus.ru/forum/posts/list/30/436690.page#1066470
«Attribute 'Orderr' not found». Как можно видеть, в жалобе одна лишняя 'r'. Вот в ней и дело. То есть тупо была опечатка в запросе, когда клали его в программу
NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Тогда предположим, что запрос, выложенный Вами сюда, - не соответствует запросу, положенному реально в доп.колонку. Ведь в выложенной Вами жалобе программы на этот запрос написано: http://support.parus.ru/forum/posts/list/30/436690.page#1066470
«Attribute 'Orderr' not found». Как можно видеть, в жалобе одна лишняя 'r'. Вот в ней и дело. То есть тупо была опечатка в запросе, когда клали его в программу

Вы не представляете как бы я был рад если проблема была бы в опечатке, но запрос

дает порядковый номер пункта приказа в приказе, а

выдает ошибку

По сути написано правильно, но неправильно
[Email]
SHIBANOV
Пользователь

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

NICKOLAS333 wrote:
По сути написано правильно, но неправильно


Order - ключевое слово, его нужно экранировать квадратными скобками.
[Email] [ICQ]
NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Спасибо огромное!!! Так работает
[Email]
SARGEANT
Опытный пользователь

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

-

Это сообщение было изменено 1 раз. Последнее изменение было в 31.07.2016 10:54:31

VESELEV_A_V
Новичок

Зарегистрирован: 02.02.2015 16:42:33
Сообщений: 83
От: Александр Весельев
Оффлайн

Доброго всем дня.
А подскажите, почему механизм доп. колонок работает только под администратором сервера?
Сохраняю тот же код под пользователем, при повторном открытии раздела выдает ошибку "Ошибка выборки данных Не удалось привязать составной идентификатор "__join_0.DocNumber"."
Раздел "Основания расчетов", выражение элементарное "d.DocNumber".
[Email]
M_USHAKOV
Пользователь
[Avatar]

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

VESELEV_A_V wrote:Доброго всем дня.
А подскажите, почему механизм доп. колонок работает только под администратором сервера?
....

Синергетическая ошибка при одновременной модификации запроса для доп колонки и прав доступа.
Проявляется не везде.
Работы ведутся.
VESELEV_A_V
Новичок

Зарегистрирован: 02.02.2015 16:42:33
Сообщений: 83
От: Александр Весельев
Оффлайн

Событие регистрировать?
[Email]
M_USHAKOV
Пользователь
[Avatar]

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

VESELEV_A_V wrote:Событие регистрировать?

Уже есть.
VESELEV_A_V
Новичок

Зарегистрирован: 02.02.2015 16:42:33
Сообщений: 83
От: Александр Весельев
Оффлайн

А номер?
Хочется быть в курсе, когда проблема решиться.
[Email]
NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

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

В итоге получается чудовище

Работает, но нужно выставлять дату в настройках
[Email]
SHIBANOV
Пользователь

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

Проще отсортировать по дате и взять предоставляемую услугу с наиболее поздней датой.
[Email] [ICQ]
NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Проще отсортировать по дате и взять предоставляемую услугу с наиболее поздней датой.

не могли бы поделиться простым примером как в колонке вытащить последнюю дату, если запрос возвращает несколько дат
[Email]
M_USHAKOV
Пользователь
[Avatar]

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

NICKOLAS333 wrote:
Проще отсортировать по дате и взять предоставляемую услугу с наиболее поздней датой.

не могли бы поделиться простым примером как в колонке вытащить последнюю дату, если запрос возвращает несколько дат

NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Спасибо
[Email]
NICKOLAS333
Новичок

Зарегистрирован: 23.08.2013 10:32:14
Сообщений: 146
Оффлайн

Подскажите, возможно ли вытащить в колонку несколько значений из запроса? Допустим за месяц несколько раз меняется процент услуги и требуется вытащить все проценты за месяц.
[Email]
 
Индекс форума » Разработка на платформе Парус-Торнадо
Перейти: