Качество кода: Поведенческие паттерны проектирования

Публикация № 1199427 03.03.20

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

Поговорим про применение паттернов проектирования в разработке на 1С.

Вступление:

Здравствуйте, меня зовут Крючков Владимир. Мы продолжаем рассматривать вопросы связанные с разработкой хорошего кода и повышения качества программного обеспечения – мы рассмотрим паттерны проектирования.
Как всегда, сосредоточьтесь и отложите на 20-30 минут дела. 

Статью мы построили следующим образом: 

  • сначала расскажем немного про паттерны; 
  • потом обсудим 4 типа паттернов с примерами (всего будет приведено 11 примеров на 1С).

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

 

О чем речь? Паттерны проектирования …

 

Паттерны представляют определенный способ построения программного кода для решения часто встречающихся проблем проектирования.

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

Концепцию паттернов впервые описал Кристофер Александер в книге «Язык шаблонов. Города. Здания. Строительство».

Идея показалась привлекательной авторам Эриху Гамму, Ричарду Хелму, Ральфу Джонсону и Джону Влиссидесу, их принято называть «бандой четырёх» (Gang of Four). В 1995 году они написали книгу «Design Patterns: Elements of Reusable Object-Oriented Software» - это книга довольно сложна для неподготовленного читателя. Фактически с данной точки во времени начала развиваться теория и практика применения этого механизма. 

Всего выделяют 23 паттерна проектирования, но мы рассмотрим поведенческий тип паттернов, как наиболее хорошо проецируемый в русло 1С.

  • Наблюдатель
  • Посредник
  • Цепочка обязанностей
  • Итератор
  • Состояние
  • Снимок
  • Шаблонный метод
  • Команда
  • Посетитель
  • Стратегия

Плюсы и минусы использования паттернов

 

 
Плюсы:

  • Снижает сложность разработки
  • Облегчает коммуникацию между разработчиками
  • Снижает количество ошибок
  • Многократное использование
  • Возможность выбора оптимального варианта из набора

Минусы:

  • Слепое следование может привести к усложнению программы
  • Нет полной применимости в языке 1С
  • Приходится импровизировать
  • Нужно думать и понимать

 

I) Паттерн "Наблюдатель"
 

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

Когда лучше всего применять?

  • Когда после изменения состояния одного объекта требуется что-то сделать в других, но вы не знаете наперёд, какие именно объекты должны отреагировать
  • Когда одни объекты должны наблюдать за другими, но только в определённых случаях

Реализация

В 1С для реализации данной задачи платформенно существуют следующие механизмы - это подписки на события и оповещения

Обработка подписка на события реализуется следующим образом:

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

2. Обработка оповещения. Это реализуется с помощью следующих вшитых в платформу процедур:

  • Используем обработчики оповещения в модулях объектов «Обработка оповещения», «Обработка выбора»
  • В коде при передачи данных используем функции - «Оповестить», «Оповестить о выборе».

 

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

Пример 1. Получение данных из формы выбора


Допустим стоит задача получить результат обработки данных из внешней формы. К примеру, мы хотим получить результат выбора внешней формы (может быть список выбора, форма выбора и т.п.).Рассмотрим два варианта решения.

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

Второй вариант решения - правильный. Правильно применить шаблон наблюдатель для решения подобных задач.

Технически - это две платформенные процедуры "ОбработкаОповещения" и "Оповестить". Что происходит в этом случае:

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

 

Пример 2. Регистрация в план обмена 

 

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

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

Реализация примера:

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

2. Создаем обработки подписки на события в формате "имя плана обмена"+Регистрация "тип данных". Сам обработчик выглядит следующим образом:

// Процедура-обработчик события "ПередЗаписью" документов для механизма регистрации объектов на узлах.
// ...
Процедура СинхронизацияДанныхЧерезУниверсальныйФорматПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	
	ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента("Имя плана обмена", Источник, Отказ, РежимЗаписи, РежимПроведения);
	
КонецПроцедуры

3. Создаем правила регистрации объектов (ПРО) и загружаем в механизм БСП.

 

Пример 3. Доработка конфигурации под новый регистр движений

 

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

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

Реализация:

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

2. Создаем новый регистр накопления "обороты по ценовым группам номенклатуры с клиентами"

3. Создаем подписки на события с типом событий "Обработка проведения" и "Обработка удаления проведения". В них добавляем все документы, которые содержат товары и суммы.

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


Плюсы и минусы.

«+» Издатели не зависят от конкретных классов подписчиков и наоборот.
«+» Вы можете подписывать и отписывать получателей на лету.
«+» Реализует принцип открытости/закрытости.
 
«-» Подписчики оповещаются в случайном порядке.

 

II) Паттерн "Посредник"
 

Назначение

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

Реализации. Клиент-сервер

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

 

Пример 4. Механизм расчетов с клиентами.

 

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

Реализация. Фактически состоит из:

  • регистра накопления «Расчеты с клиентами» - он является посредником;
  • коммерческие и финансовые документы в части формирования движений и источника данных - обращаются к посреднику для записи данных; 
  • финансовый контроль - обращается к посреднику для выполнения функции контроля отрицательных остатков;
  • отчеты по взаиморасчетам - обращаются к посреднику за данными.

В каждом документе в менеджере объекта есть функция «ТекстЗапросаТаблицаРасчетыСКлиентами», которая определяет текст запроса получения набора данных для помещения в регистр. Данные в объекте при проведении можно посмотреть в дополнительных свойствах -> таблица для движений-> «ТаблицаРасчетыСКлиентами».

Контроль отрицательных остатков по финансам запускается функцией "ПроведениеСерверУТ.ВыполнитьКонтрольРезультатовПроведения" из модуля объекта процедуры "ОбработкаПроведения". В самой функции куча проверок, для расчетов поищите таблицу с подобным текстом: "ДвиженияРасчетыСКлиентамиИзменение".

 

Пример 5. Копирование табличной части между документами.

 

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

Реализация. Состоит из:

  1. Временное хранилище значений (тут физически хранятся данные таблицных частей) и общие модули -  «КопированиеСтрокКлиент», «КопированиеСтрокСервер». Это наш посредник и его обвязка. 
  2. Сами формы документов с кнопками "копировать" и "вставить".

Более подробно по реализации:

В общем модуле "КопированиеСтрокСервер" процедура «ПоместитьВыделенныеСтрокиВБуферОбмена» – помещает в буфер обмена, а «ПолучитьСтрокиИзБуфераОбмена» получает данные из буфера обмена.

Для получения информации о наличии данных в буфере обмена используется функция «ПустойБуферОбмена» модуля «ОбщегоНазначения». В коде модуля формы проверка осуществляется через процедуру «УстановитьДоступностьКомандБуфераОбмена».

Замечание. Опять наблюдаем разбрасывание кода по всей конфигурации. Согласитесь, что можно же было и сделать отдельный общий модуль работы с буфером. Проблема сильного связывания по факту (слабое связывание и высокая сопряженность (Low coupling and High Cohesion)). Теперь к примеру, если им захочется, к примеру, переименовать параметр сеанса «БуферОбмена», то придется искать и править код по всей конфигурации, а не в одном общем модуле.

При выполнении операции сохранения в открытом документе вызывается функция оповещения с событием «КопированиеСтрокВБуферОбмена», по выполнению, которой изменяется доступность команды вставить из буфера. 

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

 

Плюсы и минусы

«+» Устраняет зависимости между компонентами, позволяя повторно их использовать.
«+» Упрощает взаимодействие между компонентами.
«+» Централизует управление в одном месте.
 
«-» Посредник может сильно раздуться.


III) Паттерн "Цепочка обязанностей"

 

Назначение

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

Когда стоит применять? 

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

Реализация

В рамках 1С реализуется использованием операторов «Если», «ИначеЕсли», «Иначе» и «Тогда».

 

Пример из жизни: Вы звоните на поддержку и вас переадресуют с одной линии на другую

Пример 6. Сохранение отчета в определенном формате

 

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

Функция СохранитьОтчет(Данные,Формат="pdf") Экспорт
	
	Результат = Ложь;
	
	Если Формат = "pdf" Тогда
		Результат = СохранитьФорматPDF(Данные);
	ИначеЕсли Формат = "xlsx" Тогда
		Результат = СохранитьФорматXLSX(Данные);
	ИначеЕсли Формат = "cvs" Тогда
		Результат = СохранитьФорматCVS(Данные);
	ИначеЕсли Формат = "html" Тогда
		Результат = СохранитьФорматHTML(Данные);
	КонецЕсли;	
	
	Возврат Результат;
	
КонецФункции

Пример 7. Обработка сообщений при оповещении

 

Пример фрагмента кода взят из конфигурации ERP 2.4 модуля формы заказа клиента.

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

    Если ИмяСобытия = "ПолученыСообщения"
        И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
        ПолученыСообщения(Параметр.Сообщения);
    КонецЕсли;
    
    Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
        
        УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
        
    КонецЕсли;
    
    Если ИмяСобытия = "ДобавлениеПартнераВСегмент"
        ИЛИ ИмяСобытия = "УдалениеПартнераИзСегмента" Тогда
        
        УстановитьВидимостьЗапретаОтгрузкиПартнеру();
    КонецЕсли;
    
    Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
        И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
        ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
		ОбеспечениеКлиент.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
   КонецЕсли;

КонецПроцедуры

Пример 8. Обработка заполнения модуля документов

 

В данном примере выполняется обработка заполнения документа заказа клиента из конфигурации ERP 2.4.

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
	
	Если ТипДанныхЗаполнения = Тип("Структура") Тогда
		ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
	ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.Партнеры") Тогда
		ЗаполнитьДокументНаОснованииПартнера(ДанныеЗаполнения);
	ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СделкиСКлиентами") Тогда
		ЗаполнитьДокументНаОснованииСделкиПоПродаже(ДанныеЗаполнения);
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.КоммерческоеПредложениеКлиенту") Тогда
		ЗаполнитьДокументНаОснованииКоммерческогоПредложенияКлиенту(ДанныеЗаполнения);
	ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
		ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиентом(ДанныеЗаполнения);
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаданиеТорговомуПредставителю") Тогда
		ЗаполнитьДокументНаОснованииЗаданияТорговомуПредставителю(ДанныеЗаполнения);
	КонецЕсли;

	// .....

КонецПроцедуры

Пример 9. Контроль выполнения результатов проведения

 

В функции "ВыполнитьКонтрольРезультатовПроведения" общего модуля "ПроведениеСерверУТ" выполняется обработка проведения. Она состоит из двух частей. В первой части происходит добавление процедур контролей:

	// Контроль отрицательных остатков по товарам
	Если ЕстьИзмененияВТаблице(ДанныеТаблиц,"ДвиженияСвободныеОстаткиИзменение")
		Или ЕстьИзмененияВТаблице(ДанныеТаблиц,"ДвиженияГрафикОтгрузкиТоваровИзменение") Тогда

		ТекстЗапроса = ТекстЗапроса + ТекстЗапросаКонтрольОбеспечения(
			ЕстьИзмененияВТаблице(ДанныеТаблиц,"ДвиженияСвободныеОстаткиИзменение"),
			ЕстьИзмененияВТаблице(ДанныеТаблиц,"ДвиженияГрафикОтгрузкиТоваровИзменение"));

		МассивКонтролей.Добавить(Врег("ОбеспечениеВременнаяТаблица1"));
		МассивКонтролей.Добавить(Врег("ОбеспечениеВременнаяТаблица2"));
		МассивКонтролей.Добавить(Врег("Обеспечение"));

	КонецЕсли;

Далее происходит выполнение пакета запросов контроля и  выполняется обработка ошибок при их наличии:

//...
Для Каждого Результат Из МассивРезультатов Цикл

	Итератор = Итератор + 1;
	Если Результат.Пустой() Тогда
		Продолжить;
	КонецЕсли;
	ИмяКонтроля = МассивКонтролей[Итератор];

	Если ИмяКонтроля = Врег("ТоварыКОтгрузке") Тогда
		СообщитьОбОшибкахПроведенияПоРегиструТоварыКОтгрузке(Объект, Отказ, Результат);
	ИначеЕсли ИмяКонтроля = Врег("ОбеспечениеВременнаяТаблица1") Тогда
	ИначеЕсли ИмяКонтроля = Врег("ОбеспечениеВременнаяТаблица2") Тогда
	ИначеЕсли ИмяКонтроля = Врег("Обеспечение") Тогда
//...

 

Плюсы и минусы


«+» Уменьшает зависимость между клиентом и обработчиками.
«+» Реализует принцип единственной обязанности.
«+» Реализует принцип открытости/закрытости.

 
«-» Запрос может остаться никем не обработанным.


IV) Паттерн "Итератор"
 

Назначение

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

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

  

Реализация

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

 

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

СписокРазличных = Новый Соответствие();

Для каждого стр из ТаблицаДанных Цикл
	Данные = СписокРазличных.Получить(стр.Наименование);
	Если НЕ Данные=Неопределено Тогда
		Продолжить;
	КонецЕсли;
	СписокРазличных.Вставить(стр.Наименование,Истина);
КонецЦикла;

 

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

 

Выполняем обход данных полученных объединением двух таблиц - организаций и контрагентов для "нормализации" наименования. Запрос получен конструктором.

Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ
	|	Контрагенты.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	Организации.Ссылка
	|ИЗ
	|	Справочник.Организации КАК Организации";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	СпрОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
	СпрОбъект.Наименование = НормализироватьНаименование(СпрОбъект.Наименование);
	СпрОбъект.Записать();
КонецЦикла;

 

Заключение. 

 

Пробуйте мыслить паттернами проектирования, тогда создание кода в 1С заиграет другими оттенками. Следующий раз рассмотрим варианты улучшения кода на примере конфигурации ERP в рамках рассмотренной ранее теории, по тем примерам, на которые обратили внимание мои коллеги.

Также хочу порекомендовать очень хороший сайт по данной тематике «https://refactoring.guru». Тут нет примеров по 1С, зато есть хорошее и иллюстрированное объяснение.

 
 

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

Автор запретил комментарии

См. также

Шаблоны для применения cтандартов и методик разработки конфигураций 1С

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

Готовые шаблоны текста для применения cтандартов и методик разработки конфигураций 1С, инструментарий. Версия платформы 8.3.22.1851.

5 стартмани

04.06.2023    4007    14    improg    17    

26

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

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

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

16.05.2023    2556    leobrn    11    

46

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

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

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

15.05.2023    3865    improg    54    

55

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

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

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

27.04.2023    1674    wonderboy    18    

9

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

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

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

1 стартмани

11.03.2023    1610    1    Sirruf    0    

3

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

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

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

26.02.2023    2581    kraynev-navi    10    

47

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

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

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

06.02.2023    3103    biimmap    9    

29

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

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

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

13.01.2023    3887    aleksei_adamov    10    

45

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

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

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

05.01.2023    5409    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    4891    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    3106    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    3160    Enigma    3    

22

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

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

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

02.06.2022    7660    TimofeySin    67    

65

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

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

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

1 стартмани

30.05.2022    2901    6    burlakov    3    

9

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

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

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

19.05.2022    11615    nixel    84    

132

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

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

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

16.05.2022    6160    ardn    44    

56

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

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

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

11.05.2022    4653    mas_kot    11    

46

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

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

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

03.12.2021    5523    q_i    161    

71

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

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

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

29.11.2021    32569    mrXoxot    63    

429

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

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

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

20.09.2021    5202    biimmap    35    

39

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

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

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

20.09.2021    13349    biimmap    55    

139

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

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

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

1 стартмани

27.08.2021    6541    0    con-men    0    

8

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

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

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

02.08.2021    16606    ivanov660    77    

142

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

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

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

19.07.2021    13126    ivanov660    121    

69

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

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

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

21.05.2021    6688    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    8805    olegtymko    26    

112

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

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

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

07.04.2021    5354    SergeyN    13    

39

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

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

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

05.04.2021    8871    artbear    16    

111

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

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

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

22.03.2021    3073    Артано    6    

17

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

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

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

02.02.2021    5761    RPGrigorev    23    

40

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

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

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

07.12.2020    16497    arcius_7012    21    

84

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

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

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

16.11.2020    10087    ivanov660    23    

11

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

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

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

04.11.2020    2477    vasilev2015    25    

5

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

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

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

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

14