Имя: Пароль:
1C
 
Стиль написания кода в запросе
0 Kifsif
 
25.08.14
22:23
Читаю книгу "Язык запросов".
Там постоянно вот в таком стиле все оформлено:

ВЫБРАТЬ
    Товары.Код,
    Товары.Наименование КАК Наименование,
    Товары.Родитель,
    Товары.ЭтоГруппа
ИЗ
    Справочник.Товары КАК Товары
УПОРЯДОЧИТЬ ПО
    Наименование

Я пока пишу в консоли все вручную. Вот в таком стиле:

ВЫБРАТЬ
    Код,
    Наименование,
    Родитель,
    ЭтоГруппа
ИЗ
    Справочник.Товары
УПОРЯДОЧИТЬ ПО
        Наименование    

И никак не могу понять, зачем они так пишут. Вот зачем писать "КАК Наименование", если оно и так уже наименование. Зачем какой-то псевдоним таблице, если и так запрос работает.

Вообще-то лаконичность кода считал всегда благом, если честно. Поэтому не врублю никак - зачем так?
1 mistеr
 
25.08.14
22:27
(0) Это не они, это конструктор запросов так пишет. Иногда действительно хочется убить того, кто писал для него правила форматирования. Надеюсь, когда-нибудь эти правила можно будет кастомизировать.
2 shuhard
 
25.08.14
22:30
(0) ню ню
попробуй написать реальный запрос без алиасов, а не выборку из одного дохлого справочника
3 Apokalipsec
 
25.08.14
22:32
сказал же почитайте про бд, запросы. как определять когда ты "товар" из двух разных таблиц тянуть, из какой ты хочешь?
4 КонецЦикла
 
25.08.14
22:46
Разработчики восьмерки немного лоханулись... казалось бы мелочь, но в купе с другими говорит о многом...

Не так надо

ВЫБРАТЬ
    Товары.Код,
    Товары.Наименование КАК Наименование,

А так

ВЫБРАТЬ
    Товары.Код
    , Товары.Наименование КАК Наименование
5 mistеr
 
25.08.14
22:53
(4) Побуду педантом:

ВЫБРАТЬ
      Товары.Код
    , Товары.Наименование КАК Наименование
6 КонецЦикла
 
25.08.14
22:55
:)
Это уже лучше, но больше влияет на восприятие, а не на написание :)
7 Фокусник
 
25.08.14
23:47
(0) ИМХО, лучше КАК всегда подставлять, удобнее потом через конструктор дорабатывать запрос
8 GROOVY
 
26.08.14
00:12
В запросе овер размер экрана, очень зорошо читать алиасы таблиц. А алиасы полей нужны, если есть понинание того, что автоалиас может быть назначен самой платформой в зависимости от языка выполнения (язык локализации), и что там будет Name или Наименование, хз.
9 mistеr
 
26.08.14
00:15
(8) Что за автоалиасы?
10 GROOVY
 
26.08.14
00:18
(9)  Ну как платформа назовет результат функции СУММА(КоличествоОстаток) ?
11 фобка
 
26.08.14
00:22
В 8ке не имеет особого смысла как выглядит текст запроса, все равно через конструктор проще воспринимается всё
12 фобка
 
26.08.14
00:24
(10) шо за количествоостаток? Платформа автоматом обзывает как поле1,2,3
13 mistеr
 
26.08.14
00:25
(10) КоличествоОстаток[1,2,...]
14 фобка
 
26.08.14
00:27
Про лаконичность кода - ставьте алиасы на таблицы, на полях экономить нет смысла. Платформа (8.2) иногда на динамических списках (и еще в каких-то случаях) глючит если алиасов нет, поэтому проще перестраховаться
15 GROOVY
 
26.08.14
00:33
Попробуйте платформу на английском запустить, ну или на немецком и удивитесь... Поле1,2,3 :) Да...
16 unregistered
 
26.08.14
00:53
(0) Ключевая фраза "пишу ... вручную"

Остальное лирика.
Пока от безделья маешься ручной писаниной запросов к одному источнику - пиши как хочешь.
Когда надоест - станешь пользоваться конструктором и глупые вопросы отпадут сами собой.
17 Лодырь
 
26.08.14
06:03
(16) Ну вот тут Как в запросе сравнить реквизиты документа между собой "папки" отписались, что только ручное написание запросов канонично )
18 Chai Nic
 
26.08.14
07:21
(17) Конструктор конечно убогий, но другого у нас нет..
19 VladZ
 
26.08.14
07:32
(0) Учись сразу мыслить масштабно. Наваять запрос для одного справочника - это фигня. А если два-три объекта выборки? А если больше?
20 VladZ
 
26.08.14
07:33
+19 Представь, что тебе придется дорабатывать этот запрос.
21 13_Mult
 
26.08.14
08:43
Ну если с фанатизмом то пишите тогда тексты запроса в одну строку ))
22 13_Mult
 
26.08.14
08:44
(21) + и на англ. языке )
23 13_Mult
 
26.08.14
08:49
(22) + типа этого ))
select Code , Description from Catalog.Банки
24 Ndochp
 
26.08.14
09:28
(0) Как надо писать всегда. Потому, что конструктор.
Представь, у тебя пакет из десятка запросов. В третьем тебе надо поменять "вт.Организация" на "ЕстьNULL(вт.Организация, вт2.Организация)"
Если у тебя было написано

Выбрать
ВТ.Организация, ...
Поместить вт3

то после изменения у тебя поле запроса переименуется в "поле 1" и ниже во всех 7 оставшихся запросах пакета все, что содержало "вт3.Организация" будет просто удалено. Условия, связи, поля, все.

А если было

Выбрать
ВТ.Организация как Организация, ...
Поместить вт3

то этот кусок преобразуется в
Выбрать
ЕстьNULL(вт.Организация, вт2.Организация) как Организация, ...
Поместить вт3

и никаких проблем.
25 Бешеная Нога
 
26.08.14
09:38
имхо автор просто зеленый в плане запросов
26 Бешеная Нога
 
26.08.14
09:38
"КАК" надо писать всегда. Просто до этого понимания надо еще дорасти
27 ДенисЧ
 
26.08.14
09:39
(26) Кстати, само КАК необязательно ))
28 _fvadim
 
26.08.14
09:58
(27) спс :)
29 Зойч
 
26.08.14
10:16
Для форматирования кода запроса рекомендуется открывать консоль, даже если ты пишешь вручную
30 Ёпрст
 
26.08.14
10:18
(29) не всегда.. в старых запросах на универсальном отчете такой совет вреден - убивает вставки кода с комментариями - которые потом заменяются на другой код при определенных условиях.
31 AlexITGround
 
26.08.14
10:18
(0) срочно читать Ицик Бен-Гана
32 Зойч
 
26.08.14
10:20
(30) таких уже нет. зато синтаксис контроль как бонус
33 mistеr
 
26.08.14
10:30
(32) Бывают такие запросы, в которых комментарии просто необходимы.
34 Ёпрст
 
26.08.14
10:31
(32) ну.. не у всех
:)
есть еще и 8.1 - а там в полный рост во всей конфе таких отчетов
35 Ёпрст
 
26.08.14
10:32
Хотя не понятно, почему комменты в запросе убивают конструктором, могли бы и оставлять (ну или галку там воткнуть - убрать комменты)
36 Зойч
 
26.08.14
10:34
(35) Этому пожеланию лет больше чем самой восьмерке
37 mistеr
 
26.08.14
11:38
(35) Это можно понять. "Оставлять комменты" - очень непростая задача, с учетом того, что текст запроса парсится конструктором во внутреннее представление, а после обработки текст генерируется заново. Поди найди там то место, где нужно "оставить" коммент.
38 Chai Nic
 
27.08.14
09:47
(37) Ничего особо хитрого. Привязывать комментарий к последней значимой лексеме. В конструкторе она при этом отобразится с флажком с возможностью редактирования комментария по правой кнопке мыши. При удалении лексемы - предложить перенести комментарий вперед-назад-удалить.
39 hhhh
 
27.08.14
10:03
(38) видимо конструктор не отслеживает лексемы. Например было 40 строчек, а стало 70, какие-то удалили, какие-то поменяли, добавили.
40 Jokero
 
27.08.14
10:35
(11) Если бы еще все запросы конструктором открывались. А то часто попадаются такие, где части запроса в разных процедурах формируются, а потом складываются перед выполнением.
41 YurAnt
 
27.08.14
10:38
(40) вот именно поэтому в некоторых случаях жизненно необходимо умение читать/писать запросы руками
42 mistеr
 
27.08.14
16:28
(38) Ну-ну. Нет уже тех лексем на выходе, другие все.
43 Chai Nic
 
27.08.14
16:47
(42) Ну как это нет. Вот на входе у конструктора есть некий запрос с вкрапленными в него комментариями. Конструктор его парсит в некое внутреннее представление. Что мешает конструктору отследить появление в тексте комментария и запомнить его, привязав к последнему созданному в памяти "лексемообъекту"?
44 Guk
 
27.08.14
16:54
(18) можно пару примеров убогости конструктора?...
45 Крошка Ру
 
27.08.14
17:03
(41) Надо быть последовательным:
"вот именно поэтому в некоторых случаях жизненно необходимо умение вести учет без вычислительной техники"
46 Chai Nic
 
27.08.14
19:57
(44)
1. Режет комментарии
2. Нет возможности в условиях указать реквизиты с обеих сторон выражения, приходится писать ручками
47 timurhv
 
27.08.14
20:24
(46) п.2 - галочку "Произвольное" не пробовал выставить?
48 timurhv
 
27.08.14
20:31
(0) Сколько запросов найдешь в типовой конфигурации без соединений?
49 Chai Nic
 
27.08.14
20:33
(47) Именно это и есть "писать ручками"
50 timurhv
 
27.08.14
20:35
(49) На кнопку нажми и можешь там таскать мышкой)))
51 Chai Nic
 
27.08.14
20:36
+(46)
3. Да, еще невозможно поменять порядок полей после того, как их добавил. Приходится удалять и добавлять заново в нужном порядке. Реально напрягает.
52 mistеr
 
27.08.14
21:02
(51) Это делается на закладке Псевдонимы.
53 Chai Nic
 
27.08.14
21:08
(52) О как, спасибо за информацию - не знал
54 фобка
 
27.08.14
21:11
(40) отладчик в помощь + консоль
55 фобка
 
27.08.14
21:14
(52) в конструкторе нельзя менять порядок джойнов