AXForum  
Вернуться   AXForum > Прочие обсуждения > Детская
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Результаты опроса: Знали ли вы об этой конструкции раньше?
ДА - и пользовался 18 78.26%
ДА - но не пользовался 1 4.35%
НЕТ - но любопытно 4 17.39%
НЕТ - и неинтересно 0 0%
Голосовавшие: 23. Вы ещё не голосовали в этом опросе

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.06.2006, 18:22   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Прикольная конструкция: оператор select с полем
Ковыряясь с книгой покупок, набрёл на макрос PurchBook_RU, в котором есть такой фрагмент:
Код:
#IF.ARG(0)
   (%1.DeliveryDate < #criticalDate ? 0.00 :
   (%1.TransType == SalesPurchBookTransType_RU::CreditNote                                       ?
        ((select firstonly FactureTrans_RU
               where FactureTrans_RU.FactureId == %1.FactureId           &&
                     FactureTrans_RU.Module    == FactureModule_RU::Vend &&
                     FactureTrans_RU.VATType   == VatType_RU::Full).VatValue == #vatValue20 ?
                                0.00  :
                               %1.AmountLiableToVAT20) :
                               %1.AmountLiableToVAT20))
    #ENDIF

конкретно заинтересовала конструкция:
Код:
(select firstonly FactureTrans_RU...).VatValue
Проверил свои возникшие "опасения" - захлопал в ладоши! (поэтому и постюсь в "Детской" )

Понравилось. Даже нашёл у А.Ерёменко, Р.Шашкова на стр.114 соответствующие разъяснения:
Цитата:
Отметим разницу между обычным оператором select и оператором select c полем.
Оператор select c полем работает прямо с таблицей, в то время как обычный оператор select работает c табличной переменной.
Почувствовал разницу между
Код:
static void TestJob1_Before_OpenEyes(Args _args)
{
LedgerTable ledgerTable;
 
select firstonly reverse ledgerTable order by AccountNum;
 
info( ledgerTable.AccountName );
 
}
и
Код:
static void TestJob2_After_OpenEyes(Args _args)
{
;
info( (select firstonly reverse LedgerTable order by AccountNum).AccountName );
}
И даже вложенные конструкции можно!
Код:
static void TestJob3_NuVasheeeee(Args _args)
{
// вывод в инфолог наименования ОС из первой записи в таблице проводок по ОС 
;
info( (select RAssetTable where RAssetTable.AccountNum 
     == (select firstonly RAssetTrans).AccountNum ).Name );
}
Вот такая на меня сегодня свалилась радость познания.
Старый 28.06.2006, 18:55   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Gustav
Вот такая на меня сегодня свалилась радость познания.
Завидую.
Давно уже подобной радости не было... В последнее время почему-то хочется морду бить по большей части... Наверное пройдет... А без радостей открытия - тоскливо...

Советую еще поискать среди статичных методов exists в таблицах...

И еще... оператор легче отлаживать, поскольку результаты выборки хранятся в переменной, которую можно посмотреть.

И еще... если делаете оператор без переменной, то обязательно указывайте одно поле - то, которое выбираете. Чтобы сэкономить на трафике. Особенно для таблиц с большим числом полей. К сожалению, это практически никогда не делается...
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Gustav (2).
Старый 29.06.2006, 12:01   #3  
kosenkov is offline
kosenkov
Columbus IT
Columbus IT
 
202 / 38 (2) +++
Регистрация: 19.08.2005
Адрес: Москва
Цитата:
Сообщение от mazzy
Завидую.
Давно уже подобной радости не было... В последнее время почему-то хочется морду бить по большей части... Наверное пройдет... А без радостей открытия - тоскливо...

Советую еще поискать среди статичных методов exists в таблицах...

И еще... оператор легче отлаживать, поскольку результаты выборки хранятся в переменной, которую можно посмотреть.

И еще... если делаете оператор без переменной, то обязательно указывайте одно поле - то, которое выбираете. Чтобы сэкономить на трафике. Особенно для таблиц с большим числом полей. К сожалению, это практически никогда не делается...
Старый добрый mazzy - всюду узнаваемый стиль. Только уставший - теперь после предложений появились многоточия
Старый 30.06.2006, 11:32   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Да, судя по текущим результатам 12+1+2+0=15, я до позавчерашнего дня бродил не по тем закоулкам кода, а Еременко-Шашкова читал по диагонали...

Но главное же не чувствовать себя одиноким. Спасибо тебе, неизвестный друг, вместе со мной внесший вклад в длину жёлтой полоски "но любопытно"!

Где-то читал, что "чайником быть не стыдно, стыдно - им оставаться". А мы и не собираемся оставаться!
Старый 28.06.2006, 19:28   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Ооо! Извините, из чистого любопытства: сколько месяцев (лет ?) практики потребовалось Вам для этого открытия?
Старый 28.06.2006, 21:13   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от EVGL
Ооо! Извините, из чистого любопытства: сколько месяцев (лет ?) практики потребовалось Вам для этого открытия?
А не обиделся абсолютно!
Видите мою дату регистрации? Вот - фактически точка отсчёта и есть. Может, неделей раньше приступил.
("точка отсчета" - в смысле только по X++ конечно имеется в виду).
Старый 29.06.2006, 11:34   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Thumbs up
Цитата:
Сообщение от Gustav
Видите мою дату регистрации? Вот - фактически точка отсчёта и есть. Может, неделей раньше приступил.
Хорошо!
Старый 28.06.2006, 19:42   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
да ладно, зачем ерничать?
человек тему сознательно в детскую положил...
__________________
полезное на axForum, github, vk, coub.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:34.