Open Library - открытая библиотека учебной информации. Финансы в Excel Перебор элементов справочника

Многоуровневые справочники

Заполнение справочников

Периодические константы

Если константа периодическая, то в списке констант храниться не только последнее ее значение, но и все ранее существовавшие значения с датами их ввода.

Для просмотра и редактирования истории значения константы необходимо:

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


Открыть нужный справочник можно через меню Справочники .

Для ввода в справочник нового элемента используется клавиша Insert или

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

Одноуровневый справочник – это простой список элементов.

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


Для создания новой группы в многоуровневом справочнике используется кнопка Новая группа на панели инструментов окна или на клавиатуре Ctrl+F9 .

Щелчком по знаку +(-) на дереве групп можно сворачивать и разворачивать структуру. Двойной щелчок по папке (на дереве папок или в списке) открывает группу. На клавиатуре Ctrl+↓ -- открыть группу, Ctrl+ -- закрыть группу.

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

Для ввода данных справочника достаточно в окне редактируемого объекта нажать кнопку выбора элемента справочника или на клавиатуре F4 .

В результате данные справочника будут представлены в виде нового окна либо справочник будет открыт в режиме выбора элемента.

Чтобы выбрать элемент, надо выделить его и нажать клавишу Enter или двойным щелчком.

В режиме выбора доступно создание новых элементов и их редактирование.

При построении сложных экономических моделей обычно имеется набор данных, используемых в нескольких таблицах как в качестве параметров расчетов, так и для построения отчетных форм. Создание и использование отдельных таблиц-справочников позволяет ускорить процесс разработки модели, повышает надежность расчетов, а также дает возможность применять специальные средства интерфейса Microsoft Excel.

В прилагаемом примере рассматривается модель с использованием двух типов справочников:

  • Одномерный - продукты с наименованием и единицей измерения
  • Двумерный - прайс-листы с различными ценами по продуктам и периодам.

Поиск в одномерном справочнике

На первом этапе (лист «Пример1») добавим в прайс-листы по продуктам формулу для поиска единицы измерения каждого продукта. Если продукты в прайс-листе располагаются в той же последовательности, что и в справочнике, то очевидно, что формула может использовать простую ссылку на справочник.

Для формирования денежной единицы измерения используем строковую операцию конкатенации (соединения частей текста).

Пример1!B10:

Для добавления единицы измерения в таблицу продаж прямая ссылка на справочник приведет к некопируемой формуле. Чтобы избежать этого, используем функцию поиска ВПР.

Пример1!D17:

VLOOKUP(B17;$A$3:$B$6;2;0)

Функция ВПР ищет значение по определенному номеру столбца (в примере – второй столбец) в прямоугольном диапазоне ячеек. Последний параметр (0 или ЛОЖЬ) используется для указания искать ли ближайшее значение (ИСТИНА), либо точное совпадение (ЛОЖЬ). Первый вариант редко используется на практике, так как требует предварительно отсортированного диапазона поиска. Важное замечание по параметру «столбец». Это не номер столбца во всей электронной таблице, а номер столбца в диапазоне поиска. Для аналойного поиска по горизонтальному массиву используется функция ГПР (HLOOKUP).

Поиск в двумерном справочнике

Сложный случай поиска по двум условиям реализован в формулах выбора цены из прайс-листа для таблицы продажи.

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

Пример1!E17:

OFFSET($A$9;MATCH(B17;$A$10:$A$13;0);MATCH(DATE(YEAR(A17);MONTH(A17);1);$C$9:$E$9;0)+1)

Функция ПОИСКПОЗ (MATCH) ищет и возвращает порядковый номер элемента в списке (работает аналогично ВПР). Функция СМЕЩ (OFFSET) возвращает значение по относительной ссылке от определенной ячейки – в примере, от верхнего левого угла таблицы прайс-листов. Функция преобразования даты ДАТА (DATE) превращает дату в из таблицы продаж в дату, используемую в прайс-листе – первое число месяца.

Более простой вариант решения задачи использован в нижних ячейках таблицы продаж. Здесь использована формула обработки массива. Причем суммирование ведется по двумерному массиву:

Пример1!E22:

{=SUM(IF(B22=$A$10:$A$13;IF(MONTH(A22)=MONTH($C$9:$E$9);$C$10:$E$13)))}

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

Для лучшего понимания формулы, разложим ее в виде структуры и заменим диапазоны на значения (через нажатие F9 на выделенном диапазоне). Получим следующую картину:

SUM(IF("Продукт4"={"Продукт1":"Продукт2":"Продукт3":"Продукт4"}; IF(3={1;2;3}; { 2;2,1;2,2: 3;2,9;3,05: 1299;1280;1350: 6,4;6,9;6,7 })))

Первое условие на продукт возвращает массив {6,4;6,9;6,7}, второе условие выбирает из этого массива последнее значение.

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

Использование справочников для создания пользовательского интерфейса

Обратите внимание на выпадающий список для выбора элементов справочника на листе «Пример2», таблицы «Продажи» (Пример2!B17).

Организация подобных выпадающих списков возможна через опцию «Проверка». Доступ в Excel до 2007 через меню Данные\Проверка (Data\Validation), в Excel 2007 и старше – лента Данные\Работа с данными\Проверка данных (Data\Data Tools\Data Validation).

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

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

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

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

Обратите внимание на описание проверки в ячейке Пример2!B18. Здесь вместо ссылки на лист «Пример1» задана формула

Имя listProducts задано в примере как диапазон Пример1!$A$3:$A$6. Очевидно, что использование такого именованного диапазона делает более прозрачным смысл заданного условия проверки, а также снижает риск ошибки в формуле.

В предыдущих уроках мы рассмотрели с Вами, что конфигурация 1С состоит из набора различных объектов 1С. Такие объекты бывают разных видов.

Сегодня мы рассмотрим особенности одного из видов объектов 1С Предприятие – справочников.

Справочники 1С 8.2 предназначены для хранения информации, которая будет использована в других объектах 1С – документах, отчетах. Таким образом учет в 1С ведется в разрезе (по) справочников.

Информация, которая хранится в справочниках называют Нормативно-справочной информацией.

Справочники 1С 8.2 делятся на собственно Справочники и Классификаторы. Под Классификаторами (в разговорах программистов 1С) понимаются справочники, состав которых утвержден государством (а таких куча, например Классификатор стран мира или Классификатор единиц измерения).

Тем не менее это не мешает во множестве компаний такие классификаторы исправлять и дополнять как хочется.

Зачем нужны Справочники 1С

Яркий пример можно сделать на примере товара. Есть некий товар, например «Лопата». Движения этого товара (покупка, поступление на склад, продажа) оформляются определенными документами.

В «жизни» — это бумажные документы, т.к. некие бланки, при заполнении которых каждый просто пишет от руки — Лопата, 20 штук.

В электронной системе, 1С – это электронные документы, где также есть поле товара. Но если каждый оператор будет писать наименование товара от руки, то могут быть опечатки. И тогда купили мы «Лопату», а продали «Лапату». Дополнительно – минус в том, что нам придется это писать множество раз.

Поэтому мы заводим список товаров, в который один раз заводим этот товар. Чтобы указать товар в документах, достаточно выбрать его из готового списка. Дополнительный плюс — когда мы заводим товар в список, мы можем указать какие-либо данные по нему, например «Страна происхождения».

Таким образом справочники в 1С Предприятие – это готовые списки данных, которые нужны для учета – товары, клиенты и прочее. Пользователи могут дополнять и изменять эти списки самостоятельно.

Где расположены Справочники 1С 8.2

В режиме 1С Предприятие пользователь работает с пользовательским интерфейсом, который разработал для него программист. У разных пользователей может быть разный интерфейс. Поэтому каждый конкретный справочник программист мог расположить в совершенно различных меню.

В толстом клиенте, у пользователя с административными правами (Администратор) есть стандартное меню Операции. В этом меню есть пункт «Справочники», через который можно открыть любой справочник.

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

В режиме 1С Конфигуратор справочники находятся в одноименной ветке Конфигурации, в окне конфигурации. Раскрыв ветку мы можем начать работать с любым справочником (точнее изменять или настраивать его шаблон). Для того, чтобы начать с ним работу нужно кликнуть по нему два раза мышкой.

Как выглядят Справочники 1С

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

Нажав на группу мы проваливаемся в нее. Нажав на элемент – открывается форма элемента справочника. Она состоит из группы полей этого справочника, который предполагается заполнять.

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

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

Справочники 1С 8.2 могут быть связаны между собой (подчиненный справочник 1С). Например, у одного элемента справочника Клиенты может быть несколько подчиненных элементов справочника Договоры с клиентами.

Настройка и разработка Справочников 1С

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

Основные особенности Справочников 1С, по закладкам:

Справочники. Многоуровневые и подчиненные. Периодические реквизиты справочников

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

Использование справочников позволяет исключить неоднозначность при заполнении тех или иных реквизитов документов или других справочников.

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

Работа со справочниками может осуществляться в двух режимах:

Ø Просмотра и редактирования - форма справочника открывается при помощи главного меню, кнопки на панели инструментов, нажатием кнопки другой формы;

Ø Выбора - открывается только при вводе значения субконто, константы, реквизита документа или реквизита другого справочника, клавишей F4.

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

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

Одноуровневый справочник - это простой список элементов.

Многоуровневый справочник - это иерархический список, в котором записи объединяются в группы.

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

Система 1С: Предприятие имеет механизм поддержки подчиненных справочников. Такой механизм позволяет связать между собой элементы разных справочников:

Ø организации и договора с ним,

У подчиненного справочника каждый элемент связан с конкретным элементом справочника - владельца.

Существует несколько общих элементов, которые имеет каждая форма справочника.

Верхняя строка - заголовок в ней отображается название справочника. Если справочник является подчиненным, то в заголовке окна справочника выдается наименование элемента из справочника родителя.

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

Если справочник имеет иерархическую структуру, окно справочника может содержать дерево групп.

Если справочник содержит много элементов и имеет много граф, то в таблице появляются полосы прокрутки.

Если для текущего справочника в меню «Действия» установлен показ в виде иерархического списка, то появляются следующие знаки:

Ø строка содержит название группы и открыта для просмотра;

Ø строка является элементом справочника;

Ø строка соответствует группе элементов, двойной щелчок открывает доступ к элементам справочника.

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

В предыдущей главе предлагалось вместо создания множества однотипных справочников сделать один макет справочной формы и цеплять к нему источник данных при запуске. Но можно углубиться еще дальше. Воспользуемся идеей, которую предложил Валерий Крук - сделаем одну справочную таблицу и будем хранить в ней данные всех справочников. Для этого потребуется еще одно поле - идентификатор «справочной таблицы», чтобы определить, к какому справочнику относится данная запись. А для реализации двухуровнего справочника создадим вторую таблицу, в которой будут храниться связанные с первой таблицей записи.

При установке связей между таблицами СПРАВОЧНИК и СПРАВОЧНИК Sub установим флажок «Каскадное удаление связанных записей» - это как раз тот случай, когда такая процедура будет полезной. Ведь при удалении записи из таблицы «СПРАВОЧНИК» связанные с ней данные становятся не нужными.

Если Вы откроете схему данных, то увидите только две связанные между собой справочные таблицы. В предыдущем примере к основной таблице «Адресат» были привязаны все справочники, и я еще подробно рассказывал о связях, флажках… Дело в том, что при данной схеме организации справочной системы мы не сможем прицепить таблицу «СПРАВОЧНИК» к какому либо полю, ведь в ней теперь хранятся все справочные данные. Да в этом и нет надобности. Если учесть, что пользователь будет работать с базой исключительно через формы, то вероятность ввода в основную таблицу записей, которых нет в справочной, сводиться практически к нулю.

Параметры справочников хранятся в служебной таблице tSystemFormPar. В поле Tabl указан идентификатор соответствующего справочника.
Рассмотрим отличия от предыдущего варианта.

Все глобальные переменные и константы я перенес в специальный модуль, который так и называется Constants. Хотя объявлять их можно в любом модуле, главное, чтобы они были в разделе General и начинались с ключевого слова Public, но лучше хранить их для наглядности в одном месте.

В модуль SprawForm добавилась новая функция - fFilListBox. Она во многом похожа на fFilForm, но служит для фильтрации списка, поэтому в параметрах вместо frm As Form поставлено lst As ListBox. Кроме этого, в обеих функциях изменена строка формирования фильтра:

strFiltr = " WHERE Left([" & strFieldName & "]," & Len(strFiltr) & ") = "" & strFiltr & """ & " and СПРАВОЧНИК.Type = " & strTableName

Ведь теперь нужно фильтровать не только по значению в поле фильтра, но так же и по параметру (идентификатору справочника) в таблице tSystemFormPar. Так же если для формы источник данных задается через

RecordSource = strSql1 & strFiltr & " " & strSql2

то для списка нужно использовать свойство RowSource

RowSource = strSql & strFiltr & " " & strSql1

В модуле формы «Справочник» добавилось условие отбора по полю Type таблицы СПРАВОЧНИК

Me.Subfrm.Form.RecordSource = strSql2 & " WHERE СПРАВОЧНИК.Type = " & strTableName & strSql3

и появилось новое - присвоение полю Type значения по умолчанию, равное текущему значению переменной strTableName

Me.Subfrm.Form!Type.DefaultValue = " & strTableName

Ведь если этого не сделать, то запись в таблице СПРАВОЧНИК окажется не привязанной к текущему типу справочника.

В модуле формы двухуровневого справочника «СправочникМ» видим, что формируются две пары строк - источников данных: strSql, strSql1 - для списка и strSql2, strSql3 - для табличной формы. Строки разбиты на пары потому, что между ними нужно будет вставлять условие отбора (WHERE…) Чтобы новое введенное значение в поле формы тут же отображалось в списке, служит процедура

Private Sub Fld_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.ListB.RowSource = strSql & " WHERE СПРАВОЧНИК.Type = " & strTableName & strSql1
End Sub

А для навигации по форме (поиску нужной записи) используем

Private Sub ListB_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst " = " & Str(Nz(Me!, 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Чтобы исключить возможность ввода в табличную форму (источник - СПРАВОЧНИК Sub) записей, не связанных с основной формой (источник - СПРАВОЧНИК) служит процедура, которая выводит соответствующее сообщение при подобной попытке и блокирует ее:

Private Sub Subfrm_Enter()
If flgDeleteRecord = False Then
If IsNull() Then
MsgBox "Сначала нужно завести основные данные!", vbCritical, NomWers
Fld.SetFocus
End If
End If
End Sub

Раз на форме появилось второе поле фильтра, появилась соответствующая процедура фильтрации по этому полю

Private Sub П2_Change()
strFiltr = Me.П2.Text
Set idField = Me.П2
Call fFilForm(strFiltr, strSql2, strSql3, Me.Subfrm.Form, "Name")
End Sub

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

А теперь можете поэкспериментировать, создавая разного вида справочники - простые и двухуровневые.



Просмотров