Как научиться читать код 1с

Обновлено: 03.07.2024

Рассмотрим один из примитивных типов, с которым приходится сталкиваться разработчикам на платформе 1С 8.3, – Число. В этой статье мы научимся задавать числа в коде, создавать реквизиты с типом число , получать случайное число, округлять числа и получать из числа с дробью целое число.

Тип число в 1С

Задать число в коде просто: нужно какой-то переменной просто присвоить определенное число.

Так задаётся целое число:

А так задаются дробные числа:

Над числами в коде можно выполнять простые арифметические операции: сложение, вычитание, умножение и деление.

Причем, как непосредственно над числами:

Так и над переменными с типом число:

Если нужно инвертировать число, т.е. поставить какому-то уже заданному числу обратный знак (например, было 5, стало -5), то его нужно умножить на -1.

Сделать это можно несколькими способами:

Если нам нужно создать реквизит какого-то объекта, с типом число, то в свойстве Тип реквизита нужно выбрать тип Число. На картинке ниже у справочника создан реквизит с типом Число.

Тип число

А также задать его точность и длину.

Длина и точность типа число

Остановимся на точности и длине подробнее.

Точность – это максимальное количество знаков после запятой.

Длина – это максимальное количество разрядов в числе (включая знаки после запятой).

Например, если длина 5, а точность 3, то максимальное число будет 99,999.

Если длина 5, а точность 0, то – 99999.

А если длинна 3, а точность 3, то – 0,999. Т.е когда длинна равна точности мы не сможем задать число равное 1.

Когда мы в коде задаем переменную с типом Число, то мы не ограничиваем эту переменную по длине и точности, в тоже время для реквизита объекта с типом Число нужно это делать заранее. При разработке вы должны заранее предусмотреть, какие у реквизита числового типа будет длинна и точность.

Точно также, реквизит с типом число нужной длинны и точности можно создать на управляемой форме.

Число на управляемой форме 1С

Случайное число в 1С

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

Рассмотрим, простой пример генерации случайного числа.

В этом случае Число1 будет сгенерировано от 0 до 4294967295 (2^32 -1).

В примере выше метод СлучайноеЧисло без параметров, но у этого метода есть два параметра:

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

Например, в этом случае будет сгенерировано случайное число от 1 до 100.

Округлить число в 1С

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

Число – число, которое будет округляться;

Разрядность – до какого количества знаков после запятой нужно округлить число (если разрядность равна 0, то число будет округлено до целого числа).

РежимОкругления – системное перечисление, которое имеет два значения: РежимОкругления.Окр15как10 – в этом случае 1.5 округляется до 1, РежимОкругления.Окр15как20 – 1.5 округляется до 2. Если этот параметр не задан, то по умолчанию 1.5 округляется до 2

В этом случае будет следующий результат:

Округлить число в 1С

Целое число в 1С

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

Рассмотрим работу этого метод в сравнении с методом округления числа.

Должен получиться следующий результат:

Целое число и округлить число в 1С

Из результата вы видите, что нельзя использовать метод Окр для получения целого числа, он именно округляет и не всегда может дать требуемый результат. Для получения целого числа используйте метод Цел.

Степень числа в 1С

В платформе 1С имеется возможность возвести нужное число в степень. Делается это при помощи метода Pow, который является функцией со следующим синтаксисом.

Рассмотрим ряд примеров:

Степень числа в 1С

Из примеров видно, что мы можем возводить в положительную и отрицательную степень, а также степень может быть дробной.

Функции чисел в 1С

В платформе 1С 8.3 имеется другие функции пот работе с числами , познакомится с ними можно в синтаксис-помощнике. В подразделе Функции работы со значениями типа Число.

Функции работы со значениями типа число

Другие статьи о примитивных типах:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

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

Совет № 1. Учимся работать со справочной информацией.

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

1С программирование: Путь к справке платформы 1С

1С программирование: Справка платформы 1С

А так же синтаксис-помощник конфигуратора 1С

1С программирование: Синтаксис-помощник платформы 1С

1С программирование: Синтаксис-помощник платформы 1С

1С программирование: Синтаксис-помощник платформы 1С

Синтаксис-помощник позволяет получить быстрый доступ к описанию того или иного объекта при помощи закладок «Индекс» и «Поиск». Например, введем в закладке «Индекс» слово «массив», индекс сразу выведет все возможные варианты, где может во встроенном языке использоваться слово «массив»

1С программирование: Использование закладки индекс синтаксис-помощника платформы 1С

Если мы кликнем на какое-то одно слово (например, Массив), то в случае множество одноименных объектов, свойств и методов будет предложен список для выбора.

1С программирование: Список выбора в синтаксис-помощнике платформы 1С

1С программирование: Описание объекта массив в синтаксис-помощнике платформы 1С

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

Подробнее о работе со справкой: видео-урок

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

Совет № 2. Привыкаем использовать отладку

Многие начинающие программисты 1С пренебрегают этим механизмом платформы 1С. А зря! Именно работая с отладкой можно понять, как работает то или иной код, и какие значения возвращает та или иная функция.

Для того, что бы отладка сработала достаточно поставить в конфигураторе 1С точку останова и запустить отладчик при помощи кнопки «Начать отладку» (клавиша F5).

1С программирование: Точка останова и запуск отладки 1С

Для того что бы программа остановилась в точке останова, нужно в пользовательском режиме в 1С: Предприятия выполнить действия, в результате которых сработает код, где установлена точка останова. На рисунке выше мы поставили точку останова в процедуре ОбработкаПроведения модуля документа «Установка цен». Если мы в пользовательском режиме проведем любой документ «Установка цен», то точка останова сработает.

1С программирование: Сработала точка останова в отладке 1С

После этого вы можете или с помощью Табло, или с помощью «Вычислить выражение…» узнать значения той или иной переменной.

Подробнее о работе с отладкой смотрите в моем видео-уроке: Работа с отладкой в конфигураторе 1С

Совет №3. Привыкаем использовать контекстные подсказки

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

Включить контекстные подсказки в конфигураторе 1С можно в параметрах (путь: Сервис – Параметры), на подзакладке «Контекстная подсказка» закладки «Модули»

Программирование в 1С: Настройка контекстной подсказки в параметрах конфигуратора 1С

При помощи контекстной подсказки Вы можете, узнать какие параметры есть у той или иной процедуры или функции.

Программирование в 1С: Контекстная подсказка 1С

А так же узнать какие методы и свойства могут быть у того или иного объекта

Программирование в 1С: Контекстная подсказка 1С

Контекстная подсказка будет вызвана после того, как вы введете с клавиатуры точку, скобку, равно (в зависимости от настроек параметров), а так же после того как вы нажмете комбинацию клавиш Ctrl + Space (Пробел)

Так же не пренебрегайте шаблонами кода. Подробно от том, как с ними работать, можно почитать в статье: Ускоряем свое программирование при помощи шаблонов

Совет №4. Используем конструкторы

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

В платформе 1С есть несколько видов конструкторов.

У документов можно вызвать конструктор движений, ввода на основании и печати.

Программирование в 1С: Конструкторы для документа программы 1С

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

Программирование в 1С: Конструкторы для работы с запросами 1С

А быстро научиться использовать форматную строку для различных примитивных типов можно при помощи конструктора форматной строки. Более подробно о этом полезном конструкторе можно почитать в статье: Конструктор форматной строки

Программирование в 1С: Конструктор форматной строки

Совет №5. Учимся искать, как это сделано в чужом коде

И последний не менее важный совет для начинающих программистов 1С – учитесь читать чужой код. Да это сложно, непонятно и трудно, но если Вы с самого начала будете пытаться осмысливать чужой код, то в дальнейшем этот навык Вам очень пригодиться. Так же чтение чужого кода Вам может подсказать, как правильно использовать тот или иной объект, или как работать с какой-либо функцией (процедурой).

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

Программирование в 1С: Путь к глобальному поиску в 1С

В форме глобального поиска Вы вводите искомое название

Программирование в 1С: Глобальный поиск по текстам в 1С

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

Программирование в 1С: Результат глобального поиска по текстам в 1С

Из результат поиска Вы сможете перейти в нужный модуль и посмотреть как применяется искомый Вами метод (процедура, функция) или объект.

Программирование в 1С: Переход по результату глобального поиска в 1С

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


Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

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

Итак, прежде чем читать чужой код, необходимо понять, зачем мы это делаем, какой результат хотим получить в итоге. Чтение кода - это задача, причём довольно сложная! И без понимания того, какой результат мы хотим видеть, - никак не обойтись.

В моей практике чужой код необходимо читать в следующих ситуациях:

1. Необходимо выполнить небольшую или, наоборот, большую доработку в уже существующем (не типовом) объекте метаданных или во внешней обработке/отчете.

2. Выполняем код ревью. Актуально для опытных специалистов, которым поручают контроль джуниоров. Иногда перекрестный код ревью, чтоб глаз не замыливался.

3. Отдельно выделю доработку типовой конфигурации. Её код усложнён из-за необходимости учитывать большое количество сценариев и стандартов разработки. Универсальный код всегда сложнее анализировать.

4. Вам необходимо провести обновление доработанной кем-то или Вами конфигурации. Зачастую необходимо обновить вообще незнакомую конфигурацию, возможно, Вы с ней не сталкиваетесь по работе. Например, моя конфигурация ЗУП, но мне приходилось обновлять 5 примерно похожих между собой конфигураций УПП 1.3.

5. Отдельно выделю разбор и изменение запросов.

6. Как разобраться в работе программного интерфейса. Как его использовать в своей доработке.

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

Теперь определимся с ожидаемым результатом от наших действий:

1. Доработка выполнена таким образом, чтоб не сломать уже существующие сценарии. Доработка соответствует общепринятым стандартам разработки. Если дорабатывается тиражное решение - стилистика кода соответствует общепринятой.

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

3. Разобрались, как работает типовой код. Определили объекты метаданных, из которых вызывается. Определили сценарии работы кода. Выполнили свои доработки, не нарушив логической целостности кода.

4. Обновили доработанную конфигурацию, перенесли весь дописанный код. Где-то код заменили на типовой. Где-то пришлось заново доработать.

5. Разобрались с запросом. Внесли в него свои доработки. По возможности оптимизировали запрос.

6. Разобрались с программным интерфейсом, включили его в свою доработку.

7. Помогли коллеге, ответили на вопросы, проверили его способ реализации, подсказали правильный путь. Либо всё это сделали без использования коллеги. Исправили все ошибки, либо с нуля выполнили доработку.

Вводная информация, применимая ко всем кейсам:

1. Конечно же, будут попадаться незнакомые процедуры или функции встроенного языка. Их изучают в 2 простых шага:

-- Синтакс помощник расскажет Вам о её предназначении.

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

2. В целом программирование в 1С построено на том, что любая переменная или реквизит имеет определённый тип значения. Набор свойств и методов, доступных для переменной/реквизита, можно найти в синтакс помощнике в разделе, где описан конкретный тип значения. Тип значения конкретной переменной в коде можно посмотреть отладчиком. Узнав тип значения какой-то переменной, Вам может стать понятней код, который написан применительно к переменной.

3. Не нужно никогда изучать код путём прохождения ВСЕГО кода через отладчик. Поверьте, Вы сойдёте с ума и ничего не поймёте! На выходе будет каша в голове. Пользуйтесь поиском по всем текстам, чтоб найти нужное для разбора и отладки место.

4. Возможно, Вам требуется разобраться с каким-то объектом метаданных, с которым Вы никогда не сталкивались. Тут описанные выше методы не подойдут. Вам необходимо поискать статьи, которые описывают теорию об этом объекте и практическое применение объекта. Например, Вы не знаете, как работают Web-сервисы. Найдите статью об этом, скорей всего, статья даже окажется на Инфостарте. Часто авторы статей совмещают теорию с практикой и показывают примеры кода, как это использовать. Если пример можно скачать за 1$m, не жалейте этих денег. Самостоятельно дольше будете писать! И нет, это не скрытая реклама данного ресурса. Это мой опыт, который позволил со многими трудными механизмами разобраться.

5. Не стесняйтесь непонятные вопросы задавать на форумах. Даже если Вас обольют 10 человек грязью, всегда найдётся один, который поможет!

6. Любая конфигурация/обработка/отчет/объект метаданных - это набор сценариев, который заложил в неё разработчик. Прежде, чем пытаться доработать тот или иной кусок кода, необходимо выявить те сценарии, которые уже заложены. Способы выявления сценариев будут раскрыты ниже для каждого кейса.

7. Приучите себя к правилу: Нельзя начинать разработку, пока Вы четко не знаете существующие сценарии и как должен выглядеть сценарий после Ваших изменений. Сценарий - это основа для любой разработки. Писать его нужно ДО кодирования, а не после!

8. Не рекомендую никому вести разработку на "тестовых примерах". Тестовые данные никогда не показывают полную картину. Максимум тестовый пример охватывает 20-30% сценариев, которые необходимо учесть. Задайте себе вопрос: "Кто будет дорабатывать/тестировать остальные 70-80% сценариев"?

Кейс 1. Доработка кем-то придуманного кода. Условимся, что это не код типовой конфигурации.

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

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

2. Если так случилось, что нет ни описания, ни носителя знаний - надо запускать в пользовательском режиме и пробовать использовать доработку.

а. С отчетом всё просто - попробовать разные настройки, посмотреть, какие данные выводит, разные варианты отчета посмотреть.

б. С обработкой сложней:

-- Первое, что надо посмотреть в коде - какие объекты модифицирует обработка. Делаем просто поиск процедуры Записать(). Всё станет очевидно.

-- Далее надо ответить на вопрос: откуда берется список объектов, который меняется. Скорей всего есть запрос.

-- Грамотные разработчики для многоразовых обработок создают промежуточную табличную часть, в которую помещают список изменяемых объектов. Попробуйте определить, что это за список на данном этапе.

-- Если обработку писал не очень грамотный или ему она показалась одноразовой. Список изменяемых объектов нужно посмотреть в коде отладчиком. Обязательно нужно изучить массив обрабатываемых данных!

ВАЖНО: Прежде чем отладчиком смотреть такие обработки, необходимо закомментировать все Записать(), найденные на первом шаге. Это убережет Ваши данные от ненужных изменений.

-- Нужно разобраться с заполнением тех параметров, которые выведены на форме. Для этого смотрим, где в запросах они используются? Некоторые параметры могут быть не используемыми! Это нужно определить на данном этапе и убрать сразу их с формы обработки!

-- Когда уже понятно, откуда взялись данные, какие данные будут модифицироваться. Вам нужно пройти отладчиком несколько циклов по обработке данных. Так Вам совсем понятно станет, что происходит.

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

-- Весь код можно разделить на 2 части: интерфейсный код (управление элементами формы) и объектный код (обработка заполнения, проверки, записи объекта, формирования движений документов, печать). Поэтому первое, что надо сделать - определиться, что Вы планируете доработать - интерфейс или объект.

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

-- С объектным кодом чуть сложней. Надо определиться, какую часть кода Вы хотите изменить (обработка заполнения, проверки, записи объекта, формирования движений документов, печать).

-- Далее Вам необходимо посмотреть на уже заполненные данные. Неважно, какой это объект метаданных, можно вывести запросом все или часть данных с отбором по периоду или какому-то полю (чтоб не повесить сервер). Изучите, какими значениями заполнены реквизиты, особенно, если их тип - Перечисление. Стоит помнить, что перечисления созданы для описания сценариев. Можно по коду посмотреть, прописаны какие-то сценарии по значениям перечислений или это просто настройка, которую в отчете используют.

-- Чтобы разобраться с заполнением, необходимо изучить, куда потом заполненные данные идут? Если это документ, то изучаем движения. Если это регистр сведений - изучаем, где он используется. Так можно выяснить часть сценариев работы.

-- Необходимо понимать, где какой код искать. Печать, заполнение - модуль менеджера. Часть процедур могут быть вынесены в общие модули. Проверка заполнения, запись, проведение - модуль объекта. У регистров вместо модуля объекта используется модуль набора записей. Обычно в модуле набора записей расположен код формирования записей вспомогательных регистров сведений. Не стоит искать код заполнения объекта в форме объекта, хотя иногда и такое ещё встречаю.

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

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

ВАЖНО: В остальных кейсах необходимо пройти те же самые шаги. Поэтому по остальным кейсам буду описывать только отличия от первого.

Кейс 2. Выполняем code review.

Почему кейс 2 идёт после доработки нетиповых решений? Всё потому, что проверяем-то мы не типовую конфигурацию от 1С. А проверяем мы то, что написали наши коллеги. Иногда приходится проверять то, что написали уволенные коллеги или уволенная вся команда))) Т.е. никто не знает, как оно работает, и нигде не описано.

НО! Цель код ревью - проверка соблюдения стандартов разработки 1С. На эту тему написано очень много статей, поэтому подробностей здесь не будет. Коротко опишу, что проверяю сам:

1. Есть в стандартах раздел "Соглашения при написании кода". Этот раздел по сути показывает, грамотный человек писал код или нет. Многие любят излишние сокращения, не любят писать с заглавной буквы, делать пустые строки между блоками и т.д. Выполнение разработчиком этой группы стандартов так же важно, как и грамотная устная и письменная речь. Несоблюдение этих стандартов затрудняет чтение и понимание кода! Да и просто это неуважение к остальным коллегам! Ну и собственно длительно с таким кодером я работать не стану. Пару раз предупреждаю о соблюдении этой группы стандартов, не понял - на выход!

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

3. Далее проверяю вопросы клиент-серверного взаимодействия. Собственно в этой группе стандартов перечислены необходимые проверки. Очень много кода пишут на клиенте, много лишних серверных вызовов, не используется серверный вызов без контекста.

4. Следующее проблемное место в коде - обработка данных (запросы, выборки, транзакции, блокировки).

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

-- При выборке данных часто встречается Запрос.Выполнить().Выгрузить() и дальше обрабатывается таблица. Зачем? Необходимо использовать выборку из результата запроса.

-- Часто встречаются запросы в циклах. Особенно часто они неявные, возникают при вызове программного интерфейса типовых конфигураций в цикле. Иногда пишут свою процедуру/функцию с запросом и используют её потом в цикле. Цикличное обращение к базе данных в несколько раз замедляет работу кода. При количестве итераций более 1000 замедление будет очень заметным!

-- Избыточное использование транзакций (при редактировании формы, к примеру)

-- Неоправданное использование блокировок при выполнении запросов к регистрам накопления. Ведь блокировка нужна только при ОДНОВРЕМЕННОМ обращении нескольких пользователей К ОДНИМ И ТЕМ ЖЕ ДАННЫМ! Но её используют и там, где пользователи жестко разграничены через РЛС. Необходимо на этапе разработки понимать, как будут работать пользователи. Можно по этому вопросу проконсультироваться с архитектором проекта. На всякий случай использовать блокировки НЕЛЬЗЯ!

-- Из неописанного в стандартах разработки. С удивлением для себя обнаружил, что использование следующего кода сильно тормозит работу. В выборке 6000 записей, в таблице, которую обрабатываем 100 000 (сто тысяч). В итоге этот код выполнялся 40 минут!

После того, как данный код был переписан на запрос, заполнение ссылок занимает секунды.

5. В последнюю очередь проверяется группа стандартов "Разработка пользовательских интерфейсов" и "Проектирование интерфейсов 8.3". Список проверок описан в стандартах. Нет цели его здесь повторить. Самое главное это удобное расположение элементов формы, таблиц, команд, итогов. Необходимо располагать самые важные элементы так, чтоб они заполнялись первыми. В табличных частях фиксировать левые колонки, если без прокрутки невозможно просмотреть всю табличную часть. Интерфейс должен быть понятен пользователю и не содержать лишних элементов, которые в текущем сценарии не используются.

6. Без привязки к стандартам проверяю выбранный способ решения задачи. Многие коллеги настолько боятся менять типовые объекты, что копируют их целиком и меняют скопированный объект! В этот момент коллеги забывают, что скопированный объект работает на программном интерфейсе конфигурации, в которой он создан. Если через сколько-то релизов сильно изменят программный интерфейс, то скопированный объект перестанет работать и его придётся обновлять! Так почему не доработать сразу типовой объект?!

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

