Главная » 1С Предприятие » ПРИМЕР ЗАПИСИ АЛГОРИТМА

0

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

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

1.              Начало.

// Число констант в конфигурации

2.                всегоКонстант = Метаданные.Константа()

// Переменная флагВывода принимает значение 1, если напечатаны данные

// хотя бы об одной константе

3.              флагВывода = 0;

4.                С параметром ин= 1, всегоКонстант выполнить:

4.1.  Если константа с номером ин непериодическая, то

// Синоним константы с номером ин

син = Метаданные.Константа(ин). Синоним;

4.1.1.   Если син не является строкой нулевой длины, то

флагВывода = 1;

Вывести идентификатор, синоним и значение константы с номером ин.

конец  если 4.1.1.

конец  если 4.1.

конец  цикла 4.

5.                Если флагВывода = 0, то

Сообщить:  "Нет непериодических констант с непустым синонимом." конец  если 5.

6.    Конец.

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

Условия 4.1  и 4.1.1  можно  объединить таким образом:

4.1. Если константа с номером ин непериодическая и константа имеет синоним, то

флагВывода = 1;

Вывести идентификатор, синоним и значение константы с номером ин.

конец  если 4.1.

Такому  объединению отвечает следующий  код  на  1С: если (Метаданные.Константа(ин).Периодический = 0) и

(ПустаяСтрока(Метаданные.Константа(ин). Синоним) = 0) тогда флагВывода = 1;

син = Метаданные.Константа(ин).Синоним;

идеи = Метаданные.Константа(ин).Идентификатор; значен  =  Константа.ПолучитьАтрибут(иден); Сообщить(иден + " " + син + " " + значен);

конецЕсли;

Его  недостаток в  том, что  дважды извлекается информация  о  синониме,  что  связано с дополнительными  временными  издержками;  с  другой  стороны,  он  компактнее первого варианта.

Замечание.  Встроенная функция  ПустаяСтрока(строка)  вернет  1, если  ее  аргумент строка   имеет  нулевую  длину  или   состоит  из   одних  пробелов,  в   противном  случае функция  вернет 0.

Любой  цикл с параметром можно, конечно же, заменить циклом Пока, например ин            =        1;           //       Подготовка            к           циклу           Пока

пока ин <= всегоКонстант цикл

// Тело цикла см. в вышеприведенном цикле "с параметром"

// Добавляем в тело цикла оператор увеличения номера  константы

// Без этого оператора произойдет зацикливание ин = ин+ 1;

конецЦикла;

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии