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

18.03.24

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

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

Небольшой диалог между программистами 1С:

Чел: Псс, коллега, как использовать оператор Пока с постусловием в 1С как на языке Ada, Pascal, C++ и т.д.?

>Пишите код в 1С.

>Пример кода:

Цикл
	Сообщить("Вжух!");
	Прервать;
Пока (Истина) КонецЦикла;

Чел: Хорошо, спасибо! Вырезал пример кода, вставил его в модуль, сохранил. Ошибка при сохранении кода в модуле:

Неопознанный оператор

<<?>>Цикл

>Обрамляй препроцессорами.

Чел: Какими еще препроцессорами?

>Пример кода:

#Если Скрипт Тогда
	// Код
#КонецЕсли

Чел: Ничего себе, а что за символ препроцессора Скрипт?

>Это новый секретный символ препроцессора Скрипт в 1С.

Чел: А какие есть еще операторы, которые включены в новый символ препроцессора в 1С?

>Можно использовать инкременты/декременты или старый добрый оператор "?" в 1С, который неоднократно изменялся.

>Пример кода:

ПеременнаяИнкремент = 0;
++ПеременнаяИнкремент;
ПеременнаяИнкремент += 1;
ПеременнаяИнкремент = ? + 1;
? = ? + 1;

Чел: Ого... Синтаксис-проверка проходит успешно и никаких ошибок не высветилось.

>Так же можно использовать литералы коллекций как на встроенном языке 1С:Исполнитель.

>Пример кода:

ИменаПолей = ["Идентификатор", "Размер", "Цвет"];
КурсыВалют = {"RUB": 1, "BYN": 31.01};
МножествоСДанными = {1, 2, 3};

Чел: Тоже нет никаких ошибок.

>Можно еще, например, оператор Выбор как на языке запросов 1С:Предприятие или на встроенном языке 1С:Исполнитель.

>Пример кода:

Значение = 0;
Выбор Значение
Когда 1 Тогда
	Сообщить("Вжух");
Когда 2 Тогда
	Сообщить("Вжух");
Иначе
	Сообщить("Вжух");
КонецВыбора;

Чел: С подсветкой синтаксических конструкций тут что-то явно не так, но и ошибок нет никаких. Хм, интересно.

>И еще вот что можно.

>Пример кода:

/* многострочный комментарий
 как на языке 1С:Исполнитель */
(* многострочный комментарий
 как на языке Глагол *)
{ многострочный комментарий
 как на языке Pascal }

Чел: О! Как же мне их не хватает.

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

>Пример кода:

якобы да кабы безценная информация

Чел: Лол, что?

>Пример кода:

за лол и кек стреляю в чебурек

Чел: Аа-а, все понятно. Насмешило меня. Теперь хочу попробовать запустить код в режиме предприятия.

Пример кода в модуле внешней обработки:

 

 

На форму добавили кнопку "СообщиЧтоНибудь", при нажатии которого будет выдавать сообщение пользователю из переменной модуля "Текст". Ну вы сами поняли какой текст сообщения будет выдавать.

Большинство примеров кода 1С было обнаружено инструментом.

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

Тестировалось на платформе 8.3.24.1368.

Поддержите лайками плюсами.

И всем спасибо за внимание!

С вами был Илон Маск Макс!

 

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

 

пока постусловие инкремент декремент выбор препроцессор символ

См. также

Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде

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

Поделюсь своим опытом аудита кода авторских продуктов с Infostart.ru как одним из элементов применения DevOps-практик внутри Инфостарт. Будет настоящий код, боевые скриншоты, внутренние мемы от команды ИТ-лаборатории Инфостарт и прочее мясо – все, что любят разработчики.

10.04.2024    9303    artbear    84    

98

Ниндзя-код

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

Предлагаю вашему вниманию советы мастеров древности. Программисты прошлого использовали их, чтобы заострить разум тех, кто после них будет поддерживать код. Гуру разработки при найме старательно ищут их применение в тестовых заданиях. Новички иногда используют их ещё лучше, чем матёрые ниндзя. Прочитайте их и решите, кто вы: ниндзя, новичок или, может быть, гуру? (Адаптация статьи "Ниндзя-код" из учебника JavaScript)

01.04.2024    2730    DrAku1a    15    

35

Практическое программирование: когда скорость важнее совершенства

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

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

01.04.2024    741    Prepod2003    6    

2

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

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

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

18.03.2024    1484    ZhokhovM    4    

4

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

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

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

29.09.2023    2257    1CUnlimited    15    

23

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

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

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

27.09.2023    7463    Lemmonbri    136    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. insurgut 207 18.03.24 08:03 Сейчас в теме
Пример какой-то странный. А чем старый добрый "бесконечный" цикл с условием в конце не угодил?

Пока Истина Цикл

   ...действия...
   ...действия...
   ...действия...

   Если ОноСлучилось Тогда
      Прервать;
   КонецЕсли;
КонецЦикла;
Показать


Потому-что строчек кода больше? Суть-то не меняется.

Если речь не о коде, а о том, что хочется, чтобы 1С "кодировалась" в стиле других ЯП, то это крайне странное желание. Как хотеть, чтобы автомобиль летал как самолет, чтобы фломастер стал яблоком.
2. ZhokhovM 735 18.03.24 08:31 Сейчас в теме
3. TerveRus 25.03.24 15:43 Сейчас в теме
Ну вы сами поняли какой текст сообщения будет выдавать.

Я ничего не понял. Можно понятнее объяснить что в итоге?
4. ZhokhovM 735 26.03.24 08:28 Сейчас в теме
(3)Скриншот формы обработки в конце статьи.
Оставьте свое сообщение