1с обход элементов формы в цикле

Циклы в программировании 1С 8.3

Цикл в программировании — это любая многократно исполняемая последовательность инструкций, организованная любым способом. Именно так описывается цикл во всех языках программирования. По сути циклы в 1С 8.3 не исключение. Но как всегда, каждый язык программирования имеет свою конструкцию, синтаксис, что выражаясь на обычном языке можно описать как правописание. Перейдем к изучении основных понятий и к примерам.

sshot 3

Цикл «Для…»

Оператор цикла Для предназначен для циклического повторения операторов, в конструкции Цикл – КонецЦикла. Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.

Пример 1 — Простой обход циклом с счетчиком

На данном примере счетчик цикла Сч при каждом входе в цикл увеличится на единицу, и пока не достигнет значению 11, цикл будет продолжаться.

Пример 2 — Обход с увеличением

Но, при решении конкретных задач, автоматическое увеличение значения счетчика цикла на единицу не всегда уместно. Так что же делать, ведь это же автоматическая функция?! Но всегда есть выход.

Рассмотрим конкретный пример в котором попробуем счетчику цикла задать шаг ровной к 5-и:

Пример 3 — С выходом из цикла «Прервать» (проверка на вечный цикл)

Приведем пример, где Сч, Счетчик, Сдвиг, Шаг, КоличествоСообщений являются переменными. Во избежание вхождения программы в вечный цикл, проводиться проверка и при необходимости цикл прерывается:

*Данный пример мы привели во внешней обработке.

Цикл «Для Каждого…»

Оператор цикла Для Каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.

Пример 1 — Простой обход таблицы значения

Создадим таблицу значений. Как мы помним, делается это на сервере.

И так, мы создали таблицу значений. Вскроем таблицу, для лучшего понимания.

Индекс Значение элемента Тип элемента Автомобиль Класс Вес
0 СтрокаТаблицыЗначений СтрокаТаблицыЗначений «KIA» «A Класс» 1 100
1 СтрокаТаблицыЗначений СтрокаТаблицыЗначений «Ford» «B Класс» 1 300
2 СтрокаТаблицыЗначений СтрокаТаблицыЗначений «BMW» «C Класс» 1 400

Теперь реализуем обход по коллекции с помощью цикла Для Каждого.

Как мы видим, в каждой строке сообщения оказались данные одной машины, то есть присвоились значение очередного элемента коллекции переменной Ст.

*Данный пример мы привели во внешней обработке.

Пример 2 — Обход массива

Создадим еще одну коллекцию. Массив, в отличии от таблиц значений, можно создать на клиенте тоже.

Взглянем на коллекцию:

Индекс Значение элемента Тип элемента
0 «Арина» Строка
1 «Марина» Строка
2 «Карина» Строка

А теперь реализуем обход по коллекции, с помощью цикла Для Каждого:

Пример 3 — Оператор «Продолжить»

Еще один пример, где применим оператор Продолжить:

Индекс Значение элемента Тип элемента
0 3 Число
1 7 Число
2 8 Число
3 9 Число

Цикл «Пока…»

Оператор цикла Пока предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл – КонецЦикла. Цикл выполняется, пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла. (Описание: синтакс-помощник)

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

Пример 1 — Обход массива с счетчиком

Взглянем на коллекцию.

Индекс Значение элемента Тип элемента
0 «Снегурочка N1» Строка
1 «Баядерка N2» Строка
2 «Синяя птица N3» Строка
3 «Красная Шапочка N4» Строка

Как мы знаем, индексы строк в коллекции начинаются с 0-я. Это прекрасно видно на развернутом виде коллекции.

Но можно получить тот же список, но в обратном порядке. Это называется обратный цикл, хотя на самом деле, этот тот же самый цикл Пока.

Обратимся к тому же массиву, но напишем код обратного цикла.

*Данный пример мы привели во внешней обработке.

«Прервать» и «Продолжить» в циклах 1С 8.3

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

Видео Школы 1С по теме циклов

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Программирование в 1С для всех

В платформе 1С 8.3 существует три вида циклов. Это циклы «Для Цикл», «Для каждого Цикл» и «Пока Цикл». При помощи циклов «Для Цикл» и «Пока Цикл» можно осуществлять цикличное повторение произвольных операторов. А цикл «Для каждого Цикл» необходим для обхода коллекций значений (массивов, таблиц значений и т.п.). В этой статье на разберем простые примеры всех трёх видов циклов.

Цикл «Для Цикл»

Разберем самый простой вид цикла. Этот цикл имеет следующий синтаксис.

В этом цикле, переменной НазваниеПерем в самом начале присваивается выражение СчетчНачало, которое имеет числовое значение (целое число). Потом, в каждой итерации цикла переменная НазваниеПерем увеличивается на 1. Цикл будет выполняться пока переменная НазваниеПерем меньше или равно переменной СчетчКонец.

СчетчНачало и СчетчКонец могут быть как числами, так и переменными с типом число.

Причем СчетчНачало может быть меньше нуля.

Чтобы цикл корректно работал СчетчНачало должно быть меньше СчетчКонец.

Такой код будет не корректен!!

Или когда нужно получить какие-нибудь значения, которые следуют друг за другом. Например, значения того же массива.

Цикл «Пока Цикл»

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

Данный цикл имеет следующий синтаксис

ЗначениеВыражения – какое-то логическое выражение. Пока это выражение истинно, то операторы цикла будут выполняться. Если выражение принимает значение Ложь, то цикл прекращается.

Этот цикл можно также использовать, когда нужно что-то заполнить датами.

В этом коде мы заполняем массив датами, начиная с 1 января и заканчивая 31 января.

Цикл «Для каждого Цикл»

Этот вид цикла предназначен для обхода различных коллекций, например, массивов, таблиц значений, табличных частей и т.д.

Этот цикл имеет следующий синтаксис:

Переменной ЭлементКоллекции присваивает очередное значение элемента коллекции.

Например, если мы напишем вот такой код.

То при первом обходе переменная ЭлМассива будет равна 100, при втором — 45, а при третьем – 1000.

Это массив, у него, по сути, каждый элемент это значение какого-то типа, а если будет обход более сложной коллекции? Например, таблицы значений. В том случае, если будет обход таблицы, значений, то в переменной ЭлементКоллекции будет содержать очередная строка этой таблицы значений. Мы можем получить значение колонок в этой строке через оператор «.».

Пример в этом коде

И результат работы этого кода

1 2

Прервать цикл 1С

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

После выполнения этого оператора Прервать все последующие операторы в теле цикла не выполняются, и следующим выполняется оператор после ключевого слова КонецЦикла.

Рассмотрим следующий пример.

Продолжить цикл 1С

А есть ситуации, когда нам не нужно выходить из цикла, но и не нужно продолжать текущую итерацию. Помочь нам в этом может оператор Продолжить. Этот оператор также применим ко всем тремя видам циклов.

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

Рассмотрим такой пример.

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

Более подробно и основательно начальные вопросы программирования в 1С есть в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

1 %D0%B2 %D0%B6%D0%B5%D0%BB%D1%82%D0%BE%D0%BC %D1%86%D0%B2%D0%B5%D1%82%D0%B5 3D %D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%B0%D1%8F

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu

Источник

Разбор тестирования 1С:Профессионал и PMP

Вопросы по разным конфигурациям 1С и проектному менеджменту

четверг, 15 марта 2018 г.

Обход элементов формы

21%2BOrder%2Bmanaged%2Bk

22%2BOrder%2Bmanaged%2Bp

25%2Belements

23%2BOrder%2Busual

24%2BOrder%2Busual%2B2

Правильный ответ шестой. Доступность элемента управления (вследствие ролей и функциональных опций) также влияет на порядок обхода.

Правильный ответ второй, разбор выше.

Правильный ответ пятый, разбор выше.

16 комментариев:

10.38 правильный ответ 2

На самом деле 3й вариант. В дистанционном тестировании по крайней мере.

Написал по поводу 10.38 в поддержку. Пусть исправляют.

Bender22

Походу поправили. По тестированию 10.38 ответ 2.

В платном тестировании верный вариант третий
Снять флажок «Автопорядок обхода» в свойствах каждой панели формы

avka 2

10.38. В мобильном тренажере правильный ответ 3.

В платном тестировании, на дату этого сообщения, стоит вариант 2

>>Написал по поводу 10.38 в поддержку. Пусть исправляют

>>Походу поправили. По тестированию 10.38 ответ 2.

Ничего подобного!
Я вчера сдавал экзамен, и мне попался этот вопрос, причем под порядковым номером 13.
Ну так вот, я выбрал вариант «Снять флажок «Автопорядок обхода» в свойствах формы», и это оказалось НЕПРАВИЛЬНО! Хорошо, что это была единственная моя ошибка, экзамен я сдал.

Источник

Циклы в 1С на примерах

Цикл – это конструкция, которая предназначена для многократного исполнения неких инструкций. Во встроенном языке 1С существует три вида циклов «Пока», «Для» и «Для Каждого». Рассмотрим на примерах работу с каждым из них.

Цикл «Пока»

Синтаксис:

Принцип работы такого цикла заключается в том, что операторы находящиеся после ключевого слова «Цикл», будут выполнятся пока логическое выражение будет равно ИСТИНА.

Пример:

В результате выполнения такого цикла, в окно сообщений будут последовательно выведены цифры от 1 до 5.

sshot 78

Цикл «Для»

Синтаксис:

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

Пример:

Результат:

Получите понятные самоучители по 1С бесплатно:

sshot 78

Цикл «Для Каждого»

Синтаксис:

Для Каждого Из Цикл
// Операторы
КонецЦикла;

Такой вид циклов служит для обхода неких коллекций значений в 1с (массивов, таблиц значений, структур и т.д.). Цикл будет закончен, когда будут перебраны все элементы коллекции. Использование такого цикла рассмотрим на примере последовательного перебора всех элементов одномерного массива, с последующим выводом значений элементов в окно сообщений.

Пример кода:

Визуальное представление созданного массива в 1С:

sshot 79

Результат работы цикла:

sshot 80

Вложенные циклы

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

Пример:

С помощью внешнего цикла мы последовательно получаем строки из коллекции «ТаблицаЗначений». Затем во внутреннем цикле, имея строку, получаем значение каждой ячейки из коллекции «КоллекцияКолонок».

Как организовать обратный цикл

Пример:

Результат:

sshot 81 1

Как принудительно продолжить цикл

Принудительный переход к следующей итерации в циклах 1С осуществляется с помощью оператора «Продолжить» (Continue).

Пример:

В таком примере с помощью операторов «Если» и «Продолжить» пропускаем цифру «2».

Результат:

sshot 82

Как прервать цикл

Полный выход из цикла (прерывание) во встроенном языке программирования 1С осуществляется с помощью оператора «Прервать» (Break).

Пример:

Такой цикл перестанет выполняться, как только значение переменной «Счётчик» будет равно «2».

Источник

Программирование в 1С для всех

Выборка 1С – это специальный объект в 1С 8.3, который позволяет перебрать элементы справочников, документов и прочих объектов, имеющих такую возможность.

Для создания выборки справочника следует использовать методы менеджера справочника Выбрать и ВыбратьИерархически (только для справочников с иерархией), а для создания выборки документов – Выбрать.

Для простой выборки.

Для иерархической выборки.

Поскольку выборка это объект, предназначенный для перебора элементов, то для выполнения перебора элементов следует делать обход выборки. Обход выборки осуществляется при помощи цикла. Обход выборки осуществляется динамически, это значит, что при создании выборки не все элементы выбираются сразу из базы данных, а получение элементов происходит порциями, частями. Для обхода используется метод выборки Следующий. Этот метод возвращает Истина, когда следующий элемент выбран, и Ложь, когда достигнут конец выборки.

Обойти выборку документов можно так:

А справочников, соответственно так:

В процессе обхода выборки, мы можем обращаться напрямую ко всем реквизитам того объекта, который выбран на текущей итерации.

В результате, выведется информация обо всех контрагентах.

1 2

Поскольку, Контрагенты иерархический справочник, то в выборке присутствуют и группы, и элементы.

Мы не можем получить выборку только элементов или групп, поэтому, чтобы вывелись только элементы, необходимо воспользоваться стандартным реквизитом справочника ЭтоГруппа, этот реквизит имеет значение Истина, когда элемент является группой, и Ложь – когда просто элемент.

Можно код выше исправить следующим образом:

Тогда выведутся только элементы.

2 2

У метода менеджера справочника Выбрать существует четыре необязательных параметра.

Первый параметр позволяют формировать выборку элементов с указанным родителем, а второй с указанным владельцем. Третий параметр имеет тип Структура и позволяет отбирать элементы по определённому условию.

Например, у справочника Контрагенты имеется реквизит ТипКонтрагента, который имеет тип ссылка на перечисление ТипыКонтрагентов.

3 2

У этого перечисления два значения Покупатель и Поставщик. Если требуется, чтобы выборка выше выводила только покупателей, то следует создать структуру с единственным ключом, название которого должно совпадать с названием реквизит справочника, а в значение структуры указать нужное значение перечисления.

В этом случае будут отобраны только контрагенты-покупатели.

4 2

Обратите внимание, что в случае установки отбора нет смысла отсекать группы. Они не попадут в выборку, поскольку этот реквизит у них не заполнен.

Также, имейте в виду, что отбор можно производить только по стандартным реквизитам Наименование, Код, а также по тем реквизитам, у которых в свойстве Индексировать установлено значение Индексировать или Индексировать с доп. Упорядочиванием.

Иерархическая выборка справочников 1С

По мимо обычной выборки справочников при помощи метода менеджера справочника Выбрать, можно производить иерархическую выборку при помощи метода ВыбратьИерархически. Чем отличается простая выборка справочника от иерархической? Разберем простой пример. Выведем в таблицу значений на форме элементы и группы справочника номенклатуры обычной выборкой, а потом иерархической.

5 2

Для обычной выборки будет следующий код:

И следующий результат:

6 2

Все элементы и группы вывелись как попало, при следующей структуре справочника:

7 2

А теперь посмотрим, как будут выведены группы и элементы при иерархической выборке.

Получится следующий результат:

8 2

Элементы вывелись в иерархическом порядке. Иерархическая выборка перебирает элементы следующем образом: сначала выбирается элемент самого верхнего уровня, потом если это группа, то отбирается элемент, который входит в эту группу и т.д.

А если мы воспользуемся методом выборки справочников УровеньВВыборке, то сможем увидеть порядок вложенности.

Будет следующий результат:

9 2

Где 0 – самый высший уровень (элемент или группа не входят ни в какие группы), 1 – следующий уровень (элемент или группа входят в группу высшего уровня) и т.д.

При иерархической выборке также можно сделать отбор, но будут выбраны только элементы верхнего уровня, поскольку группы отобраны не будут (у них этот реквизит не заполнен), а если группы не отобраны, то и элементы других уровней тоже не будут выбраны, даже если они подходят по условию.

Метод ПолучитьОбъект выборки

Выборка возвращает только ссылку на объект, сам объект мы изменять не можем. Мы можем обратиться к экземпляру объекта отобранной выборкой ссылкой, если воспользуемся методом ПолучитьОбъект().

Например, в этом коде пытаемся всем элементам справочника Номенклатура с видом Товары, обнулить этот вид, присвоив пустую ссылку перечисления.

Для записи элемента использовалась попытка.

Читайте также по теме:

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

1C %D0%B2 %D0%B6%D0%B5%D0%BB%D1%82%D0%BE%D0%BC %D1%86%D0%B2%D0%B5%D1%82%D0%B5 3D

Книга написана понятным и простым языком — для новичка.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

1C taxi blog

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с обход строк таблицы формы
  • 1с обращение к реквизиту формы по имени