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

18.03.24

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

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

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

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

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

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

     

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

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

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

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

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

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

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

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

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

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

Но лучше так:

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

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

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

 

 

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

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

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

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

См. также

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

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    14017    markbraer    64    

38

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

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

10.09.2024    920    acces969    4    

6

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

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

28.08.2024    1168    Chernazem    3    

6

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

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    10211    alex_sayan    41    

52

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

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

25.06.2024    4202    MadRave    34    

27

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

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

1 стартмани

04.06.2024    6277    mrXoxot    55    

42

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

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

10.04.2024    13359    artbear    85    

108

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

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

01.04.2024    4239    DrAku1a    15    

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

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