Сложность большого стека вызовов

1. Aleksey_Abramov 22.05.25 20:56 Сейчас в теме
Поделитесь опытом, лайфхаками, как вы справляетесь со сложностью кода. Например, механизм выполнения команды обработки может быть раскидан по разным модулям, и вам нужно его изменить. Но вы этот механизм видите впервые. И вот в первый день садишься, делаешь, вроде всё понятно, но на второй день часть уже забываешь где что находится. Может вы рисуете какие-то блок схемы? Или другим образом упрощаете себе работу?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. miniogn 47 22.05.25 22:46 Сейчас в теме
(1) Особо никаких записей не делаю. Так, если совсем небольшие пометки, например в блокноте или в Excel.
Зафиксировать стек вызова, значения и прочее.
Никаких схем не рисую (хотя не против них, если кому помогает, я только за).

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

Хорошо помогает замер производительности. Потом ходишь по коду и видно, какие строки были выполнены.

Сложный механизм состоит из частей. Надо сосредоточится на том, что необходимо поменять или отладить. Остальное выкидывать из внимания.
Как можно быстрее найти конкретное место сбоя или, где, что необходимо поменять. И уже работать локально, как можно быстрее поймать конкретику. То есть не обязательно пытаться понять весь автомобиль, если проблема, ну не знаю, в бензонасосе.
Сложно сразу всё вспомнить, как-то так вот само получается...

UPD. Хорошо помогает история изменений, прошлые версии. Особенно, если раньше работало, а потом перестало.
Aleksey_Abramov; +1 Ответить
3. Aleksey_Abramov 23.05.25 00:46 Сейчас в теме
4. user1832003 57 23.05.25 10:00 Сейчас в теме
ставлю точку и иду по коду. Ставлю точки в ключевых местах которые должны быть связующим звеном между всеми вызовами. и тд
5. Sashares 33 23.05.25 10:02 Сейчас в теме
Можно предложить тренировки памяти различные попробовать, если быстро забывается нужная информация.
6. starik-2005 3179 23.05.25 11:02 Сейчас в теме
Иду по коду, ставлю закладки (шифт+ф2), потом если нужно по закладкам.

Обычно есть какая-то логика в разделении кода на части. Есть мнение у некоторых, что это снижает сложность, т.к. снижается когнитивная и цикломатическая сложность кода. Но это работает только тогда, когда выделяются малосвязанные целостные блоки. В действительности для большинства сложных алгоритмов это больше фетиши архитекторов, которые "достигают показателей", чтобы сонар не ругался. Ну это в принципе идиотский показатель, т.к. код становится запутанным, особенно если приходится передавать в эти подпрограммы кучу локальных переменных. Если же подпрограммы действительно делают то, что должны, и ничего больше, имеют пару параметров и не зависят от глобального контекста, то это и правда уменьшает сложность кода.

ЗЫ: вот, например, не сильно полезная практика получать текст запроса из отдельной процедуры, т.к. потом в месте обработки ты не видишь того, что возвращает запрос, т.к. текст запроса далеко. С другой стороны, если этот текст запроса используется в более, чем одном модуле, то уже появляется смысл, т.к. изменять нужно один запрос, а не два. Но многие вообще не заморачиваются здравым смыслом и тащат текст запроса в отдельную процедуру, усложняя жизнь себе и, особенно, коллегам, которые потом вынуждены бегать туда-сюда. С другой стороны, можно открыть два окна или разделить окно пополам. Не помню, умеет такое 1С или нет...
7. Sashares 33 23.05.25 11:12 Сейчас в теме
(6)
С другой стороны, можно открыть два окна или разделить окно пополам. Не помню, умеет такое 1С ил

Разделить умеет.
starik-2005; +1 Ответить
8. lmnlmn 69 23.05.25 13:28 Сейчас в теме
(6)
ЗЫ: вот, например, не сильно полезная практика получать текст запроса из отдельной процедуры, т.к. потом в месте обработки ты не видишь того, что возвращает запрос, т.к. текст запроса далеко.

Когда запрос на 100500 экранов довольно удобно - F12 и смотри что там, обратно Ctrl + "-". Но если проблема не в запросе, то проматывать эти простыни запаривает.
user2107184; +1 Ответить
9. user2107184 23.05.25 13:51 Сейчас в теме
(8)
то проматывать эти простыни запаривает.
Мышка с двухрежимным колесом прокрутки спасет отца русской демократии! )))
Меня тоже заёкивает мотать запросы большие, я их тоже выкидываю в отдельные фунциклюшечки.
11. Sashares 33 23.05.25 14:35 Сейчас в теме
(9) У ребенка, воспитанного разработчиками 1С:Зарплата и управление персоналом 8, очень большие запросы...
14. starik-2005 3179 23.05.25 14:41 Сейчас в теме
(11) А я не юзаю почти ВТ, т.к. 99% их юзания - это коллизии в извилинах, заложенные курсами 1С.
17. user2107184 23.05.25 15:02 Сейчас в теме
(14) Ну нет же.
А как же ВыполнитьПакетСПромежуточнымиДанными()??? Святой метод же!!!
Одним запросом получаешь несколько таблиц, причем некоторые из них сразу же и в качестве источника для других таблиц поучаствовали.

Вот таким я балуюсь очень даже!
19. starik-2005 3179 23.05.25 15:05 Сейчас в теме
(17)
Вот таким я балуюсь очень даже!
А я почти никогда. Это как без ГОТО - ломает первое время )))
18. user2107184 23.05.25 15:03 Сейчас в теме
(11)
очень большие запросы...
... так и у меня мышка не за 90 рублей ))
15. starik-2005 3179 23.05.25 14:47 Сейчас в теме
(8) Я как-то отлаживал запрос примерно на 4,5к строк, который внутри СКД был. И это после того, как я его сократил чуток. Грусть-тоска. В итоге переписали весь механизм, новый запрос менее 500 строк + 500 строк постобработки. Работает в разы быстрее. Не вспомню, чтобы я и на 500-то строк запросы когда помимо этого писал.
10. Said-We 23.05.25 14:34 Сейчас в теме
(6),
(8),
(9)
#Область Запрос_такой_то
Запрос.Текст = "Выбрать ...
|...
|...";
#КонецОбласти

И можно колесо не использовать. Но кто же в типовых будет это делать :-)

А если 1С удосужится и перестанет фантики делать в УФ, а займется языком запросов, то тексты запросов можно будет сократить в разы или даже на порядок.
Но этого не будет, пока файловую свою не забросят. Это возможно, но этого не будет.
Прикрепленные файлы:
16. user2107184 23.05.25 14:58 Сейчас в теме
(10) Не люблю области внутри процедур, не прижилось как-то (( Вот сами методы с удовольствием группирую в иерархическое облачное небо! А отдельные куски кода - пока никак. Я старый ретроград. Понять и простить ))

А зато все "вынесенные в отдельные методы" запросы - можно сгруппировать в одном области модуля )) Тоже очень удобно - например, запросы по всем движениям документа лежат в одном месте. Мне вот так удобнее.
12. Said-We 23.05.25 14:38 Сейчас в теме
(11) Какая задача - такие и запросы. НДФЛ чего только стоит. Куча регистров с кучей движений, в том числе с переносом сумм на другие регистраторы и дату получения дохода ...

Тут законодателям надо упрощать. Маразм с НДФЛ усложняется до полного абсурда.
13. Sashares 33 23.05.25 14:41 Сейчас в теме
(12)
Какая задача - такие и запросы.

Ну как бы понятно, что не для развлечения они такие получились))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот