Главная » 1С Предприятие » МЕТОДЫ СПИСКА ЗНАЧЕНИЙ

0

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

Методы списка значений

Таблица 3.3

Метод

Описание

сЗнач.ДобавитьЗначение(знач, [пред]);

Добавляет элемент  со значением знач

и представлением пред в  конец списка

сЗнач.ВставитьЗначение

(поз, знач, [пред], [кол]);

Вставляет  в список  кол элементов  со значением  знач и  представлением  пред  начиная  с позиции поз списка. Должно выполняться условие 1 <= поз <= сЗнач.РазмерСписка() + 1

разы = сЗнач.РазмерСписка();

Возвращает число элементов в списке

поз = сЗнач.НайтиЗначение(знач);

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

знач = сЗнач.ПолучитьЗначение

(поз, [пред]);

Возвращает значение  элемента с  номером поз и заносит в параметр пред, если  он задан, представление  этого элемента

сЗнач.УстановитьЗначение

(поз, знач, [пред], [кол]);

Заменяет  кол раз существующие значения

и  представления  элементов списка соответственно на знач и пред начиная  с  позиции  поз. Значение  параметра кол, если он  опущен, равно единице

Метод

Описание

знач = сЗнач.Получить(пред);

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

сЗнач.Установить(пред),  знач);

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

элемент со  значением  знач  и  представлением  пред

сЗнач.УдалитьЗначение(поз, [кол]);

Удаляет  кол элементов списка начиная  с указанной позиции. Значение параметра кол, если он опущен, равно единице.  Если кол > 0 и указывает за пределы списка, то удаляются все элементы списка начиная

с позиции поз. Если кол < 0, метод игнорируется

сЗнач.УдалитьВсе(  );

Удаляет  все элементы списка.  Эквивалентен вызову сЗнач.УдалитьЗначение(1, сЗнач.РазмерСписка());

сЗнач.Сортировать([напр], [поДате]);

Сортирует элементы  списка по их значениям. Если напр = 0 или опущен, то  сортировка осуществляется по возрастанию значений, в противном случае -

по убыванию. Если значения  списка это документы и по Дате = 1, то документы сортируются по дате,

в противном случае  по значению

сЗнач.СортироватьПоПредставлению

([напр]);

Сортирует элементы  списка по их  представлениям. Если напр = 0 или опущен,  то сортировка осуществляется по возрастанию значений,

в противном случае по убыванию

сЗнач.СдвинутьЗначение(кол,  поз);

Перемещает элемент списка с позиции поз на кол позиций вниз, если кол > 0, или на кол позиций вверх,  если кол < 0. Если параметр кол указывает

на  несуществующую позицию, то сдвиг выполняется либо в вершину  списка, если кол < 0, либо в его конец,  если кол > 0

флаг = сЗнач.Принадлежит(знач);

Возвращает единицу, если в  списке есть элемент,  значение которого равно знач, или нуль -

в  противном случае

флаг =  сЗнач.ВыбратьЗначение

(знач, заг, [нПоз], [задержка],  [способ]);

Вызывает, если способ опущен  или не равен 1 или 2, диалог,  имеющий  заголовок заг и  содержащий список представлений  элементов списка значений.

В диалоге (или окне со списком) курсор

позиционирован на элементе  со значением знач или на первом элементе, если значения  знач в списке нет. После выбора представления и нажатия ОК возвращает  1, в  параметр знач заносит значение выбранного элемента,  а в параметр нПоз, если он задан, его  номер в списке.  Если способ = 1, то окно для выбора отображается  в виде  меню, иначе, если способ = 2, окно  отображается  в  виде небольшого списка.  Смысл параметра задержка  см.  в табл.  2.3

Метод

Описание

флаг = сЗнач.ОтметитьЗначения

(знач, заг, [нПоз], [задержка]);

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

В диалоге курсор позиционирован на элементе

со значением знач или на первом элементе,  если значения  знач в списке нет.  После выбора представления и нажатия ОК возвращает 1,

в  параметр знач заносит значение  выбранного элемента,  а в параметр нПоз, если он задан, -

его номер  в  списке. Смысл  параметра задержка

