Таблица значений в 1С 8.3

ТаблицаЗначений — это программный объект встроенного языка, позволяющий строить произвольные наборы данных в памяти компьютера, отображать их в табличном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать).

Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.

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

Таблица значений является полностью динамическим объектом, т. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.

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

Таблица значений в 1С – это универсальная коллекция, объект встроенного языка, который используется для работы с данными в табличном виде. Этот объект не сохраняется в базе данных, а размещается в оперативной памяти. У таблицы значений в общем случае может быть произвольное количество колонок, при этом допускается как типизация колонок, так и размещение в колонках значений произвольных типов.

Таблица значений имеет свойства и методы для работы с колонками и строками, которые рассмотрены в ниже.

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

// Создание таблицы значений
ТабЗнач = Новый ТаблицаЗначений;

Добавление колонок

// Добавление колонок в таблицу значений без указания типа
ТабЗнач. Колонки. Добавить(“Сотрудник”);
ТабЗнач. Колонки. Добавить(“Должность”);
ТабЗнач. Колонки. Добавить(“Оклад”);

// Добавление колонки с явным указанием типа значения и заголовком
ОписаниеПремия = Новый ОписаниеТипов(“Число”, Новый КвалификаторыЧисла( 10 , 2));
ТабЗнач. Колонки. Добавить(“ПроцентПремии”, ОписаниеПремия, “Процент премии”);
ТабЗнач. Колонки. Добавить(“Премия”, ОписаниеПремия, “Премия”);

Добавление новой строки, заполнение реквизитов

// Вставить новую строку в указанную позицию в таблицу значений
ВставленнаяСтрока = ТабЗнач. Вставить(1);

// Заполнить строку значениями
// В качестве источника данных заполнения могут быть объекты с именованными свойствами
// – Структура, строка таблицы значений, объект, и т. // метод производит сопоставление свойств по именам,
// и заполняет значения у совпавших свойств приемника – в нашем случае строки таблицы значений
ЗаполнитьЗначенияСвойств(ВставленнаяСтрока, СтрокаТЗ);
ВставленнаяСтрока. Сотрудник = “Сидоров Александр”;

Заполнить колонку таблицы значений одним значением для всех строк

// Заполнение колонки для всех строк таблицы значений
ТабЗнач. ЗаполнитьЗначения(10. 5, “ПроцентПремии”);

Перебор строк и колонок таблицы значений

// Коллекция строк и коллекция колонок по своему поведению похожи на массивы,// и работать с ними можно схожим образом
// Перебрать все колонки таблицы значений и вывести заголовки,// а если не заполнен заголовок – то имя колонки
Для Каждого Колонка из ТабЗнач. Колонки Цикл
Сообщить(?(ЗначениеЗаполнено(Колонка. Заголовок),Колонка. Заголовок, Колонка. Имя));
КонецЦикла;

// Перебрать все строки и произвести какие-то вычисления,// например, посчитать премию, как Оклад * процент премии /100
Для Каждого СтрокаТЗ из ТабЗнач Цикл
СтрокаТЗ. Премия = СтрокаТЗ. Оклад * СтрокаТЗ. ПроцентПремии / 100;
КонецЦикла;

Копирование таблицы значений в 1С — примеры

// Создать полную копию таблицы
КопияТЗ = ТабЗнач. Скопировать();
// Создать копию таблицы значений по нужным колонкам
КопияДолжностиОклады = ТабЗнач. Скопировать(,“Должность,Оклад”);

//Создать копию таблицы значений с отбором нужных строк
Отбор = Новый Структура(“Должность”, “Тестировщик”);
КопияТЗТестировщики = ТабЗнач. Скопировать(Отбор);

// Создать пустую таблицу значений с такими же колонками как у исходной
ПустаяКопияТЗ = ТабЗнач. СкопироватьКолонки();

Сортировка таблицы значений в 1С 8. Как упорядочить таблицу значений.

// Сортировать таблицу значений по колонке в 1С 8
КопияТЗ. Сортировать(“Оклад”);

// Сортировать таблицу значений по нескольким колонкам в 1С 8
КопияТЗ. Сортировать(“Должность Убыв, Оклад Возр”);

Свернуть таблицу значений

// Просуммировать значения в одних колонках, свернув таблицу значений в разрезе других колонок
// При использовании метода Свернуть, все не использованные в методе колонки удалятся!
// Первым параметром идет список колонок через запятую, по которым мы хотим получить группировки
// Вторым параметром идет список колонок, значения в которых нужно просуммировать
// В этом примере в таблице значений КопияТЗ останутся только колонки Должность и Оклад
КопияТЗ. Свернуть(“Должность”, “Оклад”);

Удаление строк из таблицы по условию. Обратный обход таблицы значений снизу вверх

