Имя: Пароль:
1C
 
Откуда идет такой стиль разработки: НЕ ДокументСсылка.Проведен = Ложь?
0 wowik
 
23.01.19
10:12
1. Другое 46% (11)
2. Программисты со стажем 38% (9)
3. Начинающие программисты так пишут 13% (3)
4. Гуманитарии, пришедшие в 1С 4% (1)
Всего мнений: 24

Лично мне не нравится, когда пишут: НЕ ДокументСсылка.Проведен = Ложь.
Разве нельзя писать  "ДокументСсылка.Проведен = Истина"? - так разве не нагляднее?
108 Вафель
 
23.01.19
15:52
(105) а так каждый раз будешь тип выбирать
109 singlych
 
23.01.19
15:53
(95) Ну добавь естьnull(, неопределено).
Я больше про то, что в (0) не эквивалентный код.
110 DexterMorgan
 
23.01.19
15:54
(107) =)
111 Ник080808
 
23.01.19
15:54
(105) так для этого есть формат у поля. Не?
112 DexterMorgan
 
23.01.19
15:55
(105) Голосовалку может запилишь? Посмотрим минусы заодно, мне лень
113 Diman000
 
23.01.19
15:58
(108) Ты про ввод данных?

(106) Кому "нужно"? У тебя свое собственное мнение вообще есть, ты можешь его высказать? Почему на твой взгляд плохо запихнуть дата+булево в одну колонку?
Предложение голосовалки это вообще прикол. Ты тоже так кодишь, за что больше проголосуют?

(111) Да. С форматом и одним полем визуализация будет автоматическая. С раздельными полями каждый раз придется что-то писать для отображения.
114 DexterMorgan
 
23.01.19
16:00
(113) "Предложение голосовалки это вообще прикол. Ты тоже так кодишь, за что больше проголосуют? "

Неа, просто на мои аргументы, от тебя последует "ну это твое мнение". А так тебя прилюдно окунут в действительность, что аргументы придется тебе приводить всем.
115 Ник080808
 
23.01.19
16:01
(113) зачем? если отключено - пустая дата. для пустой даты отображаешь нетреб. вообще нужно понимать задачу, что такое точка и что это за даты
116 Tonik992
 
23.01.19
16:12
Решая одну проблему (упростить вывод на форме), вы заполучили другую проблему (связана с СУБД). Но это может от не знания, или вы знали о минусах такого составного типа, то тогда странно.

А как вы запросы строите в таком решении:
ВЫБОР КОГДА ТИПЗНЧ(ПОЛЕ) = ТИП(ДАТА) ТОГДА ВЫБОР.... КОНЕЦ ИНАЧЕ ТОГДА...
в таком виде? Такое решение ведь за собой тянет последствия.. Но это правда от темы ДокументСсылка.Проведен отходит, но около неё
117 Diman000
 
23.01.19
16:14
(114) Естественно, это будет твое мнение.
А чье же еще, непогрешимого господа бога что ли, с которым я должен безропотно согласиться?
Короче, нет у тебя аргументов.
Мне поддержка толпы для моего мнения не нужна, поэтому от голосовалки я воздержусь.

(115) Пустая дата это значит, что она не задана. "Не треб." это другое.
Понятно, что для каких-то задач лучше сделать отдельными полями. Но и общее поле вполне имеет право на жизнь, я пока не услышал аргументов почему так не стоит делать никогда.
118 Diman000
 
23.01.19
16:17
(116) Нет, в таком виде обычно не строится запрос.
С запросами вообще особой сложности нет.
Кое-где Не ДатаБулево = ЛОЖЬ встречается.
Даже ДатаБулево > ДАТАВРЕМЯ(1,1,1) нормально отрабатывает, булевые значения пропускаются.
На MS SQL по крайней мере.
119 Ник080808
 
23.01.19
16:17
(117) да элементарно запрос - как выбрать все данные за период. если там булево в поле?
120 Ник080808
 
23.01.19
16:19
(118) группировка по периоду?
121 max1c2011
 
23.01.19
16:19
(2)>> ДокументСсылка.Проведен

Это ПЛОХОЙ и НЕНАГЛЯДНЫЙ стиль программирования.

нас в старой школе учили так не делать.
Пришел к выводу - правы
122 max1c2011
 
23.01.19
16:20
НАДО

ДокументСсылка.Проведен = Истина
123 Tonik992
 
23.01.19
16:23
(121) Давайте делать так:
ОписаниеТипаБулево = Новый ОписаниеТипов("Булево");
ДокументПроведен = ОписаниеТипаБулево.ПривестиЗначение(ДокументСсылка.Проведен);

Тогда, если будет Неопределено, то в ДокументПроведен будет ложь. О как.
124 Tonik992
 
23.01.19
16:25
А еще лучше, чтоб код чище был, сделаем отдельную
Функция ДокументПроведен(ДокументПроведен)
125 Diman000
 
23.01.19
16:25
(119) Через МЕЖДУ да и все. Работает, булевые значения отсекаются.
126 Ник080808
 
23.01.19
16:27
(125) ладно, группировка по периоду? Функции по работе с датами - НачалоПериода и т.д.?
127 Diman000
 
23.01.19
16:37
(126) НачалоПериода по-моему где-то используется, нормально.
Про группировку по периоду уже точно не вспомню.
Это все проверять надо.
Помню что никаких особых проблем такой составной тип не вызывал, ни в запросах, ни в СКД, ни в производительности.
128 Tonik992
 
23.01.19
16:45
(126) Видать в определенных местах кода заранее известен контекст, и "вот в этом месте точно дата" поэтому в запросе НАЧАЛОПЕРИОДА(БулевоДата) отрабатывает нормально.
Ну Димон, нормально же могли общаться, зачем такая архитектура -(
129 Diman000
 
23.01.19
16:48
(128) Так я нормально и общаюсь.
Мне просто не нравится когда аргументы не приводятся, либо приводятся в духе "так не принято".
Хотя к тебе и к Нику это не относится.
Аргумент, что может усложниться написание запросов принимается. Может.
130 Tonik992
 
23.01.19
17:01
(129) На самом деле интересно вот что.
Мы все больше за реализацию не через составной тип. А вы реализовали через составной тип.
И у вас должно было быть весомое обоснование на этот счет. То есть вы взвесили плюсы/минусы и выбрали именно составной тип.
Так вот, вы отходите от "так принято", и было интересно почему.. Ваше обоснование - удобство для формы. Это единственный довод был в пользу составного типа?
131 DexterMorgan
 
23.01.19
17:02
(117) У меня нет цели тебя переубеждать, про такую херню на собеседованиях говорят "Мы с вами свяжемся". А упертые бараны могут и РС как РН использовать и доказывать что это удобно.
132 DexterMorgan
 
23.01.19
17:04
(127) "по-моему", бла-бла-бла, на всех типах БД и т.д. А главное зачем этот гемор? Потому что ты форму один раз нарисовать не можешь?
Кстати про выбор типа (дата или булево) при вводе данных что там было? Удобно? Вместо того, чтобы галочку поставить и появилось дата для заполнения? Смешно.
133 Diman000
 
23.01.19
17:40
(130) Да, главный аргумент был удобство визуализации. И отсутствие других значимых проблем. Я предварительно затестил и производительность и основные запросы. Ввода данных вручную мало. Выключение точек это отдельная операция. Там где вручную вводятся даты, для ввода поле не составное, конечно.
134 DexterMorgan
 
23.01.19
17:55
(133) Что за херня "удобство визуализации"? В чем проблема визуализировать два поля? конкретно, в чем удобнее чем одно составное?
135 DexterMorgan
 
23.01.19
17:56
(133) "Ввода данных вручную мало" и "Да, главный аргумент был удобство визуализации."

Огонь
136 Diman000
 
23.01.19
18:01
Вода и медные трубы))) У тебя проблемы с самооценкой что ли? Цели меня переубедить у тебя нет. А смеяться надо мной и подниматься в своих глазах, вижу что тебе нравится))))
137 Diman000
 
23.01.19
18:05
Ты понимаешь, что форм для вывода данных может быть больше одной? Ты понимаешь, что вывод значения ресурса в СКД, это тоже визуализация?
138 DexterMorgan
 
23.01.19
18:43
(137) Так в чем проблема вывести дату? Какие тут могут быть сложности?
139 DexterMorgan
 
