Главная » 1С Предприятие » ТАБЛИЦА ЗНАЧЕНИЙ

0

3.4.1.  АТРИБУТЫ ТАБЛИЦЫ ЗНАЧЕНИЙ

Таблица значений, в  отличие от списка значений, может  иметь произвольное  число  столбцов  (колонок).  Объект   типа ТаблицаЗначений  создается  функцией  СоздатьОбъект и имеет атрибуты  номер Строки  и идентификаторы столбцов. Первый содержит  номер   выбранной   строки;  идентификатор  столбца    значение  ячейки  таблицы в выбранной   строке.   Например, если  идентификатор  первого  столбца  таблицы  тЗнач имеет имя Код, то для изменения значения элемента этого  столбца  в пятой  строке  при меним  следующий  код:

тЗнач.НомерСтроки = 5;                      //             Переходим к строке  5 таблицы тЗнач

// Новое значение кода в пятой  строке  первого столбца таблицы тЗнач

тЗнач.Код = "037";

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

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

// Новое значение кода в пятой строке первого столбца таблицы тЗнач

тЗнач.УстановитьЗначение(5, 1, "037");

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

тЗнач.1 = "037";                    //            тЗнач.1                     недопустимое  имя

Поскольку имя тЗнач.1  является  недопустимым, то ошибка возникнет уже на этапе компиляции модуля.

Пример.  В  процедуре  Выполнить  обработки  Проба  создается  таблица  значений тЗнач,  содержащая  приведенные в  табл.  3.4 данные;  доступ к ячейкам  таблицы осуществляется  через  имена идентификаторов столбцов;  выбор строки производится в р езультате  изменения значения  атрибута номерСтроки.

Состав таблицы значений

Таблица 3.4

Код подразделения

Подразделение

Число  сотрудников

099

Отдел  кадров

10

100

Бухгалтерия

15

111

Снабжение и сбыт

20

001

Цех 1

100

002

Цех 2

150

011

Цех  11

200

перем тЗнач;

//

тЗнач переменная  модуля

процедура

Выполнить()

//

Отображает таблицу значений

// Перед  каждым запуском процедуры Выполнить будем очищать окно  сообщений

ОчиститьОкноСообщений();

// Выведем номер текущей строки, используя атрибут номерСтроки

Сообщить(тЗнач.НомерСтроки);            //       Напечатает 6

// Покажем таблицу значений, выделив  в ней четвертую строку

// Результат приведен на рис. 3.7

тЗнач.ВыбратьСтроку(4, "Первый просмотр таблицы значений"); тЗнач.НомерСтроки = 5;          //      Переходим к строке  5 таблицы тЗнач

// Новое значение кода в пятой  строке  первого столбца таблицы тЗнач

тЗнач.Код = "037";

тЗнач.ВыбратьСтроку(, "Второй  просмотр таблицы значений");  конецПроцедуры / Выполнить

процедура Заполнить(   )

//

Добавляет  в таблицу значений  строки и заполняет

перем ин, номСтроки;

//

их данными  из векторов кодПодр, подр и колВо;

// Векторы для имен подразделений, их кодов и численности

перем кодПодр[20],  подр[20],  колВо[20];

перем  числоПодр; числоПодр = 6; кодПодр[1] = "099" кодПодр[2] = "100"; кодПодр[3] = "111"; кодПодр[4] = "001"; кодПодр[5] = "002"; кодПодр[6] = "011";

для ин = 1 по числоПодр цикл тЗнач.НоваяСтрока();

// Число подразделений

подр[1]  = "Отдел  кадров";                                    колВо[1] = 10; подр[2] =  "Бухгалтерия";                                    колВо[2] =  15; подр[3] = "Снабжение и сбыт";                        колВо[3] = 20; подр[4] = "Цех 1";                                                колВо[4] =  100; подр[5] =  "Цех 2";                                                колВо[5] =  150; подр[6] =  "Цех 1 Г;                                         "  колВо[6] = 200;

// Добавляем новую строку

// Определяем, используя  идентификаторы столбцов, ячейки новой строки тЗнач.Код = кодПодр[ин];

тЗнач.Имя = подр[ин];

тЗнач.Количество = колВо[ин]; конецЦикла; // для

конецПроцедуры // Заполнить

процедура ПриОткрытии()

// Формируем  столбцы таблицы значений  тЗнач.НоваяКолонка("Код", "Строка"); тЗнач.НоваяКолонка("Имя",  "Строка"); тЗнач.НоваяКолонка("Количество", "Число"); Заполнить();

конецПроцедуры // ПриОткрытии

// Формирует таблицу значений

// Заполняем таблицу значений данными

// Основная программа модуля  обработки Проба состоит из одного оператора тЗнач  = СоздатьОбъект("ТаблицаЗначений");

Рис.  3.7.   Таблица значений после  цикла Для  процедуры  Заполнить Замечания:

1.        Переменная  тЗнач.НомерСтроки,  если  ее  употребить  в   качестве  первого  парамет ра метода  ВыбратьСтроку,   например

тЗнач.ВыбратьСтроку(тЗнач.НомерСтроки, "Второй просмотр  таблицы значений");

будет  передана  методу   по  значению,  то  есть  номер  выбранной строки  не  будет  установлен в параметр тЗнач.НомерСтроки.

2.         Таблица,  приведенная  на  рис.  3.7, приобрела  такой   вид  после  появления  диалоге и изменения  в  нем  при  помощи  мыши  ширины столбцов.  Однако  надлежащую используемую  при  отображении  таблицы  ширину столбца  можно  установить заранее, задав ее в методе  НоваяКолонка, например, так:

// Формируем столбцы таблицы значений.  Опуская имена необязательных параметров,

// сохраняем разделяющие их запятые

тЗнач.НоваяКолонка("Код", "Строка",,,, 10);      //   10 ширина первого столбца

тЗнач.НоваяКолонка("Имя", "Строка",,,, 20); тЗнач.НоваяКолонка("Количество", "Число",,,, 15);

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

По теме:

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