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

18.03.24

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

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

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

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

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

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

     

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

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

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

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

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

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

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

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

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

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

Но лучше так:

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

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

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

 

 

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

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

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

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

См. также

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

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    5302    356    wonderboy    39    

112

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

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

11.02.2025    798    it-expertise    0    

2

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

Во второй статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, поговорим об особенностях анализа конфигурации 1С на наличие платформеннозависимого кода.

31.01.2025    1464    it-expertise    1    

7

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

В практике нашей специальной команды по проектам сложных обновлений 1С прошел один из самых объёмных проектов: необходимо было обновить «1С: Бухгалтерия предприятия КОРП 3.0 + БИТ.ФИНАНС». Конфигурация содержала доработки практически по всем типам объектов метаданных. Длительность проекта составила 1 год и 2 месяца и обеспечила полной загрузкой 4 разработчиков на 6 месяцев.

31.01.2025    972    1c-izh    3    

5

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

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

16.09.2024    16956    markbraer    66    

43

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

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

10.09.2024    1331    acces969    4    

6

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

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

28.08.2024    1837    Chernazem    3    

6

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

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

22.08.2024    12241    alex_sayan    41    

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

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

на красивее так:
 Цикл 
            ....
            а=Истина
            ....
            ПрерватьЕсли а  
       КонецЦикла


Пункт 2 в Перфоленте реализован...
Пункт 4 выглядит как: Попытка ... Исключение ... Завершение ... КонецПопытки
По пункту 3 блок Иначе не реализован, но мне понравился, значит реализую в ближайшее время... Спасибо Вам за подсказку... Вот вроде бы знаю Питон, а чего-то не подумал об этом варианте цикла...
Как пункт 5 могу добавить из Перфоленты цикл:
Цикл КоличествоИтераций
        ....
    КонецЦикла
ZhokhovM; +1 Ответить
6. maksa2005 556 05.09.24 07:33 Сейчас в теме
Привет. пишу тебе в личное, не отвечаешь*
Оставьте свое сообщение