Использование рекурсии в 1С
-

Использование рекурсии в 1С

0
12834
10.04.2020 Щербаков Кирилл

Содержание:

1.    Понятие рекурсии в 1С

 

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


Из определения рекурсии следует вывод, что во избежание бесконечного увеличения стека вызовов, необходимо предусмотреть условие выхода – условие, при котором очередной рекурсивный вызов не произойдет, что положит начало «заворачиванию» стека, по окончании которого получим конечный результат.

 

&НаКлиенте

Процедура Сосчитать(Команда)

            СчетДоДесяти(Число);

КонецПроцедуры

 

Процедура СчетДоДесяти(НачальноеЧисло)

    Если НачальноеЧисло <= 10 Тогда

        Сообщить(Строка(НачальноеЧисло));

        НачальноеЧисло = НачальноеЧисло + 1;

        СчетДоДесяти(НачальноеЧисло);

    Иначе //выход из рекурсии

                        Сообщить("Счет окончен.");

                        Возврат;

    КонецЕсли;

КонецПроцедуры

 

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


Такой счет до десяти – пример линейной рекурсии в 1С. То есть каждый очередной вызов процедуры инициирует лишь один рекурсивный вызов или при выполнении условия выхода не инициирует вовсе.


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

 

Функция ПолучитьЧислоРядаФибоначчиПоНомеру(НомерЧислаВРяду)

            Если НомерЧислаВРяду < 2 Тогда

                        Возврат НомерЧислаВРяду;

            КонецЕсли;

           

            Возврат ПолучитьЧислоРядаФибоначчиПоНомеру(НомерЧислаВРяду - 1) + ПолучитьЧислоРядаФибоначчиПоНомеру(НомерЧислаВРяду - 2)

КонецФункции

 

&НаКлиенте

Процедура Фибоначчи(Команда)

            Сообщить(ПолучитьЧислоРядаФибоначчиПоНомеру(Число));

КонецПроцедуры  


2.    Как используется рекурсия в 1С

 

Практическим примером использования рекурсии в 1С является алгоритм получения верхнеуровнего элемента справочника с иерархией элементов.


Получим для указанной организации главную организацию в иерархии элементов. Здесь условие выхода - Элемент.Уровень() = 0:

 

&НаКлиенте

Процедура УзнатьГлавнуюОрганизацию(Команда)

           

            Если Не ЗначениеЗаполнено(Организация) Тогда

                        Сообщить("Укажите Организацию");

                        Возврат;

            КонецЕсли;

           

            УзнатьГлавнуюОрганизациюНаСервере();

           

КонецПроцедуры

 

&НаСервере

Процедура УзнатьГлавнуюОрганизациюНаСервере()

           

            Если Организация.Уровень() = 0 Тогда

                        Сообщить("Указана организация верхнего уровня");

            КонецЕсли;

           

            ГоловнаяОрганизация = ПолучитьРодителя(Организация);

           

            Сообщить(ГоловнаяОрганизация);

           

КонецПроцедуры

 

&НаСервереБезКонтекста

Функция ПолучитьРодителя(Элемент)

           

            Если Элемент.Уровень() = 0 Тогда

                        Возврат Элемент;

            КонецЕсли;

           

            Возврат ПолучитьРодителя(Элемент.Родитель);

           

КонецФункции

 

 

Другой обычный случай использования рекурсии в 1С – обход дерева значений. Устройство этой иерархической структуры позволяет реализовать такой алгоритм:

 

&НаСервере

Процедура ОбойтиРекурсивно(Дерево)

           

            Для Каждого Строка Из Дерево.Строки Цикл

                       

      Сообщить(Строка.Организация);

            Если Строка.Строки.Количество()>0 Тогда //Иначе выход из рекурсии

                       

         ОбойтиРекурсивно(Строка);

                       

            КонецЕсли;

           

КонецЦикла;

КонецПроцедуры

 

Если у строки два или более подчиненных, наблюдаем каскадную рекурсию.


