Новости

Проектирование — в терминах объектов

Игорь Сидоров (sidi@1c.ru)

Опубликовано: журнал "Компьютерра" №35 (263)

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

Можно сказать, что любая программа системы "1С:Предприятие" имеет генетический уровень. Это специальный режим, в котором производится конфигурирование (описание модели предметной области) системы. Именно здесь закладываются основные свойства будущей системы учета. Конкретный набор объектов, структуры информационных массивов, алгоритмы обработки информации определяет конкретная конфигурация. Говорить о любой программе системы "1С:Предприятие" в отрыве от нее бессмысленно. Все они поставляются с типовыми конфигурациями для определенной области применения, созданными штатными средствами системы. С помощью этих же средств типовая конфигурация может быть изменена, дополнена или даже разработана заново. В этом случае фактически можно говорить о разработке приложения. И только после создания или изменения конфигурации возможна работа пользователя уже в режиме исполнения. Зерно уже в земле, оно уже проклюнулось, теперь самое время ухаживать за растением.

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

При объектном подходе к проектированию экономических систем, применяемом фирмой "1С", специалист имеет дело с типами объектов предметной области и с конкретными их видами, в рамках этих типов. В результате значительно облегчается включение в информационную систему нужных объектов новых типов, удаление их и организация взаимодействия между ними. Это значительно ускоряет и облегчает процесс разработки приложения. Все данные системы, безусловно, хранятся в таблицах. Но пользователь или специалист по настройке системы этого не видит. И тот и другой оперируют обобщенными понятиями предметной области — справочник, документ, регистр и т.д. При этом все основные операции над этими объектами система выполняет сама. Выбор и определение понятий предметной области — тема данной публикации.

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

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

Главное свойство любого объекта метаданных — это идентификатор, краткое наименование объекта. Он присваивается каждому созданному объекту метаданных автоматически (слово "Новый" и цифра) и доступен для редактирования. Идентификатор уникален и не может быть удален без удаления самого объекта метаданных. Структура метаданных представлена в виде дерева и позволяет получить доступ ко всем объектам, которые представлены своими идентификаторами.

Типы метаданных

Константы

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

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

Количество Констант не ограничено. Информация может быть самая разная — ОсновнаяВалютаПродажи, ОсновнаяДатаОтчета и др. Константа может быть периодической. Это значит, что система хранит историю значений такой константы по датам. Для того, что бы конечный пользователь понимал, как использовать тот или иной объект метаданных, для всех без исключения объектов предусмотрена возможность создания описания. Специалист, занимающийся настройкой системы, сам пишет справку для конкретной конфигурации. Это описание в режиме исполнения будет доступно пользователю только для чтения.

Справочники

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

Каждый справочник обязательно имеет код, числовой или текстовый, и наименование. Любую информацию об объекте, принадлежащем справочнику, можно задать с помощью реквизитов. Используя механизм реквизитов, легко, например, организовать картотеку Клиенты. Для этого нужно ввести юридический адрес, банковские реквизиты, Ф.И.О. ответственного лица и другие необходимые данные. В дальнейшем, используя средства поиска, можно будет легко найти информацию о любом клиенте. Сведения, хранящиеся в реквизитах, можно использовать при формировании документов, в различных расчетах, при формировании отчетов и так далее. Желая сохранить в системе историю значений реквизита по датам, ему нужно определить свойство периодический. Это удобно, например, для сохранения в системе истории курса валют.

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

Справочники можно использовать сами по себе, а можно подчинять друг другу. Например, справочник Договоры можно использовать отдельно, а можно использовать совместно со справочником Клиенты. В этом случае перед использованием подчиненного справочника Договоры сначала должен быть выбран элемент "родительского" справочника Клиенты.

Документы

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

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

Это объекты Общие реквизиты и Нумераторы. Общие реквизиты, созданные один раз, становятся доступны для всех документов. Их можно размещать в формах документов, к значениям их можно обращаться с использованием встроенного языка. Пользователь может производить отбор документов, применяя запрос с использованием значений общих реквизитов. Нумератор представляет объект, описывающий правила нумерации документов — тип и длина номера, его периодичность, необходимость контроля уникальности. Можно назначить разные нумераторы для документов разных видов, например, для расходных и приходных накладных. Если назначить для всех документов один нумератор, то получим сквозную нумерацию всех документов разных видов.

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

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

Журналы документов

Средством для работы с документами в системе программ "1С:Предприятие" являются журналы. С их помощью пользователь может группировать документы для просмотра и быстрого доступа к ним. Документы в журналах хранятся в виде списков. Конфигуратор предусматривает создание журналов нескольких видов. Самый распространенный из них — это "Простой журнал". При создании документа можно указать, в каком журнале будет производиться работа с документами этого вида. Один "Простой журнал" можно назначить документам разного вида, но документы одного вида будут всегда доступны только в одном "Простом журнале". Примеры "Простого журнала": "Расходные накладные по кредиту", "Приходные накладные за наличные" и т.д.

Другой вид, "Общий журнал" также может работать с документами разного вида. Но выбор документов, которые будут в нем доступны, производится уже при редактировании вида Журнал. Существует два типа "Общего журнала". Первый тип журнала — для работы со всеми документами. В нем можно производить отбор документов по их реквизитам, используя графы отбора. Второй тип — для работы с конкретными видами документов. Отбор в журнале этого типа производить нельзя. Различия между журналами можно сформулировать так: общий журнал с конкретными видами документов служит для разделения документов по видам, а общий журнал с признаком "все документы" позволяет разделять документы исходя из значений их реквизитов.

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

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

Перечисления

Это служебный вид метаданных, которые самостоятельно не используются и применяются в совокупности с другими данными. Перечисление можно определить как список возможных значений реквизита. Они используются при вводе значений реквизитов документов, справочников, при вводе значений констант, в тех случаях, когда нужно исключить неоднозначный ввод информации. Пример перечисления — Виды товара (товар, комплект, услуга, МБП и т.д.). Отличие Перечисления от других объектов метаданных в том, что это не шаблон, список перечисления известен и доступен в Конфигураторе, сама конфигурация использует значения перечисления. Пользователь изменить этот список не может.

Отчеты и Обработки

Любая информационная система должна иметь средства для обработки накопленной информации и представления ее в удобном виде. Для решения такой задачи в системе "1С:Предприятие" существует подсистема формирования отчетных документов. Для получения сложной информации применяются объекты метаданных Отчеты и Обработка. Эти объекты представляют собой алгоритм обработки информации на встроенном языке системы "1С:Предприятие". К алгоритму обязательно прикрепляется диалог, для организации ввода параметров, влияющих на ход выполнения алгоритма. Как правило, алгоритм имеет описание печатной формы, которое используется для вывода результатов работы алгоритма на экран.

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

Планы счетов, Виды субконто, Операция и Проводка

Если в системе программ "1С:Предприятие" установлена компонента "Бухгалтерский учет", то в конфигураторе становятся доступны объекты метаданных Планы счетов, Виды субконто, Операции и Проводки.

План счетов является центральным местом типовой конфигурации. Состав счетов, а также их свойства определяют методологию учета, реализованную в данной конфигурации. В типовой конфигурации 1С:Бухгалтерии содержится один план счетов, принятый в Российской Федерации для хозрасчетных организаций. В системе "1С:Предприятие" может быть несколько планов счетов. Количество их не ограничено и определяется реальными потребностями учета.

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

Аналитический учет в системе организован с помощью специального механизма субконто. Субконто называется любой объект аналитического учета: основные средства, нематериальные активы, малоценные и быстроизнашивающиеся предметы и так далее. Видом субконто называется множество однотипных объектов аналитического учета. Этот вид метаданных не описывает каких либо объектов, а только ссылается на них, указывая на возможность использования определенных данных для аналитического учета. Например, если создать субконто Поставщики, имеющий тип данных "Справочник.Организации", то можно организовать ведение аналитического учета по счету 60(Расчеты с поставщиками и подрядчиками)

Аналитический учет, основанный на нескольких видах субконто по одному счету называется многомерным, то есть имеет несколько разрезов представления информации. Механизм субконто поддерживает до пяти разрезов. Например, для счета 10 можно задать ведение аналитического учета по двум субконто — Материалы и Склады. Итоги теперь можно получить как по материалам в разрезе складов, так и по складам, в разрезе материалов, и, конечно, в целом, по всем материалам и всем складам.

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

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

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

Чтобы введенная операция вызвала изменение в бухгалтерских итогах, она должна содержать проводки. В состав данных проводок, помимо основных данных проводки (счетов, субконто, валюты, количества, суммы и суммы в валюте) включен реквизит "СодержаниеПроводки". Он служит для указания дополнительной текстовой информации, кратко характеризующей конкретную проводку операции. Кроме того, в состав данных проводок включен реквизит "НомерЖурнала". Он используется для ввода в каждой проводке некоторого двухзначного номера. Номер может содержать цифры и буквы и в основном используется для отбора проводок по этому признаку.

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

Компонента "Бухгалтерский учет" позволяет вести в одной информационной базе бухгалтерии нескольких предприятий одновременно. Для реализации этой возможности служит разделитель учета — дополнительный реквизит проводки. Информация, введенная в этот реквизит, используется в качестве признака для раздельного хранения бухгалтерских итогов.

Регистры

Если в системе установлена компонента Оперативный учет, то в Конфигураторе становятся доступны для настройки механизмы регистров. Регистр — это внутренний, скрытый от конечного пользователя, механизм создаваемой конфигурации. Однако средствами встроенного языка, можно записывать в регистр информацию и извлекать ее.

Для создания регистров используются простые и гибкие средства. Достаточно задать, в каких разрезах, и какие данные нужно хранить, система сама обеспечит запись и получение нужных данных. Разрезы учета описываются в объекте метаданных Измерения, а необходимые данные определяются в объекте Ресурсы. Возможно, но не обязательно, включать в состав регистра набор реквизитов. Пример — регистр Остатки Товара. Измерения здесь, это Товар и Склад, а Ресурсы — Базовая стоимость, Валютная стоимость и Остатки товара. В типовой конфигурации предусмотрен реквизит Флаг учета. Он позволяет разделить внутренние и внешние перемещения товара.

Журналы расчетов, Виды расчетов, Группы расчетов и Календари

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

Журнал расчетов является средством просмотра и редактирования результатов расчета. Каждая строка отражает единичное событие расчета для того или иного объекта. Самое важное свойство журнала расчетов — это ссылка на справочник, элементы которого являются объектами расчета. Например, Журнал расчета заработной платы, ссылается на справочник Сотрудники, и каждый сотрудник становится объектом расчета. При этом выполняется расчет тех или иных начислений и удержаний (виды расчета).В типовой конфигурации этот журнал имеет реквизиты Дни, Часы, Внутренний Совместитель, Счет, Платежная ведомость и другие.

Виды расчета содержат объекты По Тарифу, По Окладу, Квартальная премия и другие. Это специальные объекты, основное свойство которых, наличие алгоритма обработки данных. Один из обязательных реквизитов Журнала расчетов является Вид расчета. Именно этот вид будет выполнен при выполнении системой действия "Рассчитать".

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

Календари в системе "1С:Предприятие" предназначены для вычисления интервалов времени. Это может быть календарь работы предприятия, в котором содержится информация о рабочих, выходных и праздничных днях. Или календарь работы служащих, находящихся на повременной оплате, календарь рабочих, на сдельной оплате и так далее.

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