|
Бесконечный цикл, зачем? | ☑ | ||
---|---|---|---|---|
0
JUST4LOL
09.03.21
✎
05:39
|
Где в 1С может использоваться бесконечный цикл и для чего? Можно ли обойтись без него?
|
|||
1
ДенисЧ
09.03.21
✎
05:42
|
Например
а) ты хочешь, чтобы тебя признали профнепригодным. ... я) "я так вижу, ибо я художник" |
|||
2
craxx
09.03.21
✎
05:53
|
(0) когда ты заведомо не знаешь когда он должен закончится. Например.
И по условию из него вываливаешься. |
|||
3
Irbis
09.03.21
✎
06:02
|
(2)Это обычный цикл с пост или пред условием. Бесконечный — когда условие заведомо невыполнимо.
|
|||
4
vi0
09.03.21
✎
06:04
|
(0) ну если тебе нужно чтобы он выполнялся "бесконечно" тогда не обойтись
но видимо у тебя другой случай |
|||
5
Обработка
09.03.21
✎
06:05
|
Пока 1=1 Цикл
.... .... Если Условие=1 Тогда Прервать КонецЕсли; .... .... КонецЦикла |
|||
6
Irbis
09.03.21
✎
06:12
|
(5) А что мешает:
Пока Не (Условие=1) Цикл? |
|||
7
ДенисЧ
09.03.21
✎
06:13
|
(6) А условие у тебя вычисляется в цикле. По неизвестным правилам (например, в зависимости от ввода пользователя)
|
|||
8
AneJIbcuH
09.03.21
✎
06:17
|
Ещё всё пишут, что цикл в одну строку быстрее работает. Сам не проверял. Миф?
|
|||
9
craxx
09.03.21
✎
06:21
|
(6) условие может быть а) вложенным; б) вычисляться в этом цикле
|
|||
10
Sserj
09.03.21
✎
06:21
|
(8) Миф. Замеряют в отладчике, а он тратит время на переход и компиляцию к следующей строке.
|
|||
11
vi0
09.03.21
✎
06:21
|
(8) не миф, но на тех задачах где применяется 1с вряд ли это даст полезный прирост
|
|||
12
vi0
09.03.21
✎
06:23
|
(10) можно без отладчика замерить
|
|||
13
Обработка
09.03.21
✎
06:28
|
(6) Условия бывают сложные составные громоздкие. Могут быть их несколько.
Тут важно читабельность. Когда пишут что пока 1=1 цикл сразу понятно что выход из цикла по условию и это условие объязательно выполнимая.. |
|||
14
Галахад
гуру
09.03.21
✎
06:31
|
(13) Кстати, а почему:
Пока 1=1 Цикл а не Порка Истина Цикл например? |
|||
15
Почему 1С
09.03.21
✎
06:37
|
(14) Я предпочитаю вариант с Истина
|
|||
16
Провинциальный 1сник
09.03.21
✎
06:38
|
(14) В семерке ИСТИНЫ не было
|
|||
17
Галахад
гуру
09.03.21
✎
06:46
|
(15) (16) Понятно.
|
|||
18
Irbis
09.03.21
✎
06:54
|
(7) Думать, выносить... короче стремиться к классике жанра. За вопросы в цикле (ввод пользователя) металлический ящик с гвоздями. Хотя я может и чего-то не догоняю, но мне ни разу такие подперевыверты не требовались.
|
|||
19
spectre1978
09.03.21
✎
06:55
|
(0) нужен редко, считается не очень хорошим стилем программирования, также как и goto, хотя в меньшей степени. Практически всегда может быть заменен циклом с пред- или постусловием.
|
|||
20
Провинциальный 1сник
09.03.21
✎
06:57
|
(19) Ну если так рассуждать, то и Продолжить и Прервать - тоже зло, так как нарушает принципы структурного программирования. Тем не менее, мы не математики, а прикладные программисты. И если код с нарушениями получается понятнее и эффективнее - то будем писать с нарушениями.
|
|||
21
ДенисЧ
09.03.21
✎
07:01
|
(18) А если это вопрос не пользователю, а удалённой системе? Можно гвозди покороче и не такие ржавые?
|
|||
22
Irbis
09.03.21
✎
07:13
|
(21) Тогда без гвоздей. Сначала нужно спросить всё что требуется, потом уже всякие циклы запускать, а то просят сами чего хотят не знают.
|
|||
23
Irbis
09.03.21
✎
07:14
|
(20) И Продолжить и Прервать — это всё безусловные переходы. Легко реализуются при помощи гоуту, но чтобы не дразнить адептов слегка маскируют такую конструкцию.
|
|||
24
Почему 1С
09.03.21
✎
07:27
|
(19) Кем или где считается что бесконечные циклы не очень хороший стиль программирования? Я вот про такое не знаю, хочу почитать авторитетный источник, и впредь знать
|
|||
25
ASU_Diamond
09.03.21
✎
07:32
|
(23) Продолжить и Прервать понятно куда выходят (и без них можно обойтись, используют для читабельности кода), а гоуту надо искать куда выходит и анализировать какой код не исполняется
|
|||
26
Вася Теркин
09.03.21
✎
08:00
|
(0) Бесконечные циклы в 1С есть, они называются Обработками ожидания.
|
|||
27
dmpl
09.03.21
✎
08:05
|
(1) Так-то бесконечные циклы используются в типовых от 1С, поэтому а) - не вариант.
|
|||
28
dmpl
09.03.21
✎
08:06
|
(2) Главное не предусмотреть все условия, даже невозможные, либо добавить дополнительное условие, которое срабатывает, когда произошло зацикливание.
|
|||
29
dmpl
09.03.21
✎
08:08
|
(6) Условий может быть несколько, а при прерывании цикла могут требоваться дополнительные действия, которые зависят от причины прерывания цикла.
(8) Это верно для чистых интерпретаторов (типа BASIC на ZX-Spectrum). У 1С исполняется байт-код, там без разницы сколько строк. |
|||
30
Волшебник
09.03.21
✎
08:08
|
Во время бесконечного (или длительного) цикла надо возвращать управление платформе/ОС с помощью метода ОбработкаПрерыванияПользователя().
Бесконечный цикл ПОКА ИСТИНА ЦИКЛ говорит о том, что программист ещё не определился с условием выхода из цикла. Внутри цикла должно быть "Прервать" по какому-то условию. |
|||
31
dmpl
09.03.21
✎
08:10
|
(22) Сделай разузлование неизвестной вложенности одним обращением к БД.
|
|||
32
ДенисЧ
09.03.21
✎
08:11
|
(27) А кто сказал, что в 1с все пейсатели профпригодны?
|
|||
33
Ненавижу 1С
гуру
09.03.21
✎
08:11
|
(30) если цикл на стороне сервера, то куда вставлять ОбработкаПрерыванияПользователя?
|
|||
34
dmpl
09.03.21
✎
08:12
|
(32) 1С приняла на работу, код прошел проверку, раз оказался в релизе.
|
|||
35
Волшебник
09.03.21
✎
08:14
|
(33) У нас был случай, когда на стороне сервера была бесконечная рекурсия. Такие утопления приводят к вылету с дампом без всяких сообщений об ошибках. При этом отваливался рабочий процесс и около 50 толстых клиентов отваливались, а остальные продолжали работать. Найти ошибку было очень сложно, потому что рекурсия была из двух процедур, вызывающих друг друга.
|
|||
36
ДенисЧ
09.03.21
✎
08:15
|
(34) Наивный...
|
|||
37
NorthWind
09.03.21
✎
08:21
|
(29)
ЦиклРаботает = Истина; Пока ЦиклРаботает Цикл ... ЦиклРаботает = Условие1 И Условие2 И Условие3 И ... И Условие10; // Опционально Если Не ЦиклРаботает Тогда Продолжить; КонецЕсли; ... КонецЦикла |
|||
38
Волшебник
09.03.21
✎
08:24
|
(37) Вместо "Продолжить" лучше "Прервать"
|
|||
39
DGorgoN
09.03.21
✎
08:27
|
Вопрос: Где в типовых бесконечный цикл? Я не встречал..
Тыкните. А вообще он много где используется и это не всегда признак плохого тона |
|||
40
Волшебник
09.03.21
✎
08:28
|
НадоПродолжать = Истина;
Сч = 0; ПределСчетчика = 100000; //... Пока НадоПродолжать Цикл //... //штатное условие продолжения цикла НадоПродолжать = Условие1 И Условие2 И Условие3 И ... И Условие10; //... //страховка Сч = Сч+1; Если Сч > ПределСчетчика Тогда Прервать; КонецЕсли; //... КонецЦикла |
|||
41
Krendel
09.03.21
✎
08:29
|
Первые упп уходили на бесконечный цикл расчёта себеса, при встречной выпуске, кстати так и появился одноимённый регистр
|
|||
42
NorthWind
09.03.21
✎
08:30
|
(39) Смотрите (37), (40). Переделывается на предусловие на раз, и уже формально никакого "бесконечного" нет.
|
|||
43
Волшебник
09.03.21
✎
08:32
|
(42) Условие на "ПределСчетчика" не должно срабатывать. Это аварийная страховка. Поэтому будет методически неправильно указывать его в качестве предусловия.
|
|||
44
Irbis
09.03.21
✎
08:32
|
Существенный недостаток бесконечного цикла — изначально заложенное зацикливание, то есть если внутри тела цикла необходимо гарантировать прерывание такого цикла. В рекурсии обычно с этим борются закладывая глубину вызовов в параметры, обоснованно предполагая, что вложенность заведомо не может превышать какого-то значения. С бесконечным циклом примерно тоже самое, нужно обеспечить принудительный выход по какому-либо условию.
Вот и вся неказистость конструкции, нужно просто правильно её готовить, потренировавшись на кошках. |
|||
45
Волшебник
09.03.21
✎
08:33
|
(44) Теперь предлагаю обсудить запросы внутри бесконечного цикла.
|
|||
46
Волшебник
09.03.21
✎
08:34
|
Внутри бесконечного цикла часто нужна пауза. Вот разработка, идея которой возникла из обеденной шутки
http://catalog.mista.ru/public/706204/ |
|||
47
Irbis
09.03.21
✎
08:34
|
(45) Я столько не выпью, а если и выпью, то работать не смогу. Хотя извращение зачетное. +1
|
|||
48
Кирпич
09.03.21
✎
08:40
|
Долбаные плоскоземельщики. То им ООП в 1с подавай, то им goto не нравится. Теперь до цикла докопались.
|
|||
49
Волшебник
09.03.21
✎
08:45
|
(48) в 1С есть ООП
|
|||
50
Кирпич
09.03.21
✎
08:46
|
(49) Слава богу
|
|||
51
TormozIT
гуру
09.03.21
✎
08:47
|
(29) > без разницы сколько строк
Ты ошибаешься. https://partners.v8.1c.ru/forum/t/1134075/m/1708722 Если туда нет доступа, то тут основное продублировано https://forum.infostart.ru/forum34/topic33723/?PAGEN_1=5#message1962014 |
|||
52
Кирпич
09.03.21
✎
08:58
|
(51) подтверждаю. чем меньше строк, тем быстрее. недавно проверяли.
|
|||
53
TormozIT
гуру
09.03.21
✎
09:03
|
Однострочную оптимизацию я применяю только там, где это дает существенный прирост на общем фоне. Таких мест в ИР например около 20.
|
|||
54
ДенисЧ
09.03.21
✎
09:07
|
(51) (52) (53) И на сколько тысячных долей процента это даёт прирост?
|
|||
55
Кирпич
09.03.21
✎
09:10
|
(54) Чем больше итераций тем больше процентов
|
|||
56
Кирпич
09.03.21
✎
09:10
|
но один хрен несущественно
|
|||
57
Кирпич
09.03.21
✎
09:13
|
вот например
8 сек
6 сек
|
|||
58
Bigbro
09.03.21
✎
09:15
|
всякие проверки-прерывания на автопилоте пишу в одну строку, типа:
Если й=0 Тогда Продолжить КонецЕсли; |
|||
59
novichok79
09.03.21
✎
09:20
|
на самом деле в 1С есть ООП,
есть классы "справочники", "документы" - базовые классы. а их потомков мы уже добавляем в конфигурацию. если говорить как Java'ист, 1С = hibernate + javafx. почему бы просто не добавить в дерево метаданных базовый класс "классы". пусть программист добавляет туда какую хочет логику. а так - добавьте в структуру возможность вызова процедур и функций изнутри, будет вам обычный класс. |
|||
60
Волшебник
09.03.21
✎
09:21
|
(59) Есть же Обработки
|
|||
61
Волшебник
09.03.21
✎
09:22
|
От наследования уже пора отказываться. Теперь в тренде компоновка и реализация интерфейсов.
|
|||
62
Dzenn
гуру
09.03.21
✎
09:23
|
Например, при пакетной обработке справочника:
Пока Истина Цикл КоличествоОбработать = 1000; КоличествоОбработанных = ОбработатьНоменклатуру(КоличествоОбработать); Если КоличествоОбработанных = 0 Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
63
Волшебник
09.03.21
✎
09:27
|
(62) Типичный пример опасного цикла, который может зависнуть. Функция ОбработатьНоменклатуру может брать в обработку один и тот же элемент многократно.
|
|||
64
Галахад
гуру
09.03.21
✎
09:27
|
(58) Неужели условие выполняется большое количество раз?
|
|||
65
Волшебник
09.03.21
✎
09:28
|
(62) Сюда можно добавить предварительный подсчёт максимального количества итераций, например, ВсегоЭлементов / РазмерПорции + 1
|
|||
66
Dzenn
гуру
09.03.21
✎
09:29
|
(63) Не согласен, зависит от реализации. При таком подходе, при обработке элемента, вне зависимости от результата, нужно делать пометку регистр сведений, что данный элемент обработан.
|
|||
67
Dzenn
гуру
09.03.21
✎
09:33
|
(65) ВсегоЭлементов / РазмерПорции + 1 - это относительный показатель, а выборка "ПЕРВЫЕ 1000", если это точно необработанные - абсолютный показатель. Ну и "ОбработкаПрерыванияПользователя" можно в цикл добавить, если он на клиенте.
|
|||
68
dmpl
09.03.21
✎
09:59
|
(39) Ну, например, расчет пооперационного расписания, разузлование, регламентированные отчеты. Сделайте поиск по фразе "Пока Истина". В ERP порядка 800 таких конструкций.
(66) У 1С при таком подходе получается зацикливание, если те предположения, из которых они исходили, не выполняются. |
|||
69
Fedor-1971
09.03.21
✎
10:03
|
(59) Адепты ООП, по какой-то причине, забывают, что 1С хранит Объектную модель данных в Реляционной БД
и преобразование БД-1С и обратно выполняется автоматически И как обеспечить эту радость для произвольного класса выдуманного программером? То же дать возможность самому описывать таблицы хранения? Тут уже надо иметь уверенность в высокой квалификации исполнителя, а её то и нет |
|||
70
ДенисЧ
09.03.21
✎
10:10
|
(69) Hibernate же эту проблему решил? И Alchemy тоже
Значит, решение существует (с) математик в отеле при пожаре. |
|||
71
Dzenn
гуру
09.03.21
✎
10:11
|
(68) В любом языке, а не только в 1С, бесконечный цикл зацикливается, если предположения по его выходу не выполняются ;-)
|
|||
72
Irbis
09.03.21
✎
10:15
|
(71) И это и есть основное зло такой конструкции. А в умелых руках и хер балалайка
|
|||
73
Волшебник
09.03.21
✎
10:17
|
(70) Есть обработки и регистры сведений. Не любите нам мозги.
|
|||
74
ДенисЧ
09.03.21
✎
10:19
|
(73) Как данные обработки сохранить в базе данных? )))
|
|||
75
dmpl
09.03.21
✎
10:22
|
(74) Через хранилище значения.
|
|||
76
Fedor-1971
09.03.21
✎
10:26
|
75+ Это если потом с ними не нужно активно работать
Либо положить в регистр сведений, либо запихнуть в Ссылочные объекты (2 или более связанных по некой логике обработки) |
|||
77
Исновая
09.03.21
✎
10:26
|
(0) если рабдата меньше дата Тогда не оплачено
|
|||
78
Волшебник
09.03.21
✎
10:32
|
(74) с помощью менеджера записи
|
|||
79
fisher
09.03.21
✎
10:36
|
(0) Используется обычно, когда условие выхода проблематично анализировать в начале/конце итерации. Можно заменить на флаги, но это такой же трейдоф как и использование/неиспользование гоуту для выхода из глубокой вложенности.
|
|||
80
Волшебник
09.03.21
✎
10:40
|
(79) Руки прочь от GOTO!
|
|||
81
fisher
09.03.21
✎
10:54
|
Необходимость во всяких гоуту и бесконечных циклах появляется редко. Во всяких там стейт-машинах и иже с ними.
|
|||
82
ДенисЧ
09.03.21
✎
10:54
|
(81) В стейт-машинах переходы (гото) вообще-то не нужны. Там нужен свитч. И паттерн-матчинг
|
|||
83
Волшебник
09.03.21
✎
11:00
|
(82) switch-case — это тот же goto с выбором метки
|
|||
84
ДенисЧ
09.03.21
✎
11:02
|
(83) Так и цикл, и если - тот же переход.
Просто подсахаренный. |
|||
85
Масянька
09.03.21
✎
11:09
|
Каждый настоящий программист должен в своей жизни минимум один раз написать бесконечный цикл (С)
Ответ: чтобы почувствовать себя настоящим программистом. |
|||
86
Волшебник
09.03.21
✎
11:11
|
(85) Языки, в которых нет бесконечных циклов, нельзя считать полноценными. Суть компьютера в том, что он постоянно крутится в бесконечном цикле, ожидая событий от пользователя или клиентов.
|
|||
87
Irbis
09.03.21
✎
11:11
|
(84) Особенно хорошо это заметно было в программировании микрокалькулятора. Или следующий шаг программы (действие), или переход по какому либо условию.
|
|||
88
fisher
09.03.21
✎
11:12
|
(82) В общем случае - да. Просто запутанные циклы, из которых может возникнуть потребность "выпрыгивания", чаще возникают в рамках задач, которые требуют и стейт-машин тоже. Такое у меня сложилось ощущение.
|
|||
89
acht
09.03.21
✎
11:21
|
(88) > Просто запутанные циклы, из которых может возникнуть потребность "выпрыгивания",
А вот нехер писать запутанные циклы, которые можно отрефакторить на отдельные методы с возвратом в нужной точке. |
|||
90
Garykom
гуру
09.03.21
✎
11:30
|
(54) Там не доли а десятки %
Просто в платформе 1С бага с обработкой пустых строк и строк комментариев - оно при исполнении циклы по ним крутит |
|||
91
fisher
09.03.21
✎
11:34
|
(89) Если это будут абсолютно синтетические методы, единственная задача которых - избавиться от переходов, то большой вопрос - что из этого будет меньшим злом.
|
|||
92
Garykom
гуру
09.03.21
✎
11:36
|
||||
93
acht
09.03.21
✎
11:37
|
(91) А ты попробуй. Напиши запутанный цикл, а потом разбей его на синтетические методы. Потом отвлекись на денек, вернись и прочитай код. А вот потом уже философствуй про "большой вопрос" и "меньшее зло".
|
|||
94
dmpl
09.03.21
✎
11:43
|
(81) В ERP без этого никуда. Там даже GOTO используется.
|
|||
95
fisher
09.03.21
✎
11:44
|
(93) Рад встретить программиста, постигшего абсолютный дзен. А вот у разработчиков джавы не поднялась рука выпилить гоуту из циклов. Не просветлились до твоей стадии.
|
|||
96
Hmster
09.03.21
✎
11:45
|
Окно в программе это уже по сути бесконечный цикл
//Инициализация Пока Истина Цикл //отработка событий //+проверка на закрытие окна //ожидание, чтобы цикл не грузил процессор, и рабочий цикл выполнялся не постоянно, а "фиксированное" количество раз в секунду КонецЦикла; //Завершение работы |
|||
97
Serg_1960
09.03.21
✎
11:50
|
Погуглил в конфигурации "Пока Истина Цикл" - использовалось около 1500 раз. «И эти люди запрещают ковыряться мне в носу»(с)
|
|||
98
Кирпич
09.03.21
✎
11:51
|
Так никто и запрещает вроде.
|
|||
99
Кирпич
09.03.21
✎
11:52
|
не
|
|||
100
Волшебник
09.03.21
✎
11:53
|
Руки прочь от бесконечных циклов!
|
|||
101
Масянька
09.03.21
✎
11:53
|
Сто
|
|||
102
acht
09.03.21
✎
11:53
|
(95) > у разработчиков джавы
А причем тут разработчики языка? Ты еще рассмотри выход из цикла выбрасыванием исключения и сошлись, ну например на Гвидо ван Россума. |
|||
103
ДедМорроз
09.03.21
✎
11:57
|
В языке 1с нет цикла с постусловием,поэтому,или извращаться с вводом дополнительной переменной,которую сбрасывают в ложь где-то внутри цикла или условие Истина и выход по Прервать.
С переменной имеет право на существование,когда условие проверяется во вложенном цикле,т.к.там явно Прервать наружу не выведет. Опять же Пока НЕ Отказ Цикл тоже неплохо смотрится,хотя,по сути та же переменная. Ну и реально бесконечный цикл это всем нелюбимый GoTo и метка вначале. |
|||
104
fisher
09.03.21
✎
11:58
|
(102) Притом, что при разработке джавы не самые глупые люди очень вдумчиво подходили к вопросу, чего бы выбросить лишнего и вредного. И тот же "свободный" гоуту выпилили. А вот в циклах специально оставили с особым синтаксисом. Это я к тому, что вопрос не такой однозначный, как ты пытаешься показать, апеллируя к моей якобы неопытности.
|
|||
105
Волшебник
09.03.21
✎
12:00
|
(103) О-хо-хо:
~НачалоБесконечногоЦикла: //... Если УсловиеПрерывания Тогда Перейти ~КонецБесконечногоЦикла; КонецЕсли; //... Перейти ~НачалоБесконечногоЦикла; ~КонецБесконечногоЦикла: |
|||
106
Garikk
09.03.21
✎
12:01
|
(103) <это всем нелюбимый GoTo и метка вначале.>
не устано повторять, что goto в данном контексте ничего общего с 'всем нелюбимым goto' не имеет |
|||
107
ДедМорроз
09.03.21
✎
12:01
|
Исключения как раз можно имитировать через цикл.
Пока Истина Цикл Если Исключение Тогда Прервать; КонецЕсли; Действие1(); //.. ДействиеВКонце; Прервать; КонецЦикла; На языке 1с выглядит смешно,а в языках,где нет исключений и GoTo вполне себе терпимо |
|||
108
Irbis
09.03.21
✎
12:02
|
(103) Цикл с пост условием легко делается копи пастом тела цикла и циклом с предусловием.
|
|||
109
dmpl
09.03.21
✎
12:03
|
(108) Копи-паста плоха тем, что можно в одной части поменять, а в другой забыть.
|
|||
110
Irbis
09.03.21
✎
12:58
|
(109) Есть такая бяка, но легко оформляется выделением тела цикла в процедуру. Правится после этого в одном месте.
|
|||
111
Hmster
09.03.21
✎
13:12
|
Что лучше читается?
Пока Истина Цикл Если Условиие_1() Тогда Прервать; КонецЕсли; ... Если Условиие_N() Тогда Прервать; КонецЕсли; КонецЦикла; или Работаем = Истина; Пока Работаем Цикл Если Условиие_1() Тогда Работаем = Ложь; Продолжить; КонецЕсли; ... Если Условиие_N() Тогда Работаем = Ложь; Продолжить; КонецЕсли; КонецЦикла; |
|||
112
Hmster
09.03.21
✎
13:14
|
(110) то еще решение (нынче модно): дробить код на невменяемые процедуры и функции, гонять между ними контекст
|
|||
113
Irbis
09.03.21
✎
13:18
|
(112) Меня после фортрана ничем не напугаешь. Все эти заморочки по поводу удобочитаемости и идеальности кода не более чем понты.
|
|||
114
fisher
09.03.21
✎
13:23
|
(113) "Ректальное программирование - путь состоявшегося программиста"? :)
|
|||
115
Irbis
09.03.21
✎
13:29
|
(114) Я думаю, что тру-программистом я так и не стал. Всё время работал решателем каких-то проблем, по случаю занесло в 1С. Чисто программирование само по себе не особо и интересно.
|
|||
116
Волшебник
09.03.21
✎
13:34
|
(113) Меня после регулярных выражений PERL тоже ничем не напугаешь.
|
|||
117
Irbis
09.03.21
✎
13:35
|
(116) Так и название у языка само за себя говорит.
|
|||
118
novichok79
09.03.21
✎
13:48
|
(69) причем здесь адепты ООП?
действительно было бы удобно иметь структуры с встроенными в них функциями. неважно как оно называется. сейчас всю логику приходится писать в общих модулях. и мне кажется, это логичное продолжение развития 1С. как записывать в базе? а ORM зачем придумано? в hibernate привязывается к полю аннотацией, то есть через метаданные. есть внешние источники данных, там используется явная связь поле в метаданных - колонка в базе. и ничего - справляется. |
|||
119
novichok79
09.03.21
✎
13:50
|
(69) квалификация исполнителя?
то есть вы считаете, что выучить базовые принципы ООП и SQL - слишком сложно для обычного 1Сника? тогда зачем идти в программирование, в принципе? нет, поскольку 1С - фреймворк (или RAD-система), которая по сути предствляет собой ORM и GUI, это все для чего оно проектировалось. оно это делает и делает это хорошо. для других целей придуманы ЯП общего назначения, коим 1С не является. не надо ждать от самосвала скорости болида формулы 1. |
|||
120
fisher
09.03.21
✎
14:10
|
(119) Если обычному 1Снику несложно выучить ООП и SQL (и что там еще в нагрузку по вкусу), то какой смысл ему вообще идти в 1С? 1С обслуживают программисты-неудачники. И чем ниже порог входа - тем больше у 1С потенциальных адептов. Отток из 1с специалистов УЖЕ налицо, в связи с увеличением за последние годы доступного спроса на программистов других профилей. А ты его ускорить что ли хочешь? :)
|
|||
121
Почему 1С
09.03.21
✎
14:24
|
(120) Что то как не очень хочется в джуны из 1с уходить если тебе не до 25 лет.
|
|||
122
fisher
09.03.21
✎
14:26
|
Хотя, вполне может быть, что 1С пойдет по этому пути (усложнения платформы). Растущая сложность типовых конфигураций и без усложнения платформы значительно поднимает порог входа. Растет качество и размер продуктов, растут требования и ожидания пользователей. Так что и без усложнения платформы "специалистов 1С", способных на серьезную разработку, будет становиться все меньше и меньше. Будет просто постепенно падать спрос на них. Центры разработки будут укрупняться, но их будет становиться меньше. Феномен ранних 1С уже не повторить. Рынок видоизменяется, такого количества "писателей" уже не нужно будет. Так что вполне может статься, что 1С таки плюнет "на доступно и всерьез". Ну, как плюнет. Перестанет слишком крепко этого держаться.
|
|||
123
laby1
09.03.21
✎
14:29
|
Каждый день после обеда открываешь мисту и так каждый день.
|
|||
124
fisher
09.03.21
✎
14:29
|
(121) Добро пожаловать в клуб :)
|
|||
125
Малыш Джон
09.03.21
✎
14:34
|
(111) ну цикл по-человечески преобразовывать, тогда и выглядеть прилично будет:
Работаем = Истина; Пока Работаем Цикл Если Работаем Тогда //делаем свое дело Работаем = Условие_1(); КонецЕсли; ... Если Работаем Тогда //делаем свое дело Работаем = Условие_N(); КонецЕсли; КонецЦикла; |
|||
126
novichok79
09.03.21
✎
14:39
|
(121) даже если вам немного за 30 ... (с) поющие сиськи.
если вы только в 1С можете, то да, вам только в джуны. если вы в курсе каких-то общих технологий, типа всяких MQ систем, Hadoop'а, что-то помните по алгоритмам, и даже пилите всякие домашние проектики, то почему сразу джун? хожу иногда на собесы по Java, на последнем предлагали учить Kotlin :) |
|||
127
novichok79
09.03.21
✎
14:41
|
(120) ладно, я - самоучка, но ведь ООП и SQL в этих ваших институтах учат.
дело в другом, многие в регионах в начале 10-х (мой случай) идут в 1С, просто потому что других вакух нет. |
|||
128
novichok79
09.03.21
✎
14:43
|
(127) других вакух со словом "программист", имею в виду.
|
|||
129
dmpl
09.03.21
✎
15:01
|
(118) Модуль менеджера чем не катит?
(119) Если он это выучит - он будет стоить дороже. Что неинтересно ни 1С, ни ее клиентам. |
|||
130
fisher
09.03.21
✎
15:02
|
(128) Ну вот основная масса "старой волны" в 1С так и попала. Либо вакух было мало, либо вообще не со стороны ИТ пришли. А сейчас ситуация другая. Совсем со стороны заходить становится все сложнее, вакух (не одинэсных) становится больше (рынок все еще перегрет и остывать пока не спешит) и выбор именно 1С со стороны айтишников стал значительно менее оправдан. Да и не знать тот же английский сейчас уже становится попросту неприличным для образованного человека.
|
|||
131
novichok79
09.03.21
✎
15:03
|
(129) модуль менеджера - это разновидность общего модуля, имхо.
а так да, обычно туда тащу функционал тесно связанный с объектом МД. какая разница, что интересно 1С? чем больше я знаю того, что умеют немногие, тем больше я стою. это универсальная формула, что в Россиюшке, что за ее пределами. |
|||
132
novichok79
09.03.21
✎
15:08
|
(122) для меня кроме инкапсуляции, еще один плюс в пользу ООП, в том, что если бы были контракты методов, описанные до имплементации, то проблем после обновлений, когда меняется порядок или типа параметров в функции общего модуля, было бы меньше.
в остальном, можно и без ООП. |
|||
133
Александр Б
09.03.21
✎
15:14
|
(0) для паузы.
|
|||
134
antgrom
09.03.21
✎
15:18
|
(0) Считаю что выполнение регламентных заданий - это своего рода бесконечный цикл.
Вы ставите расписание например "выполнять 1 раз в день" и не ставите "дату окончания" Получается что этот цикл - бесконечный ? |
|||
135
fisher
09.03.21
✎
15:29
|
(132) Тут еще вопрос - что понимать под "ООП". ООП как в плюсах и джаве - фактически уже ископаемое и так больше не носят (в более свежих языках). В том же golang реализованы более прикольные концепции, которые позволяют не имея классов как таковых использовать и инкапсуляцию и контракты, давая при этом гораздо больше гибкости и избавляя от лишних приседаний.
|
|||
136
Garikk
09.03.21
✎
15:30
|
(135) вот уж в голанг извратились конечно, очень я сомневаюсь что они правильным путем пошли с неявными интерфейсами
|
|||
137
Garikk
09.03.21
✎
15:32
|
вообще я уже видел два примера когда 'ненужно и перегружено' выливается 'а теперь имеющимися костылями мы будем делать почти как в яве'...я уже и с питоном и с голангом с этим сталкивался, когда проект разрастается
|
|||
138
Почему 1С
09.03.21
✎
15:32
|
(132) Ну если мне когда то и не хватало ОПП в 1С то это наследования, это решилось вводом расширений конфигурации. Полиморфизм можно реализовать, инкапсуляция никогда особо не впечатляла как принцип, можно его придерживаться и без реализации этого принципа в яп. А контракты так это вообще не ООП, хотя честно признаюсь встретил их в Котлине, и не понял для чего они могут понадобится.
|
|||
139
fisher
09.03.21
✎
15:38
|
(136) Ты про утиную типизацию интерфейсов? ИМХО, гениальная штука. Куча приседаний в классическом ООП и ряд многострадальных костылей называемых "шаблонами проектирования" - только из-за того, что там в этом месте строгая типизация через классы.
(137) Интересно. А можно поподробнее про костыли типизации в голанге на больших проектах. Питон - понятно. Но в голанге же строгая статическая типизация? |
|||
140
Garikk
09.03.21
✎
15:41
|
(139) <ИМХО, гениальная штука.>
гениальная штука скомпилить запуск ядерной ракеты вместо открывания двери только потому что у них интерфейс void open() ? За это надо руки ноги и еще чтото отрывать (139) я не про типизацию в голанге, а в том что выкинутое ненужное, начинают обратно придумывать...теже исключения многострадальные |
|||
141
Garikk
09.03.21
✎
15:41
|
(140) *и не надо про тесты, тесты у нас в отрасли пишутся через одно место, в т.ч. и в ракетной технике
|
|||
142
ДенисЧ
09.03.21
✎
15:42
|
(139) утиная типизация в современном с++ это нечто...
auto a: "тут бешеная цепочка темплейтов" И без отладчика фиг поймёшь, а что туда вывелось... Мне кажется - это уже не то что перебор... |
|||
143
Волшебник
09.03.21
✎
15:42
|
(138) Наследование уже неактуально. Это была генетическая пародия. В моду входит компоновка.
|
|||
144
ДенисЧ
09.03.21
✎
15:43
|
(141) "в т.ч. и в ракетной технике"
Ага.. То бак сомнётся от внешнего (!) давления, то двигателю топлива не хватит... |
|||
145
ДенисЧ
09.03.21
✎
15:43
|
(143) компоновка? Имени Бориса Георгиевича?
|
|||
146
fisher
09.03.21
✎
15:44
|
(140) Не, ну возможность подсунуть ненадлежащий метод удовлетворяющий интерфейсу - это однозначно меньшее зло.
(145) Композиция, вероятно, имелась в виду. |
|||
147
Garikk
09.03.21
✎
15:44
|
(146) ничесе меньшее...когда только в рантайме всё рухнет и хорошо если не на голову
|
|||
148
Garikk
09.03.21
✎
15:45
|
и всё ради чего? ради того чтобы 'писанины поменьше'
|
|||
149
Почему 1С
09.03.21
✎
15:48
|
(143) А как композицией переопределить скажем проведение документа на поддержке?
|
|||
150
fisher
09.03.21
✎
15:49
|
(147) Профит уж очень велик. А это прогу нужно серьезно накосячить с закрытыми глазами и не используя даже юнит-тестов. Зато никакой головной боли со всякими адаптерами и "чужими" классами.
|
|||
151
Irbis
09.03.21
✎
15:57
|
Походу зациклилась тема
|
|||
152
fisher
09.03.21
✎
15:57
|
(148) Так в том-то и беда, что в классическом ООП обвязка хоронит под собой бизнес-логику и код становится сложнее и грязнее. За что все скриптовые языки и любят (пока проекты небольшие). В голанге, ИМХО, смогли достигнуть отличного компромисса. Минимум писанины при статической строгой типизации компилируемого языка.
|
|||
153
Garikk
09.03.21
✎
16:49
|
(150) <А это прогу нужно серьезно накосячить с закрытыми глазами и не используя даже юнит-тестов.>
тоесть надо работать как обычно в подавляющем большинстве проектов, ага за что я люблю яву, большая часть косяков отваливается на этапе компиляции. а тесты...эх тесты, когда я в крупной конторе работал околобанковской, тестов у нас вообще не было, в других проектов процентов 80 было покрытия, сейчас процентов 60.. так что пусть уж лучше язык следить если тимлиды не могут |
|||
154
fisher
09.03.21
✎
17:41
|
(153) Ну, такое. Аргумент понятен. Но наши оценки все равно разнятся. Возможно, если бы я был ленивым синьором на проекте, где лемминги пилят фичи, я бы тоже топил за джаву как за чуток более "леммингоустойчивый" инструмент "из коробки".
|
|||
155
brainguard
09.03.21
✎
20:08
|
(0) Например, надо написать программу:
"всех впускать, никого не выпускать" |
|||
156
brainguard
09.03.21
✎
20:21
|
(86) Полноценным языком считается язык, обладающий полнотой по Тьюрингу. А это значит, что на этом языке можно написать машину Тьюринга. А это, в свою очередь, значит, что нет способа заранее определить остановится эта машина или нет
|
|||
157
dmpl
09.03.21
✎
21:42
|
(131) Ну так 1С не нужно, чтобы для сопровождения ее кода требовались уникумы. И бизнесу это тоже не нужно. Поэтому как-то решать общие задачи должен уметь даже тот, кто на джуна не тянет.
|
|||
158
Волшебник
09.03.21
✎
21:49
|
(156) На машине Тьюринга далеко не уедешь...
|
|||
159
ViSo76
10.03.21
✎
00:30
|
(95) Есть варианты, к примеру множественные вложенные циклы,где go to оправдан, что бы вывалиться из всех циклов без извращений
|
|||
160
valerivp
10.03.21
✎
03:02
|
(46) нет лучшего варианта - с фоновым заданием
|
|||
161
ДенисЧ
10.03.21
✎
04:34
|
(46)
Пауза Пингом Станет нам гимном Заданий примеры Злят нас без меры Даёшь ооп! Опять грабли в лоб... ///// Разлилась ширОко Яуза ой-да через пинги наша пауза. |
|||
162
fisher
10.03.21
✎
10:17
|
(160) Он там в комментах есть. Ну и пауза фоновым заданием годится только для относительно больших пауз. Микропаузы до сих пор приходится бесконечными циклами делать.
|
|||
163
fisher
10.03.21
✎
10:18
|
Не бесконечными - холостыми, конечно же.
|
|||
164
Волшебник
10.03.21
✎
11:45
|
Все научились программировать. А дальше-то что?
https://habr.com/ru/company/htmlacademy/blog/546268/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |