об'єднання умов. Переривання циклу. об'єднання умов 1с для кожного з цикл

Алгоритми багатьох програм найчастіше передбачають циклічне повторення певних дій. 1С у разі не є винятком. Цикли в 1С дозволяють:

  • Перебрати елементи довідника;
  • Заповнити області макету;
  • Виконати певні дії із вибіркою документів;
  • І багато багато іншого.

Типи циклів

У 1С прийнято розрізняти три типи циклів залежно від набору слів, що входять до конструкції:

  1. Для кожного "Змінна" з "Колекція значень";
  2. Для "Змінна" = "Поч. значення» За «Кон. Значення»;
  3. Поки що «Вираз».

Розглянемо їх докладніше.

Для кожного з

Цей обхідник підходить для колекцій значень (вибір документів або елементів довідника, стік). Виконання буде відбуватися доти, доки останній елемент колекції не буде пройдений. У рядку мають бути вказані:

  • Змінна, що визначає поточний елемент колекції;
  • Визначення колекції значень.

Найпоширеніша помилка у разі показано на рис.1

Найчастіше вона виникає, коли програміст не до кінця розуміє різницю між об'єктом (документом, довідником) та колекцією (вибіркою) значень, що отримується за допомогою оператора Вибрати().

Для по

Як параметри, що передаються в рядок, у цьому випадку виступають:

  1. Ім'я змінної – ітератора;
  2. Початкове значення змінної;
  3. Кінцеве значення змінної.

Повторення блоку операторів, що входять у тіло циклу, буде здійснюватися доти, доки змінна не зрівняється або вперше не перевищить кінцеве значення. При цьому ітератор кожен крок збільшуватиметься на 1. Значення порівнюються до виконання наступного кроку.

Така конструкція дуже часто використовується при обході табличних частин.

При використанні даного обхідника важливо розрізняти кількість рядків табличної частини та індекс окремого взятого рядка. У першому випадку початкове значення дорівнюватиме 1, кінцеве можна отримати за допомогою оператора Кількість (). Індекси починаються з 0 та закінчуються Кількість()-1. В іншому випадку можна отримати помилку (рис.2).

Бувай

Тут лише один параметр - логічний вираз, який перед кожним наступним кроком циклу перевіряється на істинність. Як тільки логічний вираз не буде виконано, обробник завершить обхід.

Дуже важливо розуміти, що в деяких випадках вираз, що перевіряється, може постійно перебувати в значенні Істина, тим самим обхід буде здійснюватися нескінченну кількість разів, підвішуючи систему.

У таких випадках необхідно всередині тіла циклу прописати один із двох варіантів переривання виконання.

Іноді може скластися ситуація, коли істинність виразу, що перевіряється, не настане ніколи. Це може призвести до марних пошуків помилки в коді та втрати часу.

Переривання виконання натисканням комбінації клавіш

Якщо в тілі циклу прописати процедуру Обробка Переривання Користувача (), то будь-якої миті його виконання, натиснувши комбінацію клавіш Ctrl+PauseBreak, можна зупинити його роботу. У цьому випадку у вікні повідомлень буде виведено рядок (Рис.3).

Щоб уникнути неприємних наслідків своєї діяльності, програмістам дуже корисно привчити себе в тіло обробки прописувати цю процедуру.

Переривання за умовою

Досить часто алгоритм програми передбачає зупинку циклічної обробки, якщо виконується та чи інша умова. Закласти цю процедуру в тіло циклу можна за допомогою оператора Перервати.

Правильно записаний код програми цей оператор виділяється червоним кольором.

Перестрибування деяких операцій циклу

Найчастіше у циклі необхідно перевіряти виконання будь-якої умови і у разі, якщо ця умова не виконується, проскакувати основний обробник. Такі конструкції можуть бути реалізовані двома способами:

  • У першому способі ми ставимо умову і всередині конструкції Якщо тоді КінецьЯкщо прописуємо код, що виконується, якщо умова не виконана, код відповідно виконуватися не буде. Очевидним мінусом такого підходу є те, що вона досить громіздка і у разі великої кількостіумов легко помилитися, де береться початок одного «Якщо» і закінчується інше;
  • Набагато правильніше використовувати конструкцію, де замість затвердження умови береться його заперечення (замість одно береться нерівно і т.д.) і приміщення всередині конструкції оператора Продовжити;

