Пример стандартного фрагмента табличного типа

<< Click to Display Table of Contents >>

Navigation:  Для опытных пользователей > Стандартные фрагменты > Метод стандартных фрагментов >

Пример стандартного фрагмента табличного типа

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

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

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

Следующий важный вопрос - определение состава работ на наиболее  общий  случай.  Анализ технической части сборника ЕРЕР 48 показывает, что посадка деревьев связана с выполнением следующих основных работ:

- подготовка посадочных мест,

- заготовка деревьев,

- посадка

- уход за посадками.

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

 

Е48-82'100 Х 0,51*

Е48-181'100*  

Е48-196'100*

Е48-219'100*    (9.1)

 

Здесь 100 - количество деревьев в штуках;  0,51 - коэффициент, учитывающий количество добавляемого растительного грунта.

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

Введем обозначения переменных параметров и перепишем последовательность (9.1) в виде:

 

Е48-?НОМ.'?КОЛ. Х ?К1.*

Е48-?НОМ1.'?КОЛ.*  

Е48-?НОМ2.'?КОЛ.*

Е48-?НОМ3.'?КОЛ.*  (9.2)

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

Перепишем (9.2)  с комментариями и оформим в виде простейшего стандартного фрагмента табличного типа с  номером  Ф1-У  (первый учебный фрагмент):

Ф1-У'Т*

:К ФРАГМЕНТ НА ПОСАДКУ ОДНОТИПНЫХ ДЕРЕВЬЕВ*  

:К ПОДГОТОВКА ПОСАДОЧНЫХ МЕСТ*

Е48-?НОМ.'?КОЛ. Х ?К1.*

:ЗАГОТОВКА*

Е48-?НОМ1.'?КОЛ.*

:К ПОСАДКА ДЕРЕВЬЕВ*

Е48-?НОМ.2'?КОЛ.*

:К УХОД ЗА ПАСАДКАМИ*

Е48-?НОМ3.'?КОЛ.*

<Ф* (9.3)

 

Если обратиться к фрагменту (9.3), например, так:

 

?1-У'КОЛ=100'К1=0,51'НОМ=82'НОМ1=181'НОМ2=196'НОМ3=219*

 

то после трансляции будет получен результат в виде (9.1).

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

Дело в  том, что здесь только параметр - количество деревьев (КОЛ) можно считать естественным внешним техническим параметром, который  должна  определять проектирующая подсистема.  Остальные переменные параметры являются чисто "сметными" и было  бы  плохо передавать  определение  их  значений  проектирующей подсистеме. Здесь нарушается важный принцип,  состоящий в том, что мы вправе ожидать от проектирующих подсистем получения, в основном, только значений инженерно-технических параметров: номера расценок сборников ЕРЕР таковыми явно не являются.

Один из способов избавления от нежелательных внешних  параметров  состоит  в переводе их в состояние внутренних переменных параметров.  Используя различные зависимости  между  переменными параметрами можно в качестве внешних параметров выбрать наиболее подходящие. Проделаем эту работу для рассматриваемого примера.

Из анализа  сборника ЕРЕР 48 можно построить следующую таблицу номеров расценок и значений коэффициента К1  в  зависимости от кома земли:

 

Размер кома земли (РАЗМЕР)

 

0,5

0,8

0,8ґ0,8ґ0,5

1ґ1ґ0,6

1,3ґ1,3ґ0,6

К1

0,51

1,5

2,17

3,07

4,11

НОМ1

181

182

183

184

185

НОМ2

196

197

198

199

200

НОМ3

219

220

221

222

223

 

 

1,5ґ1,5ґ0.65

1,7ґ1,7ґ0.65

К1

5,18

6,08

НОМ1

186

187

НОМ2

201

202

НОМ3

224

225

 

Введя внешний  параметр  РАЗМЕР, можно перевести параметры К1,  НОМ1,  НОМ2, НОМ в чисто внутренние параметры, что позволит исключить их из обращения к стандартному фрагменту. Для этой цели можно применить оператор ТАБЛИЦА:

:К ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ К1, НОМ1, НОМ2, НОМ3 В ЗАВИСИМОСТИ ОТ РАЗМЕРА*

:Т РАЗМЕР (=) 0,5'(=)0,8'(=)0,8Х0,8Х0,5'(=) 1Х1Х0,6'(=) 1,3Х1,3Х0,6'(=)1,5Х'

  1,5Х0,65'(=)1,7Х1,7Х0,65*

:В К1=0,51'НОМ1=181'НОМ2=196'НОМ3=219*

:В К1=1,5'НОМ1=182'НОМ2=197'НОМ=220*

:В К1=2,17'НОМ1=183'НОМ2=198'НОМ3=221*

:В К1=3,07'НОМ1=184'НОМ2=199'НОМ3=222*

:В К1=4,11'НОМ1=185'НОМ2=200'НОМ3=223*

:В К1=5,18'НОМ1=186'НОМ2=201'НОМ3=224*

:В К1=6,08'НОМ1=187'НОМ2=202'НОМ3=225*

:О НЕПРАВИЛЬНО ЗАДАН РАЗМЕР КОМА*  (9.4)

 

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

В заголовке оператора :Т значение параметра РАЗМЕР последовательно  сравнивается  (по принципу совпадения при наложении) с приведенными значениями размеров кома земли.  При  совпадении  с каким-либо значением будет выполняться тот из операторов :В, порядковый номер которого совпадает с порядковым номером выполнившегося условия.  Все остальные операторы оператора :Т будут опущены.

Если же совпадения не произойдет, то будет работать последний оператор, который выдаст информацию о допущенной ошибке:

 

НЕПРАВИЛЬНО ЗАДАН РАЗМЕР КОМА

 

Объединив (9.3)  и (9.4),  путем записи (9.4) сразу после Ф1-У'Т* и,  заменив номер на Ф2-У, получим значительно более усовершенствованный фрагмент,  обращение к которому, для получения результата (9.1) будет иметь вид:

 

?2-У'КОЛ=100'РАЗМЕР=0,5'НОМ=82*

 

Здесь один новый технический параметр РАЗМЕР позволил избавиться сразу от четырех нежелательных "сметных" параметров:  К1, НОМ1,  НОМ2,  НОМ3. Однако параметр НОМ еще сохранился. Займемся его исключением.

Выбор расценки  подготовки посадочных мест зависит от количества добавляемого растительного грунта в %  (обозначим его через КДГ) и способа разработки лунок (СР): ручной (Р) или механизированный (М). Приведем решение этой задачи:

:К ОПРЕДЕЛЕНИЕ  НОМЕРА  РАСЦЕНКИ  ПОДГОТОВКИ  ПОСАДОЧНЫХ  МЕСТ

(НОМ)  В  ЗАВИСИМОСТИ  ОТ  СПОСОБА РАЗРАБОТКИ (РУЧНОГО  ИЛИ

МЕХАНИЗИРОВАННОГО) И КОЛИЧЕСТВА  ДОБАВЛЯЕМОГО РАСТИТЕЛЬНОГО

ГРУНТА*

:Т СР (=) М'(=)Р*

:Т КДГ=0'(25'(50'(75'(100*

:В НОМ=75*

:В НОМ=76*

:В НОМ=77*

:В НОМ=78*

:В НОМ=79*

:О НЕПРАВИЛЬНО ЗАДАН ПРОЦЕНТ РАСТИТЕЛЬНОГО ГРУНТА ПРИ  МЕХАНИ-

ЗИРОВАННОЙ РАЗРАБОТКЕ*

:Т КГД=0'(25'(50'(75'(100*

:В НОМ=80*

:В НОМ=81*

:В НОМ=82*

:В НОМ=83*

:В НОМ=84*

:О НЕПРАВИЛЬНО  ЗАДАН  ПРОЦЕНТ РАСТИТЕЛЬНОГО ГРУНТА ПРИ РУЧНОЙ

РАЗРАБОТКЕ*

:О НЕПРАВИЛЬНО ЗАДАН СПОСОБ РАЗРАБОТКИ ГРУНТА*(9.5)

 

Подставляя (9.5) и (9.4) в (9.3) и заменяя номер на Ф3-У, получим возможность обращаться к новому фрагменту в виде:

 

?3-У'КОЛ=100'РАЗМЕР=0,5'КДГ=30'СР=М*

 

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

Не будем дальше развивать создание фрагмента в его содержательной части,  отметим только,  что на самом деле нужно было бы рассмотреть вопрос о стоимости посадочного материала в соответствии  с  пунктом 1.9 общих указаний к ЕРЕР 48 и некоторые другие вопросы.

Введем еще два структурных усовершенствование и на этом закончим рассмотрение примера.

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

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

Ф4-У'Т*

:Ц РАЗМЕР'КОЛ'КДГ'СР*

(5)

(4)

(3)(без заголовка)

:Ц*

<Ф*   (9.6)

 

Теперь переменные КОЛ, РАЗМЕР, КДГ, СР могут принимать несколько значений,  а обращение к ОФ,  например для двух типов деревьев, может иметь вид:

 

?4-У'КОЛ=10'=20'РАЗМЕР=0,8'=1Х1Х0,6'КДГ=30'=60'СР=М'=М*

 

Второе дополнение связано с оформлением фрагмента в его заголовочной части,  где в общем  случае  рекомендуется  приводить следующие данные:

- наименование и назначение фрагмента;

- Ф.И.О. разработчика, его адрес и телефон для справок;

- перечень переменных параметров,  их единиц  измерения,  а иногда и перечень допустимых значений;

- пример обращения к данному фрагменту.

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

После окончательной разработки стандартный  фрагмент  может быть помещен в НСИ системы.

 

На основе изложенного можно сформулировать следующие основные принципы:

- при  разработке стандартных фрагментов следует стремиться к получению выходных результатов 100%-ой готовности;

- комментарии не только полезны,  но и необходимы, особенно для сложных фрагментов;

- комментарии  должны нести информацию,  а не пересказывать действия операторов;

- нужно  минимизировать количество внешних переменных параметров;

- иначе  - нужно стремиться как можно больше параметров перевести в состояние внутренних;

- стандартный фрагмент должен сам сообщать о всех ошибочных случаях его применения;

- не следует жалеть время на разработку фрагмента:  составляется он один раз, а используется многократно;

- нужно  стремиться  создавать  СФ на наиболее общие случаи его применения;

- нет предела совершенствованию стандартного фрагмента, поэтому на чем-то необходимо остановиться.