23.01.19
18:45
(137) Я вижу тут неудобство визуализации, если ты выводишь в СКД свое поле, то оно у тебя выглядит как дата с булево вперемешку, если накладываешь отбор, то какая разница два у тебя поля или одно? Мля в чем тут сложности?
140 Diman000
 
23.01.19
18:56
(138) (139)
Проблемы никакой, конечно, это просто дело техники. Но зачем что-то делать там, где можно ничего не делать? Вывод в одной колонке это базовое требование заказчика. Или дата или "Не треб." если точка выключена или пусто если дата не задана.
141 Diman000
 
23.01.19
18:59
И раз уж ты мне продолжаешь задавать вопросы, то я и свой повторю.
Почему такое составное поле это плохо, можешь сказать?
142 DexterMorgan
 
23.01.19
19:13
(141) Потому что ты можешь заиметь кучу граблей, которые как ты сам пишешь надо проверять. Тебе всегда нужно помнить, что это поле составного типа. Отсюда и идут в запросах =Истина, от херовой архитектуры. И я задам вопрос, раз сложности нет нахера это? проверять как работают отборы, группировки и проч функции когда параметром ты будешь передавать составного типа поля, выбирать тип в полях, зачем это все?

"Вывод в одной колонке это базовое требование заказчика"

Рисуй ему форму какую хочешь, хранится должно в разных полях. Это удобнее самому программисту, это прозрачно и понятно работает
143 Diman000
 
23.01.19
19:20
(142)
Я тебя разочарую, но за 5 лет никаких серьезных проблем не появилось.
Тип в полях формы не выбирается, читай внимательно что я пишу.
Так что пока одни плюсы, отчётов и форм уже не перечесть. И они клепаются на раз, сразу в нужном виде
144 Botanik8888
 
23.01.19
23:24
(143) я бы на месте Вашего приемника утопил вас в ближайшей проруби.....
145 palsergeich
 
23.01.19
23:52
(99) То что это (83) говно.
Используй группу колонок в конце концов.
Для задачи план факт просто идеален оборотный регистр, он просто создан для нее.
146 palsergeich
 
23.01.19
23:53
(85) А разве минимум не всегда дает Null, если он есть?
Я эту шнягу еще в SQL на 8.2 использовал.
147 palsergeich
 
23.01.19
23:58
(105) Ой лолллл
Открой для себя функцию формат.
https://yadi.sk/i/kiL_nj8QE4RkuQ , если формат не подходит группа колонок тоже решает эту задачу "склеивает" 2 реквизита в 1.
Я всегда догадывался что во франчах у людей кто долго сидит в мозгу что то происходит....
148 palsergeich
 
24.01.19
00:00
Это неподдерживаемая, а еще я уверен недокументированная особенность.
Вот уедешь ты в отпуск, я даже не представляю как пердан гореть будет у того, кто на это наткнется
149 Бертыш
 
24.01.19
00:06
недопереучившиеся семёрошники

Программисты со стажем
150 ssh2006
 
24.01.19
00:11
(0)

"огические выражения и логические значения (например, результат функции, возвращающей логическое значение, переменные типа Булево и пр.) не следует проверять путем сравнения с литералами Истина и Ложь.
Правильно:

Если ЭтоНовый() Тогда

Неправильно:

Если ЭтоНовый() = Истина Тогда"
https://its.1c.ru/db/v8std#content:2149184090:hdoc
151 palsergeich
 
24.01.19
00:25
https://yadi.sk/i/ZG2rswhfZ6Hrww
https://yadi.sk/i/soJ9McjlZfE5Xg
Вот так вот за 10 минут 2 реквизита документа в 1м поле.
В СКД есть выражение представления
152 palsergeich
 
24.01.19
00:29
https://yadi.sk/i/DlpIHfsp7H40XA
Вообще без кода форма списка.

Форма элемента - в 5 строчек, можно сделать понтовой гиперссылкой и заказчик будет счастлив.
СКД вывод те же 10  минут займет описать выражение представления.
Только мое решение на класс выше составного недокументированного и логически неясного объединения типов там, где без него можно обойтись без потери функционала....
153 palsergeich
 
24.01.19
00:36
Сортировка тоже работает.
Вот только поиск - с окном выбора типа, но это аналогично составному типу.
https://yadi.sk/i/xpyerwav3S06-g
https://yadi.sk/i/FCCt3u9fHCe40w
154 Diman000
 
24.01.19
01:32
Как же смешно вас читать, ребята)
Не всех, некоторые серьезно подходят к обсуждению.
Им большое мое человеческое спасибо, говорят о фактических минусах моего решения, которые конечно же есть.
А не просто о порванных шаблонах.

(144) Опять ярлык, разумных доводов нет.
Как разумные доводы появятся, излагай, я готов о них поговорить.

(147) Во всех наших мозгах что-то происходит.
Франч, не франч, это не важно.
Вы работаете там где вам нравится работать, а я там где нравится мне.
Рынок труда расставляет нас по местам.
Я очень востребован и высокооплачиваем, надеюсь, что и вы также.
Склеивание в группе колонок это замечательно.
Но зачем это все, когда и так все отображается в нужном виде?

(148) Давно уже работают с десяток человек в разные времена над моей архитектурой.
Короткое объяснение дает полное понимание как с ней работать и не вызывает ни у кого никаких проблем.
155 Diman000
 
24.01.19
01:41
И да, кстати.
Аргумент, что новому спецу будет сложно в этом разобраться без объяснений предшественника, принят.
Да, без объяснений будет сложно, согласен.
156 CHerypga
 
24.01.19
08:52
вот прямо сейчас открыт код нетрадиционной ориентации, и там написано примерно следующее

Процедура ТабличнаяЧастьПередНачаломДобавления(Элемент, Отказ, Копирование)
    
    Если (ТипЗнч(Копирование) = Тип("Булево") И Копирование) Тогда        
        Возврат;
    КонецЕсли;    

//собственно код
    
КонецПроцедуры

а сделано так потому что кое кому было лень использовать традиционные методы программирования и он решил сам вызвать эту процедуру и кое что ей дополнительно передать
157 ADirks
 
24.01.19
09:17
(156) Скажи спасибо, что не в попытку завернули. Хоть какой-то шанс оставлен.
158 ADirks
 
24.01.19
09:33
По теме.

Аргументация за "Проведен = Истина" вполне понятно - защитное программирование.
Но есть и другая сторона, и тоже про защитное программирование. Если мы напишем "Если Проведен Тогда", и некая редиска подбросит в проведён не булево значение, то у нас всё поломается, все это увидят, и позор со скандалом. Но. Зато не произойдёт неведомо что, вообще никак не запланированное никем. А иной раз такое происходит, и замечают это довольно поздно, когда ошибки накопились уже в данных.

Какую защиту выбирать - зависит от ситуации конечно. Лично я выбираю второй вариант. Пусть мой код сломается, зато я быстро его исправлю, причём исправлю причину, а не следствие.
159 Diman000
 
24.01.19
11:12
Ну что же, аргументация против Проведен = Истина тоже понятна.
Согласен, есть ситуации когда код должен отвалиться с ошибкой, а не проскочить дальше из-за того что он обернут в Попытку или в = Истина.
Но на моей практике с булевыми проверками такого не встречалось.
У меня чаще встречается, что запрос перестает возвращать реальные значения и неявные проверки падают...

Я уже это несколько раз тут говорил.
Если у вас другой опыт, то я совершенно не против, пусть будет так.
Ни в проруби топить, ни мудаком называть я вас не стану)))
160 DrZombi
 
гуру
24.01.19
11:18
(156) Фу, как узко, надо было так писать.


Процедура ТабличнаяЧастьПередНачаломДобавления(Элемент, Отказ, Копирование, ПроЯзвольНыйПараметр=Неопределено)
    
    Если Копирование <> Неопределено И Копирование Тогда        
        Возврат;
    КонецЕсли;    

    Если ПроЯзвольНыйПараметр <> Неопределно Тогда        
              //Магия волшебство и феи :)
        Возврат;
    КонецЕсли;    


//собственно код

    
КонецПроцедуры
161 DrZombi
 
гуру
24.01.19
11:19
(0) Побоку, вы атрофировались, попробуйте взглянуть на мир с другой стороны.