Оператор "Продовжити" в тілі коду виділяється червоним кольором і переносить виконання циклу на його початок.

Кожне рішення фірми «1С» на платформі «1С:Підприємство 8» має широке коло можливостей. Однак є універсальні прийоми, які можна використовувати в будь-якій конфігурації. Цією статтею ми відкриваємо цикл публікацій, у яких методисти фірми «1С» розповідатимуть про універсальні можливості платформи «1С:Підприємство 8». Почнемо з одного з найважливіших методів підвищення ефективності роботи - з опису гарячих клавіш (дії з клавіатури, як правило, виконуються швидше, ніж аналогічні через меню з використанням миші). Освоївши гарячі клавіші, ви спростите виконання дій, що часто повторюються.

Таблиця 1

Дія

Поєднання клавіш

Як працює програма

Створити новий документ

Відкрити існуючий документ

Відкрити калькулятор

Відкриває калькулятор

Показати властивості

Alt+Enter
Ctrl+E

Відкрити вікно повідомлень

Закрити вікно повідомлень

Ctrl+Shift+Z

Відкрити табло

Відкриває табло

Відкрити довідку

Відкриває довідку

Викликати індекс довідки

Shift+Alt+F1

Викликає індекс довідки

"Гарячі" клавіші: глобальні дії

Глобальні дії – це дії, які ви можете виконувати у будь-якому стані програми. При цьому не важливо, що зараз відкрито в "1С:Підприємстві". Головне, щоб програма не була зайнята виконанням будь-якої задачі.

Глобальні дії - це дії, які можна викликати будь-де запущеної платформи "1С:Підприємство 8". Незалежно від того, що саме відбувається в запущеній конфігурації, зміст глобальних дій не змінюється (наприклад, натискання Ctrl+N завжди викликатиме діалог створення нового документа).

Таблиця 1

"Гарячі" клавіші для глобальних дій

Дія

Поєднання клавіш

Як працює програма

Створити новий документ

Відкриває вікно, в якому буде запропоновано вибрати тип створюваного нового документа у різних форматах - наприклад, у текстовому, табличному чи HTML

Відкрити існуючий документ

Відкриває стандартне діалогове вікно "Відкрити", доступне через меню "Файл/Відкрити…"

Активізація поля пошуку у командній панелі

Встановлює курсор у цьому полі

Відкрити калькулятор

Відкриває калькулятор

Показати властивості

Alt+Enter
Ctrl+E

Залежно від того, на що встановлено курсор, відкриває відповідну палітру властивостей об'єкта або елемента. Корисно під час роботи з таблицями, текстом, HTML тощо.

Відкрити вікно повідомлень

Дозволяє відкрити раніше закрите вікноповідомлень. Часто буває корисно, коли вікно випадково закрите, а повідомлення вам знадобилося. Зверніть увагу: доки система нічого знову не ввела у вікно повідомлень, старі повідомлення зберігаються навіть у закритому вікні

Закрити вікно повідомлень

Ctrl+Shift+Z

Закриває вікно повідомлень, коли вони не потрібні. Зверніть увагу: комбінацію підібрано так, що її легко натиснути однією рукою

Відкрити табло

Відкриває табло

Відкрити довідку

Відкриває довідку

Викликати індекс довідки

Shift+Alt+F1

Викликає індекс довідки

"Гарячі" клавіші: спільні дії

Загальні дії- дії, які мають один і той же сенс у різних об'єктахконфігурації, але поведінка платформи "1С:Підприємство 8" змінюється в залежності від того де саме ви використовуєте ту чи іншу спільну дію. Наприклад, натиснувши кнопку "Del", позначає видалення поточного елемента довідника, якщо у вікні списку елементів довідника. Або видаляє вміст поточного осередку табличного документа, якщо ви його редагуєте.

Таблиця 2

"Гарячі" клавіші для спільних дій

Дія

Поєднання клавіш

Як працює програма

Видаляє елемент під курсором (поточний елемент) або виділену групу елементів

Додати

Дозволяє додати новий елемент

Зберігає активний документ

Друк активного документа

Викликає діалог друку для активного документа

Друк на поточний принтер

Ctrl+Shift+P

Ініціює безпосередній друк активного документа на принтер, призначений у стандартній системі (без відкриття діалогу друку)

Копіювати в буфер обміну

Ctrl+C
Ctrl+Ins

Копіює необхідний елемент або виділену групу елементів у буфер обміну Windows

Вирізати в буфер обміну

Ctrl+X
Shift+Del

Вирізує необхідний елемент або виділену групу елементів у буфер обміну Windows. Відрізняється від копіювання тим, що елемент або група, що копіюється, після попадання в буфер видаляється

Вставити з буфера обміну

Ctrl+V
Shift+Ins

Вставляє в місце, зазначене курсором дані з буфера обміну ОС Windows.

Додати до буфера обміну як число

Shift+Num+(*)

Використовується для числових значень

Додати до буфера обміну

Shift + Num + (+)

Використовується для числових значень. Операція додавання з даними в буфері обміну

Відняти з буфера обміну

Shift+Num+(-)

Використовується для числових значень. Операція віднімання з даними у буфері обміну

Виділити все

Скасувати остання дія

Ctrl+Z
Alt+BackSpace

Повернути скасовану дію

Ctrl+Y
Shift+Alt+BackSpace

Знайти наступний

Знайти наступний виділений

Знайти попередній

Знайти попередній виділений

Ctrl+Shift+F3

Замінити

Ctrl+Num+(-)

Виділити все

Виділяє всі доступні елементи в активному документі

Скасувати останню дію

Ctrl+Z
Alt+BackSpace

Скасовує останню досконалу дію

Повернути скасовану дію

Ctrl+Y
Shift+Alt+BackSpace

Дозволяє скасувати "Ctrl + Z", іншими словами - повернути те, що ви зробили до натискання скасування останньої досконалої дії

Відкриває діалог настроювання параметрів пошуку в активному об'єкті конфігурації та виконання цього пошуку

Знайти наступний

Знаходить наступний елемент, що відповідає вказаним у параметрах пошуку параметрам

Знайти наступний виділений

Знаходить наступний елемент, який відповідає тому, який ви виділили (наприклад, на якому встановлено курсор)

Знайти попередній

Знаходить попередній елемент, що відповідає вказаним у параметрах пошуку параметрам

Знайти попередній виділений

Ctrl+Shift+F3

Знаходить попередній елемент, який відповідає тому, який ви виділили

Замінити

Відкриває діалог пошуку та заміни значень (там, де це дозволено)

Згорнути (вузол дерева, групу табличного документа, групування модуля)

Ctrl+Num+(-)

Використовується там, де доступні вузли дерев, позначені значками "+" або "-"

Згорнути (вузол дерева, групу табличного документа, угруповання модуля) і всі підлеглі

Ctrl+Alt+Num+(-)

Згорнути (всі вузли дерева, групи табличного документа, угруповання модуля)

Ctrl+Shift+Num+(-)

Розгорнути (вузол дерева, групу табличного документа, групування модуля)

Ctrl + Num + (+)

Розгорнути (вузол дерева, групу табличного документа, угруповання модуля) та всі підлеглі

Ctrl+Alt+Num+ (+)

Розгорнути (всі вузли дерева, групи табличного документа, угруповання модуля)

Ctrl+Shift+Num+(+)

Наступна сторінка

Ctrl+Page Down
Ctrl+Alt+F

Швидке гортання активного документа

Попередня сторінка

Ctrl+Page Up
Ctrl+Alt+B

Включити/вимкнути жирність

Використовується там, де підтримується та можливе форматування тексту

Включити/вимкнути курсив

Увімкнути/вимкнути підкреслення

Перехід до попередньої web-сторінки/глави довідки

Використовується у HTML-документах

Перехід до наступної веб-сторінки/голови довідки

Перервати виконання звіту системи компонування даних

"Гарячі" клавіші: керування вікнами

У цьому розділі об'єднані загальні для всіх вікон та форм платформи "1С:Підприємство" "Гарячі" клавіші.

Таблиця 3

"Гарячі" клавіші для керування вікнами

Дія

Поєднання клавіш

Як працює програма

Закрити активне вільне вікно, модальний діалог або програму

Цією комбінацією можна швидко завершити роботу всієї конфігурації на платформі "1С:Підприємство", тому користуйтеся нею обережно

Закрити активне звичайне вікно

Закриває поточне звичайне вікно

Закрити активне вікно

Закриває поточне активне вікно

Активізувати наступне звичайне вікно

Ctrl+Tab
Ctrl+F6

Дозволяє активізувати наступне вікно серед відкритих у конфігурації. Натискання в циклі із утримуванням клавіші Ctrl дозволяє гортати відриті вікна "вперед"

Активізувати попереднє звичайне вікно

Ctrl+Shift+Tab
Ctrl+Shift+F6

Дозволяє активізувати попереднє вікно серед відкритих конфігурацій. Натискання в циклі із утримуванням клавіші Ctrl дозволяє гортати відриті вікна "назад"

Активізувати наступну секцію вікна

Активує наступну секцію поточного вікна

Активізувати попередню секцію вікна

Активує попередню секцію поточного вікна

Викликати системне меню програми або модального діалогу

Дозволяє побачити системне меню операцій (згорнути, перемістити, закрити тощо) над вікном програми або відкритого модального діалогу

Викликати системне меню вікна (крім модальних діалогів)

Alt + Hyphen + (-)
Alt + Num + (-)

Дозволяє побачити системне меню операцій (згорнути, перемістити, закрити тощо) над активним вікном

Викликати головне меню

Активує головну панель із кнопками поточного вікна. Таким чином ви можете вибирати дії без участі миші

Викликати контекстне меню

Відображає контекстне меню над поточним активним елементом. Аналогічно натискання правої кнопки миші на ньому

Повернути активність звичайному вікну

Повертає активність звичайному вікну після роботи з контекстним меню. Увага! У будь-якому іншому випадку, Esc ініціює закриття активного вікна

"Гарячі" клавіші: керування формами

Тут зібрані "гарячі" клавіші, що спрощують та прискорюють роботу з різними формами, які створені в конфігураціях, написаних на платформі "1С:Підприємство".

Таблиця 4

"Гарячі" клавіші для керування формами

Дія

Поєднання клавіш

Як працює програма

Перейти до наступного елемента керування/виклик кнопки за замовчуванням

Перехід між елементами управління формою " вперед " (див. Tab)

Виклик кнопки за промовчанням

Як правило, у різних форм призначена кнопка за умовчанням (вона відрізняється від інших – наприклад, виділена жирним). Використання цієї комбінації клавіш дозволяє з будь-якого місця відкритої форми активувати кнопку за промовчанням

Перейти на наступний елемент керування

Перехід між елементами управління на формі "вперед"

Перейти на попередній елемент керування

Перехід між елементами управління на формі "назад"

Активізує командну панель, пов'язану з активним елементом керування/формою

Активує головну панель із кнопками поточної форми. Таким чином ви можете вибирати дії без участі миші

Переміщення елементами керування, об'єднаними в одну групу

Up
Down
Left
Right

Використовуючи клавіші-курсори, можна швидко переміщатися між згрупованими елементами управління.

Закрити форму

Закриває вікно поточної форми

Відновити положення вікна

Якщо збилися якісь параметри вікна форми, ця комбінація дозволяє повернути все назад

"Гарячі" клавіші: робота зі списком та деревом

"Гарячі" клавіші цього розділу допоможуть ефективно працювати без використання миші у численних списках та деревах, які активно використовуються у різних об'єктах конфігурацій на платформі "1С:Підприємство 8".

Таблиця 5

"Гарячі" клавіші для роботи зі списком та деревом

Дія

Поєднання клавіш

Як працює програма

Відкриває для зміни елемент, на який встановлено курсор. Клавіша аналогічна дії "Змінити" на стандартній панелі кнопок форми

Оновити

Ctrl+Shift+R
F5

Оновлює дані у списку чи дереві. Особливо актуально для динамічних списків (наприклад, список документів), коли для них не ввімкнено автооновлення

Копіювати

Створює новий елемент списку, використовуючи як шаблон поточний елемент. Аналогічно кнопці "Додати копіюванням"

Новий гурт

Створює нову групу. Аналогічно кнопці "Додати групу"

Видалення рядка

Безпосереднє видалення поточного елемента. Увага! Використовуйте цю комбінацію з великою обережністю в динамічних списках, оскільки скасувати видалення не можна

Переміщення рядка вгору

Ctrl+Shift+Up

У списках, де можна змінити порядок рядків, дозволяє пересунути поточний рядок вгору. Аналогічно кнопці "Перемістити догори"

Переміщення рядка вниз

Ctrl+Shift+Down

У списках, де можна змінити порядок рядків, дозволяє пересунути поточний рядок вниз. Аналогічно кнопці "Перемістити вниз"

Перенести елемент до іншої групи

Ctrl+Shift+M
Ctrl+F5

Дозволяє швидко перемістити поточний елемент (наприклад, довідника) до іншої групи

Перейти до рівня вниз з одночасним розкриттям групи

Переходить до папки, на якій було встановлено курсор

Перейти на рівень вгору (до "батька")

Виходить нагору з папки, де ви знаходилися

Закінчити редагування

Завершує зі збереженням змін редагування списку

Перервати пошук

Перериває пошук

Розкрити вузол дерева

Використовується там, де доступні вузли дерев, позначені значками "+" або "-"

Закрити вузол дерева

Розкрити всі вузли дерева

Зміна прапорця

Інвертує значення прапорця поточного елемента (включає або вимикає його)

"Гарячі" клавіші: поле введення

Поле введення- активно використовується елемент управління у багатьох місцях форм конфігурацій. "Гарячі" клавіші для поля введення дозволяють швидко виконати дії, що часто використовуються над ним. Особливо корисно використовувати ці клавіші там, де розробник конфігурації не вивів потрібні кнопки управління полем введення.

Таблиця 6

"Гарячі" клавіші для поля введення

Дія

Поєднання клавіш

Як працює програма

Аналогічно поведінці при редагуванні звичайного тексту дозволяє або додавати нові символи при введенні до старих, або затирати старі новими.

Кнопка вибору

Вибір відповідного об'єкта, пов'язаного з полем введення (наприклад, вибір потрібного документа зі списку). Аналогічно кнопці поля введення "Вибір"

Кнопка відкриття

Ctrl+Shift+F4

Відкриття форми вибраного об'єкта у поточному полі введення. Аналогічно натискання кнопки поля введення "Відкрити"

Очистити поле

Очистити поле введення від поточного значення

Робота з набраним текстом у полі введення

Ctrl+BackSpace

На початок

Перейти до кінця рядка

Натискання вказівником миші кнопки "Вгору" для кнопки регулювання

Використовуйте регулювання, якщо це дозволено у полі введення. Наприклад, зміна дат, лічильників тощо. Аналогічно натискання на кнопку "вгору" регулятора поля введення

Натискання вказівником миші кнопки "Вниз" для кнопки регулювання

Використовуйте регулювання, якщо це дозволено у полі введення. Наприклад, зміна дат, лічильників тощо. Аналогічно натискання на кнопку "вниз" регулятора поля введення

"Гарячі" клавіші: поле картинки

Поле зображення- це стандартний елемент платформи "1С:Підприємство 8" для відображення графічних зображень. "Гарячі" клавіші допоможуть, наприклад, комфортно переглянути зображення, розташоване в полі зображення.

Таблиця 7

"Гарячі" клавіші для поля картинки

Дія

Поєднання клавіш

Як працює програма

Збільшити масштаб

Масштабує картинку

Зменшити масштаб

Прокрутити

Up
Down
Left
Right

Переміщення по картинці

Прокрутити на розмір вікна вгору

Прокрутити розмір вікна вниз

Прокрутити на розмір вікна вліво

Прокрутити на розмір вікна праворуч

"Гарячі" клавіші: редактор табличних документів

У цьому розділі згруповано "гарячі" клавіші для різноманітних табличних документів. Вони можуть бути дуже корисними, якщо ви часто редагуєте дані в таких документах.

Таблиця 8

"Гарячі" клавіші для редактора табличних документів

Дія

Поєднання клавіш

Як працює програма

