Как посмотреть код 1с
Перейти к содержимому

Как посмотреть код 1с

Приемы чтения кода

Для начинающих программистов хорошим тоном всегда было – «учиться программированию у мастеров». А кто может быть лучшими мастерами, чем разработчики типовых решений?! Поэтому совершенно неудивительны попытки новичков открывать модули типовых решений и просто начинать читать код, следя за развитием логики алгоритма, подмечая ньюансы и приемы программирования.

В такие моменты начинающий программист подобен литературному переводчику с неродного языка: что знал – перевел, что не знал – домыслил, что не понял – перевел так, как написал бы сам в данной ситуации.

И не беда, что поначалу половина кода кажется туманной и загадочной. Главное понимать его цель, отмечать основные вехи и как можно больше – читать, осознавать и брать на вооружение. По мере «набивания руки» в чтении кода – тумана и загадок будет оставаться все меньше.

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

Но кому в наше время нужна голая теория, не подкрепленная практикой?! Что бы доказать действенность методики – давайте сразу попробуем ее применять в конкретном примере.

Допустим, мы хотим разобраться, как в типовых решениях устроен механизм пересчета цен при изменении значения валюты документа.

Выход на нужный программный код

Ну что открываем «конфигуратор»?

Первым делом в любой ситуации полезно посмотреть на действие изучаемого механизма… в пользовательском режиме программы!

Поясню: Понимая, к чему это действие приводит, впоследствии гораздо легче делать выводы о важности тех или иных фрагментов программного кода. А это в свою очередь, позволит сэкономить время на игнорировании «очень мутных, но, похоже, не важных» для нашего механизма фрагментах.

Итак, правило первое: Перед началом анализа программного механизма, посмотрите на его действие «глазами пользователя».

Далее желательно определиться с точкой старта изучаемого механизма. Ну, в самом деле, не будем же мы читать сверху-донизу все строчки кода всех модулей программы. Их миллионы. А задействована в работе нашего мехнизма – только малая часть. Как бы на нее выйти побыстрее?

Тут полезно вспомнить, что язык системы «1С:Предприятие» — язык событийный. То есть программный код – он не сам по себе, он задействуется только в ответ на некие события, возникающие после действий пользователя.

Итак: Если хотим быстро выйти на фрагмент кода механизма – достаточно определить «провоцирующее» действие пользователя и обработчики событий, возникающих после этого действия.

Как видите, найти обработчики событий, связанных с изменением элементов формы, достаточно легко. Надо лишь в эскизе формы задействовать контекстное меню на самом элементе, и в подменю «События» посмотреть – напротив каких обработчиков проставлена пиктограмма «Р()«. Если проставлена – значит этому обработчику назначена процедура. А если обработчик подходит по смыслу нашей задачи – то именно эту процедуру надо прочитать, изучить.

Серфинг по коду

Порядок чтения изучаемой процедуры, разумеется, — «сверху-вниз» и, по возможности, «ничего не пропуская».

Но одним из принципов структурного программирования является следующий: «повторяющиеся фрагменты программы нужно оформлять в виде процедур и функций, вызываемых из программы». То есть надо быть готовым к тому, что очередная строчка кода в изучаемой процедуре будет не исполняемой командой, а именем «вызываемой из программы процедуры или функции». А вызываемая процедура или функция уже в свою очередь может включать в себя вызовы других процедур или функций, а те – других…

Фактически чтение «сверху-вниз» в типовых конфигурациях зачастую превращается в «серфинг» по вызывающим друг-друга процедурам и функциям. Как не «утонуть», не запутаться при этом серфинге – смотрим в следующем ролике:.

Шаг вперед: < F12> — переход к определению вызываемой процедуры, функции или переменной;

Шаг назад: комбинация клавиш <Ctrl + » «> (причем «минус» надо нажимать на верхнем ряду клавиатуры, а не на отдельной боковой).

Кроме этих двух основных приемов «серфинга» есть еще один вспомогательный:

<Alt + F12> — найти использование процедуры или функции. Эта комбинация клавиш позволит оценить «популярность» очередной процедуры или функции:

Анализ вызываемых процедур и функций

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

Что бы чтение функции (процедуры) сопровождалось еще и пониманием прочитанного – желательно придерживаться следующего плана:

1) Контекст

2) Комментарий

3) Параметры

4) Текст

То есть – текст в последнюю очередь.

Почему? Потому что «дешевле и быстрее» выводить умозаключения «от общего к частному», а не наоборот. Потому что легче читать код функции, когда Вы уже четко осознаете:

1) Где она расположена, и какое окружение ей доступно просто из-за того, что она расположена именно там?

2) Что мне хотел посоветовать/пояснить автор этой функции?

