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

18.03.24

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

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

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

В языке 1С отсутствует цикл с постусловием. В 1С есть только 3 циклических оператора ("Пока" с предусловием, "Для" и "Для Каждого"). Поэтому, чтобы обойти это ограничение, приходится прибегать к различным изменениям, таким как введение переменной, которую затем сбрасывают в ложь внутри цикла, использование условия "Истина" с выходом через оператор "Прервать" или "Возврат", создание бесконечного цикла с помощью непопулярного оператора "Перейти" и метка.

Способы обхода:

  1. Операторы присваивания и "Пока".
    ПовторятьЦикл = Истина;
    Пока ПовторятьЦикл Цикл
    	// Операторы
    	ПовторятьЦикл = <Логическое выражение>;
    КонецЦикла;
  2. Операторы "Пока", "Если" и "Прервать".
    Пока Истина Цикл
    	// Операторы
    	Если <Логическое выражение> Тогда
    		Прервать;
    	КонецЕсли;
    КонецЦикла;
  3. Операторы вызова процедуры, "Пока", "Если" и "Возврат".
    Процедура ЦиклСПостусловием()
    	Пока Истина Цикл
    		// Операторы
    		Если <Логическое выражение> Тогда
    			Возврат;
    		КонецЕсли;
    	КонецЦикла;
    КонецПроцедуры
    ЦиклСПостусловием();
  4. Операторы " Если", "Перейти" и метка.
    ~ПовторятьЦикл:
    // Операторы
    Если <Логическое выражение> Тогда
    	Перейти ~ПовторятьЦикл;
    КонецЕсли;

     

И так, вопросы?

А зачем он вообще нужен в 1С?

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

А что уже есть переводы с других языков программирования на язык 1С?

Возможно есть один с шарпа.

А с языка 1С на другие языки программирования?

Возможно есть один на языки питон, си плюс плюс и т.д.

А какой, по вашему, должен выглядеть новый оператор цикл с постусловием в 1С?

Примерно так:

Цикл
// Операторы
[Прервать;]
// Операторы
[Продолжить;]
// Операторы
Пока <Логическое выражение> КонецЦикла;

Но лучше так:

Цикл
// Операторы
[Прервать;]
// Операторы
[Продолжить;]
// Операторы
До <Логическое выражение> КонецЦикла;

А что пишет чат гпт?

Давайте спросим.

 

 

Чат гпт не знает, что оператор "Пока" с постусловием не существует в 1С, немного путает с циклами и отсутствует конец блока цикла "КонецЦикла".

Если нет вопросов, то спасибо всем за внимание!

Не забудьте поддержать плюсиками.

С вами был безумный Макс!

См. также

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

Рассмотрим основные принципы шаблона проектирования "Стратегия" на простом примере.

25.06.2024    2686    MadRave    33    

22

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

В статье расскажу и покажу процесс проведения Code-review на примере обработки с GitHub.

1 стартмани

04.06.2024    5135    mrXoxot    55    

40

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

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

10.04.2024    10975    artbear    84    

104

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

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

01.04.2024    3170    DrAku1a    15    

35

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

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

01.04.2024    936    Prepod2003    6    

2

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

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

18.03.2024    3477    ZhokhovM    4    

10
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 785 18.03.24 09:32 Сейчас в теме
Вы меня, конечно, извините, но про что статья?
Jeka44; unknown181538; Dementor; ixijixi; +4 Ответить
2. Dementor 1026 18.03.24 13:18 Сейчас в теме
(1) видимо про то, что:
1. Ни новых операторов, ни синтаксического сахара не было со времен 8.0 и не будет
2. ЧатГПТ галлюцинирует, да и в принципе не особо шарит в 1С
3. Реклама предыдущей статьи, где говорилось о том, что инструкции препроцессору - альтернатива обычным комментариям, но с подсветкой синтаксиса.
ixijixi; DrAku1a; ZhokhovM; +3 Ответить
3. DrAku1a 1733 02.04.24 04:09 Сейчас в теме
Давайте ещё как в Пайтоне:
Для каждого Строка из Товары Цикл
	Строка.Стоимость = Строка.Цена * Строка.Количество;
ИначеДля
	Сообщить("Вы не ввели ни одной строки кода");
	Отказ = Истина;
	Возврат;
КонецЦикла;
блок, который выполняется только в том случае, если тело цикла ни разу не выполнилось.
VladimirSil; ZhokhovM; +2 Ответить
4. ZhokhovM 739 03.04.24 23:48 Сейчас в теме
(3)
блок, который выполняется только в том случае, если тело цикла ни разу не выполнилось.

давайте, вот список чего не хватает:
1.оператор Цикл ... До ... КонецЦикла
2.оператор Выбор ... Когда ... Тогда ... Иначе ... КонецВыбора
3.оператор Для Каждого ... Из ... Цикл ... Иначе ... КонецЦикла
4.оператор Попытка ... Исключение ... Иначе ... КонецПопытки
5. ZhokhovM 739 07.06.24 11:18 Сейчас в теме
(4)и еще один оператор цикл без предусловия и постусловия как на языке Перфолента
Цикл ... КонецЦикла
Оставьте свое сообщение