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

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.

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

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

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

 

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

 

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

См. также

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

Конфигурация для хранения стандартов и сохранения их в формате PDF.

2 стартмани

05.05.2025    2685    comptr    6    

15

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

Методический материал для собеседования. Помогает облегчить общение между кандидатом и работодателем.

5 стартмани

05.05.2025    2573    vasilev2015    87    

21

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

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

21.04.2025    7130    RPGrigorev    31    

54

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

Методика, описанная в статье, выработана при переезде с 1С:ДО 2.1 на 1С:ДО 3.0. Может также применяться при переходе с 1С:УПП на 1C:ERP, 1C:ERP на 1C:ERP УХ и т. п. Учтены все необходимые доработки при переезде на новую конфигурацию и предупреждены возможные ошибки.

21.04.2025    1563    PROSTO-1C    4    

4

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

Диалог "Вопрос" использовался очень интенсивно в старых версиях кода и также его используют в УФ довольно часто. Иногда очень неудобно использовать рефакторинг через асинхронные вызовы ПоказатьВопрос и ВопросАсинх по разным причинам. Есть ещё одно решение, как избежать больших переделок кода, когда Вы не планируете его использовать где-то на других платформах и Веб-клиентах.

26.03.2025    1219    ksuman    7    

3

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

Технологии бегут вперёд, но боль производительности 1С остаётся вечной: инфраструктура, код или настройки? Пока ИИ не научился чинить всё «на лету», мы автоматизировали ключевое — диагностику. Читайте статью — показываем, как превратить хаос диагностики в понятные графики и цифры. Спойлер: это работает даже если ваша 1С — «чёрный ящик» на старом железе.

19.03.2025    4024    EFSOL_oblako    9    

8

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

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

17.03.2025    3375    Bukaska    5    

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

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

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

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


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

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

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