Рассмотрим пример:
ВзятьИзСФильтром("Данные. МатОбеспечениеДетейСиротИДетейОставшБезПопеченияРодителей. Карелия","РасходыОбмундМягкИнвентОборуд","FacialAccCls, КВР, КВСР, КФСР, КЦСР, КЭСР, ТипСредств", да,"Год=2007")
Эта запись означает, что ВзятьИЗ будет использоваться с фильтром.
1. Слой-источник: Материальное обеспечение детей сирот и детей, оставшихся без попечения родителей в Карелии. Его алиас:
"Данные. МатОбеспечениеДетейСиротИДетейОставшБезПопеченияРодителей. Карелия"
2. Название поля слоя-источника, из которого будут браться значения: Расходы на обмундирование, мягкий инвентарь и оборудование. Его имя, которое используется в формуле: РасходыОбмундМягкИнвентОборуд.
3. В формуле используется семь ключевых полей, по которым будут подтягиваться значения поля РасходыОбмундМягкИнвентОборуд. Имена всех ключевых полей слоя-источника совпадают с именами ключевых полей слоя-получателя, поэтому они все перечислены через запятую без маппинга.
4. В формуле активирована вставка. Значит, значения ключевых полей будут скопированы из слоя-источника в соответствующие поля слоя-получателя.
5. Задан фильтр: "Год=2007". Это означает, что значения из поля РасходыОбмундМягкИнвентОборуд и значения ключевых полей будут скопированы из слоя-источника только при условии, что значения всех этих полей соответствуют значению 2007 в поле Год. Другими словами вставляться значения полей будут только для 2007 года.
Если нужно вставить значения для 2006 и 2007 года одновременно, то запись будет иметь вид: "Год=2006 and Год=2007".
Пример составного фильтра:
"(Поле1=22) and (Поле2='Текст') and (Поле3 in [1,2,3])"
II. ОбъединитьКолонки
Формула «ОбъединитьКолонки» похожа на ВзятьИз, но каждая запись из слоя-источника отображается сразу в несколько записей вычисляемого слоя.
Рассмотрим на примере:
Пусть есть слой с алиасом «ИсходныйСлой», в котором заданы суммы за несколько лет в разрезе некоторого классификатора:
Классификатор | Сумма2008 | Сумма2009 | Сумма2010 |
1 | 100000 | 110000 | 111000 |
2 | 200000 | 220000 | 222000 |
3 | 300000 | 330000 | 333000 |
Для отчета требуется создать слой с алиасом «ОтчетныйСлой», в котором нужно представить данные исходного слоя в таком виде:
Классификатор | Год | Сумма |
1 | 2008 | 100000 |
1 | 2009 | 110000 |
1 | 2010 | 111000 |
2 | 2008 | 200000 |
2 | 2009 | 220000 |
2 | 2010 | 222000 |
3 | 2008 | 300000 |
3 | 2009 | 330000 |
3 | 2010 | 333000 |
Название формулы «ОбъединитьКолонки» означает, что мы сводим значения нескольких колонок исходного слоя (Сумма2008, Сумма2009, Сумма2010) в одну колонку (Сумма) за счет добавления еще одного ключевого атрибута (Год).
Для выполнения этой операции мы должны написать в слое «ОтчетныйСлой» в поле «Сумма» такую формулу:
ОбъединитьКолонки(“ИсходныйСлой”, ”Год”, ”Сумма2008=2008,Сумма2009=2009,Сумма2010=2010”, “Классификатор=Классификатор”, да)
Описание параметров:
Если нужно присвоить в третьем параметре имени поля текстовое значение, то его нужно обязательно писать в одинарных кавычках. Например, так:
ОбъединитьКолонки("Алтай. Физ. и.Спорт. Справочник. ИнвентарьИндПольз", "Этап", "Нач_подг='Начальной подготовки', Уч_тренир='Учебно-тренировочный' ", "Код", 1)
Существует также аналог формулы «ВзятьИзСФильтром» для операции объединения колонок: ОбъединитьКолонкиСФильтром. У данной формулы шестым параметром необходимо указывать строку фильтрации данных слоя-источника, аналогично последнему параметру формулы «ВзятьИзСФильтром».
III. Создание формул для расчета значений полей
Для этой цели существует специальный интерфейс «Редактор формул», который вызывается кнопкой
на текущем поле.
Интерфейс выглядит следующим образом:

