Название: Автоматизированный бухгалтерский учет в программном комплексе «1С-М52 Предприятие» (Меркулова Т.А)

Жанр: Информационные системы и технологии

Просмотров: 1290


7.1. работа с таблицами

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

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

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

Контекст работы с Таблицами

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

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

ссылкой на объект типа Таблица.   Объект создается при

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

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

Процедуры работы с Таблицами • Исходная таблицаССтрока)

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

Таб = СоздатьОбьект("Таблица");

Таб.ИсходиаяТаблица("рпсе");

Таб.Вывести();

Таб.ТолькоПросмотр(О);

ТабПоказать("ПрайсЛист","рпсе.тхГ);

144 J

Таб.ТолькоПросмотр(1);

Открыть (ИмяФайла)

Процедура Открыть открывает Таблицу из Файла с именем Имя файла Пример:

Таб =создатьОбьект(«Таблица»);

Ta60TKpbiTb(«v7dbsrc.mox»);

ТабПоказать();

ВывестиО

Процедура переносит всю назначенную исходную Таблицу в текущую Пример:

Таб=СоздатьОбьектТаблица(«рпсе»);

ТабИсходнаяТаблица();

ТабВывестиО;

Таб.Тол ькоПросмотр(О);

ТабПоказать(«ПрайсЛист»,»ргюе.тх1»);

Таб.ТолькоПросмотр(1);

ВывестнСекцию(ИмиСекции) ИмяСекции - строковое выражение

Процедура ВывестиСекцию выполняет перенос именованной секции из исходной Таблицы в текущую Таблицу. Имя Секции задается из исходной Таблицы в текущую таблицу. Имя секции задается строковым выражением следующего формата:

«ИдеитификаторСекции1[<|>|-] | ИдеитификаорСекции2[<|>|-]»

Символы «<»,»>» после идентификатора секции указывают на то, что выбирается только часть секции до начала вложенной секции, «>» -подвальная часть (с конца вложенной секции); «-« средняя часть (собственно сложенная секция).

В выражении ИмяСекции можно задавать имена двух секций, разделенных знаком «|», Яри этом перенесена будет область исходной Таблицы, являющейся пересечением первой и второй указанных секций*

При переносе ячейки Таблицы^ имеющие тип Шаблон и «Выражение»., будут заполнены соответствующими данными. Процедура Вывести секцию помещает секцию ниже последней выведенной секции. Пример:

Процедура печать()

Таб=СоздатьОбьект(«Таблица»);

ТабВывестиСекцию(«ОрдерГ | ОрдерВ»);

Таб.Опции(0,0,0,0);

Таб.ТолькоПросмотр(1);

ТабПоказать(«Платежка»1);

КоиецПроцедуры

•  ПрисоединитьСекцию(Ймя секции)

Присоединяет именованную секциЮиз исходной Таблицы к текущей Таблице.

ИмяСекции - строковое выражение.

Процедура ПрисоединитьСекцию выполняет присоединение именованной

секции из исходной Таблицы к текущей Таблице.

Имя секции задается строковым выражением следующего формата:

«ИдентификаторСекции1[<|>|-]ИдентификаторСекции2[<|>|-]>>

Символы «<», «>», после идентификации секции указывают на то, что выбирается только основная часть секции;«>» - заголовочная часть с начала секции до начала вложенной секции; «>» подвальная часть (с конца вложенной секции до конца секции);«-» средняя часть (собственно вторая секция).

В выражении ИмяСекции можно задавать имена двух секций, разделенных знаком «|». При этом перенесена будет область исходной Таблицы, являющаяся пересечением первой и второй указанных секций. Например, одна секция может состоять из строк, а другая из секций- колонок. В результате переносится прямоугольная область.

При переносе ячейки секции Таблицы, имеющие тип «Шаблон» и «Выражение», будут заполнены соответствующими данными.

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

Процедура Печать()

Таб=СоздатьОбьект(Таблица);

ТабВывестиСекцию(«ОрдерГ j ОрдерВ»);

ТабПрисоедииитьСекцию(<<КвшаяцтГ | КвитанцияВ»);

Таб.Опция(0,0,0,0);

ТабТолькоПросмотр(1);

ТабПоказать(«Платежка»,»»);

КоиецПроцедуры

НоваяСтраиицаО

Процедура НоваяСтраница вставляет в Таблицу разделитель страниц Пример:

Таб.Новая.Страиица();

НоваяКолоикаО

Устанавливает разделитель колонок Пример:

Таб.НоваяКолонка();

ЗначениеТекущейЯчейкиО

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

Знач=Таб.Значение.ТекущейЯчейки();

Опции(ВыводСетки^Вь1водЗаголовков,ФиксСтрок,ФиксСтолбцов);

Опции. Устанавливает флаги вывода сетки и вывода заголовка строк и столбцов.

ВывооСетки. Численное значение — Флаг Вывода сетки. ВыводЗаголовков.  Численное значение _. Флаг вывода заголовок строк и столцов.

Фикс строк . Численное значение — количество фиксируемых строк. Фикс Столбцов. Численное значение — количество фиксируемых столбцов. Процедура Опции позволяет перед показом Таблицы установить ей флаги вывода сетки и вывода заголовков строк и столбцов. Значения флагов: 1 -показывать, 0 - не показывать. По умолчанию, для табличных документов "только для чтения" онн сброшены в 0. Пример:

//вызов выходного отчета в окно просмотра и редактрования

Таб.ТолькоПросмотр(1);

Таб.Опции(0,0,5,0);

ТабПоказать("Остатки товаров на складе");

ТолькоПросмотр(флаг)

Процедура ТолькоПросмотр устанавливает флаг возможности изменения Таблицы в окне редактирования. Устанавливаемые значения флага: 1 — только просмотр; 0 - допускается редактирование. Данная процедура вызывается до вызова процедуры Показать.

Замечание;    режим    "только    просмотр''*    позволяет воспринимать

сгруппированные ячейки Таблицы как единое целое.

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

Пример:

Таб = СоздатьОбьект("Таблица"); ;

Ta60TKpbiTb(price.txt);

Таб. ТолькоПросмотр(О);

ТабПоказать(«Редаткирование Прай-Листа»,рпсе.Ш);

 

Показатъ(3аголовок, ИмяФайла) — открыть окно редактирования Таблицы

Количество строк О

Функция КоличествоСтрок возвращает численное значение количества

строк в тексте.

Пример:

Процедура ЗагрузкаГруппТоваров() Тов^СоздатьОбьект(«Спроавочннк.Товары»); Если ВыбГруппаВыбраи()=0 Тогда

Предупреждение(«Не выбрана группа! Загрузка в корень!»); ИначеЕсли ВыбГруппа Этогруппа()=0 Тогда Предупреждение(«Ошибка! Не выбрана группа!»); Возврат; Иначе

Тов.Использовать.Родителя(ВыбГруппа); КонецЕслн;

Текст=СоздатьОбьект(«Текст»);

Текст=Открыть(ИмяФайла);

Если Текст.КоличествоСтрок()=0 Тогда

Предупреждение(«Текст пустой!»);

Возврат;

КонецЕслн;

Для Ном=1 по Текст, КоличествоСтрок() Тогда Стр=Текст.ПолучнтьСтроку(Ном);

Поле=0;

Пока СтрДлниа(Стр)>0 Цикл Поле=Поле+1; Ицд=Нанти(СТр, «~»); Если Инд>0 тогда Стр1=Сред(Стр2, Инд-3); Стр=Сред(Стр>Инд+1); Иначе

Сгр1=Сред(СтрДлииа(Стр)-2);

Стр=»»;

КоиецЕсли;

Если Поле=1 Тогда

Код=Стр1;

Иначе Поле=2 Тогда Имя=Стр1;

КонецЕслн;

КонецЦнкла;

Тов.НоваяГруппа();

Сообщить(Формат(Ном, «Ч3»)|

MS

 

Тов. Код=Число(Код); Тов.Записать(); Сообщить(<< - Загружен!»); КонецЦикла; КонецПроцедуры

ПолучитьСтрокуЩоме^Оирокг/)

Функция ПолучитьСтроку выдает значение строки и номером

НомерСтроки.

Пример:

Процедура Тест()

Текст=СоздатьОбьект("Текст);

Текст.Открыть(ИмяФайла);

Если Текст. КоличествоСтрок()=0 Тогда

Предупреждение("ТекстПустой");

Возврат;

КоиецЕсли;

Для Ном=1 по Текст.КоличествоСтрокО Цикл

Стр=Текст.ПолучитьСтроку(ном);

КонецЦикла;

КонецПроцедуры;