7. Также по коду часто видно, отработаны все сценарии? или разработчик схалтурил и сделал лишь часть работы. Понять это можно, анализируя условия, которые есть в доработанных процедурах и функциях. Часто встречаю, что из нескольких веток условия доработка есть только в одной ветке. А кто остальные будет делать?

8. Очень рекомендую проводить дополнительный (промежуточный) этап проверки Desing review. Этот этап проводится когда разработчик выполнил примерно треть своей работы. Он уже разобрался в коде, который ему требуется менять, уже знает, какие запросы и как будет менять, "накидал", как будет выглядеть интерфейс. Цель этого этапа на старте разработки понять, что разработчик выбрал правильный путь решения с одной стороны, архитектор/аналитик верно поставил задачу с другой стороны.

Главная причина срыва сроков в разработке - не все сценарии учтены. Так это или нет позволяет понять промежуточная проверка. Если мы находим новые сценарии или видим, что текущие описаны неверно, можем сразу об этом сообщить руководству/заказчику, согласовать новые сроки и учесть бОльшее количество сценариев при разработке.

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

Остальные части доступны по ссылкам:

Добавляйте себе в избранное, ставьте "+". Статья разрабатывалась 1,5 месяца, а опыт копился 18 лет!

Также напомню о своих предыдущих публикациях, в особенности про статью об архитекторе. Текст статьи полностью переработан, сглажены углы. Будет интересно, даже если уже читали. Вот ссылки:

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

Для того чтобы программа остановилось на определенном месте нужно установить точку останова. Для этого необходимо поставить курсор на нужную строку и кликнуть мышкой по левому полю. Слева появился красный кружок. Точку останова можно поставить используя главное меню

Установка точки останова используя главное меню конфигуратора 1С

Или используя контекстное меню

Установка точки останова используя контекстное меню конфигуратора 1С

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

Обращаю Ваше внимание, что точку останова необходимо устанавливать на том месте кода, где написан какой-нибудь оператор. Либо объявлены неявно переменные.

Пять эффективных инструмента отладки

Что делать дальше?

Есть несколько вариантов, рассмотрим их все по отдельности.

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

Точка останова, шагнуть через, клавиша отладки F10

Имейте в виду, что если отладка передает управление какой-нибудь интерактивной функции, где требуется вмешательство пользователя, то либо сразу Вас программа перекинет на 1С Предприятие, либо отладка зависнет, и тогда в 1С Предприятие придется перейти самостоятельно.

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

Точка останова, шагнуть В, клавиша F11

Если нам необходимо выйти из какой-то процедуры или функции, не дожидаясь её выполнения, то необходимо нажать кнопку «Шагнуть из» или держа клавишу Shift нажать клавишу F11.

Точка останова, шагнуть из, клавиши Shift + F11

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

Точка останова, кнопка продолжить отладку, клавиша F5

Второй способ: установить курсор на нужную и нажать на кнопку «Идти до курсора», либо держа клавишу Shift нажать клавишу F10.

Точка останова, кнопка идти до курсора, клавиши Shift + F5

Если работая с кодом Вы заблудились в нём и хотите быстро вернуться к текущей строке отладки, то достаточно нажать кнопку «Текущая строка»

очка останова, кнопка текущая строка

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

Открыть его можно несколькими способами.

Первый: используя главное меню.

Главное меню – отладка - табло

Второй: используя панель «Отладка конфигурации».

Табло в панели отладка конфигурации

Третий: используя комбинацию клавиш Ctrl + Alt + W.

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

Примитивные переменные в табло отладки 1С

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

Переменная объектного типа в табло отладки 1С

В табло можно вносить и функции (как собственные, так и глобального контекста), чтобы узнать, что они будут возвращать.

Использование функций в табло отладки 1С

Узнать значение переменной можно и без использования табло. Достаточно выделить эту переменную и нажать на кнопку «Вычислить выражение» (комбинация клавиш Shift + F9).

Вызов окна Вычислить выражение

Вызов окна Вычислить выражение

Окно Вычислить выражение

Посмотрите наглядную работу с отладкой в этом видео.

Оценка производительности работы кода в 1С


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Читайте также: