Как правильно читать код в типовых?

1. SegaZX 10 27.06.24 11:33 Сейчас в теме
Вопрос к программистам

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

Подскажите, все так работают? это же нереально сложно, просто можно запутаться, когда при нажатии F11 тебя швыряет конфигуратор
от модуля к модулю, просто теряется связь.

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

Отсюда и вопрос: как самому можно разобраться в этом, исключительно по коду, вообще не понятно, и никакие курсы и 1С:Специалист в этом не помогают. Где этому научиться?
Или может есть какие то советы как это делать проще?

я во вложении приложил план своих действий из реальной задачи, если кому не сложно будет посмотреть, буду рад советам.
спасибо.
Прикрепленные файлы:
Пример.docx
haereticus; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Zevzm 27.06.24 11:40 Сейчас в теме
(1) Стек вызовов.
По словам Белоусова на курсах - нормальная тенденция. Теряется наглядность и читаемость в дань универсальности.
5. Said-We 27.06.24 13:29 Сейчас в теме
(3)
По словам Белоусова на курсах - нормальная тенденция. Теряется наглядность и читаемость в дань универсальности.
Кому нужна и для чего нужна эта универсальность? :-) Это как-то бухгалтеру позволит быстрее баланс сдать - ему она нужна?
А программисту быстрее разобраться почему, что-то с чем-то не сходится и где в типовом алгоритме "затык" - ему она нужна?

Если алгоритм в 77 занимал 500 строк, а в 8.3 десяток тысяч, из которых 90% переливание из пустого в порожнее. Из одних параметров заливаем в другие, что бы передать в следующую функцию, а из неё что бы по цепочке предать дальше в следующую функцию надо тоже параметры из пустого в порожнее по переливать.... :-)
Задача же с тех пор не сильно менялась. А решение усложнилось на несколько порядков.

В 8.0, 8.1, 8.2 данные вытаскивались в готовом виде одним запросом, а далее уж готовые использовались.
В 8.3 с БСП в угоду универсализму запрос разбивается на кусочки. Вытаскиваются уже из множества запросов результаты в виде множества ТЗ и далее эти ТЗ в лучшем случае параметрами обратно в запрос и обрабатываются, а худшим процедурным языком и ёлочки из вложенных циклов и поиском в цикле - как в 77.
От экскаваторов, опять вернулись к палке копалке, но универсальной.

Разработчики типовых - сертификацию по платформе не проходили? :-)
Требования к сертификации, что является грубой ошибкой в коде "...запрос в цикле..., выгрузка запроса в ТЗ вместо использования результат на прямую... и т.д.". Код типовых сертификацию не проходит. :-) Ну ни как.

И всё это ради универсализма?
По моему, это не универсализм - это идиотизм.
Универсализм конечно должен быть, но не до такой же степени....

Если в платформе довести язык запросов на выборку данных до ума, то объем кода может сократится на порядок. Если вот в эту сторону универсальности посмотреть.... :-)

(1) Да - это бесит. Тем более тех, кто ранее видел код других типовых и не типовых конфигурации на: 77, 77 1С++, 8.0, 8.1, 8.2.
Есть с чем сравнивать. Молодым по фигу, им не с чем сравнивать - принимают как данность и усё.
Все смотрят стек вызовов и гадают на каком этапе из 100 вызовов что-то пошло не так. А вроде складывали всего лишь 2+2, но универсально. :-)
Kurt; vv2; VictorRGB2; +3 Ответить
6. Zevzm 27.06.24 13:41 Сейчас в теме
(5)Возможно они убивают двух зайцев:
- упрощают разработку для себя;
- отодвигают самоучек от разработки, хочешь что-то понять - приходи, мы тебя научим, недорого.
Если в клюшках что-то можно было понять за полгода, то сейчас порог входа гораздо выше.
Kurt; nekiilik1c; VictorRGB2; user1619761; vv2; muskul; Nadushka74; +7 Ответить
8. Said-We 27.06.24 13:53 Сейчас в теме
(6)
- отодвигают самоучек от разработки,
Такой цели точно нет. Все учатся где угодно, а не только в учебных центрах 1С.
9. Said-We 27.06.24 13:59 Сейчас в теме
(6)
- упрощают разработку для себя;
т.е. Вы считаете что у них текучки кадров нет и быть не может. Поэтому всё этот километровый код наизусть знают - хоть ночью разбуди. :-)
Не упрощает это разработку.
Любая стандартизация, только затягивает разработку, но должна сокращать время на сопровождение кода и минимизировать ошибки. Если сокращения времени не происходит, то стандартизация неверная и требует корректировки.

