Зачем и как читать чужой код? Какой результат ожидаем получить? Основные подходы

Публикация № 1686800 06.02.23

Разработка - Рефакторинг и качество кода

Данная статья является кратким содержанием статей цикла "Как читать чужой код". Цель такой публикации: создать чек-лист различных подходов для чтения непонятного кода. Более подробно каждый из методов можно прочитать в исходной статьей. Последовательность изложения материала полностью совпадает с исходными статьями, и разделена на 4 части.

Главная цель всего цикла статей - устранение парадокса: во всех вакансиях есть требование "уметь читать чужой код", но нигде этому не учат.

 

Раздел 1. Общие вопросы. Доработка чужого кода. Code review.

 

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

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

 

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

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

В результате:

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

Если дорабатывается тиражное решение - стилистика кода соответствует общепринятой.

2. Выполняем код ревью. 

В результате:

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

Проверили синтаксис написанного кода, указали на опечатки и лишние сокращения.

3. Дорабатываем типовую конфигурацию. 

В результате:

Разобрались, как работает типовой код. Определили объекты метаданных, из которых он вызывается.

Определили сценарии работы кода. Выполнили свои доработки, не нарушив логической целостности кода. 

4. Выполняем обновление доработанной конфигурации. 

В результате:

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

Где-то код заменили на типовой. Где-то пришлось заново доработать.

5. Разбор и изменение запросов.

В результате:

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

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

В результате:

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

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

В результате:

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

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

 

Рассмотрим вводную информацию, применимую ко всем кейсам:

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

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

-- Поиск по всем текстам в типовой конфигурации покажет множество примеров по использованию.

Эти примеры можно копировать в свой код.

2. Программирование в 1С построено на том, что любая переменная или реквизит имеет определённый тип значения.

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

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

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

3. Не использовать отладчик для прохождения ВСЕГО кода. Искать место разбора кода через поиск по всем текстам.

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

Необходимо поискать статьи, которые описывают теорию об этом объекте и практическое применение объекта.

Например, Вы не знаете, как работают Web-сервисы. Найдите статью об этом, скорей всего, статья даже окажется на Инфостарте.

Часто авторы статей совмещают теорию с практикой и показывают примеры кода.

Если пример можно скачать за 1$m, не жалейте этих денег. Самостоятельно дольше будете писать!

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

5. Непонятные вопросы необходимо задавать на форумах.

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

6. Любой объект метаданных - это набор сценариев, который заложил в него разработчик.

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

7. Сценарий - это основа для любой разработки. 

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

8. Не использовать при разработке "тестовые примеры".

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

 

Рассмотрим основные приемы доработки чужого (не типового) кода. 

Рассмотрим самую страшную ситуацию - доработать нужно написанное с нуля решение/обработку/отчет, либо "партнёрские решения". 

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

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

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

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

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

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

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

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

-- При отсутствии табличной части список обрабатываемых объектов смотрим в коде отладчиком.

Обязательно нужно изучить массив обрабатываемых данных!

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

-- Разбираемся с заполнением параметров, выведенных на форму. Смотрим, где в запросах они используются?

Некоторые параметры могут быть не используемыми! Определяем на данном этапе и убираем их с формы обработки!

-- Проходим отладчиком несколько циклов по обработке данных. Так совсем понятно станет, что происходит.

в. Чужие доработки без описания - самый сложный случай.

Финальная цель - разобраться со сценариями работы и модифицировать их. Для этого:

-- Делим код на 2 части: интерфейсный (управление элементами формы) и объектный

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

-- Для интерфейсного через поиск по всем текстам (или по одному модулю) ищем код, управляющий поведением элемента формы.

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

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

-- Смотрим на уже заполненные данные. Неважно, какой это объект метаданных.

Изучаем, чем заполнены реквизиты, особенно, если их тип - Перечисление. Ведь этот тип создан для описания сценариев.

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

-- Для разбора алгоритма заполнения изучаем, куда заполненные данные идут?

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

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

-- Непонятные куски кода смотрим в отладчике.

4. Ищем объектный код в правильных местах:

-- Печать, заполнение - модуль менеджера. Часть процедур могут быть вынесены в общие модули.

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

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

-- Не стоит искать (как и писать) код заполнения объекта в форме объекта.

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

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

 

Рассмотрим основные аспекты проведения code review. 

Цель код ревью - проверка правильности пути решения задачи и соблюдения стандартов разработки 1С. 

На эту тему написано много статей, поэтому кратко опишу, что проверяю сам:

1. Раздел "Соглашения при написании кода". Раздел  показывает грамотность разработчика. 

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

Несоблюдение этих стандартов затрудняет чтение и понимание кода! Можно автоматизировать проверки через Sonar Qube. 

 

2. Группа стандартов "Создание и изменение объектов метаданных".

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

 

3. Группа стандартов "Вопросы клиент-серверного взаимодействия".

Цель - снижение нагрузки на клиентскую часть приложения, оптимизация вызовов сервера. 

 

4. Группа стандартов "Разработка пользовательских интерфейсов" и "Проектирование интерфейсов 8.3".

Главное - удобное расположение элементов формы, таблиц, команд, итогов. 

 

5. Группа стандартов "Обработка данных" (запросы, выборки, транзакции, блокировки). Здесь укажу основные проблемы:

-- Неверное использование индексов.

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

-- Вложенные запросы к довольно большим таблицам. 

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

-- Запросы в циклах. Особенно часто они неявные! Возникают при вызове программного интерфейса в цикле. 

-- Избыточное использование транзакций

-- Избыточное использование блокировок при выполнении запросов к регистрам накопления.

Блокировка нужна только при ОДНОВРЕМЕННОМ обращении нескольких пользователей К ОДНИМ И ТЕМ ЖЕ ДАННЫМ, а не к одному и тому же регистру! 

 

6. Без привязки к стандартам проверяю выбранный способ решения задачи.

-- Рекомендую проводить промежуточный этап проверки Design review.

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

Цель этого этапа на старте разработки понять: выбран правильный путь решения и задача поставлена верно. 

Основные проблемы на этом этапе:

-- Отработаны не все сценарии. Из нескольких веток условия доработка есть только в одной ветке. А кто остальные будет делать?

-- Копирование типовых объектов целиком и изменение в скопированном объекте! 

 

Программный интерфейс этого объекта перестанет работать после обновления.

-- Копирование важных процедур/функций общих модулей и доработка в скопированном модуле.

-- Неверно доработан запрос. Либо вообще не в тот запрос внесены изменения.

 

Выводы по итогам код-ревью:

Главная причина срыва сроков при внедрении - не все сценарии учтены. 

Главная проблема сопровождения - код, не соответствующий стандартам разработки.

"Оно же работает!" - так себе подход.

 

Исходная статья: Как читать чужой код? Часть 1. Общие вопросы. Доработка чужого кода. Code review

 

Раздел 2. Доработка типовой конфигурации. Обновление доработанной типовой конфигурации.

 

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

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

Т.к. конфигурация типовая, можно найти огромное количество информационных источников.

 

Подходы для разбора и доработки типовой конфигурации.

Рассмотрим последовательность изучения типового решения:

1. Предметная область. Наличие знаний по предметной области позволяет полноценно разобраться в происходящих бизнес-процессах и выявить все сценарии работы. Она состоит из:

-- Характерных для предметной области бизнес-процессов

-- Законодательства

-- Локальных нормативных актов

 

2. Архитектура решения. Рассмотрим порядок изучения каждой из подсистем:

-- Какие операции выполняются в рамках подсистемы.

-- Какая справочная информация используется. Какие особенности заполнения справочной информации.

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

-- Какая отчетность, на основании каких данных, формируется.

Глубокий анализ требуется только при решении сложных задач, требующих больших доработок.

 

3. Назначение объектов метаданных.

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

-- Для мелких задач - это разбор конкретного объекта метаданных. 

-- Для некоторых задач не имеет значения, в какой подсистеме этот объект метаданных.

Важно, на основании каких данных объект заполняется, и какие данные объект меняет. 

 

4. Сценарии работы - основа любой разработки! 

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

 

5. Работа интерфейса. 

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

-- Учитываем наличие динамически (программно) создаваемых реквизитов.

-- Учитываем наличие пустых групп в дереве реквизитов управляемой формы. Например, "ПодписиГруппа"  или "ГруппаИсправление".

-- В неучтённых ситуациях появляются ошибки: неверно отображается форма, программная ошибка!

 

6. Программный код. Изучение программного кода позволяет:

-- Понять каждый в отдельности сценарий работы.

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

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

Изучаем входящие параметры и возвращаемое значение.

-- Необходимо локализовать место, которое требуется доработать. Не нужно изучать сценарии для всей страны. 

 

Мифы и подсказки при обновлении доработанной типовой конфигурации.

Миф №1. Не нужно дорабатывать типовую конфигурацию, иначе не сможем её потом обновлять. Опровержение:

-- Дорабатываем грамотно, соблюдаем стандарты разработки.

-- Не создаем дубли типовых объектов метаданных для изменения.

 

Миф №2. Нельзя дорабатывать формы типовых объектов, будет сложно их обновить. Опровержение:

-- Перенос новых реквизитов на обновленную форму происходит через Скопировать + Вставить. Они не создаются с нуля!

-- Не стоит добавлять новые элементы на форму программно! Так модули остаются типовыми. 

 

Миф №3. Обновить конфигурацию может только самый опытный сотрудник. Опровержение:

-- 15 лет назад обновил сильно переписанную Бухгалтерию 7.7 за месяц, имея опыт работы в регионе 3,5 года. 

-- Отсутствие страха и наличие системы переноса доработок помогут.

 

Подсказки:

Подсказка №1. При пропуске релизов, обновляем сразу на последний! 

Многие при пропуске 5-10 релизов обновляются последовательно 5-10 раз! Причины:

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

-- Не получится сохранить СФ из-за большого количества изменений... При сохранении возникнут какие-то конфликты в данных. 

-- Возникнут проблемы с объектами с префиксом в названии "Удалить". 

 

Эти вопросы можно продумать заранее. Решение есть:

-- Определить релизы, в которых удаляются объекты с префиксом "Удалить".

-- Составить список удаляемых объектов и объектов преемников. 

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

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

-- В один заход обновляем остальные объекты на последний релиз.

 

Подсказка №2. Выполнять обновление в режиме "Показать дважды измененные объекты". 

-- Обновить требуется только объекты метаданных, которые были доработаны и Вами и вендором.

-- Объекты не попадающие под это условие автоматически выделяются.

-- Эти объекты считаем уже обновлёнными!

 

Подсказка №3. Необходимо создать несколько баз. Назначение баз:

База 1. Копия до обновления. Смотрим код и состояние форм до перехода на новый релиз. 

База 2. Типовая конфигурация старый релиз. Проверяем исходный код до доработок. Не все отмечают границы своих доработок.

База 3. Типовая конфигурация новый релиз. Смотрим исходный код в новом релизе. Рекомендуется использовать демо-базу для тестирования.

База 4. Обновляемая база. В этой базе будет новая конфигурация с выполненными ранее доработками. 

База 5. Типовая конфигурация старый релиз для сравнения. Запускаем сравнение/объединение с конфигурацией нового релиза.

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

 

Исходная статья: Как читать чужой код? Часть 2. Доработка типовой конфигурации. Обновление доработанной типовой конфигурации

 

Раздел 3. Разбор и доработка запросов.

 

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

Классифицируем задачи по доработке запросов:

1. Запрос выдает не весь набор данных. Задача звучит так: Раньше работало нормально - сейчас неверный результат заполнения...

2. Добавить "несколько полей". 

3. Добавить в результат запроса дополнительный набор данных.

4. Оптимизация работы запроса.

5. К существующему запросу добавить новый регистр(ы). 

 

Как разобрать и доработать запрос.

Кратко о запросах:

1. Главные аналогии по запросам:

-- Результат запроса - это таблица. Получилась она из других таблиц.

-- При работе с запросами должна быть ассоциация работы с Excel.

-- Условия запроса - это фильтр, который накладывается как в Excel.

 

2. При работе с большими таблицами (много колонок и много строк),

-- Не пытаемся представить результат запроса в голове!

-- Сохраняем в Excel и анализируем данные там.

-- В Excel используем наложение фильтров (включается Данные->Фильтры->Автофильтр) . 

 

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

-- Для переменной с типом РезультаЗапроса, нажимаем Shift+F9 и пишем РезультатЗапроса.Выгрузить(). 

-- Для переменной с типом ВыборкаИзРезультатаЗапроса, пишем Выборка.Владелец().Выгрузить(). 

-- Для временных таблиц нажимаем Shift+F9 и пишем:

Запрос.МенеджерВременныхТаблиц.Таблицы[<НомерТаблицы>].ПолучитьДанные().Выгрузить()

-- Таблицу необходимо сохранить как печатную форму через Shift+F9, у Вас должен быть тип ТаблицаЗначений.

Далее F2 - показать значение. Далее справа вверху пиктограмма "Вывести список". 

-- Обязательно изучаем содержимое всех таблиц запроса.

Изучаем, какие измерения, ресурсы, реквизиты заполнены и, главное, какими значениями.

 

4. Способы наложения условий в запросах. 

Условия накладываются в следующей последовательности:

-- В параметрах виртуальных таблиц.

-- В связях между таблицами.

-- Условия в секции после слов "ГДЕ" и "ИМЕЮЩИЕ". 

ВАЖНО: Условия в секции «ГДЕ» накладываются на результирующую таблицу

 

5. Изучим главную таблицу запроса. Она всегда слева и в тексте запроса и в конструкторе запросов.

Если таблица виртуальная, то вот 3 действия для её разбора:

-- Делаем отдельный запрос без соединений и без блока условий "ГДЕ". Просматриваем и анализируем данные результата запроса.

-- Для виртуальной таблицы стираем параметры виртуальных таблиц. Все кроме периода.  

-- Если виртуальная таблица не известна, изучаем назначение в статьях! (ФактическийПериодДействия)

 

6. Изучим влияние условий в секции "ГДЕ" на результат запроса.

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

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

