ПЕРЕЧИСЛЕНИЯ
Синтаксис вызова |
Комментарий |
флаг = тЗнач.ПолучитьСтроку(); |
Вернет 1, если удалось переместиться на следующую строку, или 0 - если выполняется попытка переместиться за пределы таблицы значений |
флаг = тЗнач.ВыбратьСтроку ([номВыбСтроки],
[загДиалога], [задержка]); |
Возвращает:
1, если нажата кнопка ОК;
0, если нажата кнопка Отмена;
-1, если закончилось время, заданное параметром задержка.
Параметр номВыбСтроки - входной/выходной. При вызове метода курсор позиционируется на строке, номер которой равен номВыбСтроки, или на первой строке, если значение номВыбСтроки лежит вне диапазона [1, тЗнач.КоличествоСтрок();] |
тЗнач.ПолучитьСтрокуПоНомеру
(номСтроки); |
Если номер строки номСтроки выходит за пределы диапазона [1, тЗнач.КоличествоСтрок();], то возникнет завершающая ошибка, сопровождаемая сообщением "Номер за пределами значения!" |
номНовойСтроки =
тЗнач.СдвинутьСтроку (числоСтрок, [номСтроки]); |
Если номСтроки не задан, то перемещается текущая строка. Если числоСтрок > 0, то строка перемещается вниз таблицы. Иначе, если числоСтрок < 0, - в верх таблицы. Строка станет последней (первой), если числоСтрок задает позицию за пределами таблицы значений |
тЗнач.УстановитьЗначение(номСтроки, иден | номСтолбца, знач); |
Ячейка, в которой устанавливается значение, задается номером строки и идентификатором или номером столбца. Если эти параметры заданы с ошибкой, то возникнет завершающая вычисления ошибка |
знач = тЗнач.ПолучитьЗначение
{номСтроки, иден | номСтолбца); |
Ячейка, значение которой возвращается методом, задается номером строки и идентификатором или номером столбца. Завершающая ошибка возникает в тех же случаях, что и для метода УстановитьЗначение |
флаг = тЗнач.НайтиЗначение(знач,
номСтроки, иден | номСтолбца); |
Возвращает 1, если значение знач найдено, или
0 - в противном случае. Параметры номСтроки и иден | номСтолбца являются входными/выходными. В качестве результата эти параметры возвращают координаты ячейки, содержащей искомое значение. Если номСтроки (иден | номСтолбца) при вызове метода задает существующую строку (столбец), то поиск осуществляется только в этой строке (этом столбце). Если на входе номСтроки (иден | номСтолбца) отличен от нуля или пустого значения (иден не является пустой строкой), и выходит за границы таблицы (или иден задает несуществующий идентификатор столбца), то возникнет завершающая ошибка |
Синтаксис вызова |
Комментарий |
тЗнач.Сортировать(столбцы, [поДате]); |
Если значения таблицы - это документы и поДате =1, то документы сортируются по дате, в противном случае - по значению. Значение по умолчанию - 0 |
тЗнач.Очистить(); |
После выполнения метода атрибут номерСтроки принимает нулевое значение
Вернет, если параметр метода - это числовой столбец, сумму элементов столбца, заданного параметром иден или номСтолбца, или нуль -в противном случае. Вызов метода выполнен в примере 3 после табл. 3.7 |
тЗнач.Заполнить(знач, [начСтрока], [конСтрока], [столбцы]); |
Если хотя бы один из последних трех параметров метода задан с ошибкой, то возникнет завершающая ошибка |
тЗнач.Свернуть(групСтолбцы,
сумСтолбцы); |
Столбцы, которых нет в символьных выражениях групСтолбцы и сумСтолбцы, будут отсутствовать в результирующей таблице значений (см. пример 4 после табл. 3.7) |
тЗнач.Выгрузить(новОбвект, [начСтрока], [конСтрока], [столбцы]); |
Если хотя бы один из последних трех параметров метода задан с ошибкой, то возникнет завершающая ошибка. Порядок употребления метода иллюстрирует приводимый ниже пример 5 |
тЗначПриемник.Загрузить(тЗначИсточник); |
Данные переносятся из таблицы тЗначИсточник в таблицу тЗначПриемник |
флаг = тЗнач.ВидимостьКолонки(столбцы, [видимость], [позиция]); |
Если параметр столбцы содержит один столбец, то возвращает флаг видимости этого столбца до вызова метода; флаг равен единице, если столбец виден, или нулю - в противном случае. Если параметр столбцы задает несуществующий столбец или параметр позиция указывает на несуществующую
позицию, то метод игнорируется |
номСтрокиДо = тЗнач.ТекущаяСтрока ([номСтроки]); |
Вернет номер строки, на которой был позиционирован курсор до применения метода, или нуль, если такой строки нет. Текущая строка не меняется, если параметр номСтроки
не задан |
иденДо^омСтолбцаДо =
тЗнач.ТекущаяКолонка
([иде^номСтолбца],
[номСтолбцаДо]); |
Вернет идентификатор, а если он не задан, то номер столбца, на котором позиционирован курсор до применения метода, или нуль, если такого столбца нет. Текущий столбец не меняется, если опущен первый параметр |
Синтаксис вызова |
Комментарий |
тЗнач. Фиксировать |
Если параметр колСтрок задан, то после |
([колСтрок], [колСтолбцов]); |
применения метода в элементе диалога Таблица значений будут недоступны первые колСтрок таблицы. Если параметр отсутствует, то число недоступных строк не изменяется. Аналогично на столбцы элемента диалога Таблица значений действует параметр колСтолбцов. Вызов тЗнач.Фиксировать(0, 0); делает доступными все ячейки таблицы значений |
тЗнач.ВыводитьПиктограммы |
Пиктограммы, имеющиеся в подсоединенном |
(идеи | номСтолбца, |
к элементу диалога Таблица значений ВМР- |
[начНомПиктограммы ]); |
файле, - это последовательность растровых образов размера 16x15 видеопикселов.
Обращение к образу осуществляется по его номеру в этой последовательности. Если ячейка
А столбца иден | номСтолбца содержит число а, то в этой ячейке отобразится пиктограмма с номером начНомПиктограммы + а - 1. Если начНомПиктограммы + а - 1 меньше единицы или больше числа пиктограмм в ВМР-файле, то ячейка А останется незаполненной |
Замечания:
1. Имя тЗнач таблицы значений, употребленное в табл. 3.6 перед названиями методов, может быть произвольным.
2. Параметры методов, если это не оговаривается особо, являются входными.
3. Как и во всех методах, процедурах или функциях, входные параметры являются выражениями соответствующих типов.
Описание параметров методов таблицы значений
Таблица 3.7 |
Параметр |
Описание |
видимость |
Если равен нулю, то столбцы, перечисленные в параметре столбцы метода ВидимостьКолонки, будут скрыты, или видимы -в противном случае |
выравнивание |
Если выравнивание =1, то данные в столбце выравниваются по левой стороне, и по правой, если выравнивание = 2 |
групСтолбцы |
Столбцы, строки которых объединяются в одну при наличии в столбцах с одинаковыми номерами совпадающих значений |
длина |
Число символов для представления числовых или символьных данных |
заг |
Заголовок столбца |
загДиалога |
Заголовок диалогового окна |
знач |
Значение ячейки таблицы значений |
|
Параметр |
Описание |
идеи |
Идентификатор столбца |
колСтрок |
Число фиксируемых строк элемента диалога Таблица значений |
колСтолбов |
Число фиксируемых столбцов элемента диалога Таблица значений |
конСтрока |
Номер строки, в которой завершается заполнение или копирование таблицы значений (методы Заполнить или Выгрузить). Если параметр отсутствует, то заполнение (копирование) выполняется до последней строки включительно |
начНомПиктограммы |
Номер первого образа BMP-файла, отображаемого в ячейках заданного столбца элемента диалога Таблица значений |
начСтрока |
Номер строки, с которой начинается заполнение или копирование таблицы значений (методы Заполнить или Выгрузить). Если параметр отсутствует, то заполнение (копирование) осуществляется с первой строки |
новОбъект |
Имя таблицы или списка значений, задающее объект, в который метод Выгрузить копирует данные |
номНовСтолбца |
Номер нового столбца |
номСтолбца |
Номер столбца таблицы значений, на который распространяется действие метода |
номСтолбцаДо |
Номер текущего столбца таблицы значений до применения метода ТекущаяКолонка |
номСтроки |
Номер строки таблицы значений, на которую распространяется действие метода |
по Дате |
Флаг задания сортировки документов, содержащихся в таблице значений, по дате |
позиция |
Позиция, в которой отображается столбец таблицы, заданный параметром столбцы метода ВидимостьКолонки. Если параметр позиция отсутствует, то положение столбца не меняется |
числоСтобцов |
Новое число столбцов, устанавливаемое методом
КоличествоКолонок |
числоСтобцовДо |
Старое число столбцов, возвращаемое методом
КоличествоКолонок |
числоСтрок |
Число строк в таблице значений, устанавливаемое методом КоличествоСтрок |
столбцы |
Символьное выражение, содержащее разделенные запятыми идентификаторы или номера столбцов, по которым выполняется сортировка (метод Сортировать), или в которых изменяются значения ячеек (метод Заполнить), или из которых копируются данные (метод Выгрузить). В методе Сортировать перед идентификатором (номером) столбца может стоять знак + или -.'
Если перед идентификатором (номером) столбца знака нет или стоит знак +, то сортировка выполняется по возрастанию, если расположен знак -, то по убыванию (см. пример 3 после настоящей таблицы). Если переченьСтолбцов содержит неверный идентификатор или номер столбца, то возникнет завершающая ошибка |
Параметр |
Описание |
сумСтолбцы |
Столбцы, данные в которых суммируются при объединении строк по столбцам, заданным параметром групСтолбцы |
тип |
Тип, возможно агрегатных, данных, отображаемых в столбце |
точность |
Число знаков после десятичной точки в представлении числовых данных |
формат |
Формат представления данных. Форматирование осуществляется по правилам, изложенным в разд. 2.8.5 |
ширина |
Число символов, отводимое под столбец при отображении таблицы значений в диалоге |
номВыбСтроки |
На входе задает номер строки таблицы значений, на которой позиционируется курсор, на выходе - номер выбранной в диалоге строки |
Пример 1. В окно сообщений выводятся значения первого столбца, имеющего имя Код, во всех строках таблицы значений, заданной в табл. 3.4. Процедура Вывести может быть вызвана из процедуры Выполнить из разд. 3.4.1.
процедура Вывести()
// тЗнач - переменная модуля, поэтому доступна в процедуре Вывести // Позиционируемся перед первой строкой таблицы значений тЗнач тЗнач.ВыбратьСтрокиО;
// Перебор строк таблицы значений начинается с ее первой строки пока тЗнач.ПолучитьСтрокуО = 1 цикл Сообщить(тЗнач. Код); конецЦикла; // пока конецПроцедуры // Вывести
Пример 2. В окно сообщений выводятся начиная с третьей строки значения первого столбца таблицы значений, заданной в табл. 3.4.
процедура Вывести2()
// тЗнач - переменная модуля, поэтому доступна в процедуре Вывести // Позиционируемся на второй строке таблицы значений тЗнач тЗнач.ПолучитьСтрокуПоНомеру(2);
// Перебор строк таблицы значений начинается с ее третьей строки пока тЗнач.ПолучитьСтрокуО = 1 цикл Сообщить(тЗнач. Код); конецЦикла; // пока конецПроцедуры // Вывести2
Пример 3. Сортировка таблицы значений по трем столбцам. Первоначально создается и заполняется данными таблица значений, имеющая столбцы КодПоставщика, Материал и Количество. Затем выполняется сортировка по строке "КодПоставщика, +Материал, -3", означающей, что прежде данные упорядочиваются по возрастанию названий поставщиков, затем в пределах одинаковых поставщиков данные упорядочиваются (так же по возрастанию) по названию материалов и, наконец, в пределах одинакового поставщика и одинакового материала данные упорядочиваются по убыванию по количеству.
процедура Выполнить() перем тЗнач; перем пост[20], мат[20], колВо[20], ост[20];
//
Пример сортировки таблицы значений тЗнач
перем ин, числоЗап; // числоЗап - число строк в таблице значений
ОчиститьОкноСообщений();
тЗнач = СоздатьОбъект('ТаблицаЗначений");
числоЗап = 9;
// Содержание таблицы значений
пост[1]= |
1; |
мат[1] = |
"Сталь 45"; |
колВо[1] = 10; |
ост[1] |
= 5; |
пост[2] = |
2; |
мат[2] = |
"Чугун"; |
колВо[2] = 20; |
ост[2] |
= 10; |
пост[3] = |
1; |
мат[3] = |
"Сталь 45"; |
колВо[3] = 90; |
ост[3] |
= 40; |
пост[4] = |
3; |
мат[4] = |
"Свинец"; |
колВо[4] = 55; |
ост[4] |
= 25; |
пост[5] = |
1; |
мат[5] = |
"Сталь 45"; |
колВо[5] = 150; |
ост[5] |
= 65; |
пост[6] = |
4; |
мат[6] = |
"Олово"; |
колВо[6] = 70; |
ост[6] |
= 30; |
пост[7] = |
3; |
мат[7] = |
"Свинец"; |
колВо[7] = 100; |
ост[7] |
= 70; |
пост[8] = |
4; |
мат[8] = |
"Олово"; |
колВо[8] = 180; |
ост[8] |
= 100; |
пост[9] = |
1; |
мат[9] = |
"Олово"; |
колВо[9] = 200; |
ост[9] |
= 120; |
// Формируем столбцы таблицы значений. Опуская имена необязательных параметров,
// сохраняем разделяющие их запятые тЗнач.НоваяКолонка("КодПоставщика", "Число",,,, 10);
тЗнач.НоваяКолонка("Материал", "Строка",,,, 10); // 10 - ширина второго столбца
тЗнач.НоваяКолонка("Количество", "Число",,,, 8); тЗнач.НоваяКолонка("Остаток", "Число",,,, 8); для ин = 1 по числоЗап цикл
тЗнач.НоваяСтрока( ); // Добавляем новую строку
// Определяем, используя атрибут идентификатор столбца, ячейки новой строки тЗнач.Материал = мат[ин]; тЗнач.КодПоставщика = пост[ин]; тЗнач.Количество = колВо[ин]; тЗнач.Остаток = ост[ин]; конецЦикла; // для
// Покажем таблицу значений до сортировки тЗнач.ВыбратьСтроку(1, "До сортировки");
// Строка "1, +2, -Количество" обеспечит тот же результат сортировки, что и строка // "КодПоставщика, +Материал, -3" тЗнач.Сортировать("КодПоставщика, +Материал, -3"); тЗнач.ВыбратьСтроку(1, "После сортировки");
Сообщить(тЗнач.Итог("Количество")); // Напечатает 875
конецПроцедуры
Результат приведен на рис. 3.10.
КопЛос... |
I Материал | Колич.. |
1 Осгзт... |
КооПос.. |
I Материал | Колич... | Осгат... |
И |
Сталь 45 |
10 |
5 МММ |
ІмВИ 1 |
Олово |
200 |
1201 |
2 |
Чугун |
20 |
10 |
1 |
Сталь 45 |
150 |
65 |
1 |
Сталь 45 |
30 |
40 |
1 |
Сталь 45 |
90 |
40 |
3 |
Свинец |
55 |
25 |
1 |
Сталь 45 |
10 |
5 |
1 |
Сталь 45 |
150 |
65 |
2 |
Чугун |
20 |
10 |
4 |
Олово |
70 |
30 |
3 |
Свинец |
100 |
70 |
3 |
Свинец |
100 |
70 |
3 |
Свинец |
55 |
25 |
4 |
Олово |
180 |
100 |
4 |
Олово |
180 |
100 |
1 |
Олово
а |
200 |
120 |
4 |
Олово
6 |
70 |
30 |
Рис. 3.10. Таблица значений: а - до сортировки; б - после сортировки по правилу "КодПоставщика, +Материал, -3"
Пример 4. Если до метода Сортировать в процедуру Выполнить примера 3 добавить код а)
тЗнач.Свернуть("1", "3");
тЗнач.ВыбратьСтроку(1, "После сворачивания 4, а");
б)
тЗнач.Свернуть("1, 2", "3");
тЗнач.ВыбратьСтроку(1, "После сворачивания 4, б");
в)
тЗнач.Свернуть("1, 2", "3,4"); тЗнач.ВыбратьСтроку(1, "После сворачивания 4, в");
то получим приведенный на рис. 3.11 и 3.12 результат.
КооПос... |
I Материал | Коли.. I |
Остат... |
1 |
Сталь 45 |
10 |
5 |
2 |
Чупц |
20 |
10 |
1 |
Сталь 45 |
90 |
40 |
3 |
Свинец |
55 |
25 |
1 |
Сталь 45 |
150 |
65 |
4 |
Олово |
70 |
30 |
3 |
Свинец |
100 |
70 |
4 |
Олово |
180 |
100 |
1 |
Олово |
200 |
120 |
|
а |
Рис. 3.11. Таблица значений: а-до сворачивания; б - после сворачивания 4, а |
КооПос... |
I Материал I Колич... |
КооПос.. |
| Материал | Ко/ич... |
I Остат... |
1 |
Сталь 45 |
;г' — |
1 |
Сталь 45 |
250 |
1101 |
2 |
Чугун |
20 |
2 |
Чуун |
20 |
10 |
3 |
Свинец |
155 |
3 |
Свинец |
155 |
95 |
4 |
Олово |
250 |
4 |
Олово |
250 |
130 |
1 |
Олово |
200 |
1 |
Олово |
200 |
120 |
|
а |
|
|
6 |
|
|
|
Рис. 3.12. Таблица значений: а - после сворачивания 4, б; б - после сворачивания 4, в |

Пример 5. Если до метода Сортировать в процедуру Выполнить примера 3 добавить код
сЗнач = СоздатьОбъект("СписокЗначений"); тЗнач.Выгрузить(сЗнач, 1, 4, "1, 2, 3");
сЗнач.ВыбратьЗначение(1, "Данные перенесены из таблицы тЗнач"); то получим приведенный на рис. 3.13 результат.
 |
Рис. 3.13. Таблица и список значений: а - фрагмент таблицы, из которой копируются данные; б - список значений после переноса в него данных |
Пример 6. Неоднократное применение метода ВидимостьКолонки приводит к искажению представляемой методом ВыбратьЗначение таблицы значений. Так, код
тЗнач.ВыбратьСтроку(1, "Исходное представление таблицы значений"); тЗнач.ВидимостьКолонки(''2'', 0); тЗнач.ВидимостьКолонки(''3'', 1, 2);
тЗнач.ВыбратьСтроку(1, "После двукратного употребления метода ВидимостьКолонки");
добавленный до метода Сортировать в процедуру Выполнить примера 3, приведет к тому, что вместо трех столбцов метод ВыбратьСтроку отобразит два столбца табли -цы значений (рис. 3.14, б)
КоаПос. |
1 Материал | Колич. | Оствг.. |
КоаПос 1 |
Остат . |
|
Сталь 45 |
10 |
|
|
1 |
2 |
Чуун |
20 |
10 |
2 |
10 |
1 |
Сталь 45 |
90 |
40 |
1 |
40 |
3 |
Самой |
55 |
25 |
3 |
25 |
1 |
Ста» 45 |
150 |
85 |
1 |
65 |
4 |
Олово |
70 |
Ж |
4 |
30 |
3 |
Самой |
100 |
70 |
3 |
70 |
4 |
Олово |
180 |
100 |
4 |
100 |
1 |
Олово |
200 |
120 |
1 |
120 |
|
а б
Рис. 3.14. Таблица значений: а - до скрытия столбцов; б - с неверным числом отображаемых столбцов |
Замечание. С элементом диалога Таблица значений метод ВидимостьКолонки работает корректно.
Пример 7. Отображение таблицы значений, приведенной на рис. 3.9, после применения метода Фиксировать. Недоступные ячейки выводятся на сером фоне (рис. 3.15).
тЗнач.Фиксировать(2, 1);
 |
Рис. 3.15. Элемент диалога Таблица значений, в котором недоступны две первые строки и первый столбец |
Пример 8. Отображение пиктограмм в ячейках элемента диалога Таблица значений. Возьмем таблицу значений, созданную в разд. 3.4.2 и представленную на рис. 3.9 и 3.14, и добавим в нее на третью позицию столбец под именем Состояние, использовав код
тЗнач.НоваяКолонка("Состояние",,,,, 5); // 5 - ширина столбца
Запретим, применив метод Фиксировать, редактирование столбцов Код и Имя и будем выводить взятые из рис. 3.16 и приведенные в табл. 3.8 пиктограммы.
Рис. 3.16. Последовательность пиктограмм, выводимая в столбце Состояние рассматриваемой таблицы значений
Таблица 3.8
Пиктограммы ячеек элемента диалога Таблица значений |
Пиктограмма |
Номер |
Когда выводится |
|
1 |
Данные таблицы не изменялись с момента ее создания
и начального заполнения |
[fl~1 |
2 |
Установлен запрет на редактирование значения ячейки столбца Количество в текущей строке. Запрет устанавливается (снимается) в результате нажатия на кнопку Запретить |
|
3 |
Были внесены изменения в ячейку столбца Количество текущей строки |
Р<1 |
4 |
Строка таблицы значений подлежит удалению. Пиктограмма проставляется (снимается) в результате двойного удара мыши по ячейке в столбце Состояние удаляемой строки. Процедура, удаляющая помеченные строки, создается читателем
самостоятельно |
|
Возможный вариант состояния таблицы значений приведен на рис. 3.17. |
 |
Рис. 3.17. Таблица значений с пиктограммами из табл. 3.8 |
Для управления таблицей значений и ее отображения создадим форму, по образцу представленному на рис. 3.18.
 |
Рис. 3.18. Проект формы, управляющей таблицей значений |
Свяжем, используя закладку Дополнительно, кнопку Запретить с процедурой Запрет, устанавливающей в ячейку текущей строки столбца Состояние число 2, если редактировать количество нельзя, или прежнее значение ячейки. Для пояснения назначения кнопки на закладке Описание в окне Свойства кнопки введем приведенный на рис. 3.19 текст и активизируем флажок Использовать описание, что обеспечит вывод описания в качестве подсказки, когда в процессе работы с формой мышка задержится на кнопке Запретить.
 |
Рис. 3.19. Используем описание в качестве подсказки |
Кнопка Запретить оказывает воздействие только на непомеченные для удаления записи.
Первые 3 пиктограммы для таблицы значений имеются на картинке (рис. 3.20) из библиотеки картинок, открываемой на закладке Картинка окна Свойства таблицы после выбора кнопки Изменить картинку.
 |
Рис. 3.20. Библиотека картинок |
Сохраним выделенную на рис. 3.20 картинку в файл p.bmp, выбрав на рис. 3.20
иконку ^ Загрузим файл p.bmp в Paint (графический редактор BMP-файлов, запускаемый, например, после выполнения в Windows последовательности действий Пуск -Стандартные - Paint, дорисуем в четвертом прямоугольнике картинки пиктограмму 4 из табл. 3.8, приведя таким образом картинку к рис. 3.16. Добавим далее, находясь
в окне Библиотека картинок (рис. 3.20), при помощи иконки ^ в библиотеку файл p.bmp и выберем новую картинку для таблицы, воздействовав на иконку ^ . Теперь после выполнения метода тЗнач.ВыводитьПиктоіраммы(''Состояние'', 1);
в ячейках столбца Состояние будут выводиться пиктограммы из табл. 3.8. Причем номер выводимой пиктограммы будет равен значению, хранящемуся в ячейке.
Замечание. Доступ к библиотеке картинок также осуществляется после открытия конфигурации и выбора пункта Библиотека картинок в колонке Действия. Поскольку библиотека входит в конфигурацию, система предложит при закрытии конфигурации сохранить внесенные в библиотеку изменения.
Алгоритм функционирования формы:
1. Начальные действия:
• заполним таблицу значений тЗнач начальными данными, записав во все ячейки столбца Состояние число 1;
• зададим (метод ВыводитьПиктограммы) режим отображения пиктограмм для столбца Состояние (первоначально во всех его ячейках будет видна пиктограмма 1);
• запретим (метод Фиксировать) редактирование столбцов Код и Имя таблицы значений;
• создадим список значений сЗнач и присвоим всем его элементам единичные значения. В этом списке будем хранить значения ячеек столбца Состояние. Причем в столбце Значение будем размещать числа 1 или 2, интерпретируя их в соответствии с табл. 3.8, а в столбце Представление - строку Да, если можно редактировать количество, или строку Нет - в противном случае. Все это нам понадобится для правильной смены пиктограмм при работе с таблицей значений.
2. При нажатии на кнопку Пуск процедура Выполнить восстанавливает исходные состояния переменных тЗнач и сЗнач.
3. При нажатии на кнопку Запретить выполняется процедура 3 апрет, которая:
• если выставляется запрет на редактирование количества, меняет в текущей строке значение ячейки Состояние на 2, а в столбец Представление для соответствующего элемента списка сЗнач заносит Нет (нельзя редактировать количество);
• если запрет снимается, меняет в текущей строке значение ячейки Состояние на содержимое столбца Значение для соответствующего элемента списка сЗнач (устанавливает 1 или 3), а в столбец Представление для этого элемента сЗнач заносит Да (можно редактировать количество).
4. При двойном ударе мыши по ячейке таблицы значений из столбца Состояние выполняется процедура Изменить, которая:
• если строка помечается для удаления, меняет в текущей строке значение ячейки Состояние на 4;
• если снимается пометка удаления, меняет в текущей строке значение ячейки Состояние на содержимое столбца Значение для соответствующего элемента списка сЗнач (устанавливает 1 или 2), если в столбце Представление для этого элемента стоит Да, или устанавливает 3, если там находится Нет.
Процедура Запрет( ) перем номСтроки; номСтроки = тЗнач.ТекущаяСтрока();
если тЗнач.Состояние = 4 тогда // Стока помечена на удаление
Предупреждение(''Строка, помеченная на удаление, не обрабатывается."); возврат;
// Выставляется запрет на редактирование количества иначеЕсли тЗнач.Состояние о 2 тогда
сЗнач.УстановитьЗначение(номСтроки, тЗнач.Состояние, "Нет"); тЗнач.Состояние = 2; // Пиктограмма 2 из табл. 3.8
иначе // Снимается запрет на редактирование
тЗнач.Состояние = сЗнач.ПолучитьЗначение(номСтроки); сЗнач.УстановитьЗначение(номСтроки,, "Да"); конецЕсли
конецПроцедуры // Запрет
процедура Изменить( )
перем номСтроки, номСтолбца;
перем типДан, флаг; // Тип редактируемых данных
перем значен; // Значение редактируемой ячейки
перем пред; // Представление (Да или Нет) элемента списка сЗнач
номСтроки = тЗнач.ТекущаяСтрока();
тЗнач.ТекущаяКолонка(, номСтолбца);
если номСтолбца = 4 тогда // Если выбран столбец Количество
если тЗнач.Состояние = 4 тогда // Строка помечена на удаление
Предупреждение("Данные в помеченной на удаление строке не редактируются."); возврат;
// Запрет на редактирование количества иначеЕсли тЗнач.Состояние = 2 тогда
Предупреждение('Редактирование запрещено."); возврат;
иначе // Редактирование возможно
тЗнач.ПолучитьПараметрыКолонки(номСтолбца, типДан); значен = тЗнач.ПолучитьЗначение(номСтроки, номСтолбца);
// Передаем диалогу старое значение ячейки
флаг = ВвестиЗначение(значен, "Введите новое значение ячейки", типДан); если флаг = 1 тогда
// Если новое количество отлично от старого если значен о тЗнач. Количество тогда
тЗнач.УстановитьЗначение(номСтроки, номСтолбца, значен); тЗнач.Состояние = 3; // Пиктограмма 3 из табл. 3.8
// Храним данные о столбце Состояние в списке сЗнач сЗнач.УстановитьЗначение(номСтроки, 3, "Да"); конецЕсли; // значен <> тЗнач.Количество конецЕсли; // флаг = 1 конецЕсли; // тЗнач.Состояние = 4
иначе // Выбран столбец 3 (Состояние)
// Есть пометка об удалении. Снимаем пометку - заносим в ячейку // данные из списка сЗнач если тЗнач.Состояние = 4 тогда
значен = сЗнач.ПолучитьЗначение(номСтроки, пред);
если пред = "Да" тогда // Можно редактировать количество
тЗнач. Состояние = значен;
иначе // Количество редактировать нельзя
тЗнач. Состояние = 2; конецЕсли // пред = "Да"
иначе // Строка не помечена на удаление
тЗнач.Состояние = 4; // Выполняем пометку столбца пиктограммой 4
конецЕсли // тЗнач.Сосотяние = 4 конецЕсли; // номСтолбца = 4 конецПроцедуры // Изменить
процедура Заполните( ) // Добавляет в таблицу значений строки и заполняет
перем ин, номСтроки; //их данными из векторов кодПодр, подр и колВо;
// Векторы для имен подразделений, их кодов и численности перем кодПодр [20], подр [20], колВо [20];
перем числоПодр; // Число подразделений
числоПодр = 6;
кодПодр[1] = |
"099"; |
подр[1] = |
"Отдел кадров"; |
колВо[1] = 10 |
кодПодр[2] = |
"100"; |
подр[2] = |
"Бухгалтерия"; |
колВо[2] = 15 |
кодПодр[3] = |
"111"; |
подр[3] = |
"Снабжение и сбыт"; |
колВо[3] = 20 |
кодПодр[4] = |
"001"; |
подр[4] = |
"Цех 1"; |
колВо[4] = 100; |
кодПодр[5] = |
"002"; |
подр[5] = |
"Цех 2"; |
колВо[5]=150; |
кодПодр[6] = |
"011"; |
подр[6] = |
"Цех 11" ; |
колВо[6] = 200; |
для ин = 1 по числоПодр цикл
тЗнач.НоваяСтрока(); // Добавляем новую строку
// Определяем, используя атрибут идентификатор столбца, ячейки новой строки тЗнач.Код = кодПодр[ин]; тЗнач.Имя = подр[ин];
тЗнач.Состояние = 1; // Будет отображаться пиктограмма 1 из табл. 3.8
тЗнач.Количество = колВо[ин];
// Первоначально разрешено редактировать количество в таблице значений сЗнач.ДобавитьЗначение( 1, "Да"); конецЦикла; // для конецПроцедуры // Заполнить
Процедура ПриОткрытии( ) // Формирует таблицу значений
// Формируем столбцы таблицы значений. Опуская имена необязательных параметров,
// сохраняем разделяющие их запятые
тЗнач.НоваяКолонка("Код", "Строка",,,, 10); //10 - ширина первого столбца
тЗнач.НоваяКолонка("Имя", "Строка",,,, 20);
тЗнач.НоваяКолонка("Состояние"„„, 5); // 5 - ширина столбца
тЗнач.НоваяКолонка("Количество", "Число",,,, 10); ,
Заполнить(); // Заполняем таблицу значений данными
// Столбцы Код и Имя недоступны для редактирования тЗнач.Фиксировать(0,2); ,
// Выводим пиктограммы в столбце Состояние тЗнач.ВыводитьПиктограммы("Состояние", 1); конецПроцедуры // ПриОткрытии
процедура Выполнить() // Восстанавливает таблицу и список значений
// Перед каждым запуском процедуры Выполнить будем очищать окно сообщений ОчиститьОкноСообщений();
тЗнач.УдалитьСтроки(); // Удаляем все строки таблицы значений тЗнач
сЗнач.УдалитьВсе(); // Очищаем список значений сЗнач
// Заполняем ячейки таблицы тЗнач и элементы списка сЗнач значениями Заполнить(); конецПроцедуры
// Оператор основной программы модуля сЗнач = СоздатьОбъект("СписокЗначений");
Диалог формы обработки Проба после некоторых манипуляций с таблицей и кнопкой Запретить показан на рис. 3.17.
Замечание. В 1С нет предопределенной процедуры, работающей с элементами диалога Список и Таблица значений, позволяющей отслеживать перемещение по строкам этих объектов и дополнительно по столбцам в случае таблицы значений. Это в ряде случаев н е-гативно сказывается на качестве создаваемых пользовательских интерфейсов.
3.5. ВЫВОДЫ
1. Агрегатные типы данных предназначены для создания моделей функционирования предприятия и его подразделений; создание агрегатных типов данных, помимо встроенных в 1С, невозможно.
2. Агрегатные типы разделены на две группы - специального и общего назначения. Объекты первой группы описаны в конфигурации, второй - нет.
3. Список значений отображает таблицу из трех столбцов, содержащих значения, представления и отметки элементов списка. Столбцы списка значений имен не имеют; доступ к элементам списка осуществляется только в результате исполь -зования методов списка.
4. Список значений с пометками удобен для создания интерфейсов. В таком списке каждый его элемент можно рассматривать как флажок.
5. Таблица значений может содержать произвольное число столбцов, с которыми можно связать идентификаторы. Значение ячейки таблицы можно менять, модифицируя зн а-чение идентификатора соответствующего столбца, например в результате выполнения оператора присваивания или вызывая метод УстановитьЗначение.
6. Текущую строку таблицы значений могут изменить методы ВыбратьСтроки, Полу-читьСтроку, ПолучитьСтрокуПоНомеру, НоваяСтрока, Очистить, Сортировать, а также метод СдвинутьСтроку, когда сдвигается текущая строка. Кроме того, значение атрибута номерСтроки меняется при перемещении курсора по строкам в элементе диалога Таблица значений.
7. Методы КоличествоСтрок, УдалитьСтроку и Свернуть могут сделать неопределенным значение текущей строки таблицы значений.
8. Методы Свернуть, Выгрузить и Загрузить могут изменить число строк и столбцов таблицы значений. Причем два последних метода эти изменения осуществляют в таблице-приемнике данных.
9. С каждым полем диалога можно связать формулу, имя которой - это имя процедуры, (функции) в модуле диалога или глобальном модуле. Запуск этой процедуры (функции) возможен как из модуля, так и в результате воздействия на соответст -вующий элемент диалога.
10. Нет предопределенной процедуры, позволяющей отслеживать перемещение по строкам элементов диалога Список и Таблица значений и дополнительно по столбцам в случае таблицы значений.
4. ПЕРЕЧИСЛЕНИЯ
4.1. ПЕРЕЧИСЛЕНИЯ 1С
Перечисление - это агрегатный тип данных, содержащий список некоторых значений, например перечисление ДаНет может принимать два значения - Да и Нет. Имеющиеся в конфигурации Заработная плата и кадры перечисления (их синонимы или идентификаторы, если синоним не задан) выведет следующий код:
// Процедура вывода списка имеющихся в конфигурации перечислений процедура Выполнить() // Связана с кнопкой Пуск обработки проба
перем ин, всегоПереч; // всегоПереч - число перечислений в конфигурации
ОчиститьОкноСообщенийО;
всегоПереч = Метаданные.Перечисление();
для ин = 1 по всегоПереч цикл
Сообщшъ(Метаданные. Перечисление(ин)); конецЦикла; // для конецПроцедуры // Выполнить
Результат:
ВидЗаписи
ВидыПлатежа
ВидыПовышКвалиф
Годность
ДаНет
ДопСведИТС
ИнтервалСведений
Категории ПФР
Образование
ОснованияВЛ
ОснованияИТ С
ОснованияУвольнения
ОсобыеУсловияТруда
ОтношениеКВоинскойОбязанности
ПериодичностьСкидки
Пол
ПричинаОтсутствия
РасходыНаАвторские
РезультатыАтгестации
СемейноеПоложение
СпособПеречислПоИспЛисту
СтепениРодства
Территориальные условия
ТипБЛ
ТипБолезни
ТипНалоговойЛьготы
ТипПланаСчетов
ТипПлатежа
ТипРасчетаБольничного
ТипРасчетаОтпуска
ТипРасчетаПремии
ТипСотрудника
ТипФормы
ТипыПособий
ТипыУсловийТруда
Упорядочить
формыДоковПерсУчета
формыОбучения
ФормыТруда
ХарактерДоплаты
ХарактерСкидки
Характеру держания
ЦелиПеречисления
ОснованияОплатыПоСреднему
ВидСтрокиСреднегоЗаработка
Характер работы
ТипыЧасов
БухгалтерскиеКонфигурации
ПричинаПростоя
Содержание раздела