1с перебрать элементы формы в цикле

Обновлено: 08.07.2024

Проведение документа из модуля формы документа
Столкнулся с такой проблемой. Нужно провести документ из формы документа. Побывал на многих сайтах.

Закрытие формы документа из внешней печатной формы
Нужно после печати документа, закрыть его форму. Управляемое приложение. Никак не могу понять прошу.

Заполнение формы документа
Такая вот проблема. В форме документа (табличная часть) вводятся два счета - д*цензура* и кредит.

Да очень интересная идея (наверно решил запретить редактирование документа. ), Скорей всего у тебя ничего не получится (если конечно сам в параметре не будешь передавать элементы деалога для изменения доступности - что вообще противоречит всему, так как можно это сделать и в самом модуле формы документа. ).

Почему же ты решил так сделать. Может быть ты поставишь проверку на запись и на перепроведение документа. или еще что-то.

Ну а если ты конечно еще и пользователями начнешь ковырятся что кому позволено то тебе скорей всего понадобится: Администирование(alfa-версия); посматри подумай может что-то и понадобится, а так перебора элементов диалога формы ты не найдешь. :(

Да вот еще что: если тебе не лень можно подгрузить внешнюю компаненту FormEX и обойти все атрибуты формы;
Пример:

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

Суть всего этого дела в следующем:

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

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

Распечатать

1C: Enterprise Development Tools  50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe  1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э PostgreSQL: установка, настройка, обслуживание  11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц rphost занимает память и грузит процессор  19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver  3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Посмотреть все результаты поиска похожих

Еще в этой же категории

Как очистить справочник удалив все не используемые элементы?  0
Очень часто менеджеры дублируют информацию в справочниках и время от времени их приходится чистить. Но как удалить только те элементы справочника, которые не используются в документах? Следующий пример кода поможет это сделать(в примере обрабатыва Вывод в поле Наименование справочника Штатное список значений из справочника Подразделения?  0
Есть два справочника Штатное и Подразделения. В справочнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы в поле Наименование справочника Штатное выводились списком значений из поля Наименование справочн Посмотреть все в категории Справочники


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

  • Переменная является счетчиком и при каждом повторении цикла автоматически увеличивается на 1. Иначе говоря, это счетчик цикла.
  • Знач1 число, которое задает начальное значение счетчику цикла.
  • Знач2 число, которое задает максимальное значение счетчику цикла. Если значение счетчика цикла становится больше чем Знач2 цикл прекращается.

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

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

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • МоиЛюбимыеКонфеты.Количество() определяет количество срок в коллекции, что в данном случае рано 4-ом.
  • МоиЛюбимыеКонфеты[Сч] определяет элемент коллекции по индексу, где Сч играет роль индекса, и при каждом входе в цикл прибавляется на единицу. Тем самим, мы с каждым разом обращаемся к следующей строке коллекции, начиная со строки с индексом 0. И цикл будет продолжаться, пока значение логического выражение Сч < МоиЛюбимыеКонфеты.Количество() не станет ровному Ложь.

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

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

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

Поясню, что счет индекса начинается с цифры равному количества строк -1, поскольку индекс последней строки ровно 3-ом. После, в каждом цикле, индекс уменьшается на единицу и тем самим мы обходим коллекцию с обратной стороны.

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

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

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

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

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

Цикл «Пока»

Синтаксис:

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

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

Пример:


Цикл «Для»

Синтаксис:

Для <Имя переменной> = <Начальное значение> По <Конечное значение> Цикл
// Операторы
КонецЦикла;

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

Пример:

Результат:

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


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

Синтаксис:

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

Пример кода:

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


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


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

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

Пример:

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

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

Пример:

Результат:


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

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

Пример:

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

Результат:


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

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

Пример:

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

Читайте также: