Описания таких сущностей, как товары, контрагенты, валюты, склады, объединяет наличие таких общих свойств, как внутренняя идентификация объекта в системе, необходимость поддержки иерархии и группировки элементов, необходимость поддержки вложенных таблиц. Информацию об этих объектах надо хранить, они задействованы в хозяйственных операциях предприятия и т.д. В "1С:Предприятии" все такие сущности объединены в общий класс "справочник", для которого перечисленные выше свойства и возможности поддерживаются на уровне платформы.
Для создания в "1С:Предприятии" нового справочника достаточно описать необходимый набор параметров. Это делается визуально, не требуется писать ни единой строчки кода. Так, для создания справочника "товары" достаточно в режиме "конфигуратор" 1С:Предприятия:
-
указать его название – "товары",
-
отметить, что справочник иерархический (товары могу делиться на группы и подгруппы),
-
определить другие свойства, которые должна поддерживать система для данного справочника, такие, как способ нумерации элементов, автонумерация и т.п,
-
задать поля элементов справочника – для товаров это может быть закупочная цена, отпускная цена, вес и т.п.
Необходимый минимум для создания (описания) сущности класса "справочник" на этом выполнен – теперь достаточно одним нажатием кнопки сохранить эту сущность и можно начать работать с ней в режиме использования "1С:Предприятия". При этом соответствующая экранная форма для работы с созданным нами справочником генерируется системой автоматически — разработчику нет необходимости прилагать какие-то дополнительные усилия для того, чтобы пользователь мог вводить наименования товаров и групп товаров, задавать цены и другие параметры и т.д. Естественно, разработчик может сконструировать экранную форму и самостоятельно, с помощью специального конструктора экранных форм придав ей в точности такой вид и свойства, которые соответствуют особенностям решаемой задачи, необходимы по эргономическим соображениям и т.д.
Документы
Документы – счета, накладные, заказы и т.п. - фиксируют различные события, происходящие в хозяйственной жизни организации. Важным свойством документа является его привязка ко времени. В "1С:Предприятии" для этих объектов поддерживается идентификация самого события хозяйственной жизни, вложенные таблицы, расположение на оси времени, отражение в учетных механизмах, контроль последовательности и отражение событий в реальном времени. Такой набор функциональности заложен в систему и обеспечивает быструю разработку таких сущностей.
Так, для описания документа "приходная накладная", который фиксирует поступление товаров на предприятие, нам достаточно в конфигураторе указать реквизиты документа:
-
Организация (контрагент), от которой мы получаем товар – ссылка на справочник организаций. При этом проявляется очень важная возможность – те объекты и сущности, которые мы описываем в системе, сами становятся типами данных.
-
Склад, на который поступает товар – ссылка на справочник "склады".
-
Состав документа. По одной накладной может поступить несколько товаров, поэтому в документ включается вложенная таблица, в которой имеются поля типа "справочник товаров", а также количество данного товара (число) и суммарная стоимость (тоже число).
В простейшем примере этого достаточно для описания структуры данных документа и начала работы с ним – перейдя в режим использования "1С:Предприятия" можно вводить накладные, фиксирующие поступление товаров. При этом в форме ввода система будет предоставлять возможность выбора значений полей из соответствующих справочников (например, "организации" или "товары"), ввода в эти справочники новых значений и т.п.
Однако сам по себе документ только описывает некоторый факт происшедший в хозяйственной жизни. В бизнес-приложениях эти факты необходимо еще учитывать — отражать движения ресурсов (товаров, финансов и т.п.) в различных системах учета. Для этого документ необходимо провести. С точки зрения пользователя это означает отдание соответствующей команды – нажатие кнопки "провести" в экранной форме документа. С точки зрения разработчика проведение означает вызов соответствующей обработки, выполнение алгоритма на встроенном языке "1С:Предприятия", описывающего отражение события в различных системах учета. Для описания систем учета в "1С:Предприятии" предусмотрены такие классы сущностей, как регистры.
Регистры накопления
Механизм многомерных регистров накопления "отвечает" за учет движений ресурсов (финансов, товаров, материалов и т.д.) и позволяет автоматизировать такие направления, как складской учет, взаиморасчеты, планирование. В регистрах накопления хранится информация о поступлении и расходе тех или иных ресурсов, а заложенная в платформу "1С:Предприятия" функциональность этих регистров предоставляет возможности получения остатков на определенный момент времени, расчета итогов, кэширования итогов и т.д.
Так, например, для простейшего количественного учета товаров в разрезе складов мы можем создать соответствующий регистр, содержащий измерения "товар" и "склад" и описать связь между сущностями "документ" и "регистр". Для этого в соответствующем конструкторе мы указываем, что документы "расходная накладная" и "приходная накладная" будут учитывать свои движения в этом регистре.
В данном случае производится уже не только описание структур данных и форм их представления, но и определение бизнес-логики работы приложения. Для описания этой бизнес-логики уже необходимо программирование на встроенном языке "1С:Предприятия" – многообразие вариантов учета в зависимости от ситуации, вида деятельности и особенностей работы конкретного предприятия очень велико и его целесообразно описывать алгоритмически. Прототип алгоритма (скрипта) создается конструктором и в простых случаях может использоваться "как есть" – например, если нам достаточно просто фиксировать изменения количества товара на складах по результатам поступления или расходования товаров, которые фиксируются соответствующими накладными. На практике такие алгоритмы, как правило, более сложны – они могут, например, автоматически рассчитывать скидки, поддерживать те или иные способы списания материальных ценностей (по средней стоимости, LIFO, FIFO), обеспечивать контроль наличия товаров на складе или выдачи товаров покупателю в зависимости от его задолженности и т.п.
Регистры сведений
Регистры сведений предназначены для хранения многомерных сведений о значениях различных величин, которые сами по себе не имеют объектной семантики. Такими значениями могут быть, например, курсы валют или цены на товары конкурентов по состоянию на определенную дату. Эта информация может быть как статической, так и изменяющейся с течением времени – в этом случае для нее предусмотрено хранение истории изменений.
Функциональность регистров сведений в "1С:Предприятии" обеспечивает задание произвольной периодичности хранения, возможность получения "срезов" информации на определенный период и т.д.
План счетов и регистры бухгалтерии
Система двойной записи бухгалтерского учета представляет собой отдельную модель учета со своей спецификой, поэтому в "1С:Предприятии" план счетов и регистры бухгалтерского учета выделены в отдельные классы сущностей.
Практика применения "1С:Предприятия" для автоматизации учета как в России, так и в других странах, очень широка и пока еще не возникало ситуации, чтобы разработчикам прикладных решений не хватило возможностей механизмов бухгалтерского учета, реализованного в "1С:Предприятии". Причем данные механизмы никак не навязывает разработчику собственно принципов ведения бухгалтерского учета. Заметим, что создание подобного инструмента с нуля является весьма непростой задачей, даже если использовать хотя бы часть возможностей из тех, что реализованы в "1С:Предприятии", а это многоуровневый план счетов с фиксированной или переменной разрядностью кодов; многоуровневый и многомерный аналитический учет; многовалютный учет; учет по нескольким планам счетов; учет по нескольким организациям (юридическим лицам); опциональное ведение количественного, суммового и валютного учета по отдельным разрезам аналитики и т.д. При этом система предоставляет разработчику инструмент для манипулирования итогами, который сводит построение весьма сложных запросов по всем перечисленным "степеням свободы" всего к нескольким строчкам.
План видов расчета и регистры расчета
Система "1С:Предприятие" содержит универсальный механизм для автоматизации любых расчетов, характеризующихся периодичностью (день, месяц, год) и сложностью (взаимное влияние видов расчета, вытеснение по времени, перерасчеты). Наиболее типичным примером использования данного механизма является расчет заработной платы.
Сложные расчеты обычно состоят из нескольких актов расчета, или промежуточных результатов, имеющих самостоятельную ценность и обязательных для хранения. При расчете зарплаты сотрудников нельзя ограничиться расчетом итоговой суммой к выдаче, поскольку многие промежуточные результаты расчета подлежат обязательному сохранению и используются для отчетности в государственные органы. Для реализации таких промежуточных результатов в 1С:Предприятии 8.0 предназначены виды расчета, сгруппированные в планы видов расчета. Каждый план видов расчета описывает схему взаимодействия записей регистра расчета и позволяет задать правила, по которым будут производиться расчеты записей, их взаимное расположение во времени и правила их перерасчета.
В плане видов расчетов еще на этапе разработки прикладного решения могут быть заведены предопределенные виды расчетов. Фактически, с помощью предопределенных видов расчета на этапе разработки конфигурации задается схема расчета для конкретной предметной области.
Регистры расчета предназначены для хранения записей расчета (промежуточных и итоговых результатов). Каждый регистр расчета основан на определенном плане видов расчета. При редактировании регистра расчета указываются и другие его характеристики, например, периодичность расчетов, поддержка механизма получения базы, поддержка периода действия (для механизма вытеснения), графики, по которым будут контролироваться периоды действия, и т.д.
Система также позволяет автоматически отслеживать записи, требующие перерасчета. Такая ситуация может возникнуть, когда их результаты каким-то образом связаны с другими видами расчета, а те были изменены. Например, при изменении начислений сотрудника нужно пересчитать налоги.
Поддержка нескольких систем учета
В каждом прикладном решении на платформе "1С:Предприятие" может поддерживаться несколько систем учета. Например, расходная накладная может одновременно отметить в системе учета товаров, что товаров на нашем складе стало меньше, отметить в системе взаиморасчетов увеличение задолженности клиента, которому мы отгрузили товар, отметить в системе бухгалтерского учета изменение остатков по счетам и т.д.
Между документами и системами учета (регистрами) поддерживаются связи типа "многие ко многим" — один документ может включать записи в различные регистры, поддерживаемые прикладным решением, и наоборот – записи в один регистр могут формироваться при проведении документов различных типов.
Конечно, классы сущностей и возможности описания бизнес-логики приложений, поддерживаемые "1С:Предприятием", не ограничиваются приведенными выше примерами. Мы только показали примеры подхода, используемого в "1С:Предприятии" при объединении сущностей в классы и продемонстрировали основные принципы разработки прикладных решений в терминах таких классов.