В перечне «Свои поля» содержатся все имена полей текущего слоя. Это сделано для удобства - при двойном нажатии на имя поля (или кнопку «Добавить»), оно сразу появляется в верхней редактируемой области.
В правой нижней области находится перечень стандартных операторов, которые вызываются в редактируемую область аналогичным способом. %s - обозначает имя поля.
Интерфейс предназначен для работ ТОЛЬКО с полями текущего слоя. Формула не будет работать с полем другого слоя.
Существует два способа написания формул:
- с использованием стандартных операторов;
- с использованием разделителей (+ - / * ,);
- с использованием прочих операторов.
Причем во втором случае все математическое выражение ОБЯЗАТЕЛЬНО должно быть в кавычках ("…"). Если же в выражении есть строковые константы, то они заключаются в одинарные кавычки ‘’.
Представим, что нам нужно перемножить два поля текущего слоя Ставка и Кол-во отработанных часов за месяц с целью вычисления Суммы начисления з/п. Теперь составим формулу для вычисления двумя способами:
Первый способ:
Умножить(Ставка, Кол_отр_часов_мес)
Второй способ:
"Ставка*Кол_отр_часов_мес"
При простых выражениях можно применять любой способ, а при сложных обычно применяют второй, т. к. он менее громоздкий и более привычный. Однако не все выражения работают при втором способе. Возможно комбинирование двух способов одновременно.
Для того чтобы задать условие «если …, то …» применяют следующий формат записи (шаблон): "(Условие)?(Выражение если да):(Выражение если нет)"
При этом нужно понимать, что выражение – это не формула, и в нем НЕ МОЖЕТ быть знака «равно»:

Другими словами, знак «равно» в выражении ставить НЕЛЬЗЯ, иначе слойница выдаст ошибку.
Рассмотрим пример для условия. Нужно опять вычислить Сумму начисления з/п, но теперь с условием - при превышении нормы (160 часов), остальные часы будут оплачиваться по двойному тарифу. Применяем шаблон:
"(Кол_отр_часов_мес>160)?(Ставка*Кол_отр_часов_мес*2):(Ставка*Кол_отр_часов_мес)"
Для того чтобы объединить значения нескольких полей в одно другое поле нужно использовать следующий шаблон: "Поле1+’ ’+Поле2+’ ’+Поле3+…+ПолеN". Где ’ ’ – пробел, т. е. строковая констнанта.
Например, нужно объединить поля Фамилия, Имя, Отчество в одно поле ФИО.
Применяем шаблон:
"Фамилия+’ ’+Имя+’ ’+Отчество"
После того, как формула готова ее нужно проверить на правильность составления путем нажатия кнопки «Проверить формулу»
.
При создании формул для расчета значений полей используются следующие роли поля: «Вычислимый параметр», «Параметр», «Ключ». Как правило, используют «Вычислимый параметр». Для разыменовки бесполезно писать формулу, т. к. значение все равно затрется при разыменовке, а в системном писать формулы опасно для работоспособности слоя.
Перечень операторов, используемых для написания формул:
Оператор | Описание |
+ | Сложение |
- | Вычитание |
* | Умножение |
/ | Деление |
<, >, <>, <=, >= | Сравнение |
&, AND | Логическое И |
|, OR | Логическое ИЛИ |
NOT | Логическое НЕТ (отрицание) |
^, mod | Остаток от целочисленного деления |
:, div | Целочисленное деление без остатка от деления |
A in [...] | Проверка А наличия в массиве |
A%B | Взятие A% от числа B |
A is [not] null | Проверка А на null (на пустоту – отсутствия значений) |
A? B : C | Выбор по условию А одного из аргументов (true - B, false - C), (Условие)?(Выражение если да):(Выражение если нет) |
A like B | Проверка соответствия A регулярному выражению B.. |
A between B and C | Проверка на вхождение A в диапазон между В и С. |
IV. Указание слоя-источника
Данная функция используется с целью указания источника для получения из него данных
для разыменовки. Формат записи: @<Источник>. Причем поле «Формула» нужно заполнять только у главного поля.

Используется ТОЛЬКО для обработчика разыменовок «Данные слоя» при любой роли поля. Т. е. @<Источник> является дополнительным атрибутом для обработчика разыменовок «Данные слоя».
Здесь же можно сделать фильтрацию значений источника. Фильтрацию можно делать по одному или нескольким полям, по нескольким значениям полей. Разделителем служит точка с запятой (вместо логического and). Пример:
@Спр. Тарифов: 'Код'=01; 'Код'=02
Агрегирующая функция
Данное поле является дополнительным к полю «Формула», точнее, к его функции «ВзятьИЗ». Агрегирующая функция предназначена для обобщения (сливания) показателей из нескольких слоев данных по какому-либо одному ключу с помощью «ВзятьИЗ».
Агрегирующая функция задает функцию, которая объединяет значения. Можно использовать функции:
SUM – сумма объединяемых значений;
MIN – выборка из объединяемых значений одного минимального;
MAX – выборка из объединяемых значений одного максимального;
COUNT – количество объединяемых значений;
AVG – среднее значение объединяемых значений.
Некоторые особенности агрегации:
· По умолчанию агрегирующая функция принимает значение SUM. Это значение не прописано в поле, оно невидимо.
· Поле доступно при любых типах поля. Однако существует ограничение на роль поля – поле доступно только для следующих ролей: параметр, вычислимый параметр.
· Если агрегация поля вообще не нужна, то для этого поля необходимо поставить роль «Ключ».
· ВзятьИз может работать только с одним источником. В случае пересекающихся наборов полей с разными требованиями к агрегации делают несколько скрытых полей с различной агрегацией, а затем значения этих полей применяют для получения результата конечного поля (итогового).
· Агрегирование работает также по формуле. Например, если в поле «Формула» такая запись: ВзятьИз("поле1","поле2*поле3","поле4",нет), то агрегация будет работать как для поле1, поле4, так и для выражения поле2*поле3.
4.5.2. Заполнение полей второстепенной значимости
После того, как основная настройка полей выполнена, можно заполнить следующие поля второстепенной значимости:
· Значение по-умолчанию
· Только чтение
· Обязательное
· Скрытое
· Маска
· Проверять
Значение по-умолчанию
Это поле стоит заполнять, если нужно, чтобы часто используемое значение проставлялось в незаполненных полях при сохранении добавленной вручную записи.
Значение по умолчанию может использоваться с любыми типами и ролями полей. Главное, чтобы вводимое значение по-умолчанию соответствовало типу поля. Значение по-умолчанию проставляется в незаполненных полях при сохранении добавленной вручную записи.
Только чтение
Если нужно, чтобы при работе обычный пользователь не смог изменить значение данного поля, то ставим галочку (да). В противном случае – нет.
Данное поле
- активно для следующих ролей: «Ключ», «Параметр»
- не активно для следующих ролей: «Системное», «Вычислимый параметр», «Разыменовка».
Обязательное
Следует использовать для того, чтобы разграничить поля на обязательные и необязательные. В первом случае нужно поставить галочку (да), тогда при попытке сохранить запись с незаполненными обязательными полями (например, Табельный номер) появится следующее сообщение:

И это будет повторяться, пока абсолютно все обязательные поля не будут заполнены. В противном случае не будет сохранена вся запись.
Данное поле:
- активно для следующих ролей: «Ключ», «Параметр»
- не активно для следующих ролей: «Системное», «Вычислимый параметр», «Разыменовка».
Скрытое
Следует использовать в том случае, если нужно скрыть ненужные, лишние поля для конечного пользователя. Данное поле активно для всех ролей. Как правило, скрывают поля, которые нужны в текущем слое лишь для связи с другим слоем или используются для расчета нужного поля.
Маска
Маску используют для удобства ввода значений в поле, т. е. конечный пользователь видит шаблон записи (формат записи) и заполняет его.
Маску используют для следующих типов полей:
ü Классификатор
Маску используют для ввода различных номеров и кодов в классификаторах. В этом случае формат записи такой: 0.00.000…
Например, нужно сделать маску для ввода поля «Номер лицевого счета» из классификатора. Тогда маску заполняем следующим образом:
![]()
В результате пользователь при заполнении поля «Номер лицевого счета» увидит следующую маску:

ü Дробное
ü Сумма
Для дробных полей и сумм формат записи такой: 0.00 – это говорит о том, что значение будет иметь два знака после запятой (123,44), причем если будет введено более двух знаков после запятой (123,4455), то лишние знаки будут обрезаны à 123,44.
Для поля с типом дата маска создается автоматически:
.
Проверять
Это поле следует применять в том случае, если нужно сравнить вводимое значение со значением из источника. Используют ТОЛЬКО при условии, что нужно ввести справочное значение в поле (которое уже есть в источнике). Если нужно ввести собственное значение (которого нет в источнике), то функцию Проверять отключаем.
Например, нужно вводить значения поля «Номер лицевого счета» с проверкой значений из источника (т. е. из классификатора - FacialAccCls). Настройка полей будет следующая:
![]()
При вводе значения, которое отсутствует в источнике появится сообщение:

4.6. Создание иерархических справочников
Иерархические справочники создают аналогично обычным, однако есть некоторые особенности при их создании.
Рассмотрим пример. Допустим, нужно подключить иерархический справочник к какой-либо форме. Сначала создаем сам справочник. Причем здесь нужно обратить внимание на то, что имя поля у наименования ОБЯЗАТЕЛЬНО должно быть Name. У поля «Код» тип поля должен быть Классификатор. Причем поле Код всегда будет находиться перед полем Наименование, в противном случае, иерархический справочник не заработает. Маска у поля Код ставится в соответствии с необходимыми уровнями иерархии.
Образец заполнения слоя Справочника:

