Возвращаемое значение: значение конкретной колонки в данной строке.
Пример:
ВыбЗнач = Табл.ПолучитьЗначение(3, 5);
НайтиЗначение(<Знач>, <Строка>, <Колонка>) – позволяет найти искомое значение в таблице значений и определить номер строки и номер колонки таблицы значений.
Параметры:
<Знач> – значение для поиска.
<Строка> – идентификатор переменной, куда возвращается номер найденной строки. Если при вызове метода передать в этот параметр номер строки, то поиск будет осуществляться только по указанной строке.
<Колонка> – идентификатор переменной, куда возвращается номер найденной колонки. Если при вызове метода передать в этот параметр номер или идентификатор колонки, то поиск будет осуществляться только по указанной колонке.
Возвращаемое значение: 0 – значение не найдено; 1 – значение найдено.
Пример:
Перем НомСтр;
Перем НомКолонки;
Табл.НайтиЗначение(ВыбЗнач, НомСтр, НомКолонки);
Сортировать(<Колонки>, <ДокументыПоДате>) – выполняет сортировку таблицы значений по заданным колонкам, порядку и направлению сортировки.
Параметры:
<Колонки> – строковое выражение, которое определяет колонки, порядок и направление сортировки. Формат передаваемой строки – это разделенные запятыми номера или идентификаторы колонок со знаком направления сортировки ("+" по возрастанию, "–" по убыванию, "*" по внутреннему значению). Знак направления сортировки следует указывать до обозначения колонки через пробел или без пробела. По умолчанию направление сортировки принимается по возрастанию. Например: "–Код, +Цена, –8, 5".
<ДокументыПоДате> – необязательный параметр. Имеет смысл только в том случае, если значениями таблицы значений являются документы. В этом случае можно задавать сортировку документов по их хронологии. Число: 1 – сортировка по хронологии документов; 0 – нет. Значение по умолчанию – 0.
Пример:
Табл.Сортировать("–Код, +Цена, –8, 5");
Очистить() – выполняет очистку таблицы значений и удаляет колонки.
Пример:
Табл.Очистить();
Итог(<Колонка>) – вычисляет сумму по заданной колонке таблицы значений.
Параметры:
<Колонка> – номер или идентификатор колонки, по которой считать сумму.
Возвращаемое значение: сумма по колонке.
Пример:
Сумма=Табл.Итог(2);
Заполнить(<Знач>, <НачСтрока>, <КонСтрока>, <Колонки>) – позволяет заполнить значения конкретных колонок в строках таблицы значений переданным значением.
Параметры:
<Знач> – одиночное значение или список значений или таблица значений.
<НачСтрока> – необязательный параметр. Номер начальной строки, с которой надо начинать заполнение. Значение по умолчанию 1.
<КонСтрока> – необязательный параметр. Номер последней строки, по которую надо заполнять, если не указана, то до последней.
<Колонки> – необязательный параметр. Номера или идентификаторы колонок, которые надо заполнять. Если параметр не задан, то заполняются все колонки.
Пример:
Табл.Заполнить(ВыбЗнач, 2, 5, "5, 6, 7");
Свернуть(<ГруппКолонки>, <СуммКолонки>) – позволяет свернуть таблицу значений по соответствующим значениям колонок, т. е. заменяет на одну строку все дублирующие (по значениям группировочных колонок) строки, суммируя значения но суммируемым колонкам.
Параметры:
<ГруппКолонки> – группировочные колонки (номера или идентификаторы колонок через запятую), по которым группировать данные.
<СуммКолонки> – суммируемые колонки (номера или идентификаторы колонок через запятую), по которым суммировать данные.
Пример:
Табл.Свернуть("1,2,3,4", "5,6,7");
Выгрузить(<Знач>, <НачСтрока>, <КонСтрока>, <Колонки>) – позволяет выгрузить заданную область таблицы значений в переданное значение. Если в качестве значения для выгрузки задан список значений, то система выгружает данные из таблицы значений по колонкам.
Параметры:
<Знач> – идентификатор переменной, содержащей значение типа ТаблицаЗначений или СписокЗначений, в которое нужно выгрузить данные. Если переданное значение пустое, тогда система сама создаст объект типа ТаблицаЗначений.
<НачСтрока> – необязательный параметр. Номер начальной строки, с которой надо начинать выгрузку. Значение по умолчанию 1.
<КонСтрока> – необязательный параметр. Номер последней строки, по которую надо выгружать, если не указана, то до последней.
<Колонки> – необязательный параметр. Номера или идентификаторы колонок, которые надо выгружать. Если параметр не задан, то выгружаются все колонки.
Пример:
НовТабл = СоздатьОбъект("ТаблицаЗначений");
СтарТабл.Выгрузить(НовТабл, 1, 5, "1,3,5,7");
Загрузить(<ТаблицаЗначений>) – позволяет скопировать структуру и значения таблицы значений. Прежняя структура колонок таблицы значений при этом очищается.
Параметры:
<ТаблицаЗначений> – значение типа ТаблицаЗначений. Структура и значения для загрузки.
Пример:
НовТабл = СоздатьОбъект("ТаблицаЗначений");
НовТабл.Загрузить(СтарТабл);
ВидимостьКолонки(<Колонки>, <Видимость>, <Позиция>) – определяет перечень колонок и их видимость в визуальном представлении таблицы значений.
Параметры:
<Колонки> – строковое выражение, которое определяет список колонок. Формат передаваемой строки – это разделенные запятыми номера или идентификаторы колонок, для которых применяется данный метод. Например: «Код, Цена, 8, 5».
<Видимость> – необязательный параметр. 1 – показать колонки; 0 – скрыть. По умолчанию – 1.
<Пoзиция> – необязательный параметр. Позиция, в которой показывать колонку. Если параметр не задан, то колонки отображаются в соответствии с порядком колонок в таблице.
Возвращаемое значение: Если передана одна колонка, то возвращается значение видимости колонки до вызова метода. 1 – колонка показана; 0 – колонка скрыта.
Пример:
ТаблДиалога.ВидимостьКолонки("Код, Цена, 8, 5");
ТекущаяСтрока(<ИндексСтроки>) – позволяет установить и/или считать текущее положение курсора в элементе диалога типа ТаблицаЗначений. Данный метод можно использовать только для объектов, которые созданы при помощи визуальных средств конфигуратора (в форму вставлены элементы диалога ТаблицаЗначений, а идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа ТаблицаЗначений).
Параметры:
<ИндексСтроки> – необязательный параметр. Числовое выражение с задаваемым индексом строки для элемента диалога типа ТаблицаЗначений, на которую требуется установить курсор. Если параметр не задан, то положение курсора в поле диалога не меняется.
Возвращаемое значение: числовое значение, соответствующее индексу текущей строки поля диалога (до его изменения) или 0, если текущей строки нет.
Пример:
ТаблДиалога.ТекущаяСтрока(2);
ТекущаяКолонка(<НоваяКолонка>, <ТекущаяКолонка>) – позволяет установить и/или считать текущее положение курсора в элементе диалога типа ТаблицаЗначений. Данный метод можно использовать только для объектов, которые созданы при помощи визуальных средств конфигуратора (в форму вставлены элементы диалога ТаблицаЗначений, а идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа ТаблицаЗначений).
Параметры:
<НоваяКолонка> – необязательный параметр. Номер или идентификатор колонки для элемента диалога типа ТаблицаЗначений, на которую требуется установить курсор. Если параметр не задан, то текущая колонка в поле диалога не меняется.
<ТекущаяКолонка> – необязательный параметр. Идентификатор переменной, куда система возвращает номер текущей колонки.
Возвращаемое значение: идентификатор текущей колонки поля диалога (до его изменения) или "" (пустая строка), если ее нет.
Пример:
Перем НомКолонки;
ТаблДиалога.ТекущаяКолонка(2, НомКолонки);
Фиксировать(<КолСтрок>, <КолКолонок>) – позволяет фиксировать в элементе диалога типа ТаблицаЗначений колонки и строки.
Параметры:
<КолСтрок> – необязательный параметр. Количество фиксируемых строк. Если не указаны, то не изменять фиксацию.
<КолКолонок> – необязательный параметр. Количество фиксируемых колонок. Если не указаны, то не изменять фиксацию.
Пример:
ТаблДиалога.Фиксировать(1, 1);
ВыводитьПиктограммы(<Колонка>, <Пиктограмма>) – устанавливает режим, при котором в колонке выводится не текст, а пиктограмма. Пиктограмма будет браться из картинки, назначенной элементу диалога ТаблицаЗначений в закладке Картинка в конфигураторе. Картинка должна быть формата .bmp, содержать все пиктограммы для этой таблицы значений, и состоять из последовательности пиктограмм размером 16х15 пикселей. Пиктограммы будут выбираться из картинки по номеру, взятому из числового значения данной колонки в текущей строке. Параметр <Пиктограмма> позволяет установить для данной колонки начальный номер пиктограмм в картинке.
Параметры:
<Колонка> – номер или идентификатор колонки, которая содержит номера пиктограмм.
<Пиктограмма> – необязательный параметр. Начальный номер пиктограммы. Значение по умолчанию: 1.
Пример:
ТаблДиалога.ВыводитьПиктограммы(1, 1);
Используем таблицу значений в документе ПриказОбУвольнении для того, чтобы проверить, что одного и того же сотрудника не удаляют дважды в одном приказе. Для этого в модуле формы документа создадим предопределенную процедуру ПриЗаписи(). Эта процедура выгружает табличную часть документа в таблицу значений Табл и проходим по всем строкам таблицы, кроме последней, выполняя следующие действия:
в переменную Сотр запоминается сотрудник из текущей строки;
далее все строки таблицы ниже текущей выгружаются во вспомогательную таблицу Табл1;
в Табл1 выполняется поиск сотрудника, запомненного в Сотр;
если такой сотрудник найден, значит он содержится в приказе минимум два раза, выдается сообщение об ошибке и выполнение процедуры прерывается, если сотрудник не найден, переходим на следующую строку таблицы Табл и выполняем пункт 1.
Процедура ПриЗаписи()
Табл=СоздатьОбъект("ТаблицаЗначений");
Табл1=СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(Табл);
Для а=1 По Табл.КоличествоСтрок()–1 Цикл
Сотр = Табл.ПолучитьЗначение(а, 2);
Табл.Выгрузить(Табл1,а+1,,);
Если Табл1.НайтиЗначение(Сотр,,2)=1 Тогда
Предупреждение("Сотрудник "+Сотр.Наименование+" содержится в приказе многократно");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Далее рассмотрим пример экранного отображения таблицы значения и выбора из такой таблицы. Пусть при создании новой ведомости на зарплату выдается запрос о том, что помещать в ведомость весь список сотрудников или выбрать из списка. Для этого используем стандартную процедуру Вопрос(), которая имеет следующие параметры:
Вопрос(<Текст_вопроса>, <Режим>, <Таймаут>) – выводит на экран окно вопроса. Текст определяется параметром <Текст_вопроса>. Параметр <Режим> определяет варианты возможных ответов.
Параметры:
<Текст_вопроса> – строковое выражение текста вопроса.
<Режим> – числовое или строковое выражение, определяющее режим вывода окна вопроса. Если параметр <Режим> задан числовым значением, то возможные варианты передаваемого параметра:
0 – Кнопка ОК.
1 – Кнопки ОК и Отмена.
2 – Кнопки Стоп, Повтор, Пропустить.
3 – Кнопки Да, Нет, Отмена.
4 – Кнопки Да, Нет.
5 – Кнопки Повтор, Отмена.
Любое другое числовое значение параметра <Режим> эквивалентно значению 0 (кнопка ОК), равно как и отсутствие указанного параметра.
Если параметр <Режим> задан строковым значением, то возможные варианты передаваемого параметра:
"ОК"
"ОК+Отмена"
"Стоп+Повтор+Пропустить"
"Да+Нет+Отмена"
"Да+Нет"
"Повтор+Отмена"
<Таймаут> – необязательный параметр. Числовое выражение интервала времени ожидания ответа в секундах, в течение которого система будет ожидать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию – 0.
Возвращаемое значение:
Если параметр <Режим> задан числовым значением, то функция возвращает числовое значение:
–1 – Закончилось время ожидания ответа.
1 – Выбрана кнопка ОК.
2 – Выбрана кнопка Отмена.
3 – Выбрана кнопка Стоп.
4 – Выбрана кнопка Повтор.
5 – Выбрана кнопка Пропустить.
6 – Выбрана кнопка Да.
7 – Выбрана кнопка Нет.
Если параметр <Режим> задан строковым значением, то функция возвращает строковое значение. Язык для возврата такой же, какой использован в параметре <Режим>.
Таймаут – Закончилось время ожидания ответа.
ОК – Выбрана кнопка ОК.
Отмена – Выбрана кнопка Отмена.
Стоп – Выбрана кнопка Стоп.
Повтор – Выбрана кнопка Повтор.
Пропустить – Выбрана кнопка Пропустить.
Да – Выбрана кнопка Да.
Нет – Выбрана кнопка Нет.
При создании новой ведомость зададим вопрос, в зависимости от ответа на который пометим в ведомость полный список сотрудников или выдадим таблицу для выбора сотрудника. Процедура ВводНового() изменится и появятся две новые процедуры: ПолныйСписок(), куда переместится добавление всех сотрудников из справочника, и ТаблицаВыбора(), где будет создана таблица для выбора сотрудника из таблицы.
Процедура ПолныйСписок()
Сотр=СоздатьОбъект("Справочник.Сотрудники");
Сотр.ПорядокНаименований();
Сотр.ВыбратьЭлементы();
Пока Сотр.ПолучитьЭлемент()=1 Цикл
Если Сотр.ЭтоГруппа()=0 Тогда
Если (Сотр.ДатаУвольнения='00.00.00') или Сотр.ДатаУвольнения>НачМесяца(Дат)) Тогда
НоваяСтрока();
ФИО=Сотр.ТекущийЭлемент();
ВыборСотрудника();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ТаблицаВыбора()
// в эту переменную поместиться номер выбранной строки таблицы
Перем НомСтроки;
// создаем таблицу значений
Табл=СоздатьОбъект("ТаблицаЗначений");
// создаем колонки
Табл.НоваяКолонка("ФИО", "Строка", 30,,"ФИО сотрудника",30);
Табл.НоваяКолонка("Должность", "Справочник.Должности",,,"Должность",30);
Сотр=СоздатьОбъект("Справочник.Сотрудники");
Сотр.ПорядокНаименований();
Сотр.ВыбратьЭлементы();
Пока Сотр.ПолучитьЭлемент()=1 Цикл
Если Сотр.ЭтоГруппа()=0 Тогда
Если (Сотр.ДатаУвольнения='00.00.00') или (Сотр.ДатаУвольнения>НачМесяца(Дат)) Тогда
// создаем новую строку таблицы значений
Табл.НоваяСтрока();
// помещаем в нее данные
Табл.ФИО=Сотр.Наименование;
Табл.Должность=Сотр.Должности;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// после заполнения таблицы выдаем окно для выбора сотрудника
Если Табл.ВыбратьСтроку(НомСтроки, "Выберите сотрудника")=1 Тогда
// создаем новую строку в документе Ведомость
НоваяСтрока();
// позиционируемся в справочнике по выбранной в таблице строке
Сотр.НайтиПоНаименованию(Табл.ПолучитьЗначение(НомСтроки,1),0,0);
// добавляем данные из справочника в документ
ФИО=Сотр.ТекущийЭлемент();
ВыборСотрудника();
КонецЕсли;
КонецПроцедуры
Процедура ВводНового()
Дат=НачМесяца(ДатаДок);
РасчетФондаВремени();
Если Вопрос("Нажмите <Да> для внесения в ведомость полного списка сотрудников или <Нет> для выбора сотрудников из списка", 4)=6 Тогда
ПолныйСписок();
Иначе
ТаблицаВыбора();
КонецЕсли;
КонецПроцедуры
Обратите внимание, что из таблицы значений можно выбрать только одну строку. Для множественного выбора лучше пользоваться списком значений и методами ОтметитьЗначения() и Пометка().