Вот есть задача в типовой конфигурации, просто решить вопрос, отловив через отладку причину ошибки, но
когда начинаешь это делать, то возникают сложности. Очень много процедур и функций, по которым мы последовательно идем и
пытаемся понять для чего каждая нужна, так же они все расположены в множестве общих модулей и в итоге когда мы просмотрели
все эти функции и процедуры, то чтобы понять результат их исполнения, мы начинаем идти обратно от последней процедуры до первой,
анализируя параметры, передаваемые в них.
Подскажите, все так работают? это же нереально сложно, просто можно запутаться, когда при нажатии F11 тебя швыряет конфигуратор
от модуля к модулю, просто теряется связь.
т.е. получается чтобы нормально работать, нужно как то разбираться в том как работает типовая, причем не с точки зрения того, как
это все последовательно делается в режиме Предприятия, а именно с точки зрения кода. Но нигде этой информации нет, в
итоге просто не понятно логика.
Отсюда и вопрос: как самому можно разобраться в этом, исключительно по коду, вообще не понятно, и никакие курсы и 1С:Специалист в этом не помогают. Где этому научиться?
Или может есть какие то советы как это делать проще?
я во вложении приложил план своих действий из реальной задачи, если кому не сложно будет посмотреть, буду рад советам.
спасибо.
По словам Белоусова на курсах - нормальная тенденция. Теряется наглядность и читаемость в дань универсальности.
Кому нужна и для чего нужна эта универсальность? :-) Это как-то бухгалтеру позволит быстрее баланс сдать - ему она нужна?
А программисту быстрее разобраться почему, что-то с чем-то не сходится и где в типовом алгоритме "затык" - ему она нужна?
Если алгоритм в 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, но универсально. :-)
(5)Возможно они убивают двух зайцев:
- упрощают разработку для себя;
- отодвигают самоучек от разработки, хочешь что-то понять - приходи, мы тебя научим, недорого.
Если в клюшках что-то можно было понять за полгода, то сейчас порог входа гораздо выше.
т.е. Вы считаете что у них текучки кадров нет и быть не может. Поэтому всё этот километровый код наизусть знают - хоть ночью разбуди. :-)
Не упрощает это разработку.
Любая стандартизация, только затягивает разработку, но должна сокращать время на сопровождение кода и минимизировать ошибки. Если сокращения времени не происходит, то стандартизация неверная и требует корректировки.
На мой взгляд, имеет место быть - универсальность ради универсальности. Произошел огромный перегиб.
(12) я не идеализирую разработку 1с. Там рабская система, эксплуатация и текучка. Каждый новый программер быстро понимает, что проще сделать заново, чем разбираться в этом гне. Ошибок в типовых больше, чем не-ошибок, свои стандарты разработки они не соблюдали никогда и не соблюдают сейчас. Ничего особо не меняется.
Когда лет этак 15 назад я сдавал конфигурацию на "1с:Совместимо", мена поразило, что стандартные конфигурации не проходят их же проверку с тысячами ошибок. Ничего не поменялось с тех пор. Надо сделать быстро и чтобы более-менее работало как-нибудь.
(5) Лично меня убивает, что один и тот же отчет АнализНачисленийИУдержаний (ЗУП 3.1) для разных форм (Расчетный листок и Расчетная ведомость Т-51) выдает разные результаты по задолженности организации, если выплата сдвинута в будущий период. 100500 строк кода пока не осилил, если выживу, то сообщу об изысканиях.
(7) Есть бухгалтерское сальдо и расчетное.
В настройках ЗУПа опции есть какое из них идет в листок.
В основной запрос заходят разные параметры при сборке.
Отлично, что в одном отчете одни и те же данные, но в разных формах.
(13) Увы, не работает. Вкратце ситуация такая - есть разовое начисление за май с выплатой в июне. У сотрудника к выплате 565 рубля, на эту сумму расходятся задолженности по РЛ и Т-51. Остаток по регистру "Бухгалтерские взаиморасчеты с сотрудниками" совпадает с РЛ. (
Плюнул на изучение запроса (>1700 строк кода) прошелся перед выводом на печать Табличному документу, поставил остатки как хочет бухгалтер. Год задаче был, всю душу вымотала (((
Был бы другой язык запросов, строк было бы всего 100. Самое быстрое работать/разрабатывать/сопровождать с данными это SQL, а не куча циклов вложенностей и переходов из процедуры в процедуру.
SQL - постановка задачи, а не рутинное решение, в котором надо знать как работает Квик сорт и метод поиска половинным делением (Ньютона).
Для нормальной поддержки SQL необходимо отказаться от файловой версии. Пока есть файловая версия - ничего не произойдет.
(1) полноценные проекты на C++ посмотрите. То же на первый взгляд "ничего не понятно".
Да и любой нормальный фреймворк.
Это тренд разработки. Нужно привыкать.
Интересно такой подход только в функциональном программировании или в других языках такой же подход?
Больше всего не понятно зачем используется 20 модулей и куча переходящих процедур для какого то одного действия, в данном случае заполнения ТЧ. И где узнавать для чего что используется, не понятно.
(10) в других языках программирования тоже куча модулей? я думал там каждый модуль отвечает за свое локальное действие и всегда внутри одного модуля можно разобраться что куда.
а перетекание из модуля в модуль, и не 2-3, а 20-30, это наверное только в 1С.
да я и не против, но должен быть какой то механизм эту цепочку отследить. я вообще пока по модулям иду, выписываю на бумагу значения, пометки ставлю, а потом и вовсе часто сбиваюсь, уже забыл с чего все начал. и все из за того что в уме не запомнить, а как еще иначе запомнить все дерево переходов по модулям и процедурам (( 1ССпец не дает этих знаний.
Может есть какие то курсы или тех. документация по модулям и процедурам типовых, чтобы не шариться как один с глухом лесу, а сразу знать что для чего и где?
Сомневаюсь на счет других языков, а так, да 1с сама себя загнала в угол, чего только стоит при отладке переход по процедурам общего модуля с повторным вызовом, где в процедуре одна строка, вызывающая другую, но на рынке монополия по сути, приходится с этим жить. По типовым - в поддержку, пусть сами ковыряют, но как программиста такой подход конечно бесит, не одобряю
Я в большей степени работаю как консультант, куча вопросов, и они все решаются, в итоге чувствуется польза для пользователей )) есть вакансии где требуется программист 1С, а из чего состоит работа именно программиста, и какие реальные задачи...?
разработка нового функционала, ну это нормально, и понятно, создаешь свое.
а сопровождение типовых, доработанных, поиск ошибок в типовых, когда что то не заполняется и пр, думаю уже сложнее и не так интересно, потому что львиную часть времени придется просто просматривать этот код, но ничего не писать. И это возможно и есть реальная работа Программистом 1С, а не то чему учат на курсах, где создаются свои "мини конфигурации", это в реальном бизнесе думаю не нужно.
поделитесь те кто работает программистами, какие у вас задачи и с чем приходится работать?
разработка нового функционала, ну это нормально, и понятно, создаешь свое.
а сопровождение типовых, доработанных, поиск ошибок в типовых, когда что то не заполняется и пр, думаю уже сложнее и не так интересно, потому что львиную часть времени придется просто
Вот именно в этом работа программиста. Просто или ты любишь свою работу или нет. Если нет, но работаешь - это ремесло.
(19)
а не то чему учат на курсах, где создаются свои "мини конфигурации", это в реальном бизнесе думаю не нужно.
На курсах учат КАК писать, в реальном бизнесе у тебя будет ЧТО писать.
Реальная помощь это правильно поставленная задача. Если тебе говорят надо вот что то такое и что бы вот так... то и писать это будем до ... в общем до... ;)
(20)Частично соглашусь, я прогер и мне нравится моя работа, иногда прям кайф получаю, не за деньги, а за получилось, но когда приходится работать на чужом, и кривом, не але, но еще раз, с этого поезда мы не спрыгнем :(
(21)А мне и чужой и кривой код тоже интересно разбирать и править. Ведь когда я в 97 году начинал потом тоже кто то мой код разбирал и плевался и смеялся... Но код то работал. :) И, таки да, с этого поезда я прыгать не собираюсь.
А чито, типовая превращается благодаря сонару в спагетти, т.к. он рекомендует снизить цикломатическую сложность кода. А как снизить? Правильно, раздербанить одну процедуру на сто. Профит! )))
Для большинства архитехторов сонар - это культ карго. Зато картинки у них в гите красивые. Они, имха, ваще плохо соображают, как оно должно быть.
(22) Вот соглашусь!
Нет, я, конечно, и сам любитель избегать больших процедур и дробить их на отдельные логически-функциональные процедуры... Но то, что предлагают все эти сонары и BSL для ограничения когнитивной и цикломатической сложностей - это где-то за гранью.
Во всем виноваты "тру программисты" это те самые которые на виндус сервер сломали кнопку пуск что она в первый раз в удаленке открывается секунд 10 с их трендом в ООП и чистым кодом, который превращает все в спагети и еще ложит болт на производительность.
(28) Необходимо принять закон "о защите коммерческих данных" и там добавить пункт
n. запрещено хранить коммерческие данные программных учетных систем вне СУБД.
Мне кажется, что в 1Ске много вызовов из-за наличия таких возможностей как:
1) функциональные опции
2) реализация клиент-серверной парадигмы, т.е. сначала долго-долго анализируется необходимость серверного вызова...
ещё чего не хватает
3) в других языках библиотеки - это черный ящик, с хорошей документацией.
а тут, пошаговое исполнение заглядывает внутрь той же БСП, например...
если бы было как платформенные решения, типа СтрРазделить() внутрь которой отладчик не заходит,
в отличие от СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок()
Ну раз действительно много модулей, клиент-серверная парадигма, разные контексты, т.е. как писали выше
"...Из одних параметров заливаем в другие, что бы передать в следующую функцию, а из неё что бы по цепочке предать дальше в следующую функцию надо тоже параметры из пустого в порожнее по переливать...
В 8.3 с БСП в угоду универсализму запрос разбивается на кусочки. Вытаскиваются уже из множества запросов результаты в виде множества ТЗ и далее эти ТЗ в лучшем случае параметрами обратно в запрос и обрабатываются..."
п.с. Раз это уже есть и будет, во всех типовых так. то как с этим УДОБНО работать? неужели нет инструментов или каких либо курсов, где научат переходя по всем этим процедурам и параметрам держа всю суть происходящего? а то реально приходится путаться и записывать все на бумагу. Так быть не должно, иначе это превращается в неинтересное программирование, а тупую трату времени на разбирательства, за которые никто платить точно не будет.
Даже на примере того, пришел в фирму 1С новый сотрудник на позицию разработчик, и ему чтобы дополнять функциона, нужно же как то понять что написали ДО него, чтобы он дров не наломал. Интересно как это у них происходит.
Можно только посоветовать запускать эту кухню в РежимОтладки, тогда не будут срабатывать разные сервисные процедуры типа ОбработчикДействийРезервногоКопирования(). Впрочем, ситуацию это не сильно-то и улучшит. Здесь требуется некий визуализатор иерархии и связей процедур, наподобие того, что сделан в ИР для визуализации запросов. Интересно, существует ли такой или что-то наподобие, для конфигуратора или ЕДТ , может видел кто-то?
(41) Ограниченный вариант дерева связей методов в ИР https://www.hostedredmine.com/issues/987516 . Работает в конфигураторе через Турбоконф.
В EDT есть полнофункциональный вариант - "Иерархия вызовов".