На мой взгляд, имеет место быть - универсальность ради универсальности. Произошел огромный перегиб.
25. muskul 28.06.24 08:08 Сейчас в теме
(9)
на сопровождение кода и минимизировать ошибки.

Да только судя по релизам это не работает
11. starjevschik 27.06.24 15:06 Сейчас в теме
(6) усложняют разработку для себя.
Им же тоже платят за тысячи строк кода, а не за сидение в офисе.
12. Zevzm 27.06.24 15:14 Сейчас в теме
(11) По принципу: Дадим стране угля, хоть мелкого, но до...?
16. starjevschik 27.06.24 17:44 Сейчас в теме
(12) я не идеализирую разработку 1с. Там рабская система, эксплуатация и текучка. Каждый новый программер быстро понимает, что проще сделать заново, чем разбираться в этом гне. Ошибок в типовых больше, чем не-ошибок, свои стандарты разработки они не соблюдали никогда и не соблюдают сейчас. Ничего особо не меняется.
Когда лет этак 15 назад я сдавал конфигурацию на "1с:Совместимо", мена поразило, что стандартные конфигурации не проходят их же проверку с тысячами ошибок. Ничего не поменялось с тех пор. Надо сделать быстро и чтобы более-менее работало как-нибудь.
7. Kanigin 27.06.24 13:47 Сейчас в теме
(5) Лично меня убивает, что один и тот же отчет АнализНачисленийИУдержаний (ЗУП 3.1) для разных форм (Расчетный листок и Расчетная ведомость Т-51) выдает разные результаты по задолженности организации, если выплата сдвинута в будущий период. 100500 строк кода пока не осилил, если выживу, то сообщу об изысканиях.
13. VmvLer 27.06.24 16:06 Сейчас в теме
(7) Есть бухгалтерское сальдо и расчетное.
В настройках ЗУПа опции есть какое из них идет в листок.
В основной запрос заходят разные параметры при сборке.
Отлично, что в одном отчете одни и те же данные, но в разных формах.
24. Kanigin 28.06.24 07:34 Сейчас в теме
(13) Увы, не работает. Вкратце ситуация такая - есть разовое начисление за май с выплатой в июне. У сотрудника к выплате 565 рубля, на эту сумму расходятся задолженности по РЛ и Т-51. Остаток по регистру "Бухгалтерские взаиморасчеты с сотрудниками" совпадает с РЛ. (
Плюнул на изучение запроса (>1700 строк кода) прошелся перед выводом на печать Табличному документу, поставил остатки как хочет бухгалтер. Год задаче был, всю душу вымотала (((
28. Said-We 28.06.24 12:11 Сейчас в теме
(24)
Плюнул на изучение запроса (>1700 строк кода)
Был бы другой язык запросов, строк было бы всего 100. Самое быстрое работать/разрабатывать/сопровождать с данными это SQL, а не куча циклов вложенностей и переходов из процедуры в процедуру.
SQL - постановка задачи, а не рутинное решение, в котором надо знать как работает Квик сорт и метод поиска половинным делением (Ньютона).
Для нормальной поддержки SQL необходимо отказаться от файловой версии. Пока есть файловая версия - ничего не произойдет.
10. spacecraft 27.06.24 14:16 Сейчас в теме
(1) полноценные проекты на C++ посмотрите. То же на первый взгляд "ничего не понятно".
Да и любой нормальный фреймворк.
Это тренд разработки. Нужно привыкать.
Nadushka74; +1 Ответить
2. soft_wind 27.06.24 11:35 Сейчас в теме
Код читать
слева - Направо
и
Сверху - Вниз
4. starjevschik 27.06.24 11:41 Сейчас в теме
Именно так.
Или сразу переделать по-человечески.
14. VmvLer 27.06.24 16:09 Сейчас в теме
Спустя 10 лет этот код никому не будет нужен.

Я в бане сжег пару тачек книг и документаций по 77.
Клиентам негде было их хранить после переходов и мне тоже)
15. SegaZX 10 27.06.24 16:44 Сейчас в теме
Интересно такой подход только в функциональном программировании или в других языках такой же подход?
Больше всего не понятно зачем используется 20 модулей и куча переходящих процедур для какого то одного действия, в данном случае заполнения ТЧ. И где узнавать для чего что используется, не понятно.
17. SegaZX 10 27.06.24 17:51 Сейчас в теме
(10) в других языках программирования тоже куча модулей? я думал там каждый модуль отвечает за свое локальное действие и всегда внутри одного модуля можно разобраться что куда.
а перетекание из модуля в модуль, и не 2-3, а 20-30, это наверное только в 1С.
да я и не против, но должен быть какой то механизм эту цепочку отследить. я вообще пока по модулям иду, выписываю на бумагу значения, пометки ставлю, а потом и вовсе часто сбиваюсь, уже забыл с чего все начал. и все из за того что в уме не запомнить, а как еще иначе запомнить все дерево переходов по модулям и процедурам (( 1ССпец не дает этих знаний.
Может есть какие то курсы или тех. документация по модулям и процедурам типовых, чтобы не шариться как один с глухом лесу, а сразу знать что для чего и где?
18. karamazoff 124 27.06.24 17:55 Сейчас в теме
Сомневаюсь на счет других языков, а так, да 1с сама себя загнала в угол, чего только стоит при отладке переход по процедурам общего модуля с повторным вызовом, где в процедуре одна строка, вызывающая другую, но на рынке монополия по сути, приходится с этим жить. По типовым - в поддержку, пусть сами ковыряют, но как программиста такой подход конечно бесит, не одобряю
19. SegaZX 10 27.06.24 17:59 Сейчас в теме
Я в большей степени работаю как консультант, куча вопросов, и они все решаются, в итоге чувствуется польза для пользователей )) есть вакансии где требуется программист 1С, а из чего состоит работа именно программиста, и какие реальные задачи...?
разработка нового функционала, ну это нормально, и понятно, создаешь свое.
а сопровождение типовых, доработанных, поиск ошибок в типовых, когда что то не заполняется и пр, думаю уже сложнее и не так интересно, потому что львиную часть времени придется просто просматривать этот код, но ничего не писать. И это возможно и есть реальная работа Программистом 1С, а не то чему учат на курсах, где создаются свои "мини конфигурации", это в реальном бизнесе думаю не нужно.
поделитесь те кто работает программистами, какие у вас задачи и с чем приходится работать?
20. lefthander 27.06.24 18:38 Сейчас в теме
(19)
разработка нового функционала, ну это нормально, и понятно, создаешь свое.
а сопровождение типовых, доработанных, поиск ошибок в типовых, когда что то не заполняется и пр, думаю уже сложнее и не так интересно, потому что львиную часть времени придется просто

Вот именно в этом работа программиста. Просто или ты любишь свою работу или нет. Если нет, но работаешь - это ремесло.
(19)
а не то чему учат на курсах, где создаются свои "мини конфигурации", это в реальном бизнесе думаю не нужно.
На курсах учат КАК писать, в реальном бизнесе у тебя будет ЧТО писать.
Реальная помощь это правильно поставленная задача. Если тебе говорят надо вот что то такое и что бы вот так... то и писать это будем до ... в общем до... ;)
21. karamazoff 124 27.06.24 19:57 Сейчас в теме
(20)Частично соглашусь, я прогер и мне нравится моя работа, иногда прям кайф получаю, не за деньги, а за получилось, но когда приходится работать на чужом, и кривом, не але, но еще раз, с этого поезда мы не спрыгнем :(
27. lefthander 28.06.24 12:08 Сейчас в теме
(21)А мне и чужой и кривой код тоже интересно разбирать и править. Ведь когда я в 97 году начинал потом тоже кто то мой код разбирал и плевался и смеялся... Но код то работал. :) И, таки да, с этого поезда я прыгать не собираюсь.
22. starik-2005 3166 27.06.24 21:02 Сейчас в теме
А чито, типовая превращается благодаря сонару в спагетти, т.к. он рекомендует снизить цикломатическую сложность кода. А как снизить? Правильно, раздербанить одну процедуру на сто. Профит! )))
Для большинства архитехторов сонар - это культ карго. Зато картинки у них в гите красивые. Они, имха, ваще плохо соображают, как оно должно быть.
user2033930; +1 Ответить
23. user2033930 27.06.24 23:08 Сейчас в теме
(22) Вот соглашусь!
Нет, я, конечно, и сам любитель избегать больших процедур и дробить их на отдельные логически-функциональные процедуры... Но то, что предлагают все эти сонары и BSL для ограничения когнитивной и цикломатической сложностей - это где-то за гранью.
39. starik-2005 3166 30.06.24 10:59 Сейчас в теме
(23) Они ничего не предлагают, они просто предлагают снизить сложность с ХХХ до ХХ. Как - на откуп программиста...
26. muskul 28.06.24 08:13 Сейчас в теме
Во всем виноваты "тру программисты" это те самые которые на виндус сервер сломали кнопку пуск что она в первый раз в удаленке открывается секунд 10 с их трендом в ООП и чистым кодом, который превращает все в спагети и еще ложит болт на производительность.
29. VmvLer 28.06.24 14:27 Сейчас в теме
(28) Необходимо принять закон "о защите коммерческих данных" и там добавить пункт
n. запрещено хранить коммерческие данные программных учетных систем вне СУБД.
30. Said-We 28.06.24 15:41 Сейчас в теме
(29) А чем файловая не СУБД?
31. karamazoff 124 28.06.24 16:00 Сейчас в теме
Ну, как бы, ничем, у файловой из аббревиатуры есть БД, но нет полноценного СУ, для ентого скуль или гришка нужны
32. Said-We 28.06.24 21:40 Сейчас в теме
33. karamazoff 124 28.06.24 22:40 Сейчас в теме
(32)да, но здесь вариантов всего два
36. -AI- 29.06.24 09:47 Сейчас в теме
(33) dBase это что?
а это файловый вариант 77...
в 8ке то же самое, только своё собственное...
34. Said-We 29.06.24 00:37 Сейчас в теме
(33) Архивную копию позволяет сделать? Ух ты и уже первая функция СУБД....
Набор функций бывает немного разный....
35. CheBurator 2725 29.06.24 01:36 Сейчас в теме
Если функция/процедура вызывается только в цепочке вызовов как передаст и нигде более не вызывается напрямую - это явное излишество. имхо.
38. Said-We 29.06.24 11:37 Сейчас в теме
(35)
Если функция/процедура вызывается только в цепочке вызовов как передаст и нигде более не вызывается напрямую - это явное излишество. имхо.
Это если у модулей и функций нет отдельного контекста, в котором они вызываются. И этих контекстов тьма.
37. -AI- 29.06.24 09:59 Сейчас в теме
Мне кажется, что в 1Ске много вызовов из-за наличия таких возможностей как:
1) функциональные опции
2) реализация клиент-серверной парадигмы, т.е. сначала долго-долго анализируется необходимость серверного вызова...

ещё чего не хватает
3) в других языках библиотеки - это черный ящик, с хорошей документацией.
а тут, пошаговое исполнение заглядывает внутрь той же БСП, например...

если бы было как платформенные решения, типа СтрРазделить() внутрь которой отладчик не заходит,
в отличие от СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок()
40. SegaZX 10 30.06.24 11:43 Сейчас в теме
Ну раз действительно много модулей, клиент-серверная парадигма, разные контексты, т.е. как писали выше
"...Из одних параметров заливаем в другие, что бы передать в следующую функцию, а из неё что бы по цепочке предать дальше в следующую функцию надо тоже параметры из пустого в порожнее по переливать...

В 8.3 с БСП в угоду универсализму запрос разбивается на кусочки. Вытаскиваются уже из множества запросов результаты в виде множества ТЗ и далее эти ТЗ в лучшем случае параметрами обратно в запрос и обрабатываются..."

п.с. Раз это уже есть и будет, во всех типовых так. то как с этим УДОБНО работать? неужели нет инструментов или каких либо курсов, где научат переходя по всем этим процедурам и параметрам держа всю суть происходящего? а то реально приходится путаться и записывать все на бумагу. Так быть не должно, иначе это превращается в неинтересное программирование, а тупую трату времени на разбирательства, за которые никто платить точно не будет.

Даже на примере того, пришел в фирму 1С новый сотрудник на позицию разработчик, и ему чтобы дополнять функциона, нужно же как то понять что написали ДО него, чтобы он дров не наломал. Интересно как это у них происходит.
41. haereticus 02.07.24 07:55 Сейчас в теме
Можно только посоветовать запускать эту кухню в РежимОтладки, тогда не будут срабатывать разные сервисные процедуры типа ОбработчикДействийРезервногоКопирования(). Впрочем, ситуацию это не сильно-то и улучшит. Здесь требуется некий визуализатор иерархии и связей процедур, наподобие того, что сделан в ИР для визуализации запросов. Интересно, существует ли такой или что-то наподобие, для конфигуратора или ЕДТ , может видел кто-то?
42. tormozit 7269 25.09.24 07:17 Сейчас в теме
(41) Ограниченный вариант дерева связей методов в ИР https://www.hostedredmine.com/issues/987516 . Работает в конфигураторе через Турбоконф.
В EDT есть полнофункциональный вариант - "Иерархия вызовов".
abasovit; haereticus; +2 Ответить
Оставьте свое сообщение

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