|
Занялся улучшением качества кода. Есть интересные вопросы... | ☑ | ||
---|---|---|---|---|
0
Genius
17.04.13
✎
15:43
|
Собственно, встретил несколько "некрасивых" приёмов в кодировании. Поэтому возникла идея в данной теме коллективно разобрать некоторые моменты, которые могут положительно отразиться на качестве программоного кода.
Вот к примеру первый момент: есть два способа программного открытия форм оъектов: 1. Форма = Обработки.ДополнительнаяИнформация.ПолучитьФорму("ФормаРабочийСтол"); Форма.Открыть(); 2. ОткрытьФорму("Обработка.ДополнительнаяИнформация.Форма.ФормаРабочийСтол"); Есть ли между ними принципиальная разница? |
|||
1
butterbean
17.04.13
✎
15:45
|
1-й вариант не работает в тонком клиенте
|
|||
2
jsmith82
17.04.13
✎
15:45
|
ОткрытьФорму - клиентская процедура
В первом случае можно редактировать реквизиты формы Думаю, с развитием УФ первый пункт уже не кошерен |
|||
3
jsmith82
17.04.13
✎
15:46
|
Потому что логичней через параметры передать нужную инфу
|
|||
4
shuhard
17.04.13
✎
15:46
|
(0)[Поэтому возникла идея в данной теме коллективно разобрать некоторые моменты,]
получишь срач |
|||
5
1Сергей
17.04.13
✎
15:46
|
(2)+1
До открытия можно немного поработать с формой |
|||
6
jsmith82
17.04.13
✎
15:48
|
Давай второй момент
|
|||
7
H A D G E H O G s
17.04.13
✎
15:50
|
(4) Верный ответ в (4)!
|
|||
8
Defender aka LINN
17.04.13
✎
15:50
|
(0) Эти варианты откроют разные формы, есличе
|
|||
9
1Сергей
17.04.13
✎
15:51
|
(8) ы?
|
|||
10
Конфигуратор1с
17.04.13
✎
15:51
|
(0) по первому случаю на инфосамизнаете где была статья что в некоторых случаях если не сделать форма = 0; переменная форма будет оставаться в памяти после выхода из процедуры
|
|||
11
HeroShima
17.04.13
✎
15:51
|
(4) Без мата такое обсуждать невозможно!
|
|||
14
Defender aka LINN
17.04.13
✎
15:53
|
(9) Ыгы.
(12) Да, это еще более срачеблагодатная тема |
|||
16
fisher
17.04.13
✎
15:54
|
В управляемых формах есть метод глобального контекста ПолучитьФорму(). Юзаю, когда перед открытием надо с формой сделать что-то эдакое. А в противном случае зачем усложнять себе жизнь, если достаточно заюзать ОткрытьФорму()?
|
|||
17
БалбесВ1с
17.04.13
✎
15:56
|
(0) "программоного кода" - опечатка по Фрейду?
Среднее между программным и гомнокодом? |
|||
18
jsmith82
17.04.13
✎
15:57
|
возможность сделать что-то разными способами это всегда муки выбора, что приводит к увеличению сроков проектов и является причиной ссор в инетах
|
|||
19
Genius
17.04.13
✎
16:25
|
Вообще, я стараюсь пользоваться 2-м вариантом, но в типовых решениях (не управляемые формы) 1С использует 1-й, стандартный замер производительности показывает, что 1-й работает быстрее, хоть и не на много.
|
|||
20
Genius
17.04.13
✎
16:26
|
(17) и (4) вам отдельное спасибо, очень приятно с вами общаться
|
|||
21
mistеr
17.04.13
✎
16:28
|
(0) В аервом случае нет контроля при написании.
|
|||
22
mistеr
17.04.13
✎
16:28
|
(21) В первом
|
|||
23
Genius
17.04.13
✎
16:30
|
это да, согласен, вероятность ошибки больше
|
|||
24
jsmith82
17.04.13
✎
16:31
|
(23) не стоит овчина такой выделки
|
|||
25
jsmith82
17.04.13
✎
16:32
|
Короче, ОткрытьФорму это макрос
|
|||
26
Genius
17.04.13
✎
16:32
|
а вот таким фрагментом удалось больше чем на 10% увеличить быстродействие операции "Свернуть движения по регистрам" при расчете себестоимости выпуска :
Если ОптРежим Тогда ЗаполнитьЗначенияСвойств(НоваяПроводка,Проводка,ИзмеренияСтр + ", " + РесурсыСтр); Иначе Для Каждого Поле Из СтруктПоля Цикл НоваяПроводка[Поле.Ключ] = Проводка[Поле.Ключ]; КонецЦикла; КонецЕсли; |
|||
27
В тылу врага
17.04.13
✎
16:32
|
первый вариант красивше выглядит, зря переделали тонкоклиентщики
|
|||
28
Genius
17.04.13
✎
16:33
|
т.е. использование структуры тупо заменяем функцией "ЗаполнитьЗначениеСвойств"
|
|||
29
Genius
17.04.13
✎
16:34
|
(26) - Общий модуль "ПроцедурыРасчетаСебестоимостиВыпуска", Процедура "СвернутьТаблицуДвиженийРегистраБухгалтерии"
|
|||
30
Defender aka LINN
17.04.13
✎
16:37
|
Defender aka LINN закрыл лицо рукой и тихо ушел
|
|||
31
samozvanec
17.04.13
✎
16:48
|
да уж... я ожидал увидеть нечто более хитрое, чем открытие форм в УП и процедуру ЗаполнитьЗначенияСвойств()
|
|||
32
samozvanec
17.04.13
✎
16:52
|
меня вот бесит когда код не форматируют, пишут все нижним регистром, закомменченые куски не удаляют. улучшите свой код, не делайте такой хрени. это может спасти вас от икоты
|
|||
33
samozvanec
17.04.13
✎
16:53
|
объекты в дереве конфы если не отсортированы, тоже бесит
|
|||
34
jsmith82
17.04.13
✎
16:54
|
комменты вообще зло
|
|||
35
jsmith82
17.04.13
✎
16:55
|
реквизиты объекта имхо должны сами всегда автосортироваться по наименованию
|
|||
36
Defender aka LINN
17.04.13
✎
16:58
|
(35) Угу. И измерения в регистре, да?
|
|||
37
H A D G E H O G s
17.04.13
✎
17:00
|
(26) Лови и не благодари
v8: Преобразование текста модуля в одну строку Только ветку почитай полностью и вдумчиво, я понимаю, это сложно, но осиль дорогу, ползущий. |
|||
38
mistеr
17.04.13
✎
17:04
|
(34) Ага, и отступы тоже, и СП выпилить из платформы. Только хардкор!
|
|||
39
ildary
17.04.13
✎
17:08
|
(33) зачем сортировать объекты, если при добавлении в типовую своих объектов - удобно их видеть в одном месте?
|
|||
40
Desna
17.04.13
✎
17:09
|
(33) наооборот, когда самоделки в конце.
|
|||
41
Desna
17.04.13
✎
17:10
|
+(39) и найти их быстрей
|
|||
42
Конфигуратор1с
17.04.13
✎
17:12
|
(39) +100500
|
|||
43
H A D G E H O G s
17.04.13
✎
17:13
|
(36) Боюсь, автор тебя даже не понял.
|
|||
44
fisher
17.04.13
✎
17:15
|
(39) Делаешь свои объекты с префиксом и хоть обсортируйся.
|
|||
45
Genius
17.04.13
✎
17:16
|
Сколько людей - столько и мнений, но реально, когда после некоторых уменьцев в каждом цикле по запросу и модифицированность формы в ИСТИНУ при открытии - ещё и не таким займешься.
|
|||
46
samozvanec
17.04.13
✎
17:16
|
(39) (40) у меня самоделок больше чем типовых объектов. что-то найти там сейчас просто не реально.
|
|||
47
samozvanec
17.04.13
✎
17:17
|
(44) дело говоришь
|
|||
48
Genius
17.04.13
✎
17:18
|
(39) (40) Добавление своего префикса и сортировка - всё находится. Свой префикс считаю обязательным
|
|||
49
Конфигуратор1с
17.04.13
✎
17:18
|
(45) " когда после некоторых уменьцев в каждом цикле по запросу" это ты о типовых?
|
|||
50
Desna
17.04.13
✎
17:20
|
(44) когда их много и с префиксом и со своими подсистемами, а которому ходишь раз в году можно и в конце
|
|||
51
samozvanec
17.04.13
✎
17:21
|
(49) типовые вообще отдельная тема) тиражники хреновы. один копипастит, другой заменяет.
сначала смотришь на типовые, и понимаешь - вот так надо писать. но приходит время, когда смотришь на типовые, и понимаешь - вот так писать не надо) |
|||
52
Конфигуратор1с
17.04.13
✎
17:23
|
буквально час назад залез в типовую печатную форму начисления отпуска и напоролся(
Пока ВыборкаРаботники.Следующий() Цикл Запрос = Новый запрос; Запрос.УстановитьПараметр("Праздник", Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник); Запрос.УстановитьПараметр("ДатаНачала", ВыборкаРаботники.ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ВыборкаРаботники.ДатаОкончания); Запрос.Текст = " |ВЫБРАТЬ | КОЛИЧЕСТВО(ДатаКалендаря) КАК КоличествоПраздников |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь |ГДЕ | ВидДня = &Праздник И (ДатаКалендаря <&ДатаОкончания) И (ДатаКалендаря > &ДатаНачала)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл КоличествоПраздников = Выборка.КоличествоПраздников; КонецЦикла; |
|||
53
Конфигуратор1с
17.04.13
✎
17:26
|
(52) у самого гофнокода выше крыши - стыдно впспомнить. Но откуда мне, простому быдлокодеру значть как правильно писать если в типовых такое.
|
|||
54
samozvanec
17.04.13
✎
17:26
|
(52) ыыы. ну такое да, тоже бывает
|
|||
55
Genius
17.04.13
✎
17:28
|
(49) не совсем, но и на их "шедевры" натыкался. У нас много сторонних подрядчиков - программистов, приходится всё перепроверять
|
|||
56
samozvanec
17.04.13
✎
17:29
|
(53) мне разок снилось, что меня поймали старые клиенты и собираются убить за овнокод
|
|||
57
Конфигуратор1с
17.04.13
✎
17:30
|
(56) думаю такое снится каждому честному 1снику)
|
|||
58
ptiz
17.04.13
✎
17:31
|
(52) А что страшного в этом запросе?
|
|||
59
Desna
17.04.13
✎
17:31
|
(56) клиенты не авнокод убивают, а за косяки или фичи.
|
|||
60
Desna
17.04.13
✎
17:32
|
а за авнокод убивают гламурные кисы
|
|||
61
samozvanec
17.04.13
✎
17:33
|
(59) там этого навалом. как вспоминаю - так краснею
|
|||
62
mistеr
17.04.13
✎
17:34
|
(58) Выкинули первый и последний день.
|
|||
63
Конфигуратор1с
17.04.13
✎
17:35
|
(58) во-первых он в цикле
|
|||
64
Конфигуратор1с
17.04.13
✎
17:35
|
(63) ВыборкаРаботники это выборка из запроса Запрос.Текст =
"ВЫБРАТЬ | ВЫБОР КОГДА (ФИОФизЛиц.Фамилия) ЕСТЬ NULL ТОГДА Отпуска.Ссылка.Сотрудник.ФизЛицо.Наименование ИНАЧЕ ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество КОНЕЦ КАК Работник, | ДанныеОРаботникахОрганизации.ПодразделениеОрганизации.Наименование КАК Подразделение, | ДанныеОРаботникахОрганизации.Должность.Наименование КАК Должность, | ДанныеОРаботникахОрганизации.Должность.Категория КАК Категория, | ДанныеОРаботникахОрганизации.Сотрудник.Код КАК ТабельныйНомер, | Отпуска.ВидРасчета, | Отпуска.ДатаНачала КАК ДатаНачала, | Отпуска.ДатаОкончания КАК ДатаОкончания |ИЗ | Документ.НачислениеОтпускаРаботникамОрганизаций.Отпуска КАК Отпуска | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаДокумента, ФизЛицо = (&Сотрудник).ФизЛицо) КАК ФИОФизЛиц | ПО Отпуска.Ссылка.Сотрудник.ФизЛицо = ФИОФизЛиц.ФизЛицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаДокумента, Сотрудник = &Сотрудник И Организация = &Организация) КАК ДанныеОРаботникахОрганизации | ПО Отпуска.Ссылка.Сотрудник = ДанныеОРаботникахОрганизации.Сотрудник | |ГДЕ | Отпуска.Ссылка = &ТекущийДокумент"; |
|||
65
ptiz
17.04.13
✎
17:35
|
(62) Отпуск не может начинаться или заканчиваться в праздник, так что всё нормально :)
|
|||
66
ptiz
17.04.13
✎
17:36
|
(63) Не смертельно, зато читабельно.
|
|||
67
Конфигуратор1с
17.04.13
✎
17:37
|
(66) только методисты 1с так не считают
|
|||
68
DexterMorgan
17.04.13
✎
17:41
|
(66) Даже в проф разработке написано, что в этом случае как минимум нужно Запрос.Текст = ".." вынести из цикла
|
|||
69
stix2010
17.04.13
✎
17:51
|
меня больше убивают граждане
с кодом: ТекстЗапроса="Выбрать xxxx "; Если А Тогда ТекстЗапроса=ТекстЗапроса+" Где YYYYY"; КонецЕсли; киянкой бы по рукам. И в УПП 1.2 этого дохрена |
|||
70
DexterMorgan
17.04.13
✎
17:52
|
(69) Иногда без динамически формируемого текста не обойтись
|
|||
71
ildary
17.04.13
✎
17:57
|
(69) можно для новичка объяснить, чем это плохо?
|
|||
72
Genius
17.04.13
✎
17:58
|
Я сам иногда пользуюсь следущим :
ТекстЗапроса = "Выбрать .... Из ... Где %Условие1% %Условие1% "; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,%Условие1%,?(Услосие1,<Условие1>,"")); ТекстЗапроса = СтрЗаменить(ТекстЗапроса,%Условие2%,?(Услосие2,<Условие2>,"")); Вобщем, нечто подобное. Как вы на это смотрите? вообще удобно и читаемо. |
|||
73
stix2010
17.04.13
✎
17:59
|
(70) очень редко, при подмене источника данных
Где Выбор Когда &А=Неопределено Тогда Истина Иначе YYYY=&A Конец (70) чтобы запрос открыть в конфе: |
|||
74
Фауст
17.04.13
✎
18:04
|
(72)Всегда так пишу. И читать можно нормально и конструктором разобрать.
|
|||
75
stix2010
17.04.13
✎
18:07
|
(72) читаемость запроса не улучшится
вот пример тру запроса с параметром который может быть или не быть: ГДЕ ВЫБОР КОГДА &Участок = ЗНАЧЕНИЕ(Справочник.Т_Участки.ПустаяСсылка) ИЛИ &Участок = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ Поступление.Ссылка.Участок = &Участок КОНЕЦ |
|||
76
MaxisUssr
17.04.13
✎
18:10
|
(75)
+ 100. Что сложного в этом, в чем минусы? А если запрос на 2000+ строк и такие вставки (особенно "хороши" вставки посередине запроса) - то вообще ахтунг |
|||
77
mistеr
17.04.13
✎
18:11
|
(74) Конструктор понимает %%?
|
|||
78
Desna
17.04.13
✎
18:14
|
(72) шаблон проверь
|
|||
79
Genius
17.04.13
✎
18:20
|
(77) я использую в относительно не больших запросах. И "%%" - я использую для себя, можно любые другие символы, которые конструктор понимает. В принципе я этот способ не сам придумал - увидел и очень быстро к нему привык. Мне например такие конструкции , особенно если текст отворматирован, предельно понятны.
|
|||
80
Genius
17.04.13
✎
18:21
|
*отформатирован
|
|||
81
acsent
17.04.13
✎
18:22
|
(0) для начала лучше проверь код на соответствие стандартам 1с
|
|||
82
acsent
17.04.13
✎
18:22
|
(72), (75) за такое нужно убивать на месте, ведь есть же построитель
|
|||
83
Genius
17.04.13
✎
18:22
|
(81) да, согласен, тоже нужно..
|
|||
84
acsent
17.04.13
✎
18:23
|
(83) не тоже нужно, а нужно с этого начинать
|
|||
85
jsmith82
17.04.13
✎
18:30
|
(36)(43) имхо для этого можно сделать отдельную таблицу приоритетов, предпочитаю, когда у каждой сущности своя функция
|
|||
86
jsmith82
17.04.13
✎
18:31
|
мне проще видеть список реквизитов в алфавитном порядке, это естественно
от порядка реквизитов не должно что-то зависеть приоритет индексирования это отдельная сущность, она не должна быть связана с порядком реквизитов |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |