Имя: Пароль:
1C
1С v8
Когда 1С научиться нормально писать.
🠗 (Волшебник 20.02.2014 14:10)
0 batmansoft
 
20.02.14
12:58
Вот реально бест такой код:
"    ЗапросПоТоварам.Текст =
    "ВЫБРАТЬ
    |    ЗапросПоОборудованию.Номенклатура,
    |    ВЫРАЗИТЬ(ЗапросПоОборудованию.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
    |    ЗапросПоОборудованию.Номенклатура." + ТекстКодАртикул + " КАК ТоварКод,
    |    ЗапросПоОборудованию.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаХранения,
    |    ЗапросПоОборудованию.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
    |    ЗапросПоОборудованию.Количество КАК КоличествоМест,
    |    ЗапросПоОборудованию.Количество КАК Количество,
    |    ЗапросПоОборудованию.Коэффициент,
    |    ЗапросПоОборудованию.Цена,
    |    ЗапросПоОборудованию.Сумма,
    |    ЗапросПоОборудованию.СуммаНДС,
    |    ЗапросПоОборудованию.СтавкаНДС,
    |   ЗапросПоОборудованию.НомерСтроки,
"
1 Chai Nic
 
20.02.14
12:59
"реально бест"
5 баллов!
2 Wobland
 
20.02.14
12:59
(0) а сам планируешь?
3 batmansoft
 
20.02.14
12:59
реально бесит
4 Ymryn
 
20.02.14
13:00
А чем именно он раздражает?
5 jsmith82
 
20.02.14
13:00
в чём бест?
6 H A D G E H O G s
 
20.02.14
13:00
(4) Динамическим текстом
7 Chai Nic
 
20.02.14
13:01
Бывает бест и похуже
8 batmansoft
 
20.02.14
13:01
Вот почему криворукие программеры из 1С не могут обойтись без такого:
." + ТекстКодАртикул + "
Почему нельзя сделать нормальные запросы что бы их можно было открыть конструктором?
9 H A D G E H O G s
 
20.02.14
13:01
Забей.
Это наследие середины 2000-х.

Открой для себя УТ11, вот там реально бестня.
10 1Сергей
 
20.02.14
13:01
ещё как бест http://tsya.ru/
11 Йохохо
 
20.02.14
13:02
(0) это же печатная форма наверняка, не надо усложнять сверх бсп
12 1Сергей
 
20.02.14
13:02
(8) чтобы мозгами думали, а не тупо конструкторами пользовались
13 H A D G E H O G s
 
20.02.14
13:03
(12) Ооо, вот и тру программист нас посетил.
14 batmansoft
 
20.02.14
13:04
(12) Тогда нафига они эти конструкторы придумали, если ими нельзя пользоваться?
15 skunk
 
20.02.14
13:04
(8)расскажи мне как получить без этого ссылки всех документов имеющихся в базе за определенный период
16 1Сергей
 
20.02.14
13:05
(13) Я? не. я просто покурить вышел...
(14) для новичков
17 batmansoft
 
20.02.14
13:06
(15) В данном случае никак.
А в случае 0 реально можно было без этого бойтись. Например так:
    ЗапросПоТоварам.Текст =
    "ВЫБРАТЬ
    |    ЗапросПоОборудованию.Номенклатура,
    |    ВЫРАЗИТЬ(ЗапросПоОборудованию.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
    |    ЗапросПоОборудованию.Номенклатура.Код КАК ТоварКод,
    |    ЗапросПоОборудованию.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаХранения,
    |    ЗапросПоОборудованию.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
    |    ЗапросПоОборудованию.Количество КАК КоличествоМест,
    |    ЗапросПоОборудованию.Количество КАК Количество,
    |    ЗапросПоОборудованию.Коэффициент,
    |    ЗапросПоОборудованию.Цена,
    |    ЗапросПоОборудованию.Сумма,
    |    ЗапросПоОборудованию.СуммаНДС,
    |    ЗапросПоОборудованию.СтавкаНДС,
    |    ЗапросПоОборудованию.НомерСтроки,
    |    1 КАК ID
    |ИЗ
...
если что то тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Код","Артикул")
КонецЕсли
18 skunk
 
20.02.14
13:07
(17)за такое я бы вообще на месте сразу убивал
19 Zero on a dice
 
20.02.14
13:09
(14) про конструктор движений нам расскажешь?
как криворукие проги туда свою обработку втыкают и нельзя конструктором открыть)
(17) пряморукий код))
20 Ymryn
 
20.02.14
13:09
Динамический текст запроса - очень удобно. То что нельзя его открыть конструктором - да пофиг, за тот функционал что позволяет такой прием, я готов заплатить такую маленькую цену. Все равно запрос при этом читается не сильно сложнее (а данный запрос - вообще элементарно читается).
21 Karavanych
 
20.02.14
13:10
Дак а че такого в (0) ?
Нормально написано, иногда просто запрос должен работать либо по коду либо по артикулу.

в (17) Ужас...а если там еще появится поле "код", а если потребуется доработать запрос через пару месяцев ? Это же ад поддержки будет, а (0) все ясно сразу, не подразумевается никаких двойных трактовок, просто не открывается в конструкторе, подумаешь - скопируй в консоль запросов, чуть изменить и открой.
22 skunk
 
20.02.14
13:12
(21)да пофих про поле код ... а если там завтра потребуется выбрать реквизиты содержащие три символа "код", к примеру - "кодировка"
23 Zero on a dice
 
20.02.14
13:12
(20) он имеет ввиду способ вроде
"Выбрать &ТекстВставки" с последующим СтрЗаменить(), но, очевидно, пользоваться этим способом сам не умеет)
24 batmansoft
 
20.02.14
13:12
(16) "(14) для новичков" - не для новичков, а для удобства.
25 skunk
 
20.02.14
13:13
или как в нашей конфе "КодКПВЭД", "КодСмарта" и кучу других кодов
26 kosts
 
20.02.14
13:13
(20) Как быть с динамическими запросами из 5000 строк, да еще размазанных по разным запросам с помощью менеджера временных таблиц... И еще с таблицами в параметрах...
Конструктор, хоть как-то позволил бы это обозреть...
27 batmansoft
 
20.02.14
13:13
(20) Такой динамический запрос адский трудоёмко поддерживать. Вот попробуй без конструктора вставить туда хотя бы еще одно поле? Затрахаешься везде вставлять куд анадо
28 skunk
 
20.02.14
13:14
(23)открой ты такой запрос в конструкторе)))
29 Karavanych
 
20.02.14
13:15
(27) Скопируй текст в обработку, убери эту вставку динамическую и открой. Ну потратишь 5 минут лишних.
30 batmansoft
 
20.02.14
13:15
(23) Кстати, да, правильно, именно &ТексВставки надо делать
31 Ymryn
 
20.02.14
13:15
(26) личном не легче читать запрос без конструктора. Если отступы соблюдены и все сделано без обилия вложенных запросов, то читается весьма легко.
(27) Одно поле в этот запрос вставляется одной строкой и тратит 30 секунд времени максимум. В чем проблема не понимаю.
32 kosts
 
20.02.14
13:16
(28) Открывается, но слетают группировки, если в группировках такое поле есть...
33 Lama12
 
20.02.14
13:17
(0)Забей. Посмотри на зарплатные "многоходовые" запросы, и выдохни.
Отладчик в руки. ставишь точку останова перед Выполнить, и смотришь текст запроса итоговый. Его можно скопировать и вставить в конструктор для отладки, если тебе так удобнее.
В приведенном примере и так все читается просто.
34 Ymryn
 
20.02.14
13:17
(31) + как бы запросы успешно пишутся и редактируются без конструктора. И порой заметно быстрее делаются именно без конструктора, если ты структуру базы уже знаешь и написание основных объектов помнишь на зубок.
35 Ymryn
 
20.02.14
13:19
(31) *лично мне
Приношу извинения.
36 kosts
 
20.02.14
13:19
(34) Одно другому не мешает, но я за то, что бы был выбор...
37 Zero on a dice
 
20.02.14
13:21
(34) добавлять в объединения вручную менее удобно - факт
38 IamNotAlexy
 
20.02.14
13:22
(0) ждите 8.3.5
там будет объектная модель запроса с возможность. нормально программно его собирать..
39 Ymryn
 
20.02.14
13:24
(37) не полностью соглашусь. Зависит от объединения. Если в других блоках должно быть null, то согласен. Если же должен быть осмысленный подбор, то руками может оказаться и быстрее.
40 H A D G E H O G s
 
20.02.14
13:25
ППЦ

ВЫБОР КОГДА &НуженАртикул Тогда
Номенклатура.Артикул
КОГДА &НуженСмарт Тогда
Номенклатура.Смарт
ИНАЧЕ
Номенлатура.Код
КОНЕЦ
41 batmansoft
 
20.02.14
13:26
(40) О! Хороший код!
42 kosts
 
20.02.14
13:27
(40) Я бы выбрал Заменить()
43 H A D G E H O G s
 
20.02.14
13:28
(42) Заменить() катит только для универсальных модулей, используемых в разных конфигурациях, в которых по разному именуются таблицы данных.
44 Ymryn
 
20.02.14
13:28
(40) значительно увеличить объем кода, чтобы оно открывалось конструктором?  А оно того стоит? Или у нас стали за количество строчек платить?
45 H A D G E H O G s
 
20.02.14
13:30
Если Метаданные.Имя="УТ" Тогда
Запрос.Текст=стрЗаменить(Запрос.Текст,"ПартииТоваровНаСкладахБухгалтерскийУчет","ПартииТоваровНаСкладах");
46 H A D G E H O G s
 
20.02.14
13:30
(44) Полазишь по модулю НДФЛ в ЗУПе - поймешь.
47 Ymryn
 
20.02.14
13:31
(46) не напоминай. Лазил. Многое понял. Спорить не буду. Ты абсолютно прав.
48 13_Mult
 
20.02.14
13:32
(0) Скажите спасибо что в одну строчку не написали, а запрос норм и не надо на это нагонять. ))
49 batmansoft
 
20.02.14
13:32
(44) Конечно, стоит. Вот надо новое поле добавить, констуртором ты за две секунды добавишь. А сколько будешь добавлять новое поле и материться, если текст запроса сделан через кучу Если тогда КонецЕсли?
50 Ymryn
 
20.02.14
13:35
(49) я уже писал, что новое поле добавляется в запрос как предложен в (0) за 30 секунд максимум. При желании вполне укладываешься за 5 - 10, в зависимости от сложности вложенности. Можно поспорить на тему 2х секунд через конструктор, но в любом случае даже при этих цифрах, я не считаю, что это такая бешенная потеря времени.
51 H A D G E H O G s
 
20.02.14
13:36
(49) Конструктор еще и проверит твои писанины.

Но трушные программеры пишут отруки.
52 Chai Nic
 
20.02.14
13:36
(49) Я в своих нетленках вообще тексты запросов в макетах храню, а не в коде. Удобно.)
53 Ymryn
 
20.02.14
13:38
(51) вот кстати, единственная причина, по которой мне действительно печально, что конструктор становится недоступным. Проверять запрос становится сложнее и можно пропустить опечатку. Факт.
54 Zero on a dice
 
20.02.14
13:38
(49) если пересилить свое гипертрофированное чуство одинэсово-програмистской несправедливости и "а вот до меня прог работал..", ничего сложного в этом нет, и все делается быстро.
а если еще и интернет при этом выключить
55 Хуан
 
20.02.14
13:39
(10) +1
56 Ymryn
 
20.02.14
13:39
Правда пример тут какой-то не очень. Ведь вполне же можно было найти запрос, текст которого собирается из частей по условию в цикле. Вот это действительно мини-шедевры в плане отладки и модификации.
57 H A D G E H O G s
 
20.02.14
13:45
(52) Расскажи!
58 H A D G E H O G s
 
20.02.14
13:45
(56) Бывает и такое.
59 ИС-2
 
naïve
20.02.14
13:49
(8) а вы знайте как работает оптимизатор запросов при транслировании из 1C в СУБД? Думаю нет.
И я тоже.
Но читал, чтобы запрос преобразовался как можно лучше не должны быть всяких Выбор когда, НачалоПериода и т.д. Поэтому и 1C ники составляют запрос димамически
60 ИС-2
 
naïve
20.02.14
13:50
вот пример. Отчет Задолженность по интервалам. В УТ 10.2 запрос статичный через реальную таблицу, а вот в УПП текст формируется динамически
61 skunk
 
20.02.14
13:50
(59)лажа ... нормально запросы отрабатывают и по выбору
62 Zero on a dice
 
20.02.14
13:51
(60) да ну, слишком глубоко в дебри, проще написать " + ?(ы=0, 1,2) + " чем конструкцию Выбор-Когда и слать туда лишний параметр
63 Господин ПЖ
 
20.02.14
13:52
тупая ветка... все фигня кроме запросов зупа
64 Chai Nic
 
20.02.14
13:52
(52) А чего тут рассказывать, создаешь в своем объекте текстовый макет, называешь его как-то, например "ТекстЗапросаПоДокументам", а в коде пишешь Запрос.Текст=ПолучитьМакет("ТекстЗапросаПоДокументам").ПолучитьТекст(), и всё красиво.. котлеты отдельно, мухи отдельно.
65 Господин ПЖ
 
20.02.14
13:53
(63) + еще когда результат из одного в другой через менеджер времянок перекладывается...
66 batmansoft
 
20.02.14
13:53
(59) Дык тогда можно изменять запрос через СтрЗаменить. А заменяемый текст обзывать какими нибудь парметрами, начинающимися на &
67 kosts
 
20.02.14
13:57
(64) А чем не устраивает?

Запрос.Текст = ПолучитьТекстЗапросы();
68 H A D G E H O G s
 
20.02.14
13:58
(59) Он будет нормально транслирован.
69 H A D G E H O G s
 
20.02.14
13:59
(64) Зачем?
70 Zero on a dice
 
20.02.14
14:00
(66) проблема в том, что, действительно, сложный запрос ты конструктором отлаживать не станешь, а если тебе нужно его модифицировать, то, поняв его - не составит сложности дописать нужное. проблема надуманна. ну или я не стану, меня напрягает мышью возюкать и перещелкивать постоянно.
в СтрЗаменить есть конкретный недостаток по сравнению со сложением строк - нечитабельность

(67) в макете можно хранить запрос без | и "", и отлаживать его в консоли чуть проще
71 Серго62
 
20.02.14
14:01
(64) В чем кайф?
72 Advan
 
20.02.14
14:04
в (17)Уже неправильный выход получиться - так как заменит ТоварКод на товарАртикул(поле будет неправильно).

Я обычно смотрю отладчиком, копирую запрос - и в консоль - не удобно конечно - но что делать. Вот бы инструмент для работы с такими вставками.
73 Chai Nic
 
20.02.14
14:04
(69) Никаких заморочек при переносе из консоли запросов и обратно по сравнению с встраиванием его в код (экранирование кавычек, вертикальная черта в каждой строке).
74 batmansoft
 
20.02.14
14:04
(64) А как ты правишь такие запросы, без конструктора?
75 Advan
 
20.02.14
14:04
в (40)Правильный ответ - правда не всегда так можно сделать :(
76 Chai Nic
 
20.02.14
14:05
(74) Через консоль запросов, разумеется
77 el7cartel
 
20.02.14
14:10
(74) ну так отладчиком прогони и увидешь хороший текст запроса, его и копирнешь в консоль!
78 DS
 
20.02.14
14:27
(75) "Оно ж конечно потому шо шож" (с)
в (40) лишний текст загромождает восприятие запроса.
79 vmv
 
20.02.14
15:59
большинство типовых запросов УПП написано в стиле а ля

|    ЗапросПоОборудованию.Номенклатура." + ТекстКодАртикул + " КАК ТоварКод,


многие трехэтажные и в конструкторе хрен протестишь

как решение этой проблемы разрабам надо больше юзать параметры запросов, ну и любителям текстовых вставок в запросы ломать руки конеш