// Найти одну строку в таблице значений по значению во всех колонках. // Метод целесообразно использовать для поиска уникальных значений
НайденнаяСтрока = ТабЗнач. Найти(“Федоров Василий”);

// Найти строку по значению с поиском по определенным колонкам
// При поиске по неуникальным значениям следует учитывать, что метод вернет первую попавшуюся строку
НайденнаяСтрока = ТабЗнач. Найти(10. 5, “Премия, ПроцентПремии”);

Удалить все строки из таблицы значений

// Удалить все строки из таблицы значений
ТабЗнач. Очистить();

Получить навыки разработки в 1С, и составить целостное представление о платформе 1С Предприятие 8 вы можете, пройдя мой курс “Разработчик 1С с нуля”.

Мы покажем вам, как правильно заполнить «шапку» и «содержимое» таблицы, в т. при ее делении по высоте (размещении на нескольких страницах) и по ширине; как отразить повторение значений внутри; как ставить знаки препинания и когда использовать заглавные буквы; как указывать числовые значения и единицы измерения. Покажем, как в тексте грамотно ссылаться на таблицу и ее ячейки.

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

Сейчас таблицы активно используются для наглядного и систематизированного представления информации в документах.

По характеру оформления линейками / границами таблицы бывают закрытыми, полузакрытыми и открытыми. Кроме того, разделительные линейки в таблице могут быть заменены пробелами, такие таблицы называются выводами. Вывод может быть включен в текст как продолжение фразы или ее окончание (Пример 1). В этом случае для размещения текста по столбцам в MS Word можно пользоваться табулятором.

Пример 1. Оформление вывода

Таблица значений в 1С 8.3

Наименование элементов таблицы показано в Примере 2. Она состоит из заголовков, головки, боковика и прографки. Все, что ниже головки, называется хвостом таблицы. Хвост в свою очередь делится на боковик и прографку. Боковик, как и головка, — скорее заголовочная часть (см. серую заливку в Примерах 2 и 12). А вот в прографке размещают те сведения, ради которых и составлялась таблица. Перед ее набором нужно хорошенько продумать структуру головки и боковика, чтобы оптимально систематизировать представляемые таблицей сведения.

И еще два определения, которые помогут нам в будущем:

  • графа таблицы — ряд данных, расположенный вертикально;
  • строка таблицы — горизонтально.

Все эти определения приведены в ГОСТ Р 7. 32-2001 «СИБИД. Отчет о научно-исследовательской работе. Структура и правила оформления».

Пример 2. Структура таблицы с наименованием ее элементов (серой заливкой выделена головка таблицы, которую в просторечье называют «шапкой»)

Таблица значений в 1С 8.3

Начинается таблица с нумерационного заголовка. Он состоит из слова «Таблица» и порядкового номера, при этом знак № не ставится. Обычно нумерационный заголовок набирается курсивом и размещается у правого края.

Он призван упростить ссылки на таблицу в основном тексте документа. Ссылка обычно оформляется так: «(табл 4)» или «(таблица 4)». При этом лучше избегать дополнения «см. » в значении «смотри».

Даже если в документе фигурирует одна таблица, ее все равно стоит нумеровать: «Таблица 1».

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

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

Пример 3. Нумерационный заголовок над тематическим

Таблица значений в 1С 8.3

Пример 4. Совмещение нумерационного заголовка и тематического в одной строке

Таблица значений в 1С 8.3

Если таблица большая (по высоте) и не поместилась на одной странице, то на следующей принято это указывать, что позволит читателю документа быстрее ориентироваться в нем. Слово таблица при этом можно писать в заголовке (и при ссылке в тексте) как полностью, так и сокращенно: «табл. 5», главное соблюсти единообразие во всем документе.

На последующих страницах можно повторить головку таблицы полностью со всеми заголовками граф, а можно привести только номера граф (что менее удобно читателю, зато экономит место при большой «шапке») — сравните Примеры 5 и 6.

Пример 5. Оформление длинной по высоте таблицы с полным повторением «шапки» на каждой странице

Таблица значений в 1С 8.3

Пример 6. Оформление длинной по высоте таблицы с повторением в «шапке» только номеров граф

Таблица значений в 1С 8.3

Если таблица не помещается по ширине, то сначала попробуйте уменьшить размер шрифта и отступы слева и справа от текста до границ ячеек. Если это не поможет (ведь текст в ней должен остаться читабельным), то придется переносить часть таблицы, т. ее левая часть будет идти отдельно от правой. Можно поделить таблицу не только на две части, но и более (как это сделать, показано в Примере 12). Ориентироваться помогут заголовки к таблице, нумерация граф, выделяющие внешнюю границу линии, можно еще повторить боковик в каждой части таблицы.

Нумеровать можно не только графы, но и строки. Это поможет потом делать из текста адресные ссылки на конкретные ячейки таблицы, например: «(см. показания в строке 5 графы 4)». Для этого номер обычно включается в содержимое боковика (Пример 7). Если оно представляет собой не простой список равноправных элементов (например, 1, 2, 3 и т. ), а сложный многоярусный (например, пункт 1 включает подпункты «а» и «б» и только потом следует пункт 2), то к нумерации боковика применяются стандартные правила нумерации многоуровневых списков.

Если при этом у пункта есть итоговые сведения в прографке, суммирующие данные всех его подпунктов, то для такого пункта стоит выделять в таблице отдельную строку. В противном случае в боковике в единой ячейке можно объединить данный пункт с его первым подпунктом.

Но не у любой таблицы есть боковик с заголовками строк.

В заголовках граф сначала идет словесное определение, потом после запятой — обозначение используемой единицы измерения (например, «кв. », «%», «°С», «руб. » или «тыс. руб. » и т. ), что позволяет избежать повторения указания единицы измерения в каждой ячейке содержимого таблицы (Пример 7). В заголовок графы еще можно включить имеющиеся ограничения (например, «от. », «не более. », «не менее. » и т. , см. последнюю графу таблицы в Примере 7).

Пример 7. Таблица с пронумерованными строками в боковике

Заголовки граф и боковика ставят в именительном падеже, начинаются они с прописной буквы, в конце точка не ставится (как в Примере 7). Но если головка таблицы многоярусная и заголовки нижележащих ярусов подчинены верхним, то (Пример 8):

  • со 2-го яруса и ниже допустима строчная буква в начале заголовка графы,
  • а формулировка нижележащих ярусов в «шапке» таблицы может согласовываться с вышестоящими.

Пример 8. Фрагмент «шапки» табличной части штатного расписания

Таблица значений в 1С 8.3

Для визуального выделения «шапки» таблицы можно применить заливку (см. два варианта в Примерах 2 и 12), жирный шрифт для этого редко используют. Красиво выглядит центрирование по высоте и ширине.

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

Текст ячейки можно начать с маленькой буквы, если он представляет собой обрывочную фразу. Если это полноценное предложение или несколько предложений, то начинать стоит с заглавной буквы. Если же какие-то ячейки заполняются короткими фразами, а какие-то — предложениями, то лучше все ячейки прографки начинать с заглавной буквы.

Некоторую сложность представляют собой правила расположения чисел. Числовые значения одной величины лучше располагать так, чтобы единицы находились под единицами, десятки под десятками, сотни под сотнями и т. (Пример 9). Для этого содержимое ячеек удобно выравнивать по правому краю, дополнительно можно установить отступ справа.

Если в одной графе собраны показатели неодинаковых величин, то они просто центрируются (Пример 10).

Если через тире или многоточие приводится диапазон значений, то в идеале все равнять по тире / многоточию, которые размещаются в центре. Но это слишком трудоемкий вариант, который редко реализуют. Можем поделиться маленькой хитростью: чтобы тире / многоточие оказалось во всех ячейках столбца на одном месте, надо сделать одинаковым количество знаков в числах до и после тире / многоточия. Чтобы этого добиться, недостающие знаки в MS Word можно напечатать цветом бумаги (обычно это верхний левый вариант в таблице цветов шрифта текста) — при выравнивании содержимого ячеек такие знаки будут учитываться, а на печати и экране видны не будут (пока кто-нибудь не изменит им цвет). Но подобные игры крайне опасны при трансляции данных — все ваши визуально «невидимые дополнения» воспримутся как полноценные данные и могут быть отображены.

Пример 9. Выравнивание показателей одинаковых величин

Таблица значений в 1С 8.3

Пример 10. Выравнивание показателей неодинаковых величин

Таблица значений в 1С 8.3

Пример 11. Выравнивание диапазона числовых значений

Таблица значений в 1С 8.3

Повторяющийся в соседних строках одной графы текст можно заменить кавычками или выражением «То же» (но не принято заменять цифры и знаки, аббревиатуры, а также названия, включающие аббревиатуру или номер). При переносе таблицы на другую страницу повторяющийся текст снова приводится полностью, даже если до этого заменялся кавычками или «То же».

Нежелательно оставлять незаполненные ячейки. Здесь можно написать «Нет сведений» либо проставить прочерк при помощи тире.

Выполнение описанных рекомендаций в управленческих документах — дело добровольное. Просто перечисленные правила оформления таблиц позволят вам создавать удобные наглядные документы. Будет меньше путаницы и таблицы будут выглядеть аккуратно.

Пример 12. Деление таблицы на части по ее ширине

Таблица значений в 1С 8.3

Колонки таблицы значений

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

  • Имя — идентификатор колонки (может содержать только алфавитные символы, цифры и знаки подчеркивания. Причем, начинаться имя колонки может только с буквы или символа подчеркивания);
  • Заголовок — представление колонки в диалогах (может содержать произвольные символы);
  • ТипЗначения — тип значения содержимого ячеек в этой колонке. Если тип не задан, в ячейке можно хранить значения произвольного типа;
  • Ширина — ширина колонки в диалогах;

Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений. Для добавления новой колонки используется метод Добавить():

тзКолонкиДобавить ОписаниеТипов
тзКолонкиДобавить ОписаниеТипов
тзКолонкиДобавить//можно хранить произвольные данные

Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():

найдКолонка тзКолонкиНайти
найдКолонка
Сообщить»Колонка не найдена!»

Перебор колонок выполняется следующим образом:

Колонка тзКолонки
СообщитьКолонкаИмя

Для удаления колонки используется метод Удалить():

найдКолонка тзКолонкиНайти
найдКолонка
тзКолонкиУдалитьнайдКолонка

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

ИмяТипОписание
ИмяСтрокасимвольный идентификатор колонки, по которому к ней можно обращаться из кода
ЗаголовокСтрокастроковое представление колонки на форме
ТипЗначенияОписаниеТиповсвойство органичивает пространство доступных значений, которые можно указать в данной колонке
ШиринаЧислоширина колонки на форме (выражается в количестве символов)

Методы коллекции колонок таблицы значений

Вставить()Вставляет новую колонку в указанную позицию коллекции
Добавить()Добавляет новую колонку в конец коллекции
Количество()Возвращает количество колонок в коллекции
Найти()Ищет колонку в коллекции по имени
Очистить()Удаляет все колонки из коллекции
Сдвинуть()Сдвигает колонку влево или вправо
Удалить()Удаляет колонку из коллекции

Строки таблицы значений

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

Добавление и удаление строк

Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений. Метод возвращает объект СтрокаТаблицыЗначений, с которым доступны дальнейшие манипуляции:

СтрокаТЧ тзДобавить

И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:

СтрокаТЧНаименование
СтрокаТЧКоличество
СтрокаТЧСвойство ТекущаяДата

Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():

тз СтрокаТЧВладелец

Для удаления строки используется метод Удалить() объекта ТаблицаЗначений. Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:

//непосредственное удаление строки
тзУдалитьСтрокаТЧ
//удаление строки по индексу
тзУдалитьтзИндексСтрокаТЧ

Перебор строк таблицы значений

Для перебора строк удобнее всего использовать оператор цикла Для Каждого. В редких случаях оправдано применение цикла Для:

СтрокаТЧ тз
ИндСтроки тзИндексСтрокаТЧ

//в редких случаях
ИндСтроки тзКоличество
СтрокаТЧ тзПолучитьИндСТроки

В отличие от платформы 1С:Предприятие 7. 7 в 8-ке расширен функционал работы с таблицей значений. Поиск можно выполнять не только по значению в колонке (в этом случае будет возвращена первая найденная строка), но и по набору свойств (в этом случае возвращается массив строк):

//поиск первой строки
НайдСтрока тзНайтиНоменклатура
//поиск набора строк
ПараметрыПоиска Структура Номенклатура
мНайдСтроки тзНайтиСтрокиПараметрыПоиска

Все методы таблицы значений:

Вставить()Вставляет строку на указанное место
ВыбратьСтроку()Позволяет интерактивно выбрать строку в диалоговом окне
ВыгрузитьКолонку()Выгружает значения ячеек указанной колонки в массив значений
Добавить()Добавлет новую строку в таблицу значений
ЗагрузитьКолонку()Загружает значения в ячейки указанной колонки из массива
ЗаполнитьЗначения()Заполняет ячейки указанных колонок определенным значением
Индекс()Возвращает индекс строки таблицы значений
Итог()Возвращает просуммированный итог по колонке таблицы значений
Количество()Возвращает количество строк в таблице значений
Найти()Выполняет поиск строки по значению
НайтиСтроки()Выполняет поиск строк по указанным параметрам
Очистить()Очищает строки таблицы значений
Получить()Возвращает строку по ее индексу
Свернуть()Выполняет сжатие строк и колонок таблицы значений
Сдвинуть()Сдвигает строку вверх или вниз по таблице
Скопировать()Создает новую таблицу значений копированием текущей
СкопироватьКолонки()Создает новую пустую таблицу значений путем копирования колонок текущей таблицы
Сортировать()Выполняет сортировку строк таблицы значений по указанным колонкам
Удалить()Удаляет строку таблицы значений

Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:

Таблица значений в 1С 8.3

  • Как объединить таблицы значений
  • Как программно выгрузить таблицу значений
  • Как правильно загрузить значений в колонку таблицы значений из массива