3) Какие данные (недоступные из контекста) автор бы вынужден передать со стороны вызывающей процедуры(функции)?

В следующем ролике показано – как именно это осознание можно выполнять:

Ну что ж, осознали.

Вот теперь можно приступать к чтению:

Синтакс-помощник, помогай!

Резюмируем: в процессе «серфинга по коду» можно наткнуться на системные процедуры(функции). Отличие от обычных в том, что их код «зашит» в платформу и поэтому представляет для нас «черный ящик». Что там внутри — не известно. Да и не очень-то хотелось бы с этим разбираться. Вполне достаточно, если бы нам кто-то предоставил описание:

— входной для «черного ящика» информации;

— планируемого действия черного ящика;

— выходной из «черного ящика» информации;

— особенностей поведения «черного ящика».

Так вот, все это описание содержится в инструменте платформы «Синтакс- помощник«:

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

Ну, вот смотрите сами, как идет дальнейший анализ нашей функции:

А вот так освоенные нами «F12«, <Ctrl + » «> и «Поиск в Синтакс-помощнике» помогают осознать следующую часть алгоритма:

Изучение привлекаемых объектов

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

Отладчик, показывай!

Хорошо когда Вам абсолютно прозрачны преобразования данных, выполняемые в коде алгоритма. То есть читаете код и понимаете: «ага, сюда, значит, у них заходит проволока, вот этот барабан крутится, вот эти насадки загибают, а вот эта – обрезает. «

Но иногда понимание сводится к следующей схеме:

Наглядность! Вот что требуется при чтении сложных фрагментов кода.

Наглядность преобразований данных на каждом этапе.

Так вот, платформа «1С:Предприятие» имеет шикарный инструмент для обеспечения наглядности. Называется он – «Отладчик».

Итак, отладчик позволяет посмотреть результат любой переменной, метода или функции, выполнимых в рамках текущего кода (текущего контекста).

За работу, товарищи!

А что в алгоритме было дальше… — узнайте, пожалуйста, сами.

Ну, правда, попробуйте.

Убедитесь, что это не сложно и по-своему приятно.

Ведь что может быть приятнее для начинающего программиста, чем полностью разобраться в сложном, запутанном деле алгоритме.

Горячие клавиши 1С — сочетаем несочетаемое

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

Горячие клавиши 1С

Кодирование

При написании, когда можно сэкономить время, используя следующие сочетания клавиш:
Ctrl + Пробел — вызов контекстной подсказки или автодополнения.
Ctrl + Q — вызов шаблона, значительно ускорит написание кода.
Alt-Shift‑F — отформатировать участок кода, чтоб он стал читабельным.
Ctrl-F1 — поиск в синтакс — помощнике, подводим курсор к функции платформы или ключевому слову и нажимаем.

Исследование кода

Когда исследуем большие участки кода, то тяжело обойтись без следующих сочетаний клавиш.
Alt+F2 – установить, снять закладку с текущей строки.
F2 – перейти к следующей закладке.
Shift+F2 — перейти к предыдущей закладке.
F‑12 – ставим курсор на процедуре или функции и переходим к определению процедуры или функций.
Ctrl — (минус) — перемещает назад в модуль, на который прыгнули через F12.
Ctrl — T — найти в дереве. Если находиться в модуле, то в дереве конфигурации выделиться объект, чей это модуль.
Ctrl+F — найти объект метаданных или его реквизит в дереве метаданных.
Быстрое перемещение по ветвям конструкций Если… ИначеЕсли… Иначе.… и между
началом и концом цикла.
Ctrl-[ — перейти назад.
Ctrl-] — перейти вперед.
Ctlr‑G — перемещения к конкретной строке кода.

Отладка кода

Отладка кода очень важное действие, без которого не обходится написание кода и исследование чужого.
F5 — запуск отладки.
F9 – поставить, убрать точку останова.
F10 — шагнуть через, т.е. не заходить в процедуры и функции, а выполнить следующую строку кода.
F11 — шагнуть в, т.е. выполняет следующую строку кода с заходом в процедуры и функции.
Shift-F9 — рассчитать выражение.
Ctrl+Shift+F9 — отключить точку останова.

Окно служебных сообщений

В окно служебных сообщений выводятся ошибки, результаты поиска и т.д. Для работы с окном сообщений и полезны следующие горячие клавиши:
Ctrl-Alt‑Z — окно сообщений очистить.
Ctrl-Shift‑Z — окно сообщений очистить и закрыть.

Заключение.
Здесь я собрал наиболее используемые сочетания клавиш, на самом деле их намного больше. Чтобы посмотреть Горячие клавиши в конфигураторе необходимо зайти в Меню справка — Содержание справки — Сочетания клавиш (Конфигуратор).

Формируйте привычку использовать горячие клавиши, запоминается лучше когда используешь, а не когда учишь.

П.С.
Я часто использую сочетание клавиш в режиме “Предприятия” Alt + Shift + R — восстановить размеры окна. Очень полезно когда, пользователь сильно менял форму и из неё «пропали» некоторые реквизиты. Зовет тебя, ты делаешь Alt + Shift + R, он с удивлением смотрит, как это у тебя получилось ��

Как посмотреть код 1с

телефон программиста 1С8(495)005-62-29

skype: live:di-sem

Связь с программистом 1с через телеграм@programmist_1C

Заявка программисту 1СОтправить заявку

Советы программистам 1с при работе с конфигуратором

conf

Подсветка текущего идентификатора

1tekId

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

Выделяются все идентикаторы у которых такое же имя.

Очень удобно для поиска идентификатора по тексту кода.

Отладка под определенным пользователем

2otladkaPodPolz

Позволяет запускать отладку под определенным пользователем.

Незаменимо когда ошибка появляетося только у определенного пользователя или когда пользователю не хватает прав, но неизвестно каких.

Работа с открытыми окнами в конфигураторе

3okna

Позволяет расположить окна в удобном виде.

Выделить их все и закрыть.

Форматирование текста кода

Выделить нужный фрагмент кода и нажать Alt+Shift+F

либо через меню:

4format p2

4format do

4format p

Предположим, вы дорабатываете незнакомую конфигурацию и в каком-то модуле вам попался неотформатированный текст. Вам трудно в нем разобраться и вы хотите улучшить его читаемость, да и вообще сделать более «приличным».
В этом случае вам не нужно вручную двигать строки текста с помощью клавиши Tab, так как это гораздо удобнее и быстрее сделать с помощью форматирования блока текста.
Для этого выделите этот фрагмент текста (или сразу весь модуль – Ctrl + A) и нажмите кнопку Форматировать (Alt + Shift + F) в командной панели Текст.

Вывод списка всех процедур модуля + заготовки предопределенных процедур

5proc

Вернуться в исходное место после команды «Перейти к определению».

Во время анализа кода мы хотим посмотреть что за процедура или функция вызывается. Жмем ПКМ и выбираем перейти к определению и переходим к нужной процедуре/функции.

6perehod1 1

Но после просмотра функции мы хотим вернуться обратно. Для этого жмем «CTRL» + «-«:

6perehod2 2

Посмотреть где используется выделенная процедура/функция

6perehod3

Откуда была вызвана процедура/функция? Стек вызовов.

Допустим что в этой процедуре у нас ошибка мы ставим точку останова, но видим что в процедуру уже поступают неверные параметры.

7steck1

Нужно узнать откуда была вызвана данная процедура. Вызываем стек вызовов:

7steck2

Видим все процедуры из которорых мы перешли к текущей:

7steck3

Вырезать часть кода в отдельную процедуру/функцию

8 1

Мы хотим часть кода вывести в отдельную процедуру чтобы использовать ее в других процедурах.

Для этого выделим нужную часть, вызовем контекстное меню и сделаем так:

8 2

8 3

Закладки и перейти к строке.

Бывает что код достаточно большой и нужно «прыгать» от одного места к другому.

Искать место глазами совсем неудобно.

Лучше воспользоваться следующими инструментами.

1 Переход к строке.

Запоминаем номер строки, он написан в правой нижней части экрана

9 0

Жмем в любом месте этого модуля кнопку или сочетание клавиш

9

В нужной строке жмем Alt+F2 либо через меню

9 1

Переход по закладкам горячие клавиши:

F2 — Следующая закладка

Shift+F2 — Предыдущая закладка

Остановить отладчик до наступления ошибки.

Отладчик будет остановлен на строке на которой будет ошибка.

10 1

10 2

10

Проверим что скажет отладчик.

10 3

и остановит процедуру на нужной строке

10 4

Вычислять выражение не меняя код.

В контекстном меню при остановке отладчика есть команда «Вычислить выражение». Shift+F9

11 1

11 2

В поле «Выражение» мы можем написать любой код и тут же получить ответ. Например:

11 3

Контекстная подсказка по параметрам

podskParam

Принудительно вызвать обычную контекстную подсказку: CTRL+Пробел

При изменении объекта метаданных отключить автоматический поиск ссылок на него.

Инструмент безусловно полезный, но нужен он не всегда.

refact 1

Отключается в Сервис-Параметры. Убрать галочки в группе «Рефакторинг при изменениях в метаданных и формах»:

refact 2

  • Главная
  • Блог
  • В помощь 1с программисту
  • Советы программистам 1с при работе с конфигуратором

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *