Зарегистрироваться | Поиск |
Результаты опроса: Знали ли вы об этой конструкции раньше? | |||
ДА - и пользовался |
![]() ![]() ![]() ![]() |
18 | 78.26% |
ДА - но не пользовался |
![]() ![]() ![]() ![]() |
1 | 4.35% |
НЕТ - но любопытно |
![]() ![]() ![]() ![]() |
4 | 17.39% |
НЕТ - и неинтересно |
![]() ![]() ![]() ![]() |
0 | 0% |
Голосовавшие: 23. Вы ещё не голосовали в этом опросе |
|
Опции темы |
![]() |
#1 |
Moderator
|
Прикольная конструкция: оператор 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 ); } ![]() |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Gustav
Вот такая на меня сегодня свалилась радость познания.
![]() Давно уже подобной радости не было... В последнее время почему-то хочется морду бить по большей части... Наверное пройдет... А без радостей открытия - тоскливо... Советую еще поискать среди статичных методов exists в таблицах... И еще... оператор легче отлаживать, поскольку результаты выборки хранятся в переменной, которую можно посмотреть. И еще... если делаете оператор без переменной, то обязательно указывайте одно поле - то, которое выбираете. Чтобы сэкономить на трафике. Особенно для таблиц с большим числом полей. К сожалению, это практически никогда не делается... |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
![]() |
#3 |
Banned
|
Ооо! Извините, из чистого любопытства: сколько месяцев (лет ?) практики потребовалось Вам для этого открытия?
|
|
![]() |
#4 |
Участник
|
да ладно, зачем ерничать?
человек тему сознательно в детскую положил... |
|
![]() |
#5 |
Moderator
|
Цитата:
Сообщение от EVGL
Ооо! Извините, из чистого любопытства: сколько месяцев (лет ?) практики потребовалось Вам для этого открытия?
![]() Видите мою дату регистрации? Вот - фактически точка отсчёта и есть. Может, неделей раньше приступил. ("точка отсчета" - в смысле только по X++ конечно имеется в виду). |
|
![]() |
#6 |
Banned
|
![]() Цитата:
Сообщение от Gustav
Видите мою дату регистрации? Вот - фактически точка отсчёта и есть. Может, неделей раньше приступил.
|
|
![]() |
#7 |
Columbus IT
|
Цитата:
Сообщение от mazzy
Завидую.
Давно уже подобной радости не было... В последнее время почему-то хочется морду бить по большей части... Наверное пройдет... А без радостей открытия - тоскливо... Советую еще поискать среди статичных методов exists в таблицах... И еще... оператор легче отлаживать, поскольку результаты выборки хранятся в переменной, которую можно посмотреть. И еще... если делаете оператор без переменной, то обязательно указывайте одно поле - то, которое выбираете. Чтобы сэкономить на трафике. Особенно для таблиц с большим числом полей. К сожалению, это практически никогда не делается... ![]() |
|
![]() |
#8 |
Moderator
|
Да, судя по текущим результатам 12+1+2+0=15, я до позавчерашнего дня бродил не по тем закоулкам кода, а Еременко-Шашкова читал по диагонали...
Но главное же не чувствовать себя одиноким. Спасибо тебе, неизвестный друг, вместе со мной внесший вклад в длину жёлтой полоски "но любопытно"! Где-то читал, что "чайником быть не стыдно, стыдно - им оставаться". А мы и не собираемся оставаться! ![]() |
|