Студия/Таблица значений

From SunFlurry wiki
Jump to: navigation, search

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

  • Закладка Визуальные:
    • Anchor (якоря) -- задает якоря визуального элемента.
    • Top, Left (координата верхнего левого угла) -- задает координату (в точках) верхнего левого угла элемента относительно начала формы.
    • Width, Height (высота и ширина) -- задает высоту и ширину (в точках) элемента.
    • MaxWidth, MaxHeight (максимальная высота и ширина) -- задает максимальную высоту и ширину (в точках) элемента. Иногда бывает необходимо ограничить увеличение размера элемента вместе с размерами формы, так как излишнее увеличение может ухудшить читаемость и осложнить работу с элементом. К примеру, слишком длинное поле редактирования неудобно для чтения и т.п. Максимальные размеры позволяют ограничить увеличение элементов до приемлемых величин.
    • Layer (слой формы) -- задает слой формы, которому принадлежит текущий элемент. Для описания редактора слоев, см. следующую статью.
    • Font (шрифт элемента) -- задает шрифт, размер и цвет текста ячеек таблицы по умолчанию. Для описания редактора шрифтов, см. следующую статью.
    • FontColor (цвет текста элемента) -- задает цвет ячеек таблицы по умолчанию. Для описания редактора цветов, см. следующую статью.
    • Color (цвет фона элемента) -- задает цвет фона ячеек таблицы по умолчанию. Для описания редактора цветов, см. следующую статью.
    • IsNoCaptions (отображение заголовков столбцов) -- устанавливает режим запрета отображения заголовков столбцов таблицы.
    • IsNoGridLines (запрет отображения линий сетки) -- устанавливает режим, при котором линии сетки таблицы ячеек не отображаются.
    • IsDisabled (недоступность элемента) -- устанавливает режим недоступности элемента. При установке режима на таблицу, она становится недоступной для редактирования.
    • IsEditable (разрешен режим редактирования) -- Разрешает режим, при котором ячейки таблицы могут быть отредактированы непосредственно в самой таблице. Редактирование инициируется с помощью клавиши Enter, двойным щелчком мыши, Insert (см. список горячих клавиш таблицы), после чего комбинации Tab, Shift+Tab или Enter позволяют перемещаться в ячейках таблицы.
    • IsInvisible (невидимость элемента) -- элемент (и его связанных элементы) становится невидимым в рабочем режиме. В режиме редактирования в Студии, элемент по-прежнему отображен.
    • IfResizeWithParentX, IfResizeWithParentY (привязка размеров к группе элементов) -- Особые установки, работающие совместно с MaxWidth и MaxHeight, если последние заданы для группы элементов, на которой находится текущий элемент, его размеры будут привязаны не к самой форме, а к элементу группы. Без такого условия, невозможно было бы использовать MaxWidth и MaxHeight для форм со сложным расположением элементов.
    • IfQFiltersAlwaysAllowed (форсирование использования быстрых фильтров) -- данный режим форсирует использование фильтров, задаваемых пользователем непосредственно в заголовках столбцов таблицы. Обычно такой режим доступен только для таблиц, связанных с базой данных для столбцов с текстовыми реквизитами, однако, если программа использует визуальное событие OnAfterFilterChange, она может самостоятельно наложить такой быстрый фильтр (см. функцию Tab.Column.Filter).
    • IsMultiSelectAllowed (разрешено выделение группы строк) -- режим активирует возможность выделения группы строк таблицы (обычно выделение совпадает с курсором, который занимает одну ячейку). В этом режиме строки можно выделить удерживанием левой клавиши мыши при движении, либо добавлением к выделенному диапазону строк с помощью удерживания клавишы Ctrl и клика мышью. Чтобы снять выделение, достаточно однократного клика мышью по строке или использования клавиш навигации (Up, Down и пр.).
    • Hint (всплывающая подсказка) -- определяет текст всплывающей подсказки при наведении курсора мыши на элемент. Если свойство не задано (пустая строка), подсказка не будет выводиться.
    • AttachedButtons (связанные элементы) -- задает связанные элементы (доп. кнопки) выведенные в заголок таблицы (либо в другое место таблицы, в зависимости от установок). Для описания редактора связанных элементов см. следующую статью. Связанные элементы при редактировании ячеек для таблиц задаются в свойствах столбцов (см. параграф Редактор столбцов таблицы).
    • HeaderColumns (свойства столбцов таблицы) -- вызывает редактор столбцов таблицы, для его описания см. ниже параграф Редактор столбцов таблицы.
  • Закладка Данные:
    • Name (наименование) -- задает наименование элемента, с помощью которого к нему можно будет обращаться из программных модулей. Если свойства элемента не будут изменяться программно, наименование можно оставить пустым.
    • Folders (режим отображения папок) -- задает режим отображения папок при выводе справочников, содержащих папки, в список. Доступны следующие режимы отображения:
      • Отображать в общей структуре -- Папки будут отображаться в общем списке с обычным элементами.
      • Отображать вверху списка -- Папки будут отображаться до обычных элементов.
      • Не отображать -- Папки не будут выведены в список.
      • Отображать только папки -- В список будут выведны только папки.
    • DBSource (привязка к данных базы данных) -- задает привязку данной таблицы к сточным частям текущего объекта или свободным объектам базы данных. В зависимости от типа некоторые свойства таблицы могут быть автоматически изменены. См. Редактор типов данных.
    • Filters (начальные фильтры объекта) -- задает начальные фильтры таблицы, если она связана с базой данных. Для описания редактора фильтров см. следующую статью.
    • PartialLoadingModeColumns (столбцы режима частичной загрузки элементов) -- Свойство открывает редактор реквизитов частичной загрузки объектов, представляющий собой строку, где наименования реквизитов должны быть перечислены через запятые. Если строка заполнена, будет активирован такой режим. Режим частичной загрузки позволяет загружать элементы справочников с большим количеством реквизитов гораздо быстрее. Если таблица отображает справочник, который загружается достаточно медленно, увеличивая нагрузку на сеть организации и базу данных, можно включить режим частичной загрузки элементов (для более подробного описания режима, см. Объект базы данных). Если элементы будут загружены в режиме частичной загрузки с определенным списком дополнительных реквизитов загрузки, однако, в таблице будут существовать столбцы, привязанные к реквизитам, отсутствовавшим в этой частичной загрузки, каждый из эдементов будет отдельно заново полностью загружен в момент обращения к этому реквизиту, что не убыстрит, а сильно замедлит загрузку таблицы. Поэтому важно перечислить в редакторе реквизитов частичной загрузки все реквизиты, привязанные к видимым столбцам, либо которые будут использованы при выводе таблицы на экран (к примеру, в событиях OnShowLine).
    • InitialSortString (начальная установка сортировки) -- задает установку сортировки таблицы, если она связана с базой данных. Для описания редактора установки сортировки см. следующую статью.
    • IsDBAutoUpdate (режим автоматического обновления) -- задает режим, когда таблица будет периодически обновляться из базы данных. Период обновления по умолчанию задан в установках проекта. Такие режимы нужно использовать с осторожностью, так как они увеличивают нагрузку на базу данных и сеть, при этом большинство обновлений будет бесполезным. Вместо таких режимов, можно, к примеру, использовать функцию BroadcastDBUpdate, после выполнения изменений в важной таблице, за которой ведет наблюдения группа операторов.
    • ArePeriodicalsIncudedInQuery (режим включения в запрос периодических реквизитов) -- задает режим, который автоматически загружает периодические реквизиты, при загрузке объектов в таблицу. Обычно периодические реквизиты не загружаются, так как их загрузка связана с дополнительной нагрузкой на базу данных и увеличением времени обновления таблицы, однако, если периодические реквизиты выводятся в столбцах таблицы или используются при выводе столбцов (к примеру, в событии OnShowLine), этот режим будет ускорять загрузку.
    • IfLoadLineParts (режим загрузки строчных частей) -- задает режим, который автоматически загружает строчные части объектов, при их загрузке в таблицу. Обычно строчные части не загружаются, так как их загрузка связана с дополнительной нагрузкой на базу данных и (часто сильным) увеличением времени обновления таблицы, однако, если строчные части используются при выводе столбцов таблицы (к примеру, в событии OnShowLine), этот режим будет ускорять загрузку.
    • IsDefaultControl (основной табличный элемент - источник выбора) -- установка указывает на то, что табличный элемент представляет основной список текущих объектов и используется как источник выбора (при открытии формы в режиме выбора), либо для начальной фильтрации или позиционирования (при открытии родительского справочника или подобных операций, система автоматически передает начальный фильтр в форму и она должна знать, в какую таблицу передавать такой фильтр). Установка должна быть активна только для одного табличного элемента формы.
    • IsDisabledNoParent (контроль наличия справочника-родителя) -- установка автоматически запрещает редактирование таблицы, если она отображает элементы справочников, имеющие родителей (см. Объект базы данных), которые обычно фильтруются по указанному элементу родителю, и родитель не задан. Когда родитель задан (автоматически или программно с помощью ParentElement), запрет редактирования автоматически снимается. Установка дана для удобства, чтобы не проверять наличие родителя программно.
    • IfSetChangeFlag (установка флага модифицированности формы) -- задает режим, когда при изменении этого элемента, на форме автоматически устанавливается флаг модифицированности. Важно понимать, что если элемент привязан к реквизитам редактируемого объекта, его изменение автоматически установит этот флаг, вне зависимости от статуса использования этого режима, поэтому, режим имеет значение только для элементов, не привязанных к реквизитам редактируемого объекта.
    • IfNotInSettings (не сохраняется в установках формы) -- задает режим, когда при сохранении установок (состояния) формы, состояние данного элемента не будет записано совместно с состоянием других элементов. При чтении установок, этот элемент будет всегда иметь значение по умолчанию. Такой флаг удобно устанавливать, к примеру, для таблиц, содержащих расчетную информацию.
    • AreFoldersSelectable (режим разрешения выбора папок для табличных элементов форм, открытых в режиме выбора) -- задает режим, когда при выборе элементов в таблице выбора можно выбрать папку, если режим не задан, Enter будет работать, как вход в папку, иначе Enter будет выберет папку и закроет форму. Точно также двойной клик мыши по наименованию папки в этом режиме выберет ее, без этого режима войдет в папку и обновит таблицу. Обычно папки используются для систематизации, их не требуется выбирать в поля редактирования и реквизиты, однако, это поведение можно изменить, используя этот режим или программно.
    • HotKey (комбинация клавиш для активации элемента) -- задает комбинация клавиш для мгновенной активации элемента. Для описания редактора горячих клавиш см. следующую статью.
  • Закладка События предоставляет доступ к следующим событиям (см. Визуальные события):
    • OnAfterNewElementCreated -- событие, возникающее до начала редактирования нового элемента базы данных таблицы или строки строчной части элемента.
    • OnBeforeElementSaved -- событие, возникающее непосредственно после записи элемента базы данных в таблице элементов, либо строки в строчной части элемента.
    • OnAfterElementSaved -- событие, возникающее до начала редактирования строки списка.
    • OnBeforeEditCell -- событие, возникающее до начала редактирования ячейки таблицы.
    • OnAfterEditCell -- событие, возникающее в момент окончания редактирования ячейки таблицы.
    • OnEnter -- событие, возникающее при активации таблицы (получения курсора).
    • OnExit -- событие, возникающее при деактивации таблицы (потери курсора).
    • OnChecking -- событие, возникающее в момент (до изменения) установки или снятия флажка в ячейке таблицы.
    • OnChangeOrClick -- событие, возникающее при визуальном изменении (перемещении курсора) таблицы.
    • OnDoubleClick -- событие, возникающее при двойном клике по таблице мышью.
    • OnRightClick -- событие, возникающее при правом клике по таблице мышью.
    • OnKeyPress -- событие, возникающее при нажатии на клавишу, когда таблица активна.
    • OnGetRightClickMenu -- событие, возникающее до вывода на экран всплывающего меню, ассоциированного с текущей таблицей.
    • OnBeforeRefresh -- событие, возникающее до обновления таблицы из базы данных (даже при автообновлении).
    • OnBeforeLoadElements -- событие, возникающее перед загрузкой новых строк в табличный элемент.
    • OnInitLine -- событие, возникающее после загрузки диапазона новых строк в табличный элемент.
    • OnShowLine -- событие, вызываемое для начальной инициализации строк, выводящихся на экран.
    • OnGetCellVisualProperties -- событие, возникающее до прорисовки элемента таблицы.
    • OnAttachedButtons -- событие, возникающее при нажатии на связанный элемент (кнопку).
    • OnBeforeSelect -- событие, возникающее в момент выбора элемента справочника или документа в редактируемую ячейку таблицы.
    • OnBeforeEditObject -- событие, возникающее до открытия формы редактирования (или просмотра) объекта, содержащегося в ячейке таблицы при ее редактировании.
    • OnGetFormNameForOperation -- событие, возникающее при необходимости получить имя модуля и формы для выполнения операции открытия таблицы или журнала.
    • OnMoveToFolder -- событие, возникающее в момент интерактивного перемещения элемента в другую папку.
    • OnAfterFilterChange -- событие, возникающее после изменения быстрого фильтра в столбике таблицы.
    • OnAfterSorting -- событие, возникающее после визуального изменения сортировки таблицы.

Особые комбинации клавиш при работе с таблицами в визуальном клиенте:

  • Комбинации клавиш при работе с таблицей:
    • Стандартные комбинации клавиш для навигации по таблице: Down, Up, Left, Right, PageDown, PageUp, Home, End.
    • Поиск в таблице инициируется с помощью Ctrl+F, продолжить поиск можно с помощью Ctrl+L.
    • Помещение информации под курсором в буфер обмена: Ctrl+C или Ctrl+Insert.
    • F5 -- обновление содержимого таблицы из базы данных.
    • Ctrl+M -- при наличии связанного элемента "переместить в другую папку" (_ABB_MOVE), вызывает стандартное действие переноса в другую папку.
    • Ctrl+Down, Ctrl+Up -- при наличии папок в таблице, если таблица режиме показа по папкам, Ctrl+Down позволяет зайти внутрь папки, на которой находится курсор, даже если форма открыта в режиме выбора и разрешено выбирать папки, Ctrl+Up выходит из последней из папок.
    • F9 -- создание новой строки или объекта копированием из текущей, если в заголовке таблицы присутствует связанный элемент "копировать" (_ABB_COPY).
    • INSERT -- создание новой строки или объекта, если в заголовке таблицы присутствует связанный элемент "новый" (_ABB_NEW).
    • DELETE -- удаление текущей строки или объекта, если в заголовке таблицы присутствует связанный элемент "удалить" или "удалить один" (_ABB_DEL, _ABB_DELONE).
    • F11 -- открытие текущего объекта в режиме просмотра.
    • F2 -- осуществить редактирование строки или открытие текущего объекта, даже если форма открыта в режиме выбора (в отличие от клавиши Enter, которая может осуществить выбор).
    • При вводе любой цифровой или литерной информации в столбцах, для которых разрешен быстрый фильтр, будет наложен фильтр, фильтр будет отображен в заголовке столбца. Если быстрый фильтр не разрешен, введенная информация будет использована для инициации поиска в таблице по текущему столбцу.
  • Комбинации клавиш, используемые при редактировании ячеек таблицы:
    • F4 или любая литерная или цифровая клавиша (только в случае, когда поле имеет режим только для чтения IsReadOnly) -- осуществляет действие, совпадающее с кликом мышью на связанную кнопку "..." (_AB_CHOOSE). Если связанный элемент _AB_CHOOSE не привязан к полю редактирования, нажатие на "F4" не будет выполнять никакого действия.
    • Shift+F4, Backspace -- осуществляет действие, совпадающее с кликом мышью на связанную кнопку "X" (_AB_CLEAR). Если связанный элемент _AB_CHOOSE не привязан к полю редактирования, использование указанных комбинаций не будет выполнять никакого действия.
    • ESC -- отказаться от редактирования текущей ячейки без сохранения данных и выйти из режима редактирования.
    • ENTER -- принять изменения в текущей ячейке и перейти к редактированию следующей ячейки, входящей в Enter-цепочку ячеек. Если в текущей строке больше нет таких ячеек и строка является новой строкой, произвести попытку сохранения содержимого текущей строки и приступить к редактированию новой строки, начиная с первой ячейки, входящей в Enter-цепочку.
    • TAB, SHIFT-TAB -- переход к следующей (или предыдущей) ячейке, доступной для редактирования в текущей строке, игнорируя Enter-цепочку строки. Если такой ячейки нет, будет произведена попытка сохранения содержимого текущей строки и окончание режима редактирования.

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

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

Редактор столбцов таблицы

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

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

  • Заголовок -- задает заголовок столбца, как он будет отображен на экране.
  • Назначение -- выбирает из списка тип назначения столбца. Доступны следующие варианты:
    • Произвольное или из БД -- столбец не имеет особого назначения и может быть связан с базой данных или иметь произвольное значение. В столбцах данного типа можно программно эмулировать поведение столбцов любого другого типа, остальные типы даны для удобства написания программ, чтобы облегчить работу разработчикам.
    • Номер по списку -- в столбце выводится номер строки (вне зависимости от содержания ячеек таблицы в этом столбце), поддержка нумерации автоматическая.
    • Стандартная иконка -- в столбце выводится иконка, вид которой привязан к значению ячеек в столбце @ELEMENT. В столбцах @ELEMENT обычно загружаются элементы текущего объекта, отображаемого в таблице, к примеру, элементы справочника. В зависимости о статуса элемента, в столбцах таблицы, помеченных как "стандартная иконка", будет отображаться иконка элемента, папки, открытой папки, удаленного элемента, удаленной папки, документа, обработанного документа, удаленного документа и т.п.
    • Представление элемента -- в столбце выводится обычное представление элемента из столбца @ELEMENT (который обычно не отображается и не подлежит редактированию в этом редакторе).
    • Наименование объекта элемента -- в столбце будет выведено наименование вида объекта элемент из столбца @ELEMENT.
    • Иконка из библиотеки иконок -- в столбце будет отображаться иконка (помечает столбец для отображения иконок), чтобы изменить иконку в столбце, можно использовать функцию таблиц Icon.
  • Выравнивание -- задает выравнивание столбца, возможны следующие значения: "по левому краю", "по правому краю", "по середине"
  • Размеры столбцов -- задает режим автоматического изменения размером столбца при изменении размеров таблицы. Возможны следующие режимы:
    • Изменяются автоматически и вручную -- размер столбца будет изменяться автоматически пропорционально размеру столбца, по сравнению с размерами других столбцов, в пределах размеров, заданных параметрами "минимальная ширина" и "максимальная ширина". Пользователь также сможет изменять размеры столбца в указанных пределах с помощью перетаскивания границы столбца мышью.
    • Изменяются автоматически -- соответствует предыдущему пункту, но запрещает изменять размеры столбца пользователям.
    • Не изменяются -- размеры данного столбца не будут изменяться при изменении размеров таблицы.
  • Сортировка -- задает режим сортировки столбца. Возможны следующие режимы:
    • Без сортировки -- запрещает сортировать столбец по его значениям.
    • Сортировка по значениям -- разрешает сортировку столбца пользователям с помощью клика по столбцу или диалога "особая сортировка".
    • Сортировка программно -- запрещает сортировку столбца пользователям с помощью клика по столбцу или диалога "особая сортировка", однако программа может установить режим сортировки столбца, видимый в заголовке столбца.
  • Маска -- задает маску, используемую при редактировании ячейки текстового вида, числового вида или вида дата и время. Маска может задаваться Студией автоматически, при изменении типа поля, см. также Редактор типов данных и маска редактирования.
  • Тип данных -- задает привязку ячеек данного столбца к реквизитам текущего объекта или свободным объектам базы данных. В зависимости от типа некоторые свойства столбца могут быть автоматически изменены. См. Редактор типов данных.
  • Подсказка -- определяет текст всплывающей подсказки при наведении курсора мыши на заголовок данного столбца (не на сами ячейки). Если свойство не задано (пустая строка), подсказка не будет выводиться.
  • Идентификатор -- задает наименование столбца таблицы, с помощью которого к нему можно будет обращаться из программных модулей. Столбцы без наименований разрешены, но с ними будет сложнее работать, так как обращение к ним будет возможно только по их индексу.
  • Связанные элементы -- задает связанные элементы (доп. кнопки), используемые в редакторе ячеек столбца. В отличие от связанных элементов самой таблицы, здесь задаются линейные связанные элементы. Для описания редактора связанных элементов см. следующую статью.
  • Список значений -- задает особый список значений подмены представлений столбца. В списке перечислены возможные значения ячейки столбца таблицы, которые будут заменены на указанные в списке представления. Таким образом, вместо числа 0 можно вывести слово "нет", вместо числа 1, слово "да" или в подобных ситуациях заменить простое значение ячеек на более описательное автоматически, тем самым отменяя необходимость делать такие преобразования программно.
  • Ширина столбца в пикселях -- задает видимую (текущую) ширину столбца в пикселях. Ее также можно изменить в Студии с помощью перетаскивания границы заголовка столбца мышью.
  • Минимальная ширина -- задает минимальную ширину столбца при его автоматическом или ручном изменении в клиенте.
  • Максимальная ширина -- задает максимальную ширину столбца при его автоматическом или ручном изменении в клиенте. Эта ширина может изменяться Студией автоматически при изменении типа данных столбца.
  • Дополнительные свойства столбцов, заданные в виде флажков:
    • Столбец недоступен (отключен) -- используется для запрета доступа ко всем ячейкам столбца. Отличается от режима только для чтения тем, что для столбца невозможно инициировать режим редактирования, кроме того, ячейки стоблц выделяются особым цветом и начертанием шрифта.
    • Столбец невидимый -- отключает отображение столбца на экране.
    • Разрешено редактирование -- разрешает режим редактирования для ячеек данного столбца.
    • Встроенный выбор элементов -- включает режим, когда при редактировании ячейки с типом объект базы данных в момент выбора объекта в ячейку, по умолчанию будет использован всплывающий диалог быстрого выбора, а не загрузка формы для выбора. Этот режим можно изменить программно.
    • Участвует в Enter-цепочке -- включает ячейки этого столбца в Enter-цепочку.
    • Отображать галочки в данном столбце -- инициирует режим отображения флажков в ячейках данного столбца.
    • Отрицательные числа выделять красным -- цвет текста отрицательных чисел, помещенных в ячейки столбца будет изменен на красный, вне зависимости от установки цвета шрифта.


Дополнительная информация:

  • Для работы со свойствами объектов формы из программы, см. статью Форма.
  • Для работы с объектом таблицы значений из программы, см. статью Таблица.