-- Включаем по одному условию. Проверяем, пропали нужные записи? 

-- Как только пропали записи - внимательно изучаем и аккуратно дорабатываем условие. Контролируем результат.

 

7. Анализируем соединения. Самое простое - ЛЕВОЕ. Левое соединение не уменьшает количество записей.

НО! Могут появляться дубли и значение NULL. Их поиск - одна из задач для разработчика.

Чуть сложнее ВНУТРЕННЕЕ. 

ПРАВОЕ - не используется согласно стандартов разработки.

ПОЛНОЕ стоит использовать в исключительных случаях. Возникает много значений NULL

 

8. Действия для поиска дублей:

-- ЛЕВОЕ СОЕДИНЕНИЕ - это означает, что к левой таблице присоединяются все записи правой таблицы, которые удовлетворяют условиям связи. Одной записи левой таблицы могут соответствовать несколько записей правой таблицы.  

-- Для устранения дублей необходимо проанализировать правую таблицу и найти ещё одно поле для связи. 

-- Иногда дубли - следствие использования не всех ключевых полей в условиях связи.

Устраняем через "ВЫБРАТЬ РАЗЛИЧНЫЕ" или "СГРУППИРОВАТЬ ПО".

 

9. Особенности "ВНУТРЕННЕЕ СОЕДИНЕНИЕ":

-- Используется для фильтрации данных.

-- Иногда используют вместо условий в конструкции "ГДЕ". Это часто приводит к потере нужных записей. 

-- Для больших таблиц  для проверки запросов рекомендую ЛЕВОЕ СОЕДИНЕНИЕ, лишние записи фильтровать условием НЕ ЕСТЬ NULL. После проверки заменить на ВНУТРЕННЕЕ СОЕДИНЕНИЕ

-- Такая проверка позволяет проверить правильность условий в связях. 

 

10. Особенности конструкции ПОЛНОЕ СОЕДИНЕНИЕ:

-- Приводит к появлению "лишних" записей и полей со значением NULL.

-- Конструкцию ПОЛНОЕ СОЕДИНЕНИЕ использовать в крайних случаях.

 

11. Особенности конструкции ОБЪЕДИНИТЬ ВСЕ:

-- Объединяет таблицы с однотипной информацией.

-- Количество и тип значения полей должны совпадать.

-- NULL возникает если в одной из таблиц не указано одно из полей.

Значение NULL - чаще всего ошибка! 

-- "ОБЪЕДИНИТЬ" без слова "ВСЕ" не добавляет записи, которые уже есть. Равносильно "СГРУППИРОВАТЬ ПО" по всем полям.

-- Если в запросе с "ОБЪЕДИНИТЬ ВСЕ" много объединяемых запросов, то добавляем во все запросы первым поле "НомерЗапроса" для проверки. 

 

ВАЖНО:

ВСЕ поля запроса при использовании "ПОЛНОЕ СОЕДИНЕНИЕ" обрабатываем функцией ЕСТЬNULL.

При использовании "ЛЕВОЕ СОЕДИНЕНИЕ", все поля из правой таблицы обрабатываем функцией ЕСТЬNULL.

При использовании "ВНУТРЕННЕЕ СОЕДИНЕНИЕ" значение NULL появиться в запросе не может!

При использовании "ОБЪЕДИНИТЬ ВСЕ" при отсутствии поля в таблице, подставляем пустое значение нужного типа

 

Приёмы для разбора запросов:

1. Запрос необходимо разбирать "с конца". Не пытаться понять весь запрос! Задача - найти место, требующее доработки. 

 

2. Понять, где используется результат запроса? Его используют так:

-- Заполнение таблиц/табличных частей

-- Формирование движений

-- Проверка правильности данных

-- Для отчетов и регламентированной отчетности.

 

3. Проверяем в отладчике каждую временную таблицу/запрос. 

 

В этом Вам поможет вот эта обработка: Отладка временных таблиц и типа ТаблицаЗначений

 

4. Динамический запрос из разных процедур ищем там, где он собран полностью, и смотрим полный текст запроса. 

 

5. Для поиска места создания временной таблицы в поиск по всем текстам пишем строку: ПОМЕСТИТЬ <ИмяВременнойТаблицы>. 

 

Осталось рассмотреть особенности разбора запроса для его оптимизации.

1. Конечно, самым идеальным вариантом будет анализ плана запроса! НО! Этим механизмом далеко не все владеют!

 

2. Заменяем вложенные запросы на временные таблицы. Причины и ограничения:

-- Выбирается неоптимальный план выполнения запроса.

-- Не обращаться к физическим либо виртуальным таблицам. Обращаться к временным таблицам.

-- Для физических/виртуальных таблиц важен размер - до 1000 записей. 

-- Для временных таблиц аналогичные требования.

 

3. Без надобности не использовать таблицу ОстаткиИОбороты.

 

4. При наложении условий и связей:

-- Не использовать конструкцию ИЛИ. Она отключает использование индексов.

-- Условия и связи должны накладываться по индексированным полям.

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

 

5. Не использовать разыменовывание полей. Делать явное ЛЕВОЕ СОЕДИНЕНИЕ. 

 

6. Разыменовывание полей составного типа ЗАПРЕЩЕНО! 

 

7. Для виртуальных таблиц не использовать периодичность Регистратор и Запись. Это должно быть обосновано. 

 

Главное правило: соблюдайте стандарты разработки 1С и проблем не будет. Это работает в 90% случаев.

 

Исходная статья: Как читать чужой код? Часть 3. Разбор и доработка запросов

 

Раздел 4. Программный интерфейс. Исправление чужих доработок.

 

Как разобрать программный интерфейс и его параметры:

1. Изучаем описание экспортной процедуры/функции, которое является обязательным. Изучаем назначение и тип значения параметров. 

2. Программный интерфейс БСП описан на сайте ИТС.

3. Изучаем примеры вызова программного интерфейса в типовой конфигурации.

Обращаем внимание на параметры, тип и значение заполнения. 

4. Используем отладчик для изучения и адаптации кода.

5. Изучаем все временные таблицы программного интерфейса.

6. Нередко использую не результирующую таблицу, а промежуточные!

7. Экспортные методы служебного программного интерфейса также допустимо использовать.

 

Как быстро переделать чужую работу.

Рассмотрим ситуацию, когда сложную задачу кому-то поручили, а он не справился!

Или сделал нереально криво с огромным количеством ошибок.

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

1. Техническое задание

2. Список сценариев работы. 

3. Аналитик по задаче.

4. Набить тестовых примеров в базу. 

5. Пообщаться с архитектором. Выяснить, что не так и каковы ожидания. 

6. Всё, что выяснили - ОБЯЗАТЕЛЬНО ЗАПИСАТЬ! 

 

Действия для ускорения разработки:

1. Выяснить у архитектора правильный путь решения задачи. 

2. Совместно с аналитиком протестировать доработку.  

3. Спросить более опытных коллег.

4. Если в процессе кодирования столкнулись с непониманием кода... 

Уже рассмотрели много способов в нём разобраться!  

 

Исходная статья: Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок

 

Другие полезные статьи:

Я - ЗУПер! Часть 1. Компетенции сотрудников.

Ни в ЗУП ногой!? А мне нравится! Часть 4. Главное - правильный перенос данных!

Ни в ЗУП ногой!? А мне нравится! Часть 1. Главные сложности решения, что отталкивает

Описываем ошибки правильно. Правило трех вопросов

 

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. maksa2005 409 06.02.23 11:58 Сейчас в теме
"уметь читать чужой код"
Прочитал код 1сников от ЗУП, БП т.п. нормально. читабельно
2. biimmap 1133 06.02.23 13:55 Сейчас в теме
(1)
ЗУП, БП т.п. нормально. читабельно


Да настанет судный день, когда типовые конфигурации станут не читабельными)))
3. пользователь 07.02.23 05:34
Сообщение было скрыто модератором.
...
4. pavlov_dv 07.02.23 06:53 Сейчас в теме

6. Без привязки к стандартам проверяю выбранный способ решения задачи.

-- Рекомендую проводить промежуточный этап проверки Desing review.


Наверное речь про Design review?
5. biimmap 1133 07.02.23 11:21 Сейчас в теме
(4)
Наверное речь про Design review


всё верно! исправлю опечатку
6. starik-2005 2834 07.02.23 12:33 Сейчас в теме
А я вот все никак не доберусь. Или слишком много получается, или не получается объяснить. В первом случае читатель столкнется с информационным сопротивлением, во втором случае ничего не поймет. Может быть однажды дума выдумается и напишется.
7. biimmap 1133 07.02.23 13:18 Сейчас в теме
(6) поэтому на мой взгляд и нужны 2 варианта! Короткий вариант как замануха, или для тех кто не любит много символов... А длинный вариант для тех кто всё таки любит читать.
8. пользователь 07.02.23 19:12
Сообщение было скрыто модератором.
...
9. vipetrov2 08.02.23 05:37 Сейчас в теме
Описаны очевидные вещи, когда надо анализировать чужой код, который находится в 3 - 5 функциях.
В реальности такие дебри бывают.
Что делать если код выполняется в несколько потоков? Как тестировать?
Что делать если вложенных уровней вызовов 20 штук?
Особенно повеселило: "Узнать тип переменной...". Ага в нетипизированном языке программирования узнать тип. А что вы будите делать с массивом, в котором еще 3 - 5 уровней массивов? Или хотя бы в функцию передается форма и там столько накрутят.
Что делать, если запросы формируются программно, с рекурсией и 10 уровнями вложенных функций?
Это все сложные вопросы, здесь нужно еще формировать культуру написания сложного кода, шаблоны.

Что бы со всем этим работать, нужен инструментарий.
10. biimmap 1133 08.02.23 11:43 Сейчас в теме
(9) неплохие вопросы... Давай разберем по пунктам:


(9)
В реальности такие дебри бывают.


Если понимать, что любые дебри - это набор простых кусков кода, то к каждому из кусочков кода нужно применить какой-то из описанных способов разбора кода. А уж какие бывают дебри рассказывать ЗУПеру с опытом в 15 лет нет смысла!


(9)
Что делать если вложенных уровней вызовов 20 штук?


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


(9)
Узнать тип переменной


Что значит не типизированный язык??? Здесь любая переменная в коде имеет какой-то тип значения. И когда через Shift+F9 смотришь её тип, становится понятней, что с этим можно сделать.

Какая разница сколько уровней у массива? Открой последний и посмотри тип значения элементов?! Где здесь противоречие?



(9)
Что делать, если запросы формируются программно


Разбору запросов посвящен весь третий раздел статьи. + есть в более подробном виде статья. В конце раздела ссылка на неё добавлена. Отвечу по сути вопроса:

Нужно найти место, в котором собран финальный запрос. Получить готовый текст запроса. Этот текст запроса закинуть в конструктор запроса и доработать. Потом уже когда стало ясно, что результат получился, нужно по именам временных таблиц найти то место, которое доработано тобой, и уже туда внести свои правки. Описанный подход для ЗУПа работает "на УРА"! Если есть желание изучи подробней третью статью.



(9)
нужно еще формировать культуру написания сложного кода


чаще всего достаточно просто изучить и соблюдать стандарты разработки. На это ссылаюсь в статье как на этапе Code review, так и в статье про разбор и доработку запросов.

Ну и главные выводы по Вашим вопросам:
1. Никто не говорил, что чтения кода - простой процесс! Именно поэтому и написаны 4 большие статьи! Эта статья - выжимка тезисов, ключевых моментов
2. Чужой код зачастую не могут читать даже люди с опытом 5 и более лет. Много раз это встречал на практике!
3. Систематизация подходов помогает абсолютно в любой сфере. В т.ч. и при чтении кода.
11. Virikus 60 13.02.23 15:49 Сейчас в теме
Что делать если вложенных уровней вызовов 20 штук?


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


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

См. также

Ревьювер. Инструмент для проведения code review

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

16.05.2023    2561    leobrn    11    

46

Применение cтандартов и методик разработки конфигураций на практике

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

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

15.05.2023    3908    improg    54    

57

5 недостатков кода, из-за которых его сопровождение превращается в ад

Рефакторинг и качество кода Бесплатно (free)

О сопровождаемости кода. Коротко и в легкой форме. Какие проблемы с кодом бывают, как их решать.

27.04.2023    1679    wonderboy    18    

9

Анализ контекстных вызовов

Инструментарий разработчика Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

11.03.2023    1613    1    Sirruf    0    

3

SonarQube: про объемы, ветки, покрытие кода и интеграцию с Gitlab

DevOps и автоматизация разработки Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Опыт применения SonarQube в нескольких командах. Плюс некоторые тонкости: уменьшение объемов базы SQ, интеграция, покрытие кода.

26.02.2023    2588    kraynev-navi    10    

47

Отладка временных таблиц и типа ТаблицаЗначений

Инструментарий разработчика Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Бесплатно (free)

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

01.02.2023    4368    119    biimmap    23    

46

Как проверять код на языке 1С с помощью BSL Language Server

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Некоторые разработчики на платформе 1С не проверяют свой код ни на соответствие стандартам 1С, ни на самые распространённые ошибки кодирования. И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

13.01.2023    3894    aleksei_adamov    10    

45

Без комментариев!

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

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

05.01.2023    5413    ardn    161    

40

Оптимизация хардкода

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

07.12.2022    1750    1    shard    44    

5

Правила работы с транзакциями 1С

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Список правил при работе с транзакциями из BSL Language Server и SonarQube 1C (BSL) Plugin. Переработка и осмысление материала.

01.12.2022    4901    kuzyara    42    

78

Как избавиться от большого количества комментариев в коде с использованием EDT + Git

Рефакторинг и качество кода DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Публикация освещает вопрос улучшения качества и читабельности кода путем отказа от излишних комментариев. Рассматривается пример из опыта работы команды разработки на EDT + Git. Команда работает в EDT меньше года. Конфигурация сильно доработана и не обновляется типовыми релизами.

15.11.2022    1147    shastin87    5    

9

Вскрытие статического анализа кода проектов 1С

Рефакторинг и качество кода Бесплатно (free)

