Новости
Компоненты или модули? Компоненты!
Игорь Сидоров (sidi@1c.ru)
Опубликовано: журнал "Компьютерра" № 33 (261) 25 августа 1998
В основе системы программ "1С:Предприятие 7.5" находятся три компоненты: "Бухгалтерский учет", "Оперативный учет" и "Расчет". Очень часто пользователи и журналисты путаются в терминологии и называют эти компоненты фирмы "1С" модулями, не придавая этому особого значения. Но между программными модулями и компонентами существует очень большая разница.
Программный модуль — это относительно самостоятельный инструмент, предназначенный для решения определенных конкретных задач. Для программного модуля характерна жесткая логика работы. Компонента же, это полуфабрикат, скорее набор гибких инструментов. На основе компоненты можно, в принципе, создать программный модуль, и появляется соблазн назвать, модулем, например, программу "Торговля и склад", разработанную с применением компоненты "Оперативный учет". Но это также неверно.
Конечно, продукт "Торговля и склад" — это готовое решение, но, в нем сохранена неразрывная связь с компонентой, так как инструменты, использованные при его создании по-прежнему доступны для пользователя. В результате получилась программа, обладающая очень большими возможностями для модификации, в отличие от модулей. Это первое отличие продуктов, созданных на основе компонент фирмы "1С" от решений, основанных на программных модулях. Второе отличие заключается в том, что при создании компонент разработчики фирмы "1С" по-другому посмотрели на проблему учета.
При занятии экономической деятельностью предприятие совершает определенные элементарные действия над объектами учета (товарами, материалами, МБП и т.д.), при этом происходит или не происходит изменение его финансового состояния. Каждое такое действие имеет ряд параметров, неразрывно с ним связанных. Для действия "отпуск товара" такими параметрами будут "Цена товара за единицу", "Дата продажи", "Количество товара", "Наименование покупателя". Каждое элементарное действие сопровождается документом, указывающим на характер действия, произведенного над объектом, и на его параметры.
Решение задачи учета в общем виде представляется в виде разработки алгоритмов, которые в соответствии с формулами, заданными действующим законодательством, а там, где это не регламентировано, в соответствии с пожеланиями заказчика, обработают документы и в последующем объединят результаты и представят их в нужном виде. Для того чтобы написать необходимые алгоритмы, нужно объединить объекты учета каким – либо образом в группы, по наиболее характерным для этой группы параметрам, не разрабатывать же алгоритм для каждого единичного объекта? Вот на этом этапе, объединения объектов в группы и проявляется наиболее ярко различие между компонентами фирмы "1С" и программными модулями.
При традиционном модульном подходе объединение объектов в группы происходит по типу деятельности, для которой необходимо решить задачу учета. Модуль "Торговля", таким образом, будет включать элементарные действия "оплата счета", "поступление на склад", "начисление наценки", "выписка счета на предоплату", "выписка накладной", "выписка счета – фактуры" и т.д. Соответствующие элементарные действия будут включать модули "Реклама", "Маркетинг" и т.д.
Программисты фирмы "1С" предложили другой, оригинальный способ объединения объектов. В учете хозяйственной деятельности предприятия были выделены три области, в которых по-разному течет время, и которые отличаются характерными алгоритмами. Первая область — это традиционный бухгалтерский учет. Созданная компонента "Бухгалтерский учет" мыслит периодами, как правило, кратными одному месяцу, хотя может рассчитывать итоги за любой отрезок времени.
Вторая область — оперативный учет. К ней относятся объекты, учет которых нужно проводить в реальном времени и получать очень быстро оперативную информацию о ресурсах, с которыми они связаны. Для работы в этой области была создана компонента "Оперативный учет".
Компонента "Расчет" предназначена для выполнения тоже периодических расчетов, но по своеобразным алгоритмам, отличающимся от бухгалтерских. Рассмотрим эти компоненты подробнее.
Компонента "Бухгалтерский учет" — отражение хозяйственной деятельности предприятия.
Программа, созданная на основе этой компоненты, обеспечивает ведение плана счетов, ввод операций и проводок, расчет бухгалтерских итогов. Она предназначена для многомерного и многоуровневого учета в разрезе синтетических счетов. Остальные разрезы учета, например, валютный учет, субсчета и другие являются дополнительными и могут не использоваться. Учет можно вести как в денежном, так и в натуральном выражении.
Многомерный аналитический учет позволяет получать итоги в различных разрезах, но предназначен он именно для детализации итогов по синтетическим счетам. При проведении документов программа автоматически, или бухгалтер, вручную, вводят проводки, и таким образом происходит движение средств. Все проводки имеют одинаковую структуру и сохраняются в базе данных. Поскольку в бухгалтерии принята двойная запись, то каждая проводка имеет две части — дебетовую и кредитовую. Из этого правила есть исключение, это забалансовые счета. В этом случае проводка имеет только одну часть.
Очень важная особенность этой компоненты заключается в том, что Время здесь полностью подчинено бухгалтеру. Он может вводить документы в любом порядке, без соблюдения физической хронологии. Для правильного расчета итогов за период необходимо только, что бы все документы, относящиеся к этому периоду, были проведены. Устройство операций и проводок в бухгалтерском учете ориентировано на конечного пользователя. Бухгалтер понимает логику работы программы и работает с привычными понятиями (счет, субсчет, валюта, проводка). Поэтому конфигурирование этой компоненты доступно специалисту, имеющему экономическое образование.
Компонента "Оперативный учет" — управление хозяйственными операциями в реальном времени.
Основой этой компоненты является регистр — многомерная система учета остатков или оборотов. Рассмотрим, как работает, например, регистр остатков. Регистр описывается на этапе конфигурации набором измерений и ресурсов (рис.1) Измерения — это оси координат. Например, на оси координат Товар находятся параметры Стол, Стул, Табуретка. На других осях координат, это могут быть Склад, Материально Ответственное Лицо (МОЛ) — находятся соответствующие этим осям параметры. Ресурсом могут являться любые исчисляемые величины, например, "долг клиента", "сумма наличными" и т.д. В нашем случае это "количество товара".
![]() |
Рис. 1 |
Фактически, ресурс, это точка на пересечении плоскостей, проведенных перпендикулярно к осям координат. Важно учесть, что ресурсов в этой точке может быть несколько, в нашем случае, кроме "количество товара" можно использовать также ресурсы "базовая стоимость" и "валютная стоимость".
Количество измерений регистров, как это уже понятно, определяет степень детализации хранения "остатков". Под "остатками" ресурса понимают числовое значение, которое содержит величину ресурса на какой-то определенный момент времени. Состав измерений регистра остатков всегда таков, что бы для каждого ресурса в любой момент времени можно было однозначно определить значения всех измерений. Другими словами, Табуретка, в количестве 15 шт., находится на Складе №2 и закреплена за Ивановым. При необходимости, с помощью запросов можно "свернуть" остатки, получив их с меньшей детализацией. Свертку можно производить по любому количеству измерений.
Движение ресурсов в регистре возможно производить двумя способами, как Приход и Расход, и это правило должно выполняться для всех ресурсов регистра. При несоблюдении этого правила будет происходить перенос остатков регистра из периода в период и его использование будет неэффективным. Если какое либо числовое значение не имеет физического смысла в качестве "остатка", то его следует вводить в структуру регистра в качестве реквизита, своеобразного комментария. Например, произведенный товар продается, но некоторая часть его используется предприятием для внутреннего потребления. В качестве реквизита можно ввести флаг, позволяющий разделить внешние и внутренние перемещения товара. В дальнейшем этот реквизит можно использовать в запросе для получения соответствующей выборки.
Иногда существует потребность в двух и более системах учета для одного и того же ресурса, например, при резервировании товара не на конкретном складе, а вообще на фирме. В этом случае на этапе разработки конфигурации следует добавить регистр для учета зарезервированных товаров в разрезе клиентов или счетов. Теперь товар будет учитываться два раза: один раз общее количество товара на складе и второй — количество зарезервированных товаров по клиентам или счетам.
Таким образом, регистр остатков отражает некоторый баланс наличия ресурсов, которые приходуются и расходуются, и является основным механизмом компоненты Оперативный учет.
Регистр оборотов выполняет вспомогательную роль, и призван накапливать итоги по движению ресурса за некоторый период, как правило, за месяц, по всем измерениям (рис.2). Польза его в том, что с его помощью можно быстро получить данные за период. Предположим, процент скидки клиенту зависит от закупок, произведенных им за определенный период времени. Для эффективного решения такой задачи целесообразно использовать оборотный регистр. Можно, конечно, применить запрос к регистру остатков и тоже получить данные за период, но для этого понадобится больше времени.
![]() |
Рис.2 |
Время здесь движется иначе, чем в компоненте Бухгалтерский учет. Все документы образуют единую хронологическую последовательность, повторяющую последовательность событий в хозяйственной деятельности предприятия. Проведение документов здесь очень ответственный процесс, произвольный порядок проведения документов не допускается. Позиция каждого документа относительно других документов определяется датой, временем, а также некоторой дополнительной величиной, с помощью которой устанавливается последовательность документов с одним временем в одной дате. Программа гарантирует неизменность этой величины. Это значит, что при любых загрузках, выгрузках и других действиях, не связанных с редактированием времени или даты документов, их положение относительно друг друга останется постоянным.
Проведение и исправление документов "задним числом" считается ситуацией исключительной и выполняется по определенным правилам. Компонента Оперативный учет содержит принципиальное понятие "Точка актуальности" (далее ТА). Кратко ТА можно определить как точку на оси времени, или момент, на который регистры содержат текущие значения всех ресурсов. При запросе значения какого-либо ресурса, регистр остатков выдает его значение именно на момент ТА. При необходимости получить значение ресурса на более ранний момент времени, нужно переместить в этот момент времени ТА или сделать временный расчет регистра. Можно заметить, что время в компоненте Оперативный учет дискретно и квантуется документами, то есть ТА всегда соответствует положению на оси времени документа, который был проведен, даже если потом это документ был удален.
Из принципа построения компоненты Оперативный учет видно, что она позволяет организовать учет любой сложности и структуры по любому разделу экономической деятельности предприятия. С ее помощью можно контролировать наличие товаров на складах, проверять состояние взаиморасчетов в момент проведения документа, можно эффективно использовать эту компоненту при интеграции с торговым оборудованием — кассовыми терминалами, сканерами штрих - кодов и аналогичными устройствами.
С точки зрения пользователя компонента Оперативный учет, в отличие от Бухгалтерского учета, представляет "черный ящик". То есть пользователь (менеджер, продавец) не посвящается в подробности организации учета. Он вводит в систему документы на входе и получает отчеты на выходе, но сам механизм обработки документов скрыт в конфигурации и для него недоступен. Поэтому конфигурирование этой компоненты, как правило, выполняется специалистами по автоматизации.
Компонента "Расчет" — выполнение периодических расчетов по специальным алгоритмам.
Основой этой компоненты является журнал расчетов, в котором хранятся данные периодических расчетов и их предыстория. Журнал расчетов обязательно принадлежит тому или иному справочнику объектов расчета. Этот справочник определяет вид объектов, по которым ведется расчет. Например, это может быть "Журнал расчета зарплаты" — при этом списком объектов будет являться справочник сотрудников или "Журнал расчета себестоимости производимых товаров и услуг", — здесь в качестве списка будет применяться справочник номенклатуры товаров и услуг и так далее.
Строка в журнале отражает расчет по одному объекту из справочника с любой периодичностью, от одного дня до года. Предусмотрен удобный ввод информации. При заполнении документов можно производить ввод значений по умолчанию или выбирать их из соответствующего справочника. Один и тот же справочник может участвовать в нескольких типах расчета, тогда для него создаются несколько журналов. Например, справочник Сотрудники в закрытом акционерном обществе может участвовать в виде списка объектов расчета в Журнале расчета зарплаты и в Журнале расчета дивидендов.
Количество журналов расчета, которые настраиваются на этапе конфигурации, ничем не ограничено и определяется количеством задач, которые необходимо решать. Каждому журналу соответствует свой алгоритм, иногда довольно сложный. Для описания конкретного алгоритма введено понятие "вид расчета". Количество видов расчета в компоненте также неограниченно. Алгоритм вида расчета описывается с помощью встроенного языка. Типичными примерами видов расчета являются "начисление по окладу", "подоходный налог" или "амортизация".
Для того, что бы можно было объединить несколько видов расчетов по какому либо признаку, в компоненту введено понятие "группа расчетов". Примеры групп расчетов — "начисления, облагаемые налогом", "входящие в расчет средней зарплаты" и другие.
Применение компонент для учета и автоматизации хозяйственной деятельности предприятия.
Выбор той или иной компоненты "1С:Предприятия 7.5" для решения конкретной задачи нужно производить обдуманно, поскольку их возможности перекрываются. Компонента "Бухгалтерский учет", помимо решения основной задачи бухгалтерского учета, может быть использована для получения итогов торговой деятельности, для начисления зарплаты и дивидендов, а также для расчета амортизации основных фондов и арендных платежей.
Приложив недюжинные усилия на основе компоненты "Оперативный учет" можно построить конфигурацию для решения чисто бухгалтерских задач, и так далее. Все правильно, в случае необходимости дерево можно срубить лопатой, а яму вырыть топором. Но лучше использовать каждый инструмент по назначению. Отсутствие понятия "двойной записи" в механизме регистров и другие причины делают решение бухгалтерских задач с помощью компоненты "Оперативный учет" нецелесообразным.
Но при сложном учете, большом объеме информации и необходимости получения ее в реальном времени использование аналитики бухгалтерского учета не эффективно. Для этого лучше использовать компоненту "Оперативный учет". Конкретные примеры применения — торговая деятельность при большой номенклатуре товаров, ежедневные взаиморасчеты с реализаторами, работа пункта проката презентационного оборудования и т.д.
Компонента "Расчет" хорошо подходит для расчета заработной платы, начисления амортизации, выплаты дивидендов, регистрации клиентов и расчета стоимости выполненных для них заказов. Ее применение особенно эффективно при наличии большого количества объектов учета и специальных алгоритмов. Зарплату небольшого коллектива можно и нужно рассчитать в компоненте "Бухгалтерский учет".
Наибольший интерес представляет совместная работа компонент. К примеру, пусть это будут "Оперативный учет" и "Бухгалтерский учет". Известно, что основная сложность при комплексной автоматизации торговых фирм — это совмещение гибкой системы оперативного управления покупками и продажами, соответствующими потребностям бизнеса конкретной организации и правильного отражения совершаемых операций в бухгалтерском учете. Эта задача становится особенно актуальной потому, что многие торговые организации в последнее время больше внимания уделяют легальному оформлению своей деятельности.
Во многих существующих на рынке системах автоматизации торговли явно прослеживается крен в одну из сторон учета. В одном случае учет строится "от бухгалтерии". Это не позволяет руководству и менеджерам фирмы использовать автоматизированную систему как инструмент управления торговой деятельностью, так как не обеспечивается должная гибкость и оперативность, необходимая для регистрации и анализа операций. В другом случае автоматизация ведется "от торговли". Теперь наиболее полно в программе выражены интересы персонала, отвечающего за торговые операции, но зато бухгалтерский учет выполняется на примитивном уровне, с серьезными нарушениями нормативных актов и без соблюдения особенностей действующего законодательства.
В результате на практике, во многих случаях, бухгалтерский учет ведется изолированно от торгового, что позволяет обеспечить и эффективное управление торговлей и корректное ведение бухгалтерского учета, но приводит практически к двойному вводу информации. Эта ситуация в корне меняется при создании объединенной конфигурации, использующей возможности двух компонент.
В этом случае с одной информационной базой могут работать сотрудники разных подразделений. Основной объем хозяйственных операций, ведущихся в реальном времени, выполняют менеджеры отдела продаж с применением компоненты "Оперативный учет". При этом все операции, выполняемые персоналом, описаны в конфигурации и работники не имеет возможности для отклонения от принятой схемы ведения бизнеса. По данным оперативного учета могут автоматически формироваться проводки для отражения операций в компоненте "Бухгалтерский учет". При этом можно "сворачивать" информацию о хозяйственных операциях, освобождаясь от деталей, которые не нужны в бухгалтерском учете (например, для бухгалтерии не имеет значения распределение товаров по складам).
При необходимости бухгалтер может вводить проводки вручную, компонента "Бухгалтерский учет" позволяет делать это. При разовой операции это намного эффективнее, чем вносить изменения в конфигурацию. А легко это также и потому, что бухгалтер находится в своей стихии, в привычной ему предметной области. Таким образом при использовании в одной конфигурации разных компонент и объединения их возможности создается качественно новый продукт.
А понятие "модуль" фирма "1С" в своих продуктах все-таки применяет. Это программы, написанные на встроенном языке системы "1С:Предприятие" и расположенные в строго определенных точках конфигурации. Роль у них хотя и важная, но не главная. Так тому и быть.