Другое
162 dezss
 
24.01.19
11:26
В данном случае - это говнокод.
Вообще подобное может и имеет смысл, но я его увидеть не могу.
Я скорей напишу первым условием проверку на тип значения.

Другое
163 ADirks
 
24.01.19
11:29
(159)
> У меня чаще встречается, что запрос перестает возвращать реальные значения и неявные проверки падают...

Ну так я же про то же. Если вдруг что-то происходит в запросе, то и разбираться надо с запросом? Бывает, поменяется структура данных, и внезапно некоторые запросы перестают работать корректно. По мне, уж лучше пусть оно сразу с ошибкой упадёт.
164 Diman000
 
24.01.19
11:37
(163) Проверка условия может на русском звучать так: "Если там что-то есть и оно = Истина, то шагаем по коду дальше".
Пока оно есть все работает.
А затем, внезапно, его больше нет. Чистая база создана или права у кого-то урезанные.
Вот для таких случаев лучше написать = Истина напрямую. Ну или проверять на тип или на неопределено.
165 Oftan_Idy
 
24.01.19
12:03
(0) Не имеет значения как написано. Главное чтобы код был понятным

Другое
166 AlxOlm
 
24.01.19
12:33
Глубокое понимание духовных основ 1с программирования,
приходящее к небольшому числу избранных, после десятилетий самоотречения и медитаций в единении с природой, позволяет строить подобные конструкции.

Программисты со стажем
167 AlxOlm
 
24.01.19
12:35
Как замечательно, что глубокопочитаемый "wowik" вынес столь важный вопрос на обсуждение.
168 Вафель
 
24.01.19
12:35
Только вот зачем писать "НЕ =", когда можно писать "<>"
169 singlych
 
24.01.19
12:36
(146) обычно было Ложь, но как оказалось, зависит от СУБД.
170 singlych
 
24.01.19
12:38
(168) <> в xml не выгружается :))
171 Вафель
 
24.01.19
12:41
(170) выгружаются конечно же
172 ADirks
 
24.01.19
13:49
(168) чтобы написать <> некоторым нужно раскладку переключать
173 wowik
 
24.01.19
15:01
(172) же программы, которые позволяют переключать раскладку, сам пользуюсь)
может эти люди не в курсе про такие программы, может им надо сказать об этом?)
174 wowik
 
24.01.19
15:04
(165) в том то и дело, что получается "загромождение чертежа", вместо одной операции, сразу 2 нужно обрабатывать.
175 bolobol
 
24.01.19
15:05
(173) Мне расскажите об этом! Страдаю - жесть просто...
176 wowik
 
24.01.19
15:06
177 ДенисЧ
 
24.01.19
15:07
(175) Я пользую 1С:AutoDesigner.
например <> вводится как Alt-бю и ещё полтора десятка символов.
178 bolobol
 
24.01.19
15:07
(176) "Официальный" ответ от Яндекса: "Да, мы не можем обеспечить совместимость протоколов для передачи нажатия горячей клавиши на удалённый компьютер"
179 bolobol
 
24.01.19
15:10
(177) Где взять?
180 DexterMorgan
 
24.01.19
15:10
(177) на основном месте работы здорово. Не здорово, когда тебе приходится подключаться по рдп/работать в другом месте. Особенно когда привыкнешь
181 wowik
 
24.01.19
15:13
182 Nyoko
 
24.01.19
15:13
ДокументСсылка.Проведен достаточно

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

Показать хаки типа

Не писать
Если Проведен = Истина Тогда
ТолькоПросмотр = Истина;
иначе
ТолькоПросмотр = Ложь;
КонецЕсли;

Можно просто же написать ТолькоПросмотр = Не Проведен;

Другое
183 bolobol
 
24.01.19
15:15
(180) В смысле? Это тоже через РДП не работает?
184 bolobol
 
24.01.19
15:16
(180) И, кстати, какая разница, куда по РДП подключаться, на рабочий сервер или на "другое место"? Как от этого зависит работоспособность программы? Или о чём речь?
185 bolobol
 
24.01.19
15:21
(177) Не работает. Только на локальном компьютере отрабатывает, но это никому не нужно.
186 Nyoko
 
24.01.19
15:21
Встречался программист который на Delphi писал всю жизнь около 20 лет, его код в 1с меня просто вскрывал, от названия переменных до работы с логикой, форматирование .. просто жопа.. но его поделки работали ..
187 Tonik992
 
24.01.19
15:36
(186) парочку примеров пожалуйста, будьте добры )) уж оч. хочется на бест практикс взглянуть
188 Вафель
 
24.01.19
15:39
многие проги вообще не форматируют код
189 Вафель
 
24.01.19
15:39
(187) небось половину ключевых слов на инглише писал
190 wowik
 
24.01.19
15:40
(189) в одну строку))
а какая максимальная длина строки в 1с для кода?
191 ДенисЧ
 
24.01.19
15:50
(179) В гугле ищется на раз
(180) а оно у меня на гугле лежит, установки не требует. Скачал, запустил
192 ДенисЧ
 
24.01.19
15:50
(181) Он самый
193 ДенисЧ
 
24.01.19
15:51
(185) Работает. Достаточно его на терминал закинуть и запустить
194 DexterMorgan
 
24.01.19
15:52
(193) Не всегда есть права на установку чего то там на терминале
195 ДенисЧ
 
24.01.19
15:52
(189) Я помнится, одну обработку импорта из акспаты целиком на аглицком писал, ибо там скуль и адо, переключаться задалбывался...
Зато меня потом 5 раз (уже после увольнения) приглашали на дописать её, ибо местные не понимали, что там написано ))
196 ДенисЧ
 
24.01.19
15:52
(194) Она не устанавливается. Она просто запускается
197 DexterMorgan
 
24.01.19
15:53
(193) И доступ к интернетам
198 wowik
 
24.01.19
16:05
(190) сколько символов программного кода влезет в одну строку? Есть ограничения?
199 Nyoko
 
24.01.19
16:18
(187) копий не осталось базы этой давно было.. .
200 ADirks
 
24.01.19
17:00
Для того, чтобы раскладку не переключать, есть например AutoHotKey
Как использовать, например тут: http://catalog.mista.ru/public/339035/

кусочек файла для AHK
;==================================
;символ '<' по Ctrl-,
$^SC033::Send <


;===================================
;символ '>' по Ctrl-.
$^SC034::Send >

;===================================
;символ '|' по Ctrl-\
$^\::Send |


;===================================
;символ '[' по Ctrl-[
$^SC01A::Send [
;символ ']' по Ctrl-]
$^SC01B::Send ]
201 Вафель
 
24.01.19
17:05
можно еще Альт+60, Альт+62 набирать
202 cons24
 
24.01.19
17:11
у меня коллега бывший семерочник всегда так писал. Ну и я иногда, когда не точно уверен что слева будет именно булево, а не булево/неопределено.

Программисты со стажем
203 GANR
 
24.01.19
17:54
Это самая безобидная разновидность говнокода

Другое
204 Про100Филя
 
24.01.19
18:06
Ууу... тут много вариантов, самый очевидный было так:

ДокументСсылка.Проведен = Ложь

Потом добавили НЕ ибо быстрее исправить.

Или программист был пьян или не в себе, а то видел и подобные конструкции:

НЕ ДокументСсылка.Проведен = (Неопределено = Истина)
НЕ ДокументСсылка.Проведен = 3.14

Другое
205 Конструктор1С
 
24.01.19
19:35
Плохой стиль программирования, он как плохой стиль вождения, - возникает в самом начале и остаётся на всю жизнь

Программисты со стажем
206 bolder
 
25.01.19
07:59
(20) Абсолютно правильный код.Логично обрабатывать главную ветку первой .
Вот стандарт  от 1с:
«1. Проверку того, что результат выполнения запроса не содержит строк следует выполнять с помощью метода Пустой. Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.

Неправильно:

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
  Возврат Истина;
Иначе
  Возврат Ложь;
КонецЕсли;

Правильно:

Возврат НЕ Запрос.Выполнить().Пустой()
«.
207 JeHer
 
25.01.19
08:10
Вы еще забыли про:
Если ДокументСсылка.Проведен = Истина и НЕ ДокументСсылка.ПометкаУдаления = Истина Тогда

Начинающие программисты так пишут