Для анализа кода многие используют SonarQube с плагинами для 1С, 1С: АПК и т. д. Но не многие знают, как все это работает. Олег Тымко на конференции Infostart Event 2021 Post-Apocalypse рассказал о внутреннем устройстве статического анализа кода и рассмотрел интересные ошибки, которые можно найти в проектах на 1С.

18.10.2022    3112    olegtymko    7    

22

Рефакторинг и реинжиниринг в повседневной практике

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В этой статье будут затронуты многие темы. Использование WS ссылок, HTTP запросов, асинхронных запросов к внешним сервисам, работа с XML, методики интеграции. Но лишь попутно. Для наглядности. На технических вопросах реализации останавливаться не буду. Все примеры работы с этими объектами есть в коде. Файлы обработки и расширения доступны. Главная цель - рассмотреть рефакторинг и реинжиниринг как инструменты для достижения вполне конкретных практических целей.

20.06.2022    1316    user1374747    0    

7

Модульность в 1С – как следовать принципам DRY в реалиях 1С: Предприятие 8.3

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Принцип DRY – Don't repeat yourself (не повторяйся) – один из классических принципов программирования. Краеугольным камнем реализации этого принципа является модульная архитектура, которую можно реализовать в 1С с помощью расширений. Но экосистемы модулей общего назначения, сравнимой с существующими в других языках, в 1С пока что нет. О том, как спроектировать архитектуру таких модулей и управлять ими с помощью менеджера пакетов, на митапе «Путь к идеальному коду» рассказал технический директор компании «А1» Арсений Геращенко.

03.06.2022    3164    Enigma    3    

22

Красота разработки в 1С, или художественная верстка кода

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рекомендации по верстке и организации кода в 1С, которые я вывел для себя. P.S. Нет, это не про комментарии и номера версий.

02.06.2022    7680    TimofeySin    67    

65

Проверка программного кода посредством BSL LS

Рефакторинг и качество кода Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Во время разработки необходимо следить за качеством кода и соответствием его стандартам. Да, есть SonarQube, но его использование не всегда удобно. Проверка будет происходить только после того, как код пушится в git и делается пул реквест, что увеличивает время обнаружения ошибок Для решения таких проблем и была создана эта обработка. Она позволяет проверять код практически на лету. Достаточно скопировать текст модуля и вставить его в соответствующее поле обработки, задать параметры проверки (при необходимости) и запустить проверку.

1 стартмани

30.05.2022    2903    6    burlakov    3    

9

Мастер-класс SonarQube. В омут с головой

Рефакторинг и качество кода Бесплатно (free)

Поговорим про SonarQube – не только о том, что он может дать, но и о том, как его установить, быстро запустить и произвести в нем базовые настройки.

19.05.2022    11643    nixel    84    

132

Как выжить, если у тебя в базе 1С 50+ расширений

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Расширения – это простой способ делать доработки на лету. Но администрировать большое количество расширений и не допустить бардак – очень сложно. О том, как выжить в такой ситуации, реализовать управление доработками и установкой актуальных версий расширений, на митапе «Путь к идеальному коду» рассказал Юрий Былинкин – архитектор 1С в компании Аскона.

16.05.2022    6161    ardn    44    

56

Phoenix BSL: правим ошибки "не отходя от кассы"

Инструментарий разработчика Рефакторинг и качество кода Бесплатно (free)

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

11.05.2022    4661    mas_kot    11    

46

Про простой и понятный код

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

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

03.12.2021    5525    q_i    161    

71

Стек технологий для 1С

Инструментарий разработчика Рефакторинг и качество кода Групповая разработка (Git, хранилище) Механизмы платформы 1С Бесплатно (free)

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

29.11.2021    32602    mrXoxot    63    

429

Как читать чужой код? Часть 3. Разбор и доработка запросов

Запросы Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во всех вакансиях есть требование - умение читать чужой код. Но ни на одних курсах специально этому не учат. Чтобы устранить это противоречие, пишу данную статью. Рассмотрю случаи, в которых нам необходимо разбирать чужой код, поймём, чей код мы пытаемся разобрать, зачем и, главное, как. В статье описан личный опыт длиною в 18 лет начиная с версии платформы 7.7. Статья будет большой, набираемся терпения). Статья содержит в себе описание сценариев разбора кода, т.е. набор шагов. В статье не получится показать это на практике. Для этого планирую сделать онлайн или оффлайн курс, где на примерах будет показан разбор незнакомого кода. Статья разбита на 4 публикации для удобства изучения.

20.09.2021    5204    biimmap    35    

39

Как читать чужой код? Часть 1. Общие вопросы. Доработка чужого кода. Code review

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во всех вакансиях есть требование - умение читать чужой код. Но ни на одних курсах специально этому не учат. Чтобы устранить это противоречие, пишу данную статью. Рассмотрю случаи, в которых нам необходимо разбирать чужой код, поймём, чей код мы пытаемся разобрать, зачем и, главное, как. В статье описан личный опыт длиною в 18 лет начиная с версии платформы 7.7. Статья будет большой, набираемся терпения). Статья содержит в себе описание сценариев разбора кода, т.е. набор шагов. В статье не получится показать это на практике. Для этого планирую сделать онлайн или оффлайн курс, где на примерах будет показан разбор незнакомого кода. Статья разбита на 4 публикации для удобства изучения.

20.09.2021    13364    biimmap    55    

139

Где баланс между производительностью и возможностями программы ? Исправление автоподбора контрагента в УНФ

Рефакторинг и качество кода HighLoad оптимизация Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Россия Управленческий учет Абонемент ($m)

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

1 стартмани

27.08.2021    6543    0    con-men    0    

8

Распространенные ошибки разработчиков, приводящие к проблемам производительности

HighLoad оптимизация Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Рассмотрим примеры ошибок, анализ, исправление и мероприятия по недопущению подобного в будущем. Всего будет 18 примеров.

02.08.2021    16618    ivanov660    77    

142

Антипаттерны программирования в 1С

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

Поговорим про плохой стиль программирования и рассмотрим 17 часто встречающихся антипаттернов.

19.07.2021    13128    ivanov660    121    

69

Автоматизация расчета покрытия кода тестами

Рефакторинг и качество кода Бесплатно (free)

На Infostart Meetup, посвященном DevOps-технологиям, с докладом о том, как автоматизировать расчет покрытия кода, выступил программист компании 42Clouds Станислав Косолапов. Станислав рассказал об инструменте собственной разработки для таких задач и показал работу решения на практике.

21.05.2021    6693    amoarok    14    

67

Чек-листы для проведения Code Review

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Бесплатно (free)

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

17.05.2021    11708    Shining_ninja    99    

129

Как контролировать качество внешних обработок, отчетов, правил обмена, расширений 1С и поставить это на поток

Рефакторинг и качество кода Бесплатно (free)

Если код написан качественно, его легче развивать и дешевле поддерживать. О том, как организовать контроль качества кода в ручном и автоматическом режиме, и какие инструменты могут в этом помочь, на INFOSTART MEETUP Новосибирск.Online рассказал Олег Тымко.

09.04.2021    8806    olegtymko    26    

112

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5355    SergeyN    13    

39

Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц

Рефакторинг и качество кода Бесплатно (free)

У разработчиков 1С уже есть все инструменты, позволяющие использовать современные инженерные практики в 1С. О том, как за 8 часов внедрить автоматические проверки для решений на 1С, снизить в них количество глупых ошибок, а также высвободить ресурсы на более интеллектуальную работу на INFOSTART MEETUP Ekaterinburg.Online рассказал Артур Аюханов.

05.04.2021    8878    artbear    16    

111

Повышение качества разработки. Статья 4. Почему код становится плохим, и как с этим бороться

Рефакторинг и качество кода Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Статья 4. Эта статья посвящена причинам возникновения проблем с качеством кода и методикам их преодоления.

22.03.2021    3076    Артано    6    

17

Ускорение расчета себестоимости УПП 1.3 в несколько раз

Рефакторинг и качество кода Закрытие периода Платформа 1С v8.3 1С:Управление производственным предприятием Бухгалтерский учет Управленческий учет Бесплатно (free)

Как определить причину медленного расчёта себестоимости в УПП 1.3, один из вариантов поиска проблем производительности с помощью инструментов 1С и ускорения расчёта средствами встроенного языка

02.02.2021    5767    RPGrigorev    23    

40

Практика применения DevOps. Работа с SonarQube

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во второй части мастер-класса «Практика применения DevOps» на конференции Infostart Event 2019 Inception выступил Виталий Подымников – он рассказал про процесс проверки качества кода и использование SonarQube для работы с ним.

07.12.2020    16507    arcius_7012    21    

84

Операторы перехода в программном коде: использовать или нет?

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим ситуации использования операторов перехода Перейти (GoTo), Возврат (Return), Прервать (Break), Продолжить (Continue). Как вы считаете - это дурной тон, нормальная практика или зависит от ситуации?

16.11.2020    10104    ivanov660    23    

11

Чистый кот (Clean cat)

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

От автора легендарного бестселлера "Совершенный кот".

04.11.2020    2478    vasilev2015    25    

5

Доработайте это "немедленно", или как уменьшить доработки конфигурации

Рефакторинг и качество кода Платформа 1С v8.3 Россия Бесплатно (free)

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

25.09.2020    5059    Богатырев Артур    24    

14

Как найти неиспользуемый код

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Описание нескольких способов поиска и определения неиспользуемого кода

03.08.2020    6103    Infostart    29    

71