Перейти до осередку

Відкриває діалогове вікно переміщення до комірки з координатами стовпець/рядок

Переміщення по осередках

Up
Down
Left
Right

Переміщає курсор по осередках таблиці

Переміщення по осередках до наступного заповненого або порожнього

Ctrl + (Up, Down, Left, Right)

Переміщає курсор по заповненим осередкам таблиці

Виділення осередків

Shift + (Up, Down, Left, Right)

Виділяє область осередків, починаючи з поточної

Прокрутити на сторінку вгору

Гартує табличний документ

Прокрутити на сторінку вниз

Прокрутити на сторінку вліво

Прокрутити на сторінку праворуч

Перейти до редагування вмісту комірки

Включає режим редагування вмісту комірки

Перемикання режиму редагування/введення в осередку

На початок

Переміщує курсор на початок рядка

Перейти до кінця рядка

Переміщує курсор у кінець рядка

На початок тексту

Перейти до кінця тексту

Встановлення імені поточної області

Ctrl+Shift+N

Встановлює ім'я поточної області осередків

"Гарячі" клавіші: редактор текстових документів

"Гарячі" клавіші при редагуванні тексту в текстових областях та документах дозволяють суттєво прискорити та спростити процес.

Таблиця 9

"Гарячі" клавіші для редактора текстових документів

Дія

Поєднання клавіш

Як працює програма

Переключити режим вставки/заміни

Дозволяє або додавати нові символи під час введення до старих, або затирати старі новими.

На початок

Переміщує курсор на початок поточного рядка

Перейти до кінця рядка

Переміщує курсор у кінець поточного рядка

Виділити до початку рядка

Виділяє текст до початку рядка

Виділити до кінця рядка

Виділяє текст до кінця рядка

На початок тексту

Переміщує курсор на початок тексту

Перейти до кінця тексту

Переміщує курсор до кінця тексту

Виділити до початку тексту

Ctrl + Shift + Home

Виділяє від курсору до початку тексту

Виділити до кінця тексту

Ctrl+Shift+End

Виділяє від курсору до кінця тексту

Прокрутити на один рядок вгору

Перегортає текстовий документ

Прокрутити на один рядок вниз

На початок попереднього слова

На початок Наступне слово

Виділити попереднє слово

Ctrl+Shift+Left

Швидке виділення слова (символи, розділені пробілами)

Виділити таке слово

Ctrl+Shift+Right

Прокрутити на сторінку вгору

Перегортає текстовий документ

Прокрутити на сторінку вниз

Виділити попередню сторінку тексту

Посторінково виділяє текст

Виділити наступну сторінку тексту

Shift + Page Down

Зняти виділення

Знімає виділення

Перейти до рядка

Переміщає курсор до рядка з номером

Видалити символ ліворуч від курсору

Видаляє символ ліворуч від курсору

Видалити символ праворуч від курсору

Видаляє символ праворуч від курсору

Видалити слово ліворуч від курсору

Ctrl+BackSpace

Видаляє слово ліворуч від курсору

Видалити слово праворуч від курсору

Видаляє слово праворуч від курсору

Встановити/зняти закладку

Позначає потрібний вам рядок

Наступна закладка

Переміщує курсор між зазначеними закладками рядками

Попередня закладка

Видалити поточний рядок

Видаляє поточний рядок

Зсунути блок праворуч

Зсуває виділений блок тексту праворуч

Зсунути блок вліво

Зсуває виділений блок тексту вліво

21
//Функція формує зручне читання уявлення значень. // Приклади форматування чисел ЗначФормат = Формат (123456.789, "ЧЦ = 10; ЧДЦ = 2"); // ЗначФормат = "123456,79" ЗначФормат = Формат (123456.789, "ЧГ = 0; ЧДЦ = 2"); // Значення 16
Повнотекстовий пошук - дозволить знайти текстову інформацію, розміщену практично в будь-якому місці конфігурації, що використовується. При цьому шукати потрібні дані можна або по всій конфігурації в цілому, або звузив... 8
"Момент часу" - віртуальне поле, яке не зберігається в базі даних. Містить об'єкт Момент Часу (що включає дату і ПОСИЛАННЯ НА ДОКУМЕНТ) У 7.7 було поняття ПозиціяДокументу, а в 8.x Момент часу Для отримання... 6
Для 8.х Знайти Посиланням (FindDataByRef) Синтаксис: Знайти Посиланням (Список посилань) Параметри: Список посилань Обов'язковий Тип: Масив. Масив зі списком посилань на об'єкти, посилання на які потрібно знайти. ...

12 грудня 2014 року о 13:13

Який цикл швидший? Тестуємо 1С

  • Висока продуктивність ,
  • Ненормальне програмування
  • Програмування

Займаюся програмуванням 1С вже кілька років, і тут завітала думка - «А чи не пройти якийсь навчальний курс, раптом у знаннях є якісь прогалини, про які раніше навіть не підозрював»?Сказано зроблено. Сиджу, слухаю курс, діходжу циклічних операторів і тут друга думка (так, не часто вони в мене з'являються) - "А який цикл швидше"?Потрібно б перевірити.
Отже, я знайшов п'ять способів, як можна організувати цикл засобами 1С

Перший вид циклу, назвемо його умовно «ДляПо»виглядає так:

Для н = 0 за КількістьІтерацій Цикл ЯкіТоДії(); КінецьЦикл;
Другий вигляд "Для кожного":

Для Кожного ЕлементКолекції з Колекція Цикл ЯкіТоДії(); КінецьЦикл;
Третій "Бувай":

Поки що<>КількістьІтерацій Цикл ЯкіТоДії(); н = н + 1; КінецьЦикл;
Далі згадав асемблерну молодість - цикл «Якщо»:

~ПочатокЦикла: Якщо н<>КількістьІтерацій Тоді ЯкіТоДії(); н = н + 1; Перейти ~ПочатокЦикла; КінецьЯкщо;
Ну і насамкінець «Рекурсія»

Процедура РекурсивнийЦикл(н, КількістьІтерацій) ЯкіТоДії(); Якщо н<>Кількість Ітерацій Тоді Рекурсивний Цикл (н +1, Кількість Ітерацій); КінецьЯкщо; КінецьПроцедури
Природно, що відносити рекурсію до циклів не зовсім коректно, але з її допомогою можна досягти схожих результатів. Відразу зазначу, що у подальшому тестуванні рекурсія не брала участі. По-перше, всі тести проводилися при 1 000 000 ітерацій, а рекурсія випадає вже при 2 000. По-друге швидкість рекурсії в десятки разів менша, ніж швидкість інших циклів.

Останній відступ. Однією з умов було виконання у циклі будь-яких дій. По-перше, порожній цикл використовується дуже рідко. По-друге, цикл «Для Кожного» використовується для будь-якої колекції, а отже й інші цикли повинні працювати з колекцією, щоб тестування проходило в однакових умовах.

Що ж, поїхали. Як тіло циклу використовувалося читання із заздалегідь заповненого масиву.


або, при використанні циклу «Для Кожного»

ПриймачТестовогоЗначення = Елем;
Тестування проводилося на платформі 8.3.5.1231 для трьох видів інтерфейсу (Звичайний додаток, Керований додатокта Таксі).
Числа цей час у мілісекундах отриманий за допомогою функції ПоточнаУніверсальнаДатаВМіллісекундах()я викликав до циклу і після його завершення. Числа дрібні, тому що я використовував середнє арифметичне п'яти вимірів. Чому я не використовував Вимір продуктивності? У мене не було мети виміряти швидкість кожного рядка коду, тільки швидкість циклів з однаковим результатом роботи.

Здавалося б і все, але – тестувати так тестувати!
Результат для платформи 8.2.19.106
У середньому платформа 8.2 на 25% швидше, ніж 8.3. Я трохи не очікував такої різниці і вирішив провести тест на іншій машині. Результати наводити не буду, можете самі нагенерувати їх за допомогою цієї конфігурації. Скажу тільки, що там 8.2 була швидше відсотків на 20.

Чому? Не знаю, дезасемблювати ядро ​​в мої плани не входило, але в замір продуктивності я все ж таки зазирнув. Виявилося, що самі циклічні операції у 8.3 проходять дещо швидше, ніж у 8.2. Але на рядку
ПриймачТестовогоЗначення = Тестовий Масив.Отримати(н);
тобто при зчитуванні елемента колекції змінну відбувається значне зниження продуктивності.

В підсумку:
Навіщо все це? Для себе я зробив кілька висновків:

1. Якщо є можливість використовувати спеціалізований цикл – «Для Кожного», то краще використати його. До речі, сам по собі він відпрацьовує довше, ніж інші цикли, але швидкість доступу до елемента колекції у нього набагато вища.
2. Якщо наперед знаєш кількість ітерацій – використовуй «ДляПо». «Поки що» відпрацює повільніше.
3. Якщо використовувати цикл "Якщо" - інші програмісти тебе явно не зрозуміють.

Вийти з циклу і передати керування на перший оператор, який слідує за циклом, можна, застосувавши оператор Перервати. Щоб пропустити частину операторів циклу та перейти до наступної ітерації, слід використовувати оператор Продовжити. У цьому управління передається оператору початку циклу оператору Для чи Поки. Оператори Перервати та Продовжити окремо не застосовуються, а вбудовуються у конструкції "якщо".

приклад.Повідомити значення першої неперіодичної константи числового типу.

// Процедура, що виводить значення першої неперіодичної константи числового типу

// Запускається з обробки Проба процедура Виконати()

// прапор Виводу

всьогоКонстант = Метадані.Константа(); для ін = 1 за всеКонстант цикл

якщо Метадані.Константа(ін).Періодичний = 1 тоді

продовжити; // Передаємо управління оператору Для кінецьЯкщо;

якщо Метадані.Константа(ін).Тип = "Число" тоді

ідеї = Метадані. Константа (ін). Ідентифікатор;

Повідомити(іден +" " + Константа.ОтриматиАтрибут(іден)); // БалансДнів 1 прапор Виводу = 1;

перервати; // Достроковий вихід із циклу Для

кінецьЯкщо; кінецьЦикл; // для

якщо прапор Виводу = 0 тоді

кінецьПроцедури // Виконати

Зауваження. Іноді програмісти в циклі Для замість оператора Перервати вдаються до зміни значення змінної циклу ін.Так, у нашому випадку оператор перервати міг бути замінений оператором

ін = всього Констант;

Такі дії, однак, класифікуються як поганий стиль програмування.

Деякі програмісти вважають, що оператори переривання циклу (в 1С це Продовжити та Перервати) погіршують структуру програми, і тому наскільки можна відмовляються від їх вживання. Натомість використовується об'єднання умов.

Слідуємо і ми принципам структурного програмування,написавши вирішальний наведене завдання код, що використовує об'єднання умов. У цьому коді нам доведеться відмовитися від циклу Для, замінивши його циклом Поки що.

// Процедура, що використовує об'єднання умов та виводить значення першої

// Неперіодичні константи числового типу. Запускається з обробки Проба процедура Виконати()

перем всього Констант, прапор Виводу, ін, ідеї; ОчиститиВікноПовідомлень();

// прапор Виводуприйме значення 1, якщо буде виявлено

// Неперіодична константа числового типу прапор Виводу = 0;

всьогоКонстант = Метадані.Константа();

ін = 1; // Номер константи поки що (ін<= всегоКонстант) и (флагВывода = 0) цикл

якщо (Метадані.Константа(ін).Періодичний = 0) і (Метадані.Константа(ін).Тип = "Число") тоді

ідеї = Метадані. Константа (ін). Ідентифікатор; Повідомити(іден + " " + Константа.ОтриматиАтрибут(іден)); прапор Виводу = 1;

кінецьЯкщо;

ін = ін + 1; // Не забуваємо перейти до наступної константи кінець циклу; // для

якщо прапор Виводу = 0 тоді

Повідомити("У конфігураторі немає неперіодичних констант числового типу."); кінецьЯкщо;

кінецьПроцедури // Виконати

У наведеному коді поєднання умов використано при записі ЛВ двічі: (ін<= всегоКонстант) и (флагВывода = 0)

(Метадані.Константа(ін).Періодичний = 0) і (Метадані.Константа(ін).Тип = "Число") Це дозволило нам виключити з процедури оператори Продовжити та Перервати.