Специалист компании ООО «Кодерлайн»

Щербаков Кирилл

 

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
# абота Риелторского Агентства # Управление торговлей 11 #Забалансовый счет #Запас #Контекстное меню #Параметры запуска #Работа Риелторского Агентства #Сдача отчета #Типовая конфигурация # 1C # CRM-система # Cинтаксис-помощник # Cинхронные методы работы # Cправочник номенклатуры # PDF документами # PowerShell # XML-файл # Бизнес-процесс # Виды событий оповещения # Возврат товаров # Глубина анализа # Графические объекты # Динамический список # Документ заказ клиентов # Документ заполнен # Документ Отбор (размещение) товаров # Документ Отгрузка товаров ИС МП # Документ Приобретение товаров и услуг # Документ УПД # Документы продажи # Доступ на ТСД # ДтКт # ЕАЭС # Задержка зарплаты работодателем # Заказ на перемещение # Закладка Администрирование # Зарплата и кадры # Имя таблицы # ИТС # Кабель NYM(Севкабель) 3x5.5 # Книга учета доходов и расходов # Курс валюты # Лицо с правом подписи # Лицо, имеющее право подписи документов # Маркировка цифровыми кодами # Минимальные цены продажи в 1С # Настройка НСИ и разделов # Настройка ценообразования # НДФЛ # Нематериальные активы # Нормативно-правовые документы # Обмен электронными документами # Оплата через банк # Оптовые продажи # Основное ответственное лицо организации # Остаток товара на складе # Отчет # Отчет комиссионера # Передача на комиссию # Перемещение ТС и оборудования # Проведение инструктажа # Продажи или Закупки # Прочие доходы # Пункт Подключить обработки # Пункт Сервис # ПФР и ФФОМС # Работа ТС # Расчёт зарплаты # Расчет налога УСН # Расчетные счета # Режим использования модальности # Система «Честный знак» # Система GS1 # Списание на расходы # Справка-расчет налога УСН # Страховые взносы # Табель учёта рабочего времени # Таблица формы # Таблица формы «Сотрудники» # Товары # Упрощенная система налогообложения # Установка цен на товары # Форма # Формат Цифровой Маркировки # Форматированное письмо # Функция Дата # Функция ДеньГода # Функция ДеньНедели # Центральный Банк России # Цены номенклатуры 2.5 # Эквайринговый терминал # Элементы #1.6-НДФЛ #1С Бухгалтерия #1С Договоры #1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Модули #1С: Платформа #1С: Предприятие #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #1С:ERP #1С:БГУ #1С:БП #1С:Риелтор #1С:Управление холдингом #1С.6-НДФЛ #ADO #APACHE #API #canonical #com-объекты #Cинтаксис-помощник #Cопроводительных документов #Cправочник БИК #Excel #Excel в 1С #FTP-сервер #GoogleDrive #Googleаккаунт #GUID #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #Mac OS #MS SQL Server #PDF #QR-код #ragent.exe #RDP #RDP #SOAP-протокол #SQL #USB- ключ #WEB #WEB-сервисы 1С #Windows #Word #WS-ссылки #XDTO-объект #XML #XML-обмен #Авансовый платеж #Администрирование 1С #Адрес URL описания #Адресная строка #Адресный классификатор #Акт сверки расчетов #акты в 1С #Анализ #Анализ данных #Анализ клиентской базы #Анализ контрагента #Аппаратная часть сервера #Аренда #Аренда помещения #Архивация данных #Аутентификации операционной системы #База XML #База данных #Базовый лимит #Балансовый метод #Балансовый расчет #Банковская выписка #Банковские счета #БД #Безопасность данных #Безопасность сервера #Бесшовная интеграция #Библиотека стандартных подсистем #Бизнес-процесс #БИТ.Финанc #Битрикс24 #Блокировка данных #Блокировки в 1С #Больничный лист #Бонусная система #Бонусный товар #БСП #БУ #Бурение скважин #Бухгалтерская операция #Бухгалтерская отчётность в МСФО #Бухгалтерский и налоговый учет #Бухгалтерский отчет #Бухгалтерский учет #Бухучет #Бюджет #Бюджетирование #Валовая прибыль #Валютная операция #Валютный ресурс #Вариативность модели #Введение ограничений #Ввод данных #Ввод команд #Ввод пароля #Ввоз товаров #Веб #Веб-сервер #Веб-сервер Apache #Ведение книги продаж #Ведение финансов #Ведомость #Взаимодействие с клиентами #Взаимодействия #Взаимозачет задолженности #Взаиморасчет #Взаиморасчет #Взнос #Вид договора #Вид документов #Вид номенклатуры #Вид отчета #Вид отчетности #Вид тарифа #Вид формы #Вид Характеристики #Виды цен #Вкладка Документы #Вкладка ресурсы #Внедрение #Внедрение ERP #Внесение правок #Внешний вид формы #Внешнюю обработку #Возврат от покупателя #Восстановление данных #Временные разницы #Временные таблицы #Всплывающие ошибки #Выбор каталога #Выбранные файлы #Вызов процедуры #Выпадающий список #Выписка #Выплата аванса #Выплата отпускных сотруднику #Выплата пособия #Выполнение запроса #Выполнение кода #Выполнение транзакций #ГПХ #График отпусков #ГТД #ГТД по импорту #Данные #Данные сотрудника #Дата #Дата действия договора #Дата документа #Даты выплаты #Движение денежных средств #Движение документа #Движение товаров #Дебиторская задолженность #Декларация по НДС #Денежные средства #Детализация #Диагностика ошибки #Диаграмма #Диаграмма Ганта #Динамическая оперативная память #Динамический набор #Динамический чертеж #Директория сервера #Дистрибутивы программ #Доверенность #Договор #Договор с контрагентом #Документ #Документ Заказ клиента #Документ корректировки долга #Документ оприходования #Документ Отпуск #Документ поступления товаров и услуг #Документ1 #Дополнительные реквизиты #Дополнительный оплачиваемый отпуск #Доработка конфигурации #Доступ к файлам #Доход #ЕГАИС #Журнал документов #Журнал записи #Журнал проводок #Журнал регистрации #Журнал транзакций #Журналы #Загрузить Значения #Загрузка данных #Загрузка цен в 1С #Задача для 1С #Заказ покупателя #Заказ поставщику #Заказ-наряд #Закладка Торговля #Закрытие месяца #Закрытие сделки #Закрытый период #Закупка товара #Заменить #Замер времени #Запись регистра сведений #Заполнение данных #Заполнения полей #Запросы 1С #Запуск программы 1С #Запуск сервера #Заработная плата #Зарплата и управление персоналом #Затрата времени #Затраты #Иерархический справочник #Изменение цен #Измерения #Импорт товара #Импортные закупки #Имущество предприятия #Имущество предприятия #Имя пользователя #инвентаризационная опись #Инвентаризация склада #Инвестиции #Индексация #Интеграционный банк-клиент #Интеграция 1С #Интервал dpi #Интерпретатор языка #Интерфейс пользователя #Информационная база #История пользователя #Источник данных #ИТС ТЕХНО #Кадровое перемещение #Кадровые документы #Кадровый документ #Кадровый перевод #Кадровый учет #Казначейство #КАК ОТРАЖАЮТСЯ ТОВАРЫ В ПУТИ 1С #Как сделать в 1С #Календарь #Карточка должности #Карточка номенклатуры #Карточка Объекта недвижимости #Карточка сотрудника #Карточка товара #Касса #Касса ККМ #Кассовая книга #Кассовый аппарат #Кассовый документ #Кассовый чек #Качество #Квалификационные надбавки #Классификатор #Классификаторы и курсы валют #Классификаторы и курсы валют #Кластер сервера #Клиент-банк #Клиент-серверная схема #Клиент-серверный режим #Ключи #Книга покупок #Код #Код доступа #Код дохода #Код ошибки #Код ЦМТ #Код языка #Кодировка формата #Команда вызова #Командировка #Командная строка #Комиссионер #Комиссионер #Компенсация выплат #Конвертация #Конвертация данных #Консолидация #Контрагент #Контрагенты #Контроль документов #конфигуратор #Конфигурация 1С #Конфигурация 1С ЗУП 3.1 #Конфигурация 1С: ERP #Конфигурация системы 1С #Копирование #Копирование настроек пользователей #Корпоративное сопровождение #Корректировка базы данных #Корректировка документа #Корректировка поступления #Корректировка расчётов с учредителем #Косвенные затраты #Коэффициент #Кредиторская задолженность #Криптография данных #Критерии отбора документов #Курс валюты #Курсовые разницы #Левое соединение #Лидирующие нули #Лизинг #Лимит стоимости #Лист нетрудоспособности #Лицензии 1С #Лицензионный договор #Лицензия 1С КОРП #Лицензия 1С ПРОФ #Личные документы #Локальный каталог #Лояльность #Маркетинг #Маркетинговая акция #Маршрут #Маршрут согласования #Массив Номенклатур #Массивы 1С #Массовая регистрация отгулов #Меню #Меню конфигуратора #Меню Отчет #Место хранения #Метод #Метод объекта #Метод устранения ошибки #Метода выборки данных #Методы устранения ошибки #Механизм Анализа Данных в 1С #Механизм записи #Мобилизация #Мобильное приложение #Мобильный клиент #Модальный режим окна #Моделирование #Модель данных #Модуль Диадок #Монитор #Монопольный режим #МРОТ #МСФО #МЧД #Набор параметра #Набор складов #Накопления #Налог на прибыль #Налоги #Налоговая декларация #Налоговый актив #Налоговый мониторинг #Налоговый платеж #Налоговый регистр #Налоговый учет #Написание запроса #Настройка #Настройка данных #Настройка интерфейса #Настройка конфигурации #Настройка оптимизации #Настройка отчета #Настройка панели #Настройка параметров #Настройка подключения #Настройка пользователя #Настройка сервера #Настройка системы #Настройки пользователя по умолчанию #Натуральный доход #Начальная таблица #Начертания шрифта #Начисление заработной платы #Начисление премии #Начисления #Начисления Арендной платы #Начисления и удержания #Начисленный налог #НДС #Неверные данные #Нетиповая конфигурация #Нетрудоспособность #НМА #Новый Массив #Номенклатура #Номенклатура товара #Номенклатура штрих-кода #Номенклатурный вид #Номер счет-фактуры #Норма времени #Нормативно-справочная информация #НСИ #Нумерация счетов-фактур #Облачный сервис #Обмен #Обмен данными #Обмен между базами #Обмен сведениями #Обновления #Оборотно-сальдовая ведомость #Обособленное подразделение #Обработка проведения документов #Обработчик #Общая настройка #Общие ознакомительные рассылки #Объект системы #Объективность информации #Объектная база данных #Окно предупреждения #Окно сообщений #Онлайн-касса #Оперативная аналитика #Оперативный учет #Оператор #Операции в 1С #Операция #Описание задачи #Оплата #Оплата агента #Оплата заявок #Оплата по квитанции #Оплата поставщику #Оплата счетов #Оплата труда #Оповещение #Оповещение по видам события #Оприходование товара #Оптимизация #Оптимизация процесса #Организация #Организация хранения #Ордерная схема #ОС и НМА #Основное окно #Основное средство #Остатки взаиморасчетов #Остатки товаров на складах #Остаток #Остаток на складе #Остаток товара #Отладка #Отложенный чек #Отправка данных #Отпуск #Отчет #Отчет давальцу #Отчет комитенту #Отчет о продажах #Отчетность #Отчетный период #Отчеты в 1С #Оформление документа #Оформление перевода работника #Охрана труда #Оценка задач #Ошибка #Ошибки в расчетах #Панель инструментов #Папка с сертификатом #Параллельный учет #Параметр #Параметр «Количество» #Параметры #Параметры #Параметры запуска #Параметры отбора #Параметры печати #Параметры подключения #Параметры учета #Партнер #Первичный документ #Перевод сотрудника #Передача данных #Передача неисключительных прав #Переменная #Перемещение #Перемещение отчета #Перемещение товара #Перенос данных #Перенос цен из Excel в 1С #Пересортица товара #Пересчет #Переуступка долга #Перечисление денежных средств #Перечисление НДФЛ #Период отбора #Периодичность ДЕНЬ #Периодичность МЕСЯЦ #Печатная форма #Печатная форма документа #Печать ценников #План #План счетов #План-фактный анализ #Планирование #Планирование продажи #Планировать события #Платежная карта #Платежный документ #По умолчанию #Погашение обязательств #Подарочный сертификат #Подотчетное средство #Подписант #Подчиненный справочник #Покупка валюты #Поле Ввода Значение Субконто #Полезные обработки #Политика учета #Пользователь Администратор #Пользовательский режим #Помощник #Поставщик #Построение графика #Поступление денежных средств #Поступление основных средств #Поступление основных средств #Поступление товара #Потенциальный контрагент #Поток данных #Почтовая настройка #Права доступа #Правила обмена #Правое соединение #предопределенные элементы справочников #Прием на работу #Прием сотрудника на работу #Приемка товара #Прикладное решение #Прикладные программы #Принцип работы 1С #Приходная накладная #Приходно-кассовый ордер #Проведение документов #Проведение инвентаризации #Проводки 1С #Проводок документации #Программа 1С #Программирование в 1С #Программные права #Программный код #Продажа маркированной продукции #Продажа ТМЦ #Продажа товара #Продажи #Продление #Производственный документ #Производственный календарь #Производственный план #Производство #Просмотр #Просроченная задача #Процедура и функция #Проценты #Процесс #Процесс в организации #Процесс коммуникаций #Процесс обработки #Процесс согласования #Процессы #Пункт «Касса» #Путевой лист #Путь к файлу #Работа с объектами в 1С #Рабочее время #Рабочий сервер #Раздел Справочники #Разработка приложений #Расположение ссылки #Расторжение #Расход #Расходная накладная #Расходный кассовый ордер #Расходный ордер #Расходование денежных средств #Расходы по амортизации #Расчет заработной платы #Расчет зарплаты #Расчет НДФЛ #Расчет с контрагентом #Расчет себестоимости #Расчетные документы #Расчетный лист #Расширение конфигурации #Расширение прав доступа #Расширение функционала #Реализация товара #Регистр #Регистр бухгалтерского учета #Регистр бухучета #Регистр данных #Регистрация отчета #Регистры бухгалтерии #Регистры движения документов #Регламентированная отчетность #Регламентированный учет #Регламентное задание #Регламентные операции #Режим #Режим записи #Режим использования модальности #Режим конфигуратор #Режим налогообложения #Режим РИБ #Резерв отпусков #Результат тестирования #Результаты поиска #Реквизит «СпЗнч» #Реструктуризация #Ресурсная спецификация #РИБ #РМК #РМК кассира #Розничная торговля #Рост прибыли #РСБУ #С # #Сбор данных #Сведения для расчета пособия #Сверка данных учёта НДС #Свойства характеристики номенклатуры #Свойство ячейки таблицы #Сдача в аренду #Сдельный заработок #Сеанс Администратор #Себестоимость #Сегмент #Сегмент номенклатуры #Сервер #Сервер приложений #Серверная процедура #Сервис-деск #Сериализация #Серийное производство #Серийный учет #Серийный учет #Серия номенклатуры #Сетевой ключ защиты #Сетевой ключ защиты #Сетевые структуры системы #СЗВ-СТАЖ #СЗВ-ТД #Синхронизация данных #Система налогообложения #Система программы #Система ЭДО #СКД #Склад #Складские операции #Складской учет #Служба ИТ #Служба НСИ #Сменный график #Соединение COM в 1С платформе #Соединение СОМ в 1С платформе #Создание строки #Сопровождение #Состав начислений #Сохранность информации #Спецификация на товар #Списание задолженности #Списание расходов #Список документа #Список документов #список значений 1С #Список начислений #Список номенклатуры #Список прав #Справка по зарплате #Справочник Лиды #Справочник номенклатура #Справочники #Сравнение конфигураций #Средний заработок #Средства бюджета #Срок уплаты #Срочный трудовой договор #Стандартная подсистема #Статус заказа #Статьи расходов #Статья ДДС #Страховая премия #Строка «Касса (ККМ)» #Строка массива #СУБД #Сумма взаиморасчетов #Сумма долга #Сумма налога #Сумма НДС #Сумма по номиналу #Сумма расхождения #Суточные #Схема отчетности #Счет #Счет на оплату #Счет-фактура #СЭДО #Таблица значений #Табличная часть #Табличная часть обработки #Табличное поле #Таможенные пошлины #Таможенный сбор #Текстовый формат #Текущая дата #Текущая Строка #Территориальная привязка #Территориальные рамки #Тестирование 1С #Техническое задание #Технологическая платформа 1С #Технологический журнал #Тип данных #Тип договоров #Тип свойства #Тип строки #Типовой механизм #Типы данных ссылки #ТМЦ #Товарная номенклатура #Толстый клиент #Тонкий клиент #Торговое оборудование #Транспортная логистика #Требование долга #Трудовая книжка #Трудовой стаж #Убытки #Уведомление #Увольнение #Увольнение сотрудника #Удержание алиментов #Универсальные коллекции #Уникальный идентификатор #Управление проектами #Управление скидками #Управление финансовыми рисками #Управленческий учет #Управленческое взаимодействие #Условие предоставления скидки #Условия труда #УСН #Установка цен номенклатуры #Учет #Учет #Учет взаиморасчетов #Учет времени #Учет денежных средств #Учет зарплаты #Учет затрат #Учет НДС #Учет пеней #Учет рабочего времени #Учет серий #Учет спецодежды #Учет финансов #Учетная политика #Учетная политика организации #Ущерб #Файл #Файл обмена данными #Файловая база #Файловое хранение #Файлы обмена #Физический ключ #Фиксированный налог #Финансовый результат #Финансовый учет #Форма #Форма ввода #Форма выбора элемента #Форма доверенности #Форма отчетности #Форма списка документов #Форма файла XML #Формат MicrosoftExcel #Формат даты #Формат потока #Формирование документа #Формирование заказов #Формирование отчета #Формирование отчета #ФСС #Функционал #Функционал МРМ #Функциональная опция #Функция #Функция поиска #Х-точка #Характеристики Товаров #Хозяйственная операция #Хранение #Хранение информации #Хранение товара #Хранилище настроек #Хранилище файлов #Хранить историю изменений #Цена номенклатуры #Ценовая политика #Ценообразование #Центральный узел #Чек ККМ #Чтение #Шаблон #Шаблон обновления #Шапка отчета #Шифрование #Штатное расписание #Штрих-код #ЭДО #Эквайринговая операция #Экзамен 1С #Экспорт товаров #Экспортная процедура #Эл. больничный #Электронная передача данных #Электронная подпись #Электронная таблица #Электронная трудовая книжка #электронные подписи #элемент справочника #Элемент языка #Элементы номенклатуры #ЭЛН #Этикетка #ЭЦП #Язык #Язык 1С #Язык программирования #Яндекс-диск или Google-диск #Яндекс.Касса 1С под Linux 1С:УНФ Email или телефон Детализация платежа Работа с объектами в 1С тип да файлов Функциональные опции в 1С
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.