см.  в табл.  2.3

отметка   = сЗнач.Пометка(поз, [флаг]);

Помечает,  если флаг =  1, элемент списка значений, имеющий позицию поз, или, если флаг = 0, снимает отметку с данного  элемента.  Если  флаг опущен,

то отметка элемента не изменяется. Возвращает

значение  отметки элемента (0 или  1), которое он имел до  вызова метода

номерДо = сЗнач.ТекущаяСтрока ([номер]);

Возвращает номер элемента списка, на котором находится курсор в элементе диалога Список или Поле  со списком, и устанавливает курсор, если задан  параметр  номер,  на элемент списка, номер которого совпадает со значением параметра

стр = сЗнач.ВстрокуСРазделителями();

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

сЗнач.ИзСтрокиСРазделителями(стр);

Преобразовывает строку стр,  содержащую разделенные  запятыми последовательности символов или цифры в значения списка

сЗнач.Выгрузить(знач, [поз], [кол]);

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

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

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

Рис.  3.2.  Диалог после  вызова сЗнач.ОтметитьЗначения  (код,

"Пометка элементов списка"); сЗнач список из приведенной в разд.   3.3.2 процедуры Выполнить;  перед вызовом  диалога  выполнено  присваивание: код  =  "100"

Замечания:

1.              Имя  сЗнач списка значений, употребленное в табл.  3.3 перед названием методов, может быть произвольным.

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

3.              В методах для списка значений ПолучитьЗначение, УстановитьЗначение, УдалитьЗначение и Пометка должно выполняться условие 1 < =поз < =сЗнач.РазмерСписка().

4.               Если  в методах  ВставитьЗначение,  ПолучитьЗначение, УстановитьЗначение, УдалитьЗначение  и  Пометка задана  неверно  позиция поз,  то  выводится  сообщение "Индекс не входит  в границы списка значений", метод игнорируется, вычисления продолжаются.

5.              Если  в   методах   СдвинутьЗначение  и   Выгрузить  задана   неверно  позиция  поз, то возникает завершающая работу  программы ошибка исполнения,  сопровождавмая сообщением "Номер за пределами значения".

6.              В документации по встроенному  языку  1С указано, что метод СдвинутьЗначение перемещает значение списка на новую позицию. На самом деле на новую позицию перемещаются и  значение, и  представление, и  пометка,  то есть элемент списка. Аналогичные  неточности присутствуют и при описании иных методов, например указывается, что метод УдалитьЗначение удаляет значения, в то время как он удаляет, если правильно заданы  параметры, элементы списка.

Пример.  Строка   с  разделителями  преобразовывается   в  список  значений  сЗнач, в котором затем  определяются представления  и  осуществляется, начиная  со  второго элемента, выгрузка списка сЗнач в список сЗнач2. Полученный список выводится приведений в разд.  3.3.2 процедурой Контроль.

перем  сЗнач2;

// Не забываем о том, что присутствующие в символьной константе  кавычки

// должны повторяться дважды

стр = """Цех  1"",  ""НПК  20"",  ""Отдел  48"",  24"; сЗнач.ИзСтрокиСРазделителями(стр);

// Текст процедуры  Контроль  см. в разд. 3.3.2

Контроль(сЗнач, "Контрольный  вывод значений полученного  из строки списка.");

// Определяем представление  списка сЗнач,  равным  номеру элемента,

// которому это представление принадлежит. Значения элементов сохраняем для ин = 1 по сЗнач.РазмерСписка() цикл

сЗнач.УстановитьЗначение(ин, сЗнач.ПолучитьЗначение(ин), ин); конецЦикла;

// Переменная сЗнач2  объявлена  оператором Перем. Без  этого  объявления ее

// нельзя  использовать в качестве фактического параметра процедуры  Выгрузить сЗнач.Выгрузить(сЗнач2, 2);               //         Копирование осуществляем со второй  позиции Контроль(сЗнач2, "Контрольный  вывод значений списка сЗнач2.");

Результат  после  второго  вызова процедуры  Контроль: Контрольный вывод значений  списка сЗнач2.

НПК 20 2

Отдел  483 244

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

По теме:

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