Теперь создадим слой, в который нам нужно подключить иерархический справочник:
![]()
Данный слой настроен так, чтобы можно было выбирать значения полей Код и Наименование из Справочника. Эта настройка стандартная через разыменовку, однако, следует обратить внимание на некоторые особенности настройки для иерархического справочника:
1) тип поля Код – классификатор;
2) у поля Код маску указать обязательно;
3) разыменовываться поле Наименование должно полю Name из Справочника;
4) поле Код всегда должно быть первым по сравнению с полем Наименование.
В результате получаем следующий иерархический справочник:

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

4.7. Настройка логического контроля вводимых данных
На данном этапе осуществляется настройка логического контроля вводимых данных в текущем слое. Для того нужно использовать детализацию «Контрольные соотношения» в [интерфейсе «Редактор слоев»].
Логический контроль реализован в форме проверки конкретных полей в каждой записи. Проверка данных текущего слоя осуществляется путем нажатия кнопки «Логический контроль»
на [интерфейсе «Данные линейно»].
Результат проверки каждой записи текущего слоя отображается в виде специальных значков напротив каждой строки. Эти значки имеют разный цвет в зависимости от результата проверки каждой строки (состояния строки):
- Запись успешно прошла контроль
- Запись не прошла предупреждающий контроль
- Запись не прошла контроль
Второе состояние может возникнуть при невыполнении условия контроля в режиме «мягкой» проверки.
Настройка логического контроля осуществляется заполнением следующих полей:
Соотношение
Здесь нужно задать условие контроля путем написания выражения (формулы), включающего в себя наименование проверяемого поля (полей), а также различные операции сравнений. Например, такое условие: Код_1 <> 0 – значение поля Код не равно нулю.
Текст ошибки
Сюда нужно записать текст ошибки, который отобразится в поле «Результат контроля» в интерфейсе «Данные линейно» при невыполнении заданного условия в поле «Соотношение».
Мягкая проверка
Здесь можно включить режим «мягкой» проверки, при котором невыполнение заданного условия не будет считаться критичным.
Проверок можно задавать сколько угодно.
Пример проверки:
![]()
4.8. Окончательное наполнение слоев данными
После того как все слои созданы и правильно настроены, конечный пользователь может наполнять эти слои данными в полном объеме с помощью интерфейса «Данные линейно».
Теперь, когда все слои наполнены данными в полном объеме, конечный пользователь может приступать к дальнейшей работе, опять таки через интерфейс «Данные линейно».
5. Схема формирования отчетов из Слойницы
В самой слойнице не предусмотрена функция формирования отчетов. Слой используется в качестве источника данных, а все остальное делает Бюджетовская Отчетница.
Общая схема формирования отчетов имеет вид:
![]() |
Отчет формируется на основании шаблона. Поэтому первым делом нужно создать шаблон отчета.
Шаблон должен содержать в себе: набор параметров-ограничений, список выполняемых алгоритмов, а также внешний вид отчета.
Далее созданный шаблон нужно зарегистрировать в интерфейсе «Администратор отчетов» путем добавления записи с соответствующим путем шаблона:

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

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

После нажимаем «Выполнить» и появляется визуализированный отчет, сформированный на основе шаблона. Далее его можно распечатать.

6. Глоссарий
А
Алиас слоя представляет собой символьное имя слоя, используемое при создании ссылочной взаимосвязи слоев данных.
Б
В
Версия слоя представляет собой некоторый порядковый номер, определяющий версию данных, заданных в пределах одного слоя.
Г
Д
Е
Ж
З
Задача представляет собой формализованное представление слоя данных с возможностью ввода и редактирования данных, а также осуществления предварительного контроля над входными данными.
И
К
Л
Лицевой счет задачи характеризует исполнителя поставленной задачи.
М
Многоверсионность слоя представляет собой признак наличия у определенного слоя нескольких версий описываемых данных
Н
Номер задачи представляет собой порядковый номер задачи в общей иерархии ("дереве") задач.
О
П
Перечисление представляет собой тип поля данных слоя, с возможностью выбора из списка данных.
Р
С
Слой представляет собой некоторый набор данных, включающий перечень параметров-показателей, заданных в определенном разрезе.
Состояние документа характеризует статус, в котором находиться указанная задача.
Срок выполнения задачи представляет собой конечную дату, к которой должна быть выполнена задача.
Т
Тип слоя характеризует принадлежность слоя к определенной группе слоев, в зависимости от функционального содержания и выполняемых задач этим слоем.
7. Перечень дополнений к руководству
1. Справочник для работы со слойницей
2. Приложение 1 (Постановка задачи)
3. Приложение 2 (Структура БД поставленной задачи)
4. Приложение 3 (Последовательность выполнения формул)
5. Приложение 4 (Вопросы/ответы по Слойнице)
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |



