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

12.01.24

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

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

Что такое система стандартов и методик разработки конфигураций и зачем она нужна?

Основные аргументы для использования.

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

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

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

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

Продемонстрирую, как это выглядит на практике, к примеру, создали новый объект метаданных, добавили управляемую форму и начали описывать логику работы формы. Чтобы это сделать по стандартам, нам сначала нужно будет изучить сам стандарт, например, по ссылке Соглашения при написании кода > Оформление модулей > Структура модуля, далее все это закрепляем в шаблонах текста, у меня получилось 4 отдельных стандарта по этому разделу. Создаем новые шаблоны текста в конфигураторе "Сервис - Шаблоны текста". Для удобства я создал новые шаблоны текста "Действия - Новый файл шаблонов", чтобы их легко можно было копировать на другие системы и применять в отдельности.

 

    

Первый шаблон - "Ст_РазделыМодулейФорм" (поставил префикс Ст_ вначале названия шаблона для более быстрого вызова в коде), содержание (скопировал из описания стандарта):

 
 Ст_РазделыМодулейФорм

 

#Область ОписаниеПеременных

#КонецОбласти

#Область ОбработчикиСобытийФормы
// Код процедур и функций
#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы
// Код процедур и функций
#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормы<ИмяТаблицыФормы>
// Код процедур и функций
#КонецОбласти

#Область ОбработчикиКомандФормы
// Код процедур и функций
#КонецОбласти

#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти

 

Второй шаблон - "Ст_РазделыМодулейКоманд", содержание:

 
 Ст_РазделыМодулейКоманд

 

#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти

#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти

 

Третий шаблон - "Ст_РазделыМодулейОбъектовМенеджеровНаборовЗаписейОбработокОтчетов", содержание:

 
 Ст_РазделыМодулейОбъектовМенеджеровНаборовЗаписейОбработокОтчетов

 

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОписаниеПеременных

#КонецОбласти

#Область ПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти

#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти

#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти

#Область Инициализация

#КонецОбласти

#КонецЕсли

 

Четвертый шаблон - "Ст_РазделыОбщихМодулей", содержание:

 
 Ст_РазделыОбщихМодулей

 

#Область ПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти

#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти

 

Далее для формы объекта я вызываю шаблон -

 

 

"Ст_РазделыМодулейФорм" и формирую структуру модуля, далее по областям распределяю процедуры и функции (также написанные по стандартам). Что имею в итоге - более читаемый и структурированный код, который в дальнейшем легче отладить и сопровождать.

Или, например, мне нужно собрать несколько текстов запросов в пакет, открываю стандарт Реализация обработки данных > Работа с запросами > Оформление текстов запросов, сохраняю, например, такую конкатенацию:

 
 Ст_ЗапросыКонкатенация

 

Разделитель =
"
|;
|/////////////////////////////////////////////////////////////
|";

ТекстыЗапросовПакета = Новый Массив;

ТекстЗапроса =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| Справочник.Упаковки КАК Упаковки";

ТекстыЗапросовПакета.Добавить(ТекстЗапроса);

ТекстЗапроса =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";

ТекстыЗапросовПакета.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапросовПакета, Разделитель);

 

в новый шаблон текста "Ст_ЗапросыКонкатенация" и вызываю этот шаблон в дальнейшем, где это будет необходимо.

Также, например у вас разработка с учетом локализации, изучаем стандарт Требования по локализации и описываем, например, стандарт сообщения с учетом локализации "Ст_СообщениеСПараметрами" (стандарт ОбщегоНазначенияКлиентСервер.СообщитьПользователю устарел. С версии БСП выше 2.1.4 cледует использовать ОбщегоНазначенияКлиент.СообщитьПользователю или ОбщегоНазначения.СообщитьПользователю), с кодом:

 
 Ст_СообщениеСПараметрами

 

ОбщегоНазначения.СообщитьПользователю(
	СтрШаблон(НСтр(" ru = '<?> %1'"), Параметр));	

 

Еще пример по стандартам Реализация обработки данных > Обработка и модификация данных > Транзакции: правила использования, хотим где-то явно открывать транзакцию, создаем шаблон "Ст_ТранзакцияЯвная" с содержанием:

 
 Ст_ТранзакцияЯвная

 

НачатьТранзакцию();
Попытка
    БлокировкаДанных = Новый БлокировкаДанных;
    ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Документ.ПриходнаяНакладная");
    ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", СсылкаДляОбработки);
    ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
    БлокировкаДанных.Заблокировать();

    // ... // чтение или запись данных

    ДокументОбъект.Записать();

    ЗафиксироватьТранзакцию(); // Пишем всегда перед словом Исключение
Исключение
    ОтменитьТранзакцию(); // Пишем сразу после слова Исключение
    ПодробноеПредставлениеОбОшибке = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
    ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), // записывать в ЖР с ВызватьИсключение не нужно
        УровеньЖурналаРегистрации.Ошибка,                        // без ВызватьИсключение пишем в ЖР
        ,
        ,
        СтрШаблон(НСтр(" ru = '%1'"), ПодробноеПредставлениеОбОшибке));

    ВызватьИсключение; // есть внешняя транзакция

КонецПопытки;

 

 

Таким образом со временем я формирую помощник по всеми стандартам и при необходимости использую уже сохраненные шаблоны текста, вместо того чтобы бегать по разделам в браузере, выискивать подходящий стандарт и, в конце концов устав от поиска, написать так, как получилось :), в итоге забросив совсем эти стандарты и писать так, как можешь :). Вот такой небольшой кейс из своей практики, который лично мне экономит время и улучшает качество моего кода. Кроме того, я привыкаю писать по стандартам, стал лучше читать и выявлять потенциальные ошибки в своем и чужом коде, лучше стал разбираться в применении тех или иных методов. Например вместо метода ОписаниеОшибки() лучше использовать ИнформацияОбОшибке() более подробное описание тут Соглашения при написании кода > Использование конструкций встроенного языка > Перехват исключений в коде .

Спасибо за внимание, хорошего дня.

 

Также предлагаю решения вашему вниманию:

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

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3.

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

Универсальная выгрузка и загрузка зарегистрированных справочников и документов по узлу.

Загрузка данных из унифицированных форм УПД и ТОРГ-12.

Список документов и их количество в базе.

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

См. также

Когда понадобился новый оператор

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

Когда понадобился новый оператор, но его нет в синтакс-помощнике, что делать?

18.03.2024    1154    ZhokhovM    2    

4

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

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

Когда разработчик платформы решил пойти на кухню за кофе, а проверку препроцессоров не добавил, и вот тут-то и началось: "Что, опять все сломалось? Ну и кофе же я забыл сделать!".😅

18.03.2024    2682    ZhokhovM    4    

8

Реструктуризация - бесконечная история

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

При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при масштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3, складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? - для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».

29.09.2023    1909    1CUnlimited    15    

22

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 2

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

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

27.09.2023    6969    Lemmonbri    136    

36

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 1

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

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

19.09.2023    4347    Lemmonbri    16    

31

5 подходов при доработке конфигурации 1С, чтобы в будущем не было мучительно больно её обновлять

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

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

10.08.2023    9587    0    1c-izhtc    37    

21

Задача на ошибки и неоптимальности при проведении приходной накладной

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

Задачу эту дают на собеседованиях, видимо, те франчи, которые не в состоянии оценить человека по резюме и в ходе беседы. По идее задачи, подобные этой, должны давать начинающим студентам. Но дают всем подряд. Итак: мои 5 копеек. Критика приветствуется.

11.07.2023    2214    magic1s    32    

11
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Maximkasuper 15.05.23 13:08 Сейчас в теме
Хорошая идея. А можно выложить файл шаблонов, например, за SM?
2. improg 568 15.05.23 13:29 Сейчас в теме
(1) Конечно, это будет в следующей публикации.
Sergik_D; axelerleo; +2 Ответить
36. improg 568 05.06.23 13:56 Сейчас в теме
3. mikl79 118 15.05.23 13:47 Сейчас в теме
Спасибо, хорошая идея, надо взять на вооружение!
Sergik_D; improg; +2 Ответить
4. mikl79 118 15.05.23 15:41 Сейчас в теме
а как вы шаблон из формы вызываете?
у меня не получается, хотя я поставил в шаблоне флажок "Включать в контекстное меню"
нажимаю Ctrl+Пробел или Ctrl+Q - но там нет
вы используете TurboConf ?
5. mikl79 118 15.05.23 15:52 Сейчас в теме
(4), получилось.
нужно в шаблоне часть фразы взять в квадратные скобки и поставить флажок
при нажатии ctrl+Q выходит контекстное меню, но оно не такое как в публикации
Прикрепленные файлы:
10. improg 568 15.05.23 20:03 Сейчас в теме
(5) у меня все через Ctrl+Пробел работает, настройки такие как на скрине в конфигураторе Сервис - Параметры.
Прикрепленные файлы:
15. mikl79 118 16.05.23 06:43 Сейчас в теме
(10), спасибо, заработало!
12. improg 568 15.05.23 20:26 Сейчас в теме
(4) В самом шаблоне такие настройки
Прикрепленные файлы:
16. mikl79 118 16.05.23 06:45 Сейчас в теме
(12), да, при таких настройках не будет работать через Ctrl+Q
6. RocKeR_13 1317 15.05.23 16:02 Сейчас в теме
В актуальных БСП процедура ОбщегоНазначенияКлиентСервер.СообщитьПользователю перенесена в область устаревших
Прикрепленные файлы:
11. improg 568 15.05.23 20:11 Сейчас в теме
(6) Дополню шаблоны, спасибо.
7. dhurricane 15.05.23 16:44 Сейчас в теме
Что касается конкатенации запросов, я частенько использую список значений. Мне кажется, такой подход выглядит чуть стройнее, чем с массивом, по крайней мере визуально:
ПакетЗапросов = Новый СписокЗначений;

ПакетЗапросов.Добавить().Значение =
"ВЫБРАТЬ
|    1 КАК Поле
|ИЗ
|    ВременнаяТаблица1";

ПакетЗапросов.Добавить().Значение =
"ВЫБРАТЬ
|    2 КАК Поле
|ИЗ
|    ВременнаяТаблица2";

ПакетЗапросов.Добавить().Значение =
"ВЫБРАТЬ
|    3 КАК Поле
|ИЗ
|    ВременнаяТаблица3";

ТекстЗапроса = СтрСоединить(ПакетЗапросов.ВыгрузитьЗначения(),
    ОбщегоНазначения.РазделительПакетаЗапросов());
Показать
vbuots; mikl79; +2 Ответить
8. triviumfan 92 15.05.23 18:00 Сейчас в теме
(7) Сомнительно)
Если для "стройности", то почему тогда не так?
МассивТекстовЗапросов = Новый Массив;

МассивТекстовЗапросов.Добавить(
"ВЫБРАТЬ
|	1");

//...
Показать
acces969; +1 Ответить
9. dhurricane 15.05.23 18:12 Сейчас в теме
(8) Моему глазу 1С-ника как-то привычна конструкция:
ТекстЗапроса = 
"ВЫБРАТЬ
|    1";

Соответственной мой пример выше эту конструкцию повторяет.
39. PLAstic 295 07.06.23 09:36 Сейчас в теме
(7) Зачем использовать СписокЗначений, когда удобнее Массив? В типовых полно примеров этого подхода.
46. dhurricane 07.06.23 14:34 Сейчас в теме
(39) Я же выше написал в (9). Ответ: исключительно для красоты в моем понимании. Закрывающая скобка, расположенная далеко от открывающей мне меньше нравится, нежели использование списка значений.
49. PLAstic 295 07.06.23 20:36 Сейчас в теме
(46) Когда-то, когда я пришёл в разработку 1С, я по привычке использовал венгерскую нотацию... Потом я понял, что это вредило - мой код выделялся из остального, я писал не так как все и коллегам было сложнее поддерживать мой код.
Ты используешь неоптимальный код, мотивируя чувством прекрасного, также трагично для себя. Когда-нибудь тебя смогут публично ткнуть в твой код ревьюверы, привлечённые твоим клиентом или работодателем. И у тебя не будет аргументов за лишнюю нагрузку на прод кроме "я художник, я так вижу". Тут такая область - надо писать только как правильно.
51. dhurricane 07.06.23 21:41 Сейчас в теме
(49) Точно ли список значений дает большую нагрузку, нежели массив? И я не понимаю, что именно здесь неправильно? Так ли сильно выделяется этот код на фоне остального? Есть же примеры с аналогичным подходом, но для таблиц значений.
52. PLAstic 295 08.06.23 09:06 Сейчас в теме
(51) Ну смотри. Ты выгружаешь значения в Массив перед склейкой. Это лишняя операция. И ты не используешь тут возможности именно списка значений. Получается, 1) Массив вполне подходит для этой задачи и 2) Он позволяет избежать лишней выгрузки.
Замеров я не делал, но по логике это более подходящий тип.
Если тебе хочется красоты со скобками, попробуй так:
ЧастьТекстаЗапроса =
"вававыавыаы";
МассивТекстовЗапросов.Добавить(ЧастьТекстаЗапроса);
53. dhurricane 08.06.23 10:11 Сейчас в теме
(52) Это пример как раз из статьи. Мне он еще меньше нравится.

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

ПакетЗапросов = Новый Массив;
ПакетЗапросов.Добавить(ТекстЗапросаЧастьПервая());
ПакетЗапросов.Добавить(ТекстЗапросаЧастьВторая());
...
54. PLAstic 295 08.06.23 15:37 Сейчас в теме
(53) Годно вполне. Там ещё важно, с чем ты потом СтрСоединяешь этот массив. Вернее всего будет ОбщегоНазначения.РазделительПакетаЗапросов()
dhurricane; +1 Ответить
13. cosmo2004 38 15.05.23 20:51 Сейчас в теме
Идея не совсем оригинальная, у Павла Чистова были шаблоны с оформлением модулей https://chistov.pro/utilities/st83/
artbear; mikl79; +2 Ответить
19. improg 568 16.05.23 15:01 Сейчас в теме
(13) Идея состоит в том чтобы быстрее, чаще и везде использовать стандарты 1С, тем самым поднять качество кода, а какой будет подобран инструмент тут как говорится на вкус и цвет, шаблоны 1С доступны всем, бесплатны и легко переносятся на любую систему где есть 1С т.е. соблюдай везде на аутсорсе, в штате или как фрилансер.
14. Кадош 15.05.23 23:38 Сейчас в теме
В ЕДТ же модули оформляются автоматически. К чему все это?
17. mikl79 118 16.05.23 06:51 Сейчас в теме
(14), не все ЕДТ юзают
mrChOP93; improg; +2 Ответить
18. improg 568 16.05.23 14:56 Сейчас в теме
(14) Я бы сказал многие его не используют.
20. DemetrKlim 157 16.05.23 15:59 Сейчас в теме
Если посмотреть на электрические провода, то почти всегда эти провода - разного цвета. Вроде бы удобство. Несомненно. Это облегчает задачи монтажа, ремонта и обслуживания электрооборудования? Чуть-чуть! А решает ли разноцветная окраска проводов проблему отсутствия чертежей (электрических схем)? Не решает абсолютно от слова "совсем".
Я несколько раз видел разные способы, чтобы обойтись в проектировании и разработке программного кода, что говорится, "без чертежей". Это и есть "раскрашивание проводов" применительно к программированию. Каждый человек найдет массу вариантов форматирования программного кода исходя из своих оценочных суждений, вкусовщина же в чистом виде. Фраза "умение читать чужой код" меня вообще умиляет) Пока не понял алгоритм - что может дать чтение кода? Конечно, любой ребус можно разгадать когда-то, но наступит временной и затратный момент, когда разгадывание программных ребусов становится дольше и дороже разработки "по-новой", т.е. быстрее и дешевле свое написать, чем чужое расковыривать, что очень часто и происходит.
Можно долго нарезать круги вокруг и придумывать колдовские заклинания, но реальным ответом будет только документирование каждого объекта конфигурации, формы, модуля процедуры или функции. Что когда-то и делалось. Программный код это изделие. И у него должны быть чертежи, описание и инструкция по обслуживанию. Желающие оспорить этот тезис смогут назвать фамилию гения, который это отменил однажды?))
amiralnar; mRconik; roman72; dmitryada; +4 Ответить
21. charmillion 17.05.23 07:10 Сейчас в теме
(20) Бесспорно должна быть документация как программная, так и пользовательская. Однако все электрические схемы не отменяют "раскраски проводов" Эти оба метода обязательны к применению.
А еще хотел сказать, что фраза "умение читать код" вполне себе верная. Даже не важно какой код чужой или свой трехмесячной давности, который уже мог стать "чужим". Да и как можно понять алгоритм без чтения кода? Ванговать? Опрашивать пользователей? Просто не нужно применять к этой фразе терминологический подход. В данном случае чтение кода это не чтение бульварного романа, а, как раз, изучение заложенного алгоритма.
22. DemetrKlim 157 17.05.23 07:42 Сейчас в теме
(21) По первой профессии я электронщик. На очень многие электронные изделия, которые прошли через мои руки, схем не было. И была методика "чтения проводников" на печатной плате. Смотрели на "донышко" текстолитовой плитки и по желтенькой медной паутине рисовали схему на бумаге. Да, это изощряло ум и память, но это только в советской экономике имело смысл - зарплату там платили "за время на работе". Кто сейчас оплачивает "разгадку ребусов" и "решение шарад"? И если это кто-то делает сейчас, то как долго этот работодатель останется платежеспособным? Постоянно оплачивать разгадку старых ребусов путем создания новых? А новый код будет понятнее следующему "чтецу кода"? Если слегка отодвинуться от компьютера и поближе подсесть к кассе, то кроме профессиональных (любимых!) интересов, появится еще и прагматизм и хозяйская "жабистость и жмотистость". Большинство интеллектуально развитых людей любят кроссворды и ребусы, вопрос только - кто будет оплачивать эти "профессиональные квесты", не приносящие предприятию совершенно никакой пользы?
Я думаю, что все эти "любимые игрушки" программистов потому и обсуждаются, что менеджмент в основном своем составе не умеет руководить сферой IT. Умниками вообще тяжело рулить) Вот эти детки без присмотра и расшалились, причем, игрушки они себе покупают за счет предприятия - занимаются тем, чем сами хотят.)
23. charmillion 17.05.23 09:35 Сейчас в теме
(22) Не поймите меня неправильно, я не отрицаю полезность документации, даже наоборот - пропагандирую ее. Однако написание документации для быстроразвивающейся системы дело не простое. Тоже требует затрат. В связи с этим есть достаточно существенная вероятность, что будут расхождения. Код не обманет, как и дорожки в Вашем примере, а вот документация может.
Да и бессмысленно писать документацию для каждой строки кода. А когда начинаешь абстрагироваться, тогда в документации написано описание функции "Как должно быть", а в коде "Как есть". Если возникают ошибки, нужно начинать читать код.
Кстати, для создания документации тоже есть стандарты, практики, шаблоны и архитектуры. Да и чтение документации - особое мастерство.
40. PLAstic 295 07.06.23 09:39 Сейчас в теме
(22) Это будет оплачивать бизнес. Именно потому, что ему нужно что-то доработать в существующем механизме, а не сделать с нуля свой новый, который не факт, что учтёт все нюансы старого, потому что кому-то показалось лень в нём разбираться.
45. DemetrKlim 157 07.06.23 10:22 Сейчас в теме
(40) В какой момент бизнес немного поумнеет и начнет... как бы это сказать, торговаться с АйТишниками. Последним кажется, что бизнес в любой момент всегда будет оплачивать любые суммы, даже не особо вникая - что за эти суммы он получает. Вот этот конъюнктурный взлет уровня зарплат кодеров - сколько еще продлится? Разве это уникальная профессия? Для ее освоения нужны какие-то особые таланты? Слесаря - полировщика турбинных лопаток в самолетных и ракетных двигателях вырастить куда труднее, чем "Синьора Эсника". Есть такое определение "заградительная цена". Это когда надо отказать, не формализуя свой отказ. И просто называется запредельно нереальная цена. И назойливый контрагент отстанет сам. На каком-то этапе цена труда АйТишника может оказаться "заградительной" и бизнес просто не сможет (не захочет!) покупать это за подобную цену. Программирование это тоже бизнес, а первая задача бизнеса - снижение своих издержек. Считать, что кодирование, это всегда - "любой ценой"... ну, вряд ли))
47. PLAstic 295 07.06.23 20:27 Сейчас в теме
(45) Спор ради спора?
Всё очень просто. Когда станет выгоднее выращивать слесарей, тогда этим и займутся.
24. DemetrKlim 157 17.05.23 09:42 Сейчас в теме
(23) Что заставляет верить цифрам на экране компьютера? То есть код - это непредсказуемо? Тогда как работать с информацией, производной от этого кода? Пока наша "цифровизация" носит чисто декоративный характер - такой режим работы прощается. И то не везде.
На последнем форуме "IT Core" выступал ведущий IT-шник МинАтома. Вот в этой сфере непредсказуемый программный код даже не предполагается. Этим выступающий и объяснил очень медленные переходы на новые версии и платформы программирования. Сама отрасль не предполагает работы программистов в режиме "догони блоху". Когда в остальных отраслях начнут серьезно относится к цифрам - там тоже работа пойдет медленнее, зато наверняка. А пока режим "а давайте попробуем!" Все "на живую нитку" и "в порядке эксперимента")
25. charmillion 17.05.23 10:05 Сейчас в теме
(24)
На последнем форуме "IT Core" выступал ведущий IT-шник МинАтома. Вот в этой сфере непредсказуемый программный код даже не предполагается. Этим выступающий и объяснил очень медленные переходы на новые версии и платформы программирования.

Бесспорно! Есть сферы, в которых ошибка в коде может серьезно повлиять на процессы, а возможно и чьи-то жизни: энергетика, космос, оборонка и т.п.
Я уверен в том, что во всех сферах хотят создавать быстрее и качественнее. То есть медленная работа не цель, а необходимость, связанная с несовершенством.
41. PLAstic 295 07.06.23 09:42 Сейчас в теме
(24) Наброс в чистом виде. Сначала утверждение, что в минатоме работают одни профессионалы, потом ничем не подтверждённое утверждение, что везде кроме минатома днища, которые догоняют кого-то и косяпорят. Ну как-то и спорить не хочется при таком подходе оппонента, что все дураки и можно такими примитивными приёмами их провоцировать.
43. DemetrKlim 157 07.06.23 10:13 Сейчас в теме
(41) Термин "профессионал".... Сравнительно недавно были профессиональные алхимики. Люди абсолютно профессионально (как им казалось!) описывали рецептуру "философского камня", в этой среде были свои авторитеты (Сеньоры??). Это бойкое сообщество мимоходом и невольно сделало кучу открытий в химии и породило много полезных прикладных технологий (фарфор заново изобрели, например). А почему? Да потому, что дураками многие из алхимиков точно не являлись. Это были живые люди с пытливым умом и прочими полезными качествами исследователей. А чего им не хватало? Простой, вроде бы, вещи - системных знаний. Пока человек приобретает знание "через руки", прикладные технологии всегда развиваются быстрее фундаментальной науки. компас изобрели до знания о том, что Земля - круглая, например. Человечек, придумавший компас, был профессионалом-географом? Вряд ли. Он был "прикладником", "непосредственным юзером". Он увидел некое проявление, необычное поведение неких предметов в определенных условиях (кусочек магнита на деревянной дощечке в чашке с водой!), а так как его сильно "поджимало" в его проблеме он, абсолютно не взлетая в высокие научные сферы (их еще не было), просто применил увиденное явление в своей деятельности. Вот и все.
Если образовался какой-то "междусобойчик", то в своей среде они всегда назовут соучастника - профессионалом, это уж точно)
И я в крайности давно не впадаю, не было в моих текстах слов "дураки", "днище" и прочая... У меня иное понимание слова "профессионал". Я вполне допускаю словосочетание "врач-профессионал", у меня на голову не налезает комбинация "профессиональный знахарь".
48. PLAstic 295 07.06.23 20:28 Сейчас в теме
(43) Каков посыл твоих сентенций? Он ускользает от меня.
50. DemetrKlim 157 07.06.23 20:40 Сейчас в теме
(48) Тогда забей, не заморачивайся. Ускользает и ускользает... Значит, не судьба.
26. DemetrKlim 157 17.05.23 10:11 Сейчас в теме
(25) Я стараюсь к цифрам учета относиться так же щепетильно) Кто-то увидит не ту цифру и получит инсульт!) Да и поводов для суеты не вижу. Если посмотреть на результаты всех этих "срочных" суетных и судорожных работ хотя бы за 3 года, то нетрудно увидеть быстрый бег по кругу. Реальных продвижений в нужную сторону - абсолютный мизер. Куча мест, где ЕРП "срочно дорабатывают" лет по 5-7))
charmillion; +1 Ответить
27. charmillion 17.05.23 10:52 Сейчас в теме
(26) Опять согласен. Есть ли внутренняя программная документация на ERP? Я не знаю. Но можно предположить крайние варианты. Если нет, то они сами дураки :) и Ваши тезисы абсолютно справедливы. А если она есть, то тогда, то что сказали Вы неприменимо в данном случае и не влияет на процесс разработки. Истина где-то между этими значениями.
Но все же вернемся к теме. По моему скромному мнению использование автоматизации, упрощающих применение методик и стандартов, полезно и никак не связано с написанием документации.
28. DemetrKlim 157 17.05.23 11:00 Сейчас в теме
(27) Соглашусь при условии) Если средства автоматизации помогают достичь цели точного и быстрого документирования программного кода, то да. А если технические средства служат способом "откосить" или создать некий "эрзатц", якобы помогающий обойтись без документирования, то я - против. Вспомните, сколько красивых технических "отмазок" придумывал Ваш ребенок, когда он не хотел массив(мыть руки, идти спать, убирать игрушки, есть кашу)! ))
29. roman72 379 19.05.23 13:09 Сейчас в теме
Использование шаблонов кода - хороший инструмент для повышения скорости написания кода.
И этот инструмент лишь попутно может помочь соблюдать при этом требования стандартов.
Да и хорош он при написании кода с нуля.
А как быть с доработкой ранее написанного кода?

И как быть с уже имеющимся в наличии инструментом "Автоматизированная проверка конфигураций", который эту задачу решит гораздо лучше?
Тем более, часть стандартов 1С в них уже зашита.
И технология, которая в АПК заложена пригодна для нового и уже написанного кода.
В АПК фактически аналог шаблона - это пакет проверок.
Каждое утверждение стандарта может быть записано в виде атомарного элемента АПК.
Элементы собираются в пакеты.
Пакеты запускаются для проверки текста кода.
Пакетов много, элементы в пакеты могут собираться в любой комбинации = множество разных проверок.
30. improg 568 19.05.23 13:49 Сейчас в теме
(29) 1) Шаблоны дисциплинируют самого разработчика в основном с этой целью я их использую и чем чаще применяю тем лучше запоминаю и даже на автомате уже вижу где код написан не по стандартам, а где все норм.
2) Когда провожу рефакторинг и что-то подзабыл или сомневаюсь в исправлении я открываю 2-е окно например модуль внешней обработки, запускаю нужный шаблон убеждаюсь что код нужно править и правлю в соответствии с шаблоном, таков мой алгоритм.
3) когда-то я запускал АПК проверка хорошая, но чаще использую phoenix bsl на нужных участках, поэтому про АПК не смогу ничего подсказать опять таки это все постпроверка, а шаблон мне помогает сразу писать верно, ну или максимально верно. И да могут быть случаи где нет этих инструментов, такой простой помощник самое то.
4) Не все могут себе позволить рефакторинг по времени, по ресурсам, поэтому лучше сразу писать максимально правильно в этом компоненте я их использую.
31. EvgeniuXP 20.05.23 14:12 Сейчас в теме
У фирмы 1С даже курсов нет по стандартам - но все его требуют.
32. aserg 45 23.05.23 06:17 Сейчас в теме
(31)О, а это мысль! Может кто-нибудь создаст хорошие курсы по стантартам 1С?
33. DemetrKlim 157 25.05.23 10:01 Сейчас в теме
(32) ГОСТ 34. Правила проектирования и разработки автоматизированных информационных систем. Как раз два года назад обновили. Видать, актуально!) Почему у каждой платформы должен быть какой-то свой стандарт? А разве есть отдельные правила дорожного движения для автомобилей разного цвета?
34. charmillion 29.05.23 19:19 Сейчас в теме
(33) Для отдельного цвета, конечно нет. Но есть отличия в правилах для категорий автомобилей. В некоторых деталях правила для легковых авто отличаются от грузовых, мотоциклов и автобусов. А есть еще средства индивидуальной мобильности и велосипеды))) (Не мог не вспомнить про велосипеды)
35. DemetrKlim 157 29.05.23 20:03 Сейчас в теме
(34) Это отличия, оговоренные ВНУТРИ единых правил. Я об этом. Когда трактор въезжает в БМВ, то разборки между ними производятся в рамках одного универсального нормативного документа. Никто не достает отдельные брошюрки с возгласами: "... А вот тут в МОИХ правилах вот чо написано!!"))
42. PLAstic 295 07.06.23 09:50 Сейчас в теме
(31) А зачем? Тебе же не нужны курсы по тому как ходить, есть, дышать.
Здесь точно также, если ты пишешь код, ты пишешь его из ключевых слов языка, используя спецсимволы, паттерны и т.п. Ты же это изучил? Стандарты точно так же нужно читать и использовать на практике. Сейчас много где в них вставлены примеры "как неправильно" и даны пояснения, почему. Поэтому в большинстве случаев их надо не запоминать, а надо _понимать_ причины их создания. Как правило, каждый стандарт создан на базе какого-то объёма ошибок и проблем, которые он призван исправить.
Т.о. стандарты являются своего рода частью языка разработки, они должны учитываться автоматически.
37. Lusha_28 47 07.06.23 03:32 Сейчас в теме
Шаблоны хорошие, но конечно надо понимать что и когда применять. Например, сталкиваюсь, с тем, что код из Ст_ТранзакцияЯвная лепят везде, при любой записи. Хотя в той же документации пишут, что явные транзакции с блокировками надо применять только тогда, когда идет и чтение и запись объекта и при чтении требуется исключить грязное чтение.
38. improg 568 07.06.23 09:18 Сейчас в теме
(37) Тут нужно четко понимать что такое системная транзакция и где она возникает и конечно в этих случаях явная транзакция избыточна, что такое вообще транзакция (все или ничего), про грязное чтение вы имели в виду ответственное чтение? Для этого нужно использовать блокировки. Шаблоны в данном случае лишь инструмент, а как им распорядиться это уже другой вопрос.
44. improg 568 07.06.23 10:17 Сейчас в теме
(37) Из документации:
В большинстве случаев, при выполнении чтения в обработчиках событий связанных с модификацией данных, весь код обработчика выполняется в рамках системной транзакции, которая открыта платформой, и явно открывать новую транзакцию не требуется.

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

ПередЗаписью;
ПриЗаписи;
ПередУдалением.
55. dieseltxt 25.07.23 16:50 Сейчас в теме
Огромное спасибо! Как раз пытаюсь улучшить качество своего кода, очень помогло!
56. improg 568 29.07.23 17:24 Сейчас в теме
(55) если нужно есть ещё готовые шаблоны https://infostart.ru/1c/tools/1864780/
57. vlad2795 28.09.23 06:35 Сейчас в теме
Стараюсь применять стандарты, но не всегда получается.
Оставьте свое сообщение