|
OFF: Поговорим о странном коде? 🠗 (Волшебник 20.04.2017 22:04) | ☑ | ||
---|---|---|---|---|
0
Vladal
20.04.17
✎
15:51
|
Привет!
Вот хочу разобраться в коде, который мне стал попадаться в последнее время всё чаще: |... |ГДЕ | Документ.ВидОперации = &Видоперации | И Документ.Проведен = Истина | И (Документ.Контрагент = &Дистрибьютор1 | ИЛИ Документ.Контрагент = &Дистрибьютор2) ... Далее что-то типа: Запрос.УстановитьПараметры("Дистрибьютор1", ОбщийМодуль.ПолучитьКонстанту("Дистрибьютор1")); Запрос.УстановитьПараметры("Дистрибьютор2", ОбщийМодуль.ПолучитьКонстанту("Дистрибьютор2")); Вот у меня мысль - это какой-то тонкий шик оптимизации запроса, о котором я не знал (сравнивать два раза с различными параметрам), или надо было быстренько костыль сделать, а может просто неопытность автора? Теперь поступила задача добавить третьего дистрибьютора и тут либо продолжить костылить, или поменять архитектуру решения. Вроде до меня не глупые люди это писали. |
|||
1
Zombi
20.04.17
✎
15:52
|
Нельзя же критиковать разработчиков 1сю Новые правила форума.
|
|||
2
HEKPOH
20.04.17
✎
15:52
|
"Вроде до меня не глупые люди это писали."
"И Документ.Проведен = Истина" не стыкуется :) |
|||
3
Naf2017
20.04.17
✎
15:53
|
(0) шик это делать константы Дистрибьютор1, Дистрибьютор2, ...
вместо регистра сведений, например |
|||
4
aka AMIGO
20.04.17
✎
15:54
|
Запихивать в СЗ дистров - это 3-4 лишних строки в коде.
А так - оч.экономно, и задачу решает :) |
|||
5
Любопытная
20.04.17
✎
15:54
|
(2) Глупые люди написали бы И "Документ.Проведен = &Проведен"
|
|||
6
Волшебник
модератор
20.04.17
✎
15:54
|
(1) Это какие-то быдлокодеры писали, а не разработчики 1С. Хотя да, ты прав.
|
|||
7
Vladal
20.04.17
✎
15:55
|
(1) В правилах говорится о разработчиках фирмы "1С".
а я и не критикую 1С, а конкретный код, и не типовой даже. |
|||
8
Smile 8D
20.04.17
✎
15:58
|
(2) Варианты "И Документ.Проведен", "И НЕ Документ.ПометкаУдаления" не на всех версиях платформы и базах данных работают корректно. Пока не столкнулся даже не думал об этом, а теперь перестраховываюсь и пишу " = Истина", "= Ложь".
|
|||
9
Hmster
20.04.17
✎
15:58
|
может быть так специально было сделано, может был какой-то определенный процесс про который все забыли?
|
|||
10
Трипиэль
20.04.17
✎
15:59
|
быстрее переделать, чем писать на Мисту и читать бесполезные комментарии
|
|||
11
Vladal
20.04.17
✎
15:59
|
(2) Ага. "Никогда не говорите плохо о своих предшественниках. Ведь благодаря им Вы получили эту работу".
(4) Да. Хоть обошлось без НайтиПоКоду и НайтиПоНаименованию. |
|||
12
Любопытная
20.04.17
✎
15:59
|
(8) на каких не работают?
|
|||
13
Vladal
20.04.17
✎
16:00
|
(10) моя цель не "напишите за меня решение", а "давайте погоаорм". понимаешь, мне одиноко, не с кем поговорить. Может найдутся такие же души )))
|
|||
14
Smile 8D
20.04.17
✎
16:01
|
(12) Сейчас уже не помню точную конфигурацию, на которой такая проверка стала вести себя некорректно. Но искали причину очень долго, смотрели запросы через профайлер. В итоге выяснилось, что замена на "ПометкаУдаления = Ложь" решила проблему.
|
|||
15
Vladal
20.04.17
✎
16:01
|
"давайте погоаорм" = "Давайте поговорим".
|
|||
16
Vladal
20.04.17
✎
16:01
|
(14) заменили в запросе "НЕ ПометкаУдаления" на "ПометкаУдаления = ЛОЖЬ"?
|
|||
17
Vladal
20.04.17
✎
16:02
|
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
|
|||
18
Любопытная
20.04.17
✎
16:02
|
(14) ну как так-то? Такие вещи надо помнить. И другим рассказывать
|
|||
19
Gantosha
20.04.17
✎
16:05
|
я так люблю писать .. что бы другим потом тошно было.
Еще люблю писать найти по коду. Найти по наименованию писать не люблю, так как с-ки их в баез часто меняют. |
|||
20
Вафель
20.04.17
✎
16:07
|
сначала был 1 дисрибьютор,потом добавили 2.
Но на переписывать весь легаси код денег не дали. Сделали по быстрому |
|||
21
Fish
20.04.17
✎
16:08
|
(0) Очень похоже на стиль франчей. Обычно у них подобный код встречается.
|
|||
22
Timon1405
20.04.17
✎
16:10
|
Тут все просто: нет времени кодить - добавил и забыл,
есть время - меняй архитектуру. |
|||
23
aka AMIGO
20.04.17
✎
16:10
|
(18) Так всё ясно ведь :) - причину некогда было искать, устранили следствие, метод запомнился.. Всё :)
(19) а я пишу без оглядки на других. |
|||
24
Новиков
20.04.17
✎
16:14
|
(0) >>тут либо продолжить костылить
Делать неделю, потеть, ходить, ругаться, попросить ТП, ТЗ, обследование, сделать полный рефакторинг, посовещаться со срам-мастерами, выбить переработок еще на неделю и в конце написать: Запрос.УстановитьПараметры("Дистрибьютор3", ОбщийМодуль.ПолучитьКонстанту("Дистрибьютор3")); |
|||
25
Любопытная
20.04.17
✎
16:14
|
(23) Я с таким не встречалась никогда, всегда пишу просто не Документ.ПометкаУдаления, например. А вдруг люди платформу сменят, у них этот глюк вылезет и будут меня проклинать?
|
|||
26
aka AMIGO
20.04.17
✎
16:17
|
(25) Нее.. тут применяется принцип: "работает - не трогай!" :)
|
|||
27
Smile 8D
20.04.17
✎
16:17
|
(16) Да
(18) К сожалению на данном форуме не приветствуется описание проблем, возникших в 1С. Вот мой товарищ завел тему, где описал на какие грабли наступил при попытке сделать копию типового документа в БП3, а Волшебник просто удалил тему с комментарием "Данная тема на данном форуме не интересна", а затем вообще забанил товарища. К сожалению, тут теперь модно обсуждать политику и другие оффтопы) |
|||
28
Волшебник
модератор
20.04.17
✎
16:18
|
(27) Так ему и надо
|
|||
29
Джинн
20.04.17
✎
16:20
|
(27) Вашему товарищу не повезло. А неудачникам на Мисте делать нечего.
|
|||
30
Smile 8D
20.04.17
✎
16:21
|
(29) Зато мы много узнали о манерах и воспитании Станислава) но это уже отдельная тема)
|
|||
31
Волшебник
модератор
20.04.17
✎
16:22
|
(30) Давай, скажи ещё что-нибудь.
|
|||
32
Vladal
20.04.17
✎
16:43
|
(24) зачет
|
|||
33
agarych
20.04.17
✎
16:50
|
(0) Вангую...
Сначала все обещали, что только один контрагент будет таким исключительным. Прог добавил константу. Через полгода год, пришли и попросили еще одного включить. Переделывать было лень, добавил еще одну константу. Ты стоишь перед таким же выбором ) А вот зачем так константу получать я не пойму. ОбщийМодуль.ПолучитьКонстанту("Дистрибьютор1") |
|||
34
DailyLookingOnA Sunse
20.04.17
✎
16:53
|
"Документ" может быть полем составного типа.
Отсюда и проверка на булево. |
|||
35
Aleksey
20.04.17
✎
16:53
|
(33) ну я в 7-ке также получаю значение константы. Не через Константа.МояКонстанта, а глКонстанта("МояКонстанта") - ибо кэш. Т.е. при первом обращении кэширую значения, а дальше уже из кэша выбираю
|
|||
36
Timon1405
20.04.17
✎
16:55
|
(33) этот ОбщийМодуль может быть привелигированным
|
|||
37
Вафель
20.04.17
✎
16:55
|
(33) вполне возможно, что там вообще не константа
|
|||
38
Вафель
20.04.17
✎
16:56
|
а чтонибуль
Контрагенты.НайтиПоКоду() |
|||
39
agarych
20.04.17
✎
16:57
|
(38) Кстати да, ТС покажи что там в этой функции.
|
|||
40
Vladal
20.04.17
✎
16:58
|
(39) Нельзя.
(35) Правильный ход. |
|||
41
Smallrat
20.04.17
✎
16:59
|
(24) этапять!
|
|||
42
Вафель
20.04.17
✎
17:03
|
(35) а в 8 наоборот отказались от этого
|
|||
43
Vladal
20.04.17
✎
17:17
|
(42) В типовых кешируется. глЗначениеПеременной
|
|||
44
HEKPOH
20.04.17
✎
17:28
|
(34) + и у одного из видов есть реквизит "Проведен" составного типа. Да? :)
|
|||
45
NorthWind
20.04.17
✎
17:31
|
(0) тю... ну мож человек не знал про то что можно список в параметр передать
|
|||
46
undertaker
20.04.17
✎
17:34
|
(43) в глЗначениеПеременной не кешируются константы да и в новых типовых этого уже нет
|
|||
47
VladZ
20.04.17
✎
17:46
|
(0) Есть несколько способов решения задачи: 1. Быстрый. Смотришь, как было сделано раньше делаешь также. Плюсы - очень быстро. Минусы: масштабируемость никакущая. При большой объеме доработок (при данном подходе решения) хаос в системе растет как снежный ком. И поддерживать в итоге этот уровень хаоса становится очень сложно. 2. Правильный. Требует временных затрат. Нужно сначала хорошенько подумать над реализацией. Разработать максимально эффективное решение для текущей ситуации. Минусы: долго. Плюсы: концептуальный подход более эффективен. Еще один минус этого подхода - плохо работает в "динамично развивающийся компаниях". Пока придумаешь реализацию механизма, пока разработаешь и внедришь - концепция сменилась. И что в итоге делать? Что-что... Как говорил известный персонаж: "Пилите, Шура! Пилите! Они золотые!".
|
|||
48
VladZ
20.04.17
✎
17:48
|
+47 Применительно к сабжу: скорей всего было сделано в варианте "сделай мне быстро".
|
|||
49
kiruha
20.04.17
✎
17:53
|
(0)
Было 2 дистрибьютора Стало 3. Ну может быть лет через 10 будет 4. Этих дистрибьютеров менеджеры знают наизусть Под каждого отдельные решения. Вот не зная чужого огорода - чего туда лезть ? И что такого принципиально(!) поменяется если будет справочник ? |
|||
50
undertaker
20.04.17
✎
17:53
|
а мне вот интересна конструкция в последних типовых типа
Выбрать Док.Ссылка Из Документы КАК Док ВНУТРЕННЕЕ СОЕДИНЕНИЕ Константы КАК Константы ИСТИНА при этом Константы никак не используются. Возможно это издержки копипасты/универсальности |
|||
51
vi0
20.04.17
✎
17:57
|
(8) не очень умно делать так из-за ошибки в одной из версий платформы
|
|||
52
kiruha
20.04.17
✎
18:05
|
Кстати есть франчи весь бизнес которых на одном клиенте.
И у них возможно есть константа - СуперГлавныйКлиент Можно к ним претензии - мол по хорошему надо справочник , клиентов нужно много и т.д учить их уму разуму как бизнес делать |
|||
53
breezee
20.04.17
✎
18:15
|
(0)
-Сделай нам задачу, срочную, надо вчера. Через 5 минут закрытие месяца -Я могу сейчас костыль налепить, а потом вернуться и доделать, если очень надо -А еще у нас себестоимость по 2 контрагентам считаться не должна, через 20 минут надеемся на решение Вангую, что как-то так все и было) |
|||
54
Aleksey
20.04.17
✎
18:29
|
(49) внутренний перфекционист будет спать спокойно
|
|||
55
lodger
20.04.17
✎
18:41
|
эта ж Легаси код. заезженная тема. особенно грустно когда это наследие передается уже несколько поколений и уже напоминает не костыльное решение, а просто гору костылей вдетых друг в друга в хаотичном порядке :D
|
|||
56
Asmody
20.04.17
✎
21:17
|
Запрос к документам с проверкой? "Проведен" – это боль!
|
|||
57
Asmody
20.04.17
✎
21:19
|
(56)+ вопросительный знак – издержки юникода
|
|||
58
Волшебник
модератор
20.04.17
✎
21:19
|
(56) Присоединяюсь к страданиям
|
|||
59
Asmody
20.04.17
✎
21:22
|
Сам-знаешь-кто, если ты это читаешь: сейчас самое время переделать на регистры всё, что было страшновато трогать!
|
|||
62
Волшебник
модератор
20.04.17
✎
22:00
|
Считаю намеренную публикацию различного быдлокода непродуктивной и отнимающей время профессионалов. Как-нибудь включу в правила этот пункт.
|
|||
63
Волшебник
модератор
20.04.17
✎
22:05
|
Ветка притоплена. Можете высказать свои пожелания напоследок, завтра прочитаю.
|
|||
64
Asmody
21.04.17
✎
00:31
|
А давайте сделаем ветку с примерами красивого или необычного кода на 1С!
|
|||
65
Asmody
21.04.17
✎
00:34
|
Сразу говоримся, что код длиннее 20 строк, не может быть красивым.
|
|||
66
VladZ
21.04.17
✎
06:37
|
(64) Понятие красоты у всех разное. "Кому-то и кобыла - невеста" (с)
|
|||
67
FIXXXL
21.04.17
✎
08:40
|
(65) вызов 20-ти вложенных функций друг за другом считается? :)
|
|||
68
Asmody
21.04.17
✎
10:13
|
(67) Это называется ЛИСП
|
|||
69
Torquader
23.04.17
✎
01:09
|
(65) А кто мешает вообще весь код в одну строку записать ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |