Проект «Учетное мироздание». Сделай сам

image

Когда-то в песочнице я рассказывал историю проекта «Учетное мироздание», предлагал даже скачать техническое задание. Человек пятнадцать скачало. Сейчас, когда техническое задание полностью и кардинально переписано, рискую выложить материал непосредственно на Хабре – в надежде найти читателя, а может быть и соратника. Проект-то амбициозный: социальная сеть принципиально нового типа, которая мыслится как могильщик традиционной бухгалтерии. Такого не было, насколько мне известно.
Предупреждаю:
  • под катом методологическая разработка в области компьютерного учета, так что на развлекательное чтение не рассчитывайте. Хотя с точки зрения программирования ничего сложного: заурядные реляционные таблицы;
  • объем материала 4,5 авторских листа. Тоненькая брошюра, половину объема которой занимают схемы и элементы интерфейса.



УЧЕТНОЕ МИРОЗДАНИЕ


Проект социальной сети нового типа
Разработано на основе экаунтологии

Раздел 1. ВВОДНАЯ ЧАСТЬ


1.1. Введение

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

1.1.1. Методологическая новизна

1. Определение вложенности (составных частей) и вещественности (веществ) объектов. Например, механизм может состоять из нескольких узлов, которые в свою очередь состоят из множества комплектующих, которые сделаны из различных сплавов.
2. Корректная работа со временем: регистрация объектов адекватными датами, в т.ч. будущими. Бухгалтерская методология не регистрирует объекты будущими датами, для нее обязательство – специфический текущий объект. В программе обязательство – это объект, зарегистрированный будущей датой по приходу или расходу.
3. Отказ от двойной записи, характерной для бухгалтерской методологии. Дебет и кредит бухгалтерской методологии заменены изначальными и интуитивно понятными приходом и расходом объектов.
4. Возможность, благодаря регистрации каузальных (причинно-следственных) связей между объектами учитывать трудозатраты (время, затраченное на изготовление объекта).
5. Учет наряду с неодушевленными объектами самих пользователей. Люди – такие же объекты окружающего мира, что и неодушевленные вещи.
6. Корректная работа с отчетами: принципиальный отказ от готовых (предлагаемых пользователю) отчетных форм, с возможностью получать показатели по любой аналитике.
7. Отказ от обязательной оценки объектов, характерной для бухгалтерской методологии. Отчеты формируются по любой числовой характеристике (стоимостной или натуральный учет), либо по числу объектов (пообъектный учет), либо по трудозатратам (трудовой учет).
8. Ориентация на сетевое использование (виртуальные хозяйственные миры отдельных пользователей могут быть слиты в один). Достигается двумя методами:

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

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

1.1.2. Возможности применения

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

1.2. Теоретическая платформа

1.2.1. Материальные объекты

Программа ориентирована на совместный учет вещей – материальных объектов:
Различают материальные объекты следующих типов:
1) элементарный однородный объект (не имеющий механических составных частей и состоящий из единого вещества – состав таких объектов не определяется: [type_object] = 1):

image

2) элементарный неоднородный объект (не имеющий механических составных частей, но состоящий из нескольких веществ: [type_object] = 2):

image

3) составной объект (имеющий механические составные части: [type_object] = 3):

image

Для составного объекта вещественность (однородный или неоднородный) не определяется, т.к. она определяется для каждой составной части по отдельности.
В качестве особого типа объектов выделены действующие в объектном мире субъекты – пользователи:
4) пользователь:

image

Пользователи обладают особыми свойствами, отличными от свойств неодушевленных вещей.

1.2.2. Информационные объекты

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

image

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

Различают информационные объекты следующих типов:
1) полные информационные объекты:

image

2) составные (синтетические) информационные объекты:

image

3) части информационного объекта:

image

Часть может быть взята как от элементарного, так от составного информационного объекта.

1.2.3. Каузальные связи

Каузальные связи – причинно-следственные зависимости, возникающие между объектами окружающего мира.
При работе с каузальными связями программа исходит из следующих посылок:
а) каузально взаимодействуют между собой материальные объекты;
б) один объект из участвующих в каузальной связи является причиной (орудие), другой объект – следствием (предмет).
В программе каузальное воздействие орудия на предмет обозначается как:

image

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

image

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

image

Для каждого пользователя можно подсчитать разницу между тем, что им произведено, и тем, что потреблено (баланс трудозатрат).

1.2.4. Единое учетное пространство

Принципиальное решение по организации единого информационного пространства таково:
  1. Объекты характеризуются ограниченным числом свойств (ради экономии компьютерных ресурсов в программе предусмотрено 40 произвольных свойств материальных объектов: 33 текстового формата и 7 числового);
  2. Вместе с тем свойства задаются пользователями произвольно, чем обеспечивается гибкость учетной системы;
  3. Материальные объекты могут передаваться другим пользователям или обмениваться.

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

1.3. Средства разработки

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

Раздел 2. БАЗА ДАННЫХ


2.1. База данных

База состоит из нескольких взаимосвязанных (реляционных) таблиц:
  1. Материальные объекты (OBJECT),
  2. Субъекты (SUBJECT),
  3. Операции (OPERATION),
  4. Словарь (DICTIONARY);
  5. Передача объектов (TRANSFER);
  6. Информационные объекты (INFORMATION);
  7. Материальные носители (CARRIER),
  8. Каузальность (CAUSE).

2.1.1. Материальные объекты (OBJECT)

image

Таблица предназначена для хранения данных об объектах: их ключей и характеристик (как обязательных, так и присваиваемых пользователями).
Поля, указанные в таблице объектов (под порядковыми №), используются следующим образом:
  • поле 1 – идентификатор объекта;
  • поля 6, 7 – типы объекта (необходимы для упрощения алгоритмизации);
  • поля 9-10 – фазы существования объекта: приход и расход;
  • поля 2-5, 11-51 – свойства объекта (поля 2-3 – обязательные; поля 4, 11-51 – задаваемые пользователем);
  • поле 6 – расчетное.

2.1.2. Субъекты (SUBJECT)

image

Таблица предназначена для хранения данных о пользователе и задаваемых им настройках.
Поля, указанные в таблице субъектов, используются следующим образом:
  • поле 1 – идентификатор субъекта для системы;
  • поле 2 – идентификатор субъекта для пользователя;
  • поля 3-43 – названия свойств, заданные пользователем.

2.1.3. Операции (OPERATION)

image

* – типы операций. Для материальных объектов: 0 – регистрация одушевленного объекта (пользователя); 1 – поступление неодушевленного объекта (вещи); 2 – разделение элементарного однородного объекта на части; 3 – разделение составного объекта; 4 – разделение элементарного неоднородного объекта на вещества; 5 – разделение элементарного неоднородного объекта на части; 6 – механическое объединение; 7 – химическое объединение; 8 – изменение свойств объекта (кроме свойства «Субъект»); 9 – выбытие объекта; 10 – передача объекта (изменение свойства «Субъект»); 11 – обмен объектами. Для информационных объектов: 12 – создание объекта; 13 – объединение нескольких объектов в один; 14 – копирование части объекта (разделение); 15 – изменение свойств объекта; 16 – копирование «своего» объекта; 17 – копирование «чужого» объекта пользователем; 18 – перемещение объекта; 19 – удаление объекта; 20 – обмен информационного объекта. Для каузальных связей: 21 – связь между объектом и операцией (производительная); 22 – связь между двумя объектами (непроизводительная).
Таблица предназначена для хранения данных об операциях (совокупности записей в качестве регистрационной единицы).

2.1.4. Словарь (DICTIONARY)

image

Таблица предназначена для хранения значений, помещенных в словари.
Поля, указанные в словаре используются следующим образом:
  • поле 1 – идентификатор значения;
  • поле 2 – указание на пользователя, которому принадлежит словарь;
  • поле 3 – указание на поле, по которому строится словарь;
  • поле 4 – само значение.

2.1.5. Передача объектов (TRANSFER)

image

Таблица предназначена для хранения данных о переданных материальных объектах.
Поля, указанные в словаре используются следующим образом:
  • поле 1 – идентификатор передачи»;
  • поля 2-4 – данные из базы Отправителя;
  • поля 5-7 – данные из базы Получателя;
  • поле 7 – указание на обменный характер передачи.

К данной таблице имеют право обращаться два пользователя: sender и receiver.

2.1.6. Информационные объекты (INFORMATION)

image

Таблица предназначена для хранения данных об информационных объектах.
Поля, указанные в словаре используются следующим образом:
  • поле 1 – идентификатор информационного объекта;
  • поле 2 – время создания информационного объекта;
  • поля 3-8 – характеристики объекта;
  • поля 9-10 – статус и тип объекта;
  • поля 11-12 – указание на первоисточники. При возможности объединять более двух информационных объектов требуется соответствующее число полей первоисточников.

2.1.7. Материальные носители (CARRIER)

image

Таблица предназначена для хранения данных о записи информации на материальных носителях.

2.1.8. Каузальность (CAUSE)

image

Таблица предназначена для хранения данных о каузальных связях.

2.2. Взаимосвязи между основными таблицами

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

image

Логика работы программы:
1) Каждый материальный объект регистрируется по приходу, затем по расходу. Если объект зарегистрирован только по приходу, он считается присутствующим на данный момент; если объект зарегистрирован и по приходу, и по расходу, он считается выбывшим на данный момент (стандартная бухгалтерская логика);
2) любое преобразование материального объекта приводит к его расходу и одновременно, если это не удаление, к приходу материального объекта с новыми свойствами;
3) «субъект» – одно из свойств объекта, поэтому изменение данного свойства означает передачу объекта от одного пользователя другому (за счет того, что пользователи работают лишь со «своими» объектами).
4) между материальными объектами и операциями, которыми зарегистрированы их фазы существования (приход и расход), имеется однозначное соответствие, с помощью которого можно определять «историю» объекта, то есть проследовать по цепочке «превращений» объекта посредством установления связей: объект по приходу – операция – объект по расходу данной операции – приход этого объекта – операция…. и т.д.

image

Если исследуемый объект раздваивается, то (разными цветами обозначены составные части объекта и дальнейшее прослеживание их «истории»):

image

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

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

image

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

Раздел 3. ИНТЕРФЕЙС


3.1. Общий вид

Интерфейс программы – общий вид:

image

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

3.2. Режимы работы


Всего рабочих режимов три:
  1. Объекты.
  2. Операции.
  3. Отчеты.

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

3.2.1. Режим «Объекты»

Основные виды в режиме «Объекты»:
а) иконки,

image

б) таблица:

image

в) иерархия,

image

Названия (назначение) кнопок и элементов интерфейса.
На верхней панели управления располагаются:
  • таймер (с примыкающей к нему кнопкой установки текущего времени). Это общий элемент интерфейса для всех режимов.

Далее (в верхнем ряду) следуют кнопки:

image

Ниже на верхней панели находится строка ввода/редактирования операции. К ней относятся элементы:
  • пометить как химическое соединение/разделение,
  • ввести операцию (Ок),
  • отказаться от ввода операции (No).

На нижней панели управления располагаются кнопки:

image

Нижняя панель управления – общий элемент для всех режимов.

3.2.2. Режим «Операции»

Вид программы в режиме «Операции».

image

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

image

Второй таймер также служит для дополнительной фильтрации операций. В режиме «Объекты» он не нужен: объекты показываются в рабочем окне на момент времени (параметр времени один), – но операции могут быть выбраны за период времени (параметров времени два). Два таймера служат для установки параметров фильтрации: показывать операции от момента (включительно) до момента (включительно).
Таким образом, для фильтрации в режиме «Операции» могут быть использованы:
  • левая панель,
  • таймеры,
  • окошко дополнительной фильтрации.

3.2.3. Режим «Отчеты»

Вид программы в режиме «Отчеты».

image

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

image

3.3. Левая панель

3.3.1. Назначение левой панели

Левая панель управления используется для:
  1. Ввода данных;
  2. Фильтрации данных;
  3. Просмотра значений текущего объекта.

Панель состоит из двух колонок: первая колонка обозначает свойства, вторая – значения по текущим свойствам. Для материальных объектов обязательны (всегда присутствуют на левой панели) свойства «Субъект», «Объект», «Время регистрации», «Масса», «Информация»:

image

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

image

Серый квадратик здесь – не только вызов словаря, но также вызов окошка выбора файла.
Возможные значения для «Статус» либо «нет файла» (при [status_info] = 0), либо «частный» (при [status_info] = 1), либо «публичный» (при status_info = 1), либо значение отсутствует (если не указан файл).
Принципы работы с панелью для информационных объектов те же, что в случае с материальными объектами.

3.3.2. Использование левой панели для ввода данных

3.4.2.1 Добавление нового свойства

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

image

Если число допустимых свойств исчерпано, пустая строка отсутствует.
Как видно на рисунке, при редактировании материального объекта свойство «Информация» исчезает (информационные объекты редактируются в специальном интерфейсе), зато добавляется свойство «Иконка», чтобы пользователь мог указать путь к иконке. По завершении редактирования «Иконка» из левой панели исчезает.
После того, как название нового свойства объекта набито (пользователь нажал «Enter» либо перешел вправо), возникает модальное окошко выбора формата. По умолчанию установлено: текст.
Если пользователь ввел новое свойство, но не указал для него значение (присвоил пустое значение), после нажатия на Enter, выводится сообщение: Новое поле не будет создано, так как для него не указано значение.
После того как формат и значение добавленного свойства указаны и пользователь одобрил операцию, нажав Ок, в базу (помимо самой операции) записывается следующее.
1) Исправляется запись регистрации субъекта.

Таблица SUBJECT:
id_subject: …
name_subject: …
grade_name_1: задается пользователем
grade_name_2-40:

Многоточиями здесь и далее обозначены ранее заполненные значения (в данном случае – при регистрации пользователя).
Если пользователь выбрал числовой формат, словарь используется, начиная с grade_name_34 (для числовых полей зарезервированы поля с 34 по 40). В этом случае исправления следующие:

Таблица SUBJECT:
id_subject: …
name_subject: …
grade_name_1-33:
grade_name_34: задается пользователем
grade_name_35-40:

Каждое новое свойство добавляется в новый grade, и так до 40 (до предельного числа свойств, установленного для одного пользователя).
Свойство может быть удалено (автоматически, в случае если по нему нет ни одного непустого значения), тогда «освободившееся» поле может быть занято новым свойством.
Для информационных объектов число свойств в словаре установлено и не может быть изменено.

3.4.2.2. Ввод значения

При вводе/редактировании операции пользователь вводит новые (или оставляет без изменения) значения для текущего (выбранного) объекта.

3.4.2.3. Работа со словарем

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

image

В словарь вводятся значения, в нем ранее отсутствовавшие.
При добавлении с клавиатуры проверяется наличие добавляемого значения в словаре (при вводе операции).
Если значение отсутствует (т.е. ранее не использовалось), оно вносится в словарь:

Таблица DICTIONARY:
id_dictionary: код значения, генерируется автоматически
id_subject: берется из id_subject
dictionary_number: уникальный код словаря, берется как номер из grade_name_N
grade: вводится пользователем

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

3.3.3. Использование левой панели для фильтрации

Когда не происходит ввода/редактирования операции, левая панель может быть использована для фильтрации объектов в рабочем окне, ведь названия объектов и свойств не уникальны и могут повторяться.
Если пользователь нажмет кнопку фильтрации на нижней панели и перейдет на левую панель, где наберет нужное значение, то после нажатия на Enter или перехода в рабочее окно, в рабочем окне останутся объекты с набранным значением.
Когда набраны значения по двум или более свойствам, фильтрация по умолчанию осуществляется в соответствии с логическим союзом «и». Для использования логического союза «или» пользователь должен указать перед значением: II.
Пользователь может указать в одной ячейке несколько значений, к примеру: Имя 5 @ Имя 1.
То есть обозначения стандартные:
@ — логический союз «и»,
II — логический союз «или».
Для очистки критериев фильтрации используется кнопка показа всех объектов.
Для просмотра на левой панели значений текущего объекта (а не критериев фильтрации) кнопка фильтрации должна быть отжата.

3.3.4. Использование левой панели для просмотра значений текущего объекта

При отсутствии ввода/редактирования операции и отжатой кнопке фильтрации левая панель используется для просмотра значений текущего (выбранного) объекта. В противном случае, если объект не выбран, значения на левой панели (за исключением значения субъекта, которое показывается всегда) отсутствуют.
Допустим, в режиме «Объекты» пользователь встает курсором на объект «Имя 3», тогда на левой панели высвечиваются значения по всем свойствам данного объекта.

image

То же происходит в табличном режиме. При этом на панели управления повторяются значения объекта, указанные в таблице (такое повторение может быть полезно, если свойств много и они не умещаются на экране).
То же происходит, если пользователь находится в режиме иерархического просмотра.
Аналогичным образом высвечиваются свойства объекта в режиме «Операции», если встать курсором на объект в формуле, и в режиме «Отчеты»: в том случае, если группировка осуществляется пообъектно.
Если с объекта «сойти», значения очистятся (независимо от режима и вида).

3.4. Рабочее окно

3.4.1. Назначение рабочего окна

Рабочее окно используется для просмотра объектов на какой-либо момент времени.
В зависимости от режима и параметров, установленных на левой панели, показываются:
  • либо иконки материальных или информационных объектов (в режиме «Объекты»):
  • либо таблица (в режимах «Объекты» и «Отчеты»):
  • либо комбинация того и другого (формулы из иконок в качестве значений таблицы – в режиме «Операции»):
  • либо иконки, расположенные в иерархическом порядке и отображающие вещественную преемственность.

3.4.2. Просмотр прошлых операций

3.4.2.1 Просмотр по иерархии

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

image

Каждый из представленных здесь иерархических уровней обозначает операцию, совершенную с объектом (одним из его составных частей или веществом):
1) Поступление объекта:

image

2) Объединение объектов (в приведенном примере химическое):

image

3) Передача объекта:

image

4) Разделение объекта:

image

5) Изменение свойств объекта:

image

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

3.4.2.2 Просмотр составных частей объекта при помощи иконок или таблиц

Допустим, объект 1 и объект 2 были ранее объединены в объект 3 (тем самым представляют собой составной объект [type_object] = 3).
При нажатой кнопке просмотра иконок пользователь видит в рабочем окне составной объект:

image

Но если пользователь кликнет на объект «Имя 3», то «войдет» в состояние объекта на прошлую операцию объединения,

image

иначе говоря, спустится по ссылке:

image

Продвижение «вглубь» по прошлым операциям возможно до [type_operation] = 1, т.е. начальной регистрации объекта в информационной системе.
Просмотр по иерархии с помощью иконок или таблицы затрагивает только операции объединения (т.е. те, которые образуют составные части объектов). Для просмотра всех операций следует воспользоваться деревом.

3.4.2.3. Просмотр составных частей объекта в чужой базе

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

3.4.3. Работа с информационными объектами

3.4.3.1. Просмотр информационных объектов в своей базе

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

image

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

3.4.3.2. Поиск информационных объектов в чужой базе

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

image

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

3.5. Таймер и работа с ним

Таймер нужен для просмотра состояния (зарегистрированных объектов) не только на текущий момент времени, но и прошлый, и будущий.
Допустим, пользователь, 2012.09.12. в 13:01 зарегистрировавший составной объект 3, устанавливает время на минуту ранее. Он увидит состояние на тот момент: что объект 1 и объект 2 фигурируют по отдельности, а не в составе объекта 3, в который будут объединены позднее. Если же пользователь установит время на момент, когда ни объект 1, ни объект 2 еще не зарегистрированы, то увидит пустое рабочее окно. Таким образом, в режиме «Объекты» таймер показывает состояние базы в установленное на нем время.
Порядок работы таймера:
  • состояние по умолчанию: показывает текущее время (ведется отсчет времени);
  • при необходимости пользователь может установить другое время. В этом случае таймер показывает время, установленное пользователем. Отсчет времени при этом прекращается, до момента возврата к текущему времени (нажатия на кнопку текущего времени).
  • установка времени осуществляется вручную: пользователь просто набивает новые параметры (без знаков препинания, разумеется – те статичны). Ввод последней цифры свидетельствует о том, что параметры введены. Если пользователь не указывает время, а сразу переходит на другой элемент окна, время по умолчанию устанавливается как 00:00.

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

3.6. Переходы из режима в режим

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

Раздел 4. ВВОД ДАННЫХ


4.1. Стандартные действия пользователя при вводе данных

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

image

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

image

4.2. Стандартные записи в таблицы

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

1. Регистрация операции.

Таблица OPERATION:
id_operation: … (генерируется автоматически)
time: … (задается пользователем)
subject_operation: … (берется из id_subject пользователя)
type_operation: … (определяется действиями пользователя)
comment: … (задается пользователем)
actual: 1, если time <= текущему времени; 2, если time > текущего времени
2. Поступление материального объекта.
Регистрируется новой записью.
Таблица OBJECT:
id_object: … (генерируется автоматически)
subject: … (берется из id_subject пользователя)
name_object: … (задается пользователем или определяется его действиями)
av_http: … (задается пользователем или определяется его действиями)
massa: … (задается пользователем или определяется его действиями)
labour: … (определяется расчетным путем исходя из типа операции: как величина трудозатрат составных частей объекта плюс продолжительность каузального воздействия орудий на текущую операцию)
information: … (определяется действиями пользователя)
type_object: … (определяется действиями пользователя)
enter: … (берется из id_operation – указание на операцию)
leave:
grade_1-33: … (задается пользователем или определяется его действиями)
grade_34-40: … (задается пользователем или определяется его действиями)

3. Выбытие материального объекта.
При выбытии материального объекта в запись об объекте, уже имеющую место, вносится добавление по [leave]. При этом, в связи с выбытием объекта, пересчитывается [labour].

Таблица OBJECT:
id_object: …
subject: …
name_object: …
av_http: …
massa: …
labour: … (определяется расчетным путем исходя из типа операции: как ранее рассчитанная величина плюс продолжительность каузального воздействия орудий на данный объект или текущую операцию)
information: …
type_object: …
enter: …
leave: … (берется из id_operation – указание на операцию)
grade_1-33: …
grade_34-40: …

Как выбытие, так и поступление материального объекта могут быть зарегистрированы в одной операции от нуля до двух раз, по числу поступающих или выбывающих объектов.
Зависит от типа операции:
  • при поступлении ([type_operation] = 0 или 1) объект регистрируется по приходу, в то время как объект, регистрируемый по расходу, отсутствует;

image

  • при изменении свойств ([type_operation] = 8) или передаче ([type_operation] = 10) объект с прежними свойствами регистрируется по расходу, а объект с новыми свойствами – по приходу;

image

  • при разделении объекта ([type_operation] = 2, или 3, или 4, или 5) прежний объект регистрируется по расходу, а новые объекты – по приходу;

image

  • при объединении объектов ([type_operation] = 7 или 8) прежние объекты регистрируются по расходу, а новый объект – по приходу;


image

  • при выбытии ([type_operation] = 9) объект регистрируется по расходу, в то время как объект, регистрируемый по приходу, отсутствует;


image

4. Создание информационного объекта.

Таблица INFORMATION:
id_info: … (генерируется автоматически)
time_info: … (задается пользователем)
name_info: … (задается пользователем)
author: … (генерируется автоматически как имя пользователя)
description: … (задается пользователем)
version: … (задается пользователем)
av_http_info: … (задается пользователем)
file: … (задается пользователем)
status_info: … (задается пользователем или определяется его действиями)
type_info: … (определяется действиями пользователя)
parent _1: … (определяется действиями пользователя)
parent _2: … (определяется действиями пользователя)

Для [type_info] = 1 первоисточники (parent) не указываются; для [type_info] = 2 указывается один первоисточник; для [type_info] = 3 – два первоисточника.
Информационные объекты создаются однажды и выбытию не подлежат, регистрируются лишь факты из записи на носитель или удаления с носителя (см. далее).

5. Запись информационного объекта на носитель.
Вносится новая запись.

Таблица CARRIER:
id_carrier: … (генерируется автоматически)
id_subject: … (ссылка на пользователя)
id_info: … (ссылка на записываемый информационный объект)
id_object: … (ссылка на материальный носитель)
enter_info: … (берется из id_operation – указание на операцию)
leave_info:
6. Удаление информационного объекта с носителя.
В запись об информационном объекте на материальном носителе вносится добавление по [leave_info].

Таблица CARRIER:
id_carrier: …
id_subject: …
id_info: …
id_object: …
enter_info: …
leave_info: … (берется из id_operation – указание на операцию)

Теперь переходим непосредственно к операциям.

4.3. Регистрация пользователя [type_operation] = 0

Пользователь регистрируется в окне стандартного вида, указывая (* — обязательно):
  • логин*,
  • пароль*,
  • свой вес (массу),
  • http-ссылку на изображение.

Возможно указание других параметров, в случае их необходимости.
Формула операции:

image

При регистрации в таблицы добавляются следующие записи.

Таблица SUBJECT:
id_subject: … (генерируется автоматически)
name_subject: … (логин – задается пользователем)
grade_name_1-40:

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

image

Тикает текущее время. Все кнопки, кроме кнопки добавления объекта, притушены. Единственное, что возможно, это перейти в другой режим (где все кнопки также притушены) или начать работу, добавив первый объект.

4.4. Поступление материального (неодушевленного) объекта: [type_operation] = 1

Пользователь нажимает на кнопку добавления объекта. В строке ввода/редактирования формулы возникает формула.

image

Курсор перемещается на левую панель управления для ввода свойств объекта. Название объекта по умолчанию: «Объект».
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Поступления объекта.

В итоге рабочем поле появляется зарегистрированный объект.

4.5. Объединение материальных объектов

Существует два типа объединения:
  1. Механическое (по умолчанию).
  2. Химическое (при установке метки на «хим.»).

Рассматривается объединение двух объектов (для простоты отображения формул), хотя методологически не составляет труда объединять большее число объектов.

4.5.1. Механическое объединение: [type_operation] = 6

В составной объект могут быть объединены объекты любых видов (и в любой последовательности – порядок слагаемых значения не имеет), за исключением [type_object] = 0, т.е. пользователя. Не могут быть объединены составные части и вещества (поскольку они уже находятся в составе объекта).
Формулы механического объединения:

image

и т.д.
Пользователь встает на объект и нажимает кнопку объединения. В строке ввода/редактирования формулы возникает соответствующая формула. Затем пользователь встает на второй объект (который собирается объединять с первым) и нажимает Enter или дважды кликает мышью.
Свойства двух первых объектов (слагаемых) изменить нельзя – они известны. Свойства третьего объекта (суммы) подлежат изменению в общем порядке. По умолчанию предлагаются свойства объекта, находящегося в формуле первым.
Если на объединившихся материальных носителях были записаны информационные объекты, информационные объекты объединяются на новом носителе. Например, если на одном из объектов была записана повесть, а на втором объекте роман, то на образованном составном объекте будут значиться повесть и роман.
Когда свойства указаны, пользователь нажимает кнопку Ок, и в рабочем окне появляется добавленный объект, а объекты, ставшие его составными частями, исчезают.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Выбытия прежних материальных объектов – дважды,
  3. Поступления нового материального объекта,
  4. Удаления информационного объекта с прежнего носителя – по числу имеющихся объектов,
  5. Записи информационного объекта на новый носитель – по числу имеющихся объектов.


4.5.2. Химическое объединение: [type_operation] = 7

Формулы химического объединения в целом аналогичны механическому объединению, с тем отличием, что допускается объединение ([type_object] = 0, т.е. пользователя, с материальным неодушевленным объектом. В этом случае имя полученного объекта в любом случае имя пользователя.
Формулы химического объединения:

image

и т.д.
Ввод данных также аналогичен предыдущему варианту, но с установлением метки на «хим.».
Значение по [type_object] присваивается полученным объектам следующим образом:

image

Если на химически объединившихся материальных объектов были записаны информационные объекты, то данные информационные объекты на новом носителе стираются.
В таблицы добавляются записи:
  1. Регистрации операции,
  2. Выбытия прежних материальных объектов – дважды,
  3. Поступления нового материального объекта,
  4. Удаления информационного объекта с прежнего носителя – по числу имеющихся объектов.

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

4.6. Разделение материального объекта

При разделении ограничение то же, что и при объединении: объект можно разделять не более, чем надвое.
Возможны три вида разделения:
  1. Разделение элементарного объекта,
  2. Изъятие из неэлементарного объекта его части,
  3. Разделение элементарного неоднородного объекта на вещества.

Во всех вариантах в таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Выбытия прежнего материального объекта,
  3. Поступления новых материальных объектов – дважды,
  4. Удаления информационного объекта с прежнего носителя – по числу имеющихся объектов,
  5. Записи информационного объекта на новый носитель – по числу имеющихся объектов.


4.6.1. Разделение на части элементарного однородного объекта: [type_operation] = 2

Формула операции:

image

Первый объект в формуле (уменьшаемое) – тот, который разделяется. Второй объект (вычитаемое) – тот, который отделяется от первого. Третий объект (разность) – тот, который получается в результате отделения второго от первого. Все объекты здесь имеют одинаковые названия, т.к. вычитаемому и разности по умолчанию присваиваются значения уменьшаемого, но пользователь может исправить названия в процессе редактирования.
Ввод значений осуществляется в общем порядке, аналогично рассмотренному выше. Специфика следующая: если от объекта отделяется новая часть (т.е. ранее объект был полным, но теперь разделяется надвое), то значения последовательно указываются для второго и третьего объектов.
При разделении особым образом ведут себя свойства числового формата. Значения числовых форматов указываются только для вычитаемого (второго объекта), а для разности (третьего объекта) они рассчитываются. Допустим, в свойствах объекта 8 было указано [Вес] = 150. Пользователь указывает для вычитаемого [Вес] = 50. Тогда для разности автоматически устанавливается [Вес] = 100, причем пользователь не может изменить данное значение иначе, как изменив предыдущее, либо при изменении данного значения соответствующим образом изменяется предыдущее. Значение 0 допускается. Данные требования действительны для каждого числового поля.
При разделении на части пользователя ([type_object] = 0) одна из частей должна сохранить его свойства (то есть от пользователя можно отделить какую-либо часть, но сам пользователь при этом останется).
Если на разделившемся материальном объекте были записаны информационные объекты, они по умолчанию переносятся на носитель, указанный в формуле первым. Таким образом, разделение материального носителя приводит к тому, что все информационные объекты оказываются на одном из новообразованных носителей. Для распределения информационных объектов по носителям необходимо выполнить операцию перемещения информационных объектов, в общем порядке.

4.6.2. Разделение составного объекта: [type_operation] = 3

Составные объекты ([type_object] = 3) возможно разделять только посредством отделения уже существующих частей. Например, если объект 5 образовался из объектов 4 и 3, а объект 3 в свою очередь – из объектов 2 и 1, то можно разобрать объект 5 на объекты 4 и 3, но ранее этого нельзя отделить от объекта 5 объект 2 или 1. Другими словами, составной объект собирается в одной последовательности, а разбирается строго в обратной.
Формулы операции:

image

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

4.6.3. Разделение элементарного неоднородного объекта на вещества: [type_operation] = 4

Как в предыдущем случае, разделение осуществляется в соответствии уже не со вложенностью, но с вещественностью (ведь вещества можно химически совмещать последовательно: сначала первое со вторым, затем сплав с третьим веществом или даже со сплавом и т.д.).
Формулы операции:

image

Специфика операции следующая:
  • из пользователя ([type_object] = 0) можно «химически выделить» вещество с любыми свойствами независимо от прошлых операций;
  • если в химическое объединение вступал составной объект ([type_object] = 3), то при химическом разложении он считается неоднородным ([type_object] = 2), а если он был механически объединен из объектов, обладающих одинаковыми свойствами, за исключением значений числового формата, то он считается однородным элементарным ([type_object] = 1). Например, взяли два объекта и собрали из него механизм. Потом взяли и растворили данный механизм в кислоте, в результате чего получился некий неоднородный (состоящий из нескольких веществ) объект. Если допустить, что возможна обратная операция, позволяющая отделить от данного объекта кислоту, прежнего составного механизма все равно не получится, а получится неоднородный сплав, если первоначальные объекты обладали разными свойствами, либо однородное вещество (если свойства объектов были одинаковыми).

Действия пользователя аналогичны предыдущему. Пользователь встает курсором на элементарный неоднородный объект и нажимает кнопку разделения. Для того, чтобы отличить данный тип операции от механического разделения элементарного неоднородного объекта на части ([type_operation] = 4), пользователь устанавливает метку на «хим.» (при работе с [type_object] = 0 метка устанавливается автоматически и не может быть снята). Формула и текстовый комментарий после этого несколько соответствующим образом видоизменяются.
Свойства объектов при ([type_operation] = 4 изменению не подлежат, за исключением времени операции, аналогично предшествующему варианту, и свойств числового формата (в некоторых случаях), также за исключением работы с пользователем ([type_object] = 0).
Расчет числового формата аналогичен расчету при механическом разделении элементарного неоднородного объекта. Допустим, сплавили медь массой 10 кг с железом массой 5 кг. Затем от полученного куска отрезали 7,5 кг. При разделении нового объекта химическим способом получится 5 кг меди и 2,5 кг железа. Такой подсчет ведется автоматически для всех атрибутов числового формата.
Записи в таблицы аналогичны предыдущей операции – разделению составного объекта на части, с тем отличием, что имеет место другой тип операции и алгоритмически определяются характеристики не прежних механический частей, а химически объединившихся веществ объекта.

4.6.4. Разделение элементарного неоднородного объекта на части: [type_operation] = 5

Элементарный неоднородный объект можно не только разложить на вещества (химически), но и разделить механическим способом.

image

Действия пользователя те же, что при [type_operation] = 4, при том отличии, что не устанавливается метка на «хим.».
Если на разделившемся материальном объекте были записаны информационные объекты, они переносятся по умолчанию на объект, указанный в формуле первым.

4.7. Изменение свойств материального объекта: [type_operation] = 8

Пользователь может не добавлять, объединять или разделять объекты, но лишь изменить свойство объекта.
Свойства могут измениться у объектов любого типа, за исключением пользователя ([type_object] = 0), при этом сам тип объекта остается прежним.

image

Первый в формуле объект – с прежними свойствами, второй – с новыми. Второму объекту по умолчанию присваиваются значения первого.
Разрешается изменять свойства [name_object], [av_http], [massa] или [grade_1-40].
Запрещается изменять свойства:
  • составных частей и веществ;
  • объектов, образованных операциями [type_operation] = 10 и 11.

Если на изменившем свойства материальном объекте были записаны информационные объекты, то данные информационные объекты переносятся на новый объект.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Выбытия материального объекта с прежними свойствами,
  3. Поступления материального объекта с новыми свойствами,
  4. Удаления информационного объекта с прежнего носителя – по числу имеющихся объектов,
  5. Записи информационного объекта на новый носитель – по числу имеющихся объектов.

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

4.8. Выбытие материального объекта: ([type_operation] = 9)

Выбытию подлежат объекты любого типа, за исключением пользователя ([type_object] = 0):

image

Удалять составные части и вещества объекта запрещается (сначала нужно отделить их от объекта, затем уже можно удалять в качестве отдельного объекта).
Пользователь становится на объект и нажимает кнопку удаления. Объект предлагается к удалению. Вводить свойства удаляемого объекта, естественно, не нужно: пользователь подтверждает операцию удаления или отменяет ее. Вводится только время операции и текстовый комментарий к операции.
После нажатия Ок выдается запрос на подтверждение удаления. После подтверждения удаленный объект исчезает из рабочего окна.
Необходимые записи:
  1. Регистрация операции,
  2. Удаление материального объекта,
  3. Удаление информационных объектов, записанных на материальный объект.


4.9. Передача материального объекта другому пользователю: [type_operation] = 10

Пользователь может передать объект другому пользователю. Это осуществляется при помощи изменения значения по свойству «Субъект», тем самым формула совпадает с формулой изменения свойств объекта (выделена в отдельный тип для того, чтобы упростить алгоритмизацию).
Передавать разрешается объекты любых типов, за исключением пользователя ([type_object] = 0):

image

Действия пользователя идентичны действиям при изменении свойств объекта, с тем отличием, что изменить необходимо свойство «Субъект», после чего объект «переходит в ведение» указанного субъекта. Таким образом, в данной операции принимают участие два пользователя: Отправитель и Получатель. Если Получатель указан неправильно (отсутствует – не значится ни в базе, которой пользуется Отправитель, ни на централизованном сервере, либо указан сам Отправитель), операция запрещается, о чем выдается соответствующее сообщение.
Допускается изменение других свойств объекта.
Отправитель нажимает кнопку ОК, и объект передается, исчезая из рабочего окна (временно в случае отклонения передачи Получателем или навсегда в случае одобрения).
Алгоритм передачи следующий.
1) Отправитель передает объект получателю. В результате из базы Отправителя объект выбывает и поступает в базу Получателя. Объект, появившийся в рабочем окне Получателя, помечается как «к рассмотрению» при помощи вопросительного знака:

image

Записи в обеих базах помечаются как «к рассмотрению». Эти записи учитываются в рабочих окнах (у Отправителя объект исчезает, у Получателя – появляется; либо, другой вариант, показываются притушенными, но так, чтобы можно было отличить переданный объект от поступившего). Вместе с тем выполненная операция в формировании отчетов не участвует, до момента актуализации.
2) Если Получатель актуализирует операцию, то актуализируется операция и у Отправителя. Тогда объект начинает принимать участие в формировании отчетов. Записи об информационных объектах, расположенных на переданном материальном носителе, выполняются после актуализации переданного объекта.
3) Если Получатель не актуализирует (удаляет) операцию, то операция у Отправителя тоже удаляется. В этом случае объект исчезает из рабочего окна Получателя и вновь возникает в рабочем окне Отправителя, то есть восстанавливается первоначальное положение.
Когда обе базы находятся в прямом доступе друг к другу (база не распределенная), передача осуществляется одновременно. Если базы не находятся в прямом доступе (база данных распределенная), передача объекта осуществляется через сервер. На сервере создается база данных, в которую вносятся данные об объектах и настройки (названия свойств объектов) Отправителя и Получателя. При установлении связи с Получателем в его базу записываются необходимые данные. Затем, при принятии объекта или отказе от него, сервер связывается с Отправителем и вносит в его базу необходимые изменения. После внесения всех изменений база на сервере очищается от записей, ставших излишними.
В таблицах выполняются следующие записи.

У Отправителя:
  1. Регистрация операции. При этом указывается, что объект передан на рассмотрение: [actual] = 3;
  2. Удаление материального объекта.

У Получателя:
  1. Регистрация операции. При этом указывается, что объект принят к рассмотрению: [actual] = 4;
  2. Поступление материального объекта.


Одновременно а таблице TRANSFER регистрируется факт передачи объекта. Если базы у Отправителя и Получателя совмещенные, выполняется одна запись:

Таблица TRANSFER:
id_transfer: … (генерируется автоматически)
sender: … (указание на Отправителя)
object_sender: … (берется из id_object Отправителя – указание на переданный объект)
operation_sender: … (берется из id_operation Отправителя – указание на операцию передачи)
receiver: … (указание на Получателя)
object_receiver: … (берется из id_object Получателя – указание на полученный объект)
operation_receiver: … (берется из id_operation Получателя – указание на операцию получения)
exchange_sender:
exchange_receiver:

Если базы разделенные, подобная запись выполняется в обеих базах, Отправителя и Получателя.

4.10. Обмен материальными объектами: [type_operation] = 11

Обмен – две встречных передачи материальных объектов. Установление за передаваемый объект конкретной платы не предусмотрено: предполагается, что пользователи договариваются об этом вне системы.
Обмениваться разрешается объектами любых типов, за исключением пользователей ([type_object] = 0).
Формулы операции:

image

и т.д.
Алгоритм обмена следующий:
  1. Субъект А передает объект Субъекту Б в общем порядке;
  2. Субъект Б в порядке актуализации операции передает Субъекту А другой объект. Если данная передача актуализирована Субъектом А, обмен считается состоявшимся, в противном случае записи удаляются.

Различия в записях в сравнении с передачей объекта в том, что вместо одной имеют место две операции, связываемые друг с другом по [exchange_sender] и [exchange_receiver]. Заполнение указанных полей свидетельствует об обмене, а не безвозмездной передаче.

4.11. Создание информационного объекта: [type_operation] = 12

Создание информационного объекта означает, что на материальный носитель записывается какая-либо информация (информационный объект). Программа не работает с данным информационным объектом, а занимается его регистрацией – это относится ко всем операциям с информационными объектами.
От типа носителя тип информационного объекта никак не зависит, возможны любые комбинации информационных объектов с материальными, за исключением записи информации на пользователя ([type_object] = 0).

image

и т.д.
Для создания информационного объекта пользователь входит в режим просмотра информационных объектов и нажимает кнопку добавления, после этого вводит необходимые данные.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Создания информационного объекта,
  3. Записи информационного объекта на носитель.

Создать информационный объект допускается лишь после создания материального носителя, это отдельные операции. Сначала создается (и соответственно регистрируется в системе) бумага, затем на бумаге печатается текст, в результате чего бумага превращается в материальный носитель. Аналогичным образом сначала изготавливается флэшка, затем на флэшку записывается информация, и т.п.
Информационный объект создается автором: по свойству «Автор» объекту назначается имя пользователя, указать другое имя или исправить его впоследствии невозможно.

4.12. Объединение информационных объектов: [type_operation] = 13

Формулы операции:

image

и т.д.
Синтетический (сводный) информационный объект записывается на носитель, указанный для первого в формуле объекта.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Создания информационного объекта (синтетического),
  3. Записи созданного информационного объекта на носитель.

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

4.13. Копирование части информационного объекта (разделение): [type_operation] = 14

Формулы операции:

image

и т.д.
Частью информационного объекта считается часть как полного, так и синтетического объекта.
Хотя бы одно из свойств новых объектов подлежит изменению, в противном случае операция запрещается.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Создания информационного объекта ([type_info] = 3),
  3. Записи созданного информационного объекта на носитель.

То есть от «родительского» объекта отделяется часть, становясь самостоятельным информационным объектом.

4.14. Изменение свойств информационного объекта: [type_operation] = 15

Формулы операции:

image

и т.д.
Естественно, что при изменении сохраняются типы как информационного объекта, так и его материального носителя.
По умолчанию указываются свойства первоначального объекта. Хотя бы одно из свойств нового объекта подлежит изменению, в противном случае операция запрещается.
В таблицы добавляются записи:
  1. Регистрации операции,
  2. Исправления указанного пользователем свойства (из числа доступных ему [name_info], [description], [version], [av_http_info], [file], [status_info]) в таблице INFORMATION.

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

4.15. Копирование информационного объекта

4.15. 1. Копирование «своего» информационного объекта: [type_operation] = 16

Копирование информационного объекта в общем случае: из своей базы в свою.
Формулы операции:

image

и т.д.
По умолчанию указываются свойства первоначального объекта. Изменение свойств запрещается, пользователю сразу предлагается выполнить или отменить операцию.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Записи информационного объекта на новый носитель.

4.15. 2. Копирование «чужого» информационного объекта: [type_operation] = 17

Имеется в виду копирование информационного объекта из базы другого пользователя в свою.
Формулы операции:

image

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

Кроме того, выполняется запись:

Таблица TRANSFER:
id_transfer: … (генерируется автоматически)
sender: … (указание на Владельца файла)
object_sender: … (берется из id_object Владельца файла – указание на скопированный объект)
operation_sender:
receiver: … (указание на Копировщика)
object_receiver: … (берется из id_object Копировщика – указание на скопированный объект)
operation_receiver: … (берется из id_operation Копировщика – указание на операцию копирования)
exchange_sender:
exchange_receiver:

Если у Копировщика и Владельца файла разделенные базы, аналогичная запись дублируется в базе Владельца файла.

4.16. Перемещение информационного объекта: [type_operation] = 18

Формулы операции:

image

и т.д.
По умолчанию указываются свойства первоначального объекта. Изменение свойств запрещается, пользователю сразу предлагается выполнить или отменить операцию.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Удаления информационного объекта с носителя,
  3. Записи информационного объекта на носитель.


4.17. Удаление информационного объекта с носителя: [type_operation] = 19

Разрешается удалять с носителя информационные объекты любых типов и независимо от типа носителя.
Формула операции:

image

и т.д.
В таблицы добавляются стандартные записи:
  1. Регистрации операции,
  2. Удаления информационного объекта с носителя.

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

4.18. Обмен информационным и материальным объектами: [type_operation] = 20

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

image

и т.д. У другой стороны операции формулы получатся соответственно обратными:

image

Алгоритм обмена идентичен алгоритму обмена материальными объектами.
Записи аналогичны копированию «чужого» информационного объекта ([type_operation] = 17), со встречным указанием на обмен: [exchange_sender] и [exchange_receiver].
Как и обмен материальными объектами, данная операция требует актуализации.
Обменяться двумя информационными объектами нельзя.

4.19. Установление каузальной связи

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

4.19.1. Установление производительной каузальной связи: [type_operation] = 21

Допускается каузальная связь между материальным объектом любого типа и операцией любого типа, за исключением:
а) [type_operation] = 0;
б) всеми операциями с информационными объектами, в т.ч. [type_operation] = 20.
Формулы операции:

image

и т.д.
Для установления каузальной связи пользователь, выбрав объект, нажимает кнопку каузальной связи, затем в открывшемся режиме «Операции» указывает операцию и нажимает Ок.
В таблицах выполняются записи:
  1. Регистрации операции,
  2. Регистрации каузальной связи:

Таблица CAUSE:
id_cause: … (генерируется автоматически)
id_subject: … (берется из id_subject пользователя)
id_object_from: … (указывается пользователем)
id_object_to:
id_operation_to: … (указывается пользователем)
time_from: … (указывается пользователем)
time_to: … (указывается пользователем)

В рабочем окне «Объекты» видимых изменений не происходит.
Как правило, производительная каузальная связь устанавливается применительно к будущей операции. То есть пользователь намеревается совершить какую-либо операцию (которая пока будущая), для чего предпринимает определенные действия (продолжительные), которые регистрирует в качестве производительной каузальной связи. По наступлении операции получившийся в результате нее объект имеет «причину» своего появления, «вбирая в себя» трудозатраты соответствующей продолжительности.
При удалении операции, к которой применена каузальная связь, обязательному удалению подлежит и операция установления каузальной связи.

4.19.2. Установление непроизводительной каузальной связи: [type_operation] = 22

Каузальная связь устанавливается между материальными объектами любых типов.
Формулы операции:

image

и т.д.
Единственное исключение: разрешается связь между информационным объектом (орудием) и пользователем ([type_object] = 0) (предметом).

image

Записи почти идентичные, с той разницей, что ссылка дается не на операцию, а на объект:
  1. Регистрации операции,
  2. Регистрации каузальной связи:

Таблица CAUSE:
id_cause: … (генерируется автоматически)
id_subject: … (берется из id_subject пользователя)
id_object_from: … (указывается пользователем)
id_object_to: … (указывается пользователем)
id_operation_to:
time_from: … (указывается пользователем)
time_to: … (указывается пользователем)

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

4.19.3. Расчет трудозатрат и баланса трудозатрат

При вычислении трудозатрат для неодушевленных объектов ( [type_object] != 0) применяются правила:
  • трудозатраты, приходящиеся на объект, равняются продолжительности воздействия на него со стороны орудий и продолжительности воздействия орудий на всех его материальных предшественников (составные части и вещества);
  • при объединении материальных объектов приходящаяся на них продолжительность суммируется;
  • при разделении материального объекта приходящаяся на него продолжительность разделяется пропорционально массе получаемых на выходе объектов. При массе = 0 объект в распределении продолжительности не участвует. Если у всех объектов масса = 0, продолжительность распределяется равномерно по числу объектов;
  • при производительной связи запись в [labour] производится по наступлении операции; при непроизводительной связи запись в [labour] производится по окончании момента каузального воздействия. Данный факт должен отслеживаться при построении отчетов.

При вычислении баланса трудозатрат (для [type_object] = 0) применяются правила:
  • при использовании человеком расходуемых материальных объектов (пищи) потребление считается по приходящимся на пищу трудозатратам. Запись в [labour] производится в момент объединения;
  • при использовании человеком воздействующих на него орудий потребление считается по продолжительности полезного воздействия орудия на человека. Запись в [labour] производится по окончании воздействия;
  • при использовании человеком информационного объекта (исключение из общего случая установления каузальной связи) потребление считается по продолжительности такого потребления. Запись в [labour] производится по окончании воздействия. Возмещение за использование информационного объекта распределяется поровну между, с одной стороны, авторами информационного объекта, с другой стороны – производителями материального носителя.

Одновременно выполняются записи в [labour] не только у потребителя, но у всех производителей данного продукта. Если начальный производитель неизвестен (каузальная цепочка начинается не с пользователя, а с неодушевленного материального объекта), соответствующая величина записывается в [labour] лишь потребителя.

Раздел 5. КОРРЕКТИРОВКА ОПЕРАЦИЙ


5.1. Редактирование операций

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

5.2. Удаление операций

Пользователь встает курсором на операцию и нажимает кнопку удаления.
Осуществляется проверка на возможность удаления операции. В первую очередь запрещается удалять те операции, хотя бы один из объектов которых (добавленных в базу в результате данной операции) впоследствии удален ([leave] != NULL). Данная проверка нужна для того, чтобы, к примеру, не удалить данные о приходе объекта, у которого впоследствии зарегистрирован расход: очевидно, что объект должен сначала поступить, затем уже может выбыть.
О невозможности выполнить операцию выводится сообщение. Если удаление разрешено, в отношении затронутых объектов восстанавливается первоначальное положение.

5.3. Актуализация операций

Операции передачи ([type_operation] = 10) и обмена ([type_operation] = 11) подлежат одобрению – актуализации. Это необходимо ввиду двух соображений:
  1. Получатель может не захотеть принять объект;
  2. Так как набор свойств в базах Отправителя и Получателя может (и наверняка будет) совпадать лишь частично, Получатель должен также установить, какими из свойств охарактеризовать полученный объект. Свойства, названия которых не совпадают, предлагается записать в базу по желанию Получателя. Получатель вправе не принимать данные свойства, тогда в его базе, при актуализации операции, объект будет зарегистрирован как не обладающий характеристиками по ним: отклоненные свойства вообще не появятся на левой панели управления. Принятые свойства, наоборот, возникнут на левой панели управления, а объект будет зарегистрирован как обладающий по ним установленными значениями.

Актуализации также подлежат будущие операции (зарегистрированные будущей датой), в связи с тем что такая операция может не состояться по каким-либо причинам – она же будущая.

5.3.1. Актуализация передачи объекта

Помимо того, что Получатель должен согласиться принять переданный ему объект, он должен определить свойства, которыми объект будет охарактеризован в его базе, ведь Получатель и Отправитель характеризуют объекты каждый своим набором свойств.
Допустим, Отправитель передал Получателю объект, охарактеризованный, помимо обязательных свойств, свойствами «База», «Область», «Товаровед» и «Срочность». А у Получателя таких свойств нет, зато имеется аналогичное «Базе» свойство – «Склад».
Получатель становится курсором на операцию передачи и нажимает кнопку актуализации. Появляется окно стандартного вида, в котором указаны нестандартные свойства объекта в базе Отправителя:

image

Работа с окном также стандартна: пользователь при помощи стрелок переносит свойства, которые желает видеть в своей базе, из левого списка в правый. В левом списке присутствуют только те свойства, названия которых не совпадают.
Кнопка редактирования (волнистая линия) предназначена для изменения названия свойства. В приведенном примере пользователь должен кнопку и в правом окошке в скобках набить новое название: База (склад). После нажатия Ок операция актуализируется, при этом значения по выбранным свойствам оказываются записаны в базу Получателя. В базу Получателя вносится исправление: в таблицу OPERATION вместо [actual] = 4 записывается [actual] = 1 или 2 (операция определяется как текущая или будущая в общем порядке). С иконки снимается вопросительный знак. Одновременно в базу Отправителя в таблицу OPERATION вместо [actual] = 3 записывается [actual] = 1 или 2 (операция определяется как текущая или будущая в общем порядке).
Если Получатель отказывается от актуализации, он должен удалить операцию. В базах Отправителя и Получателя восстанавливается первоначальное положение (соответствующие записи удаляются или исправляются: в таблицах OPERATION и TRANSFER).
После актуализации удалить операцию ([type_operation] = 9, [actual ] = 1 или 2) становится невозможным (можно удалить только полученный объект).

5.3.2. Актуализация обмена объектами

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

5.3.3. Актуализация будущих операций

Пользователь может зарегистрировать поступление или выбытие объекта будущей датой, при этом в таблице OPERATION операция помечается как будущая: [actual] = 2. Аналогичным образом операция помечается, если время регистрации не указано.
Принцип работы с будущими операциями следующий:
  1. Пользователь нажимает кнопку просмотра операций, требующих актуализации (к которым относятся будущие операции);
  2. Затем, если нужно, актуализирует операцию. При этом в таблице OPERATION операция помечается как текущая: [actual] = 1. Если операция не подлежит актуализации в таком виде, пользователь может, по необходимости, либо отредактировать наступившие будущие записи (например, перенести их на более позднее время, если они фактически не состоялись, но по-прежнему ожидаются), либо попросту удалить. При удалении операции информация окажется утерянной.

Работа с будущими операциями – это работа с обязательствами. Обязательство – передача вещи будущей датой, поэтому достоверно никогда не известно, состоится данное событие или нет (возвратит должник деньги или нет или вы заплатите или нет своему кредитору). Но когда срок выполнения обязательства наступает, всегда можно сказать, погашен долг или нет: если погашен, как предполагалось ранее, все нормально, выполненная запись не требует корректировки, а если нет, что-то пошло не так, тогда запись (то есть будущую операцию) необходимо откорректировать или вовсе удалить. Разумеется, долг может быть погашен раньше ожидаемого срока: в этом случае пользователь исправляет дату на текущую, тогда текущей ([actual] = 1) становится и операция.
Если будущая операция не актуализируется и не удаляется, то после наступления указанного в ней времени регистрации она перестает участвовать в отчетах, становится неактуальной.
Допустим, операция зарегистрирована 5 марта будущей датой 23 марта (то есть 5 марта пользователь предполагает, что 23 марта состоится какая-либо операция). Пока не наступило 23 марта, операция будущая. Но вот наступает 23 марта. Если операция действительно происходит, как предполагалось, пользователь ее актуализирует. Если, положим, операция откладывается, пользователь редактирует ее, указывая более позднюю дату. Если же выясняется, что операция никогда не состоится, пользователь данную операцию удаляет. Если пользователь ничего не предпринимает, то операция остается без изменений, но в отчетах она перестает принимать участие. Подобные операции определяются по [actual]:
  • если [actual] = 2 и [time] > текущего времени, то будущая операция только приближается к текущему моменту, она еще может быть актуализирована (сегодня 18 марта, а операция зарегистрирована 23 марта);
  • если если [actual] = 2 и [time] <= текущему времени, то срок актуализации пропущен (операция зарегистрирована 23 марта, а сегодня уже 27 марта).

Раздел 6. ПОСТРОЕНИЕ ОТЧЕТОВ


6.1. Общие понятия

Для построения отчета пользователь переходит в режим «Отчеты». По умолчанию строится простейшая форма отчета, исходя из критериев фильтрации, заданных на левой панели управления.

image

Общие правила построения отчетов таковы:
1. Отчет представляется в табличной форме (в рабочем окне).
Отчетная таблица состоит из:
  • колонок свойств,
  • колонок показателей (выделены затемнением).

image

Табличная форма может быть преобразована в соответствии с настройками.
2. Показателями являются значения числового формата — измерители.
Допустимые измерители указаны в настройках.
3. Объекты попадают в отчет в соответствии с критериями фильтрации.
Если объект подпадает под критерии фильтрации, он фигурирует в отчете, хотя бы с нулевыми показателями. Если объект не подпадает под критерии фильтрации, он в отчете отсутствует (даже строка с нулевыми показателями).
4. Программа позволяет связывать для построения отчета таблицы разных пользователей.
5. Отчеты могут быть экспортированы.


6.1. Задание параметров отчета

Для настройки отчета пользователь нажимает кнопку настройки и вызывает окно параметров.

image

Кнопки имеют следующее назначение:

image

6.2.1. Название отчета

Любому отчету может быть дано название.
Данный параметр не является обязательным: отчет может быть построен даже в том случае, если его название не указано. Название необходимо в первую очередь для сохранения отчета, которое осуществляется из режима «Отчеты» нажатием соответствующей кнопки.
Реализация сохранения отчетов – на усмотрение программиста.

6.2.2. Настройка времени отчета

Любой отчет, в зависимости от используемого измерителя, строится на определенный момент времени или на определенную дату, тем самым требует двух таймеров. Таймеры, основной и дополнительный (второй), расположены на верхней панели режима «Отчеты»:
  • если горит один таймер, он показывает момент времени;
  • если горят два таймера, верхний показывает начало периода, нижний окончание периода (оба включительно).

6.2.3. Измеритель

Измеритель указывает на числовое поле, используемое при построении отчета для расчета показателей. К примеру, можно посчитать стоимость объектов, вес, площадь и т.п.
В качестве измерителей допускаются:
1) число объектов.
Измеритель по умолчанию.
Число объектов – означает, что в качестве показателей фигурирует число объектов, выбранных при фильтрации. К примеру, на момент времени выбраны объекты с именами «гайка» (3 шт.) и «шайба» (5 шт.). Данные показатели будут фигурировать в отчете (при пообъектном подсчете).
2) масса.
Обязательное свойство, в остальном не отличается от указанных в следующем пункте.
3) любое из свойств числового формата, задаваемых пользователем (например, стоимость в рублях, стоимость в долларах, площадь, объем и т.п.);
Пользователи могут задавать объектам свойства не только текстового, но и числового формата. Свойства числового формата могут быть использованы в качестве показателей.
4) трудозатраты.
Можно узнать, сколько трудозатрат вложено в какой-либо объект или группу объектов.
Для ([type_object] != 0), т.е. любых объектов, кроме пользователей.
5) число копий.
Для информационных объектов в качестве показателя может фигурировать число копий. Если используется один таймер, это число копий, существующих на материальных носителях на указанный момент; если используется два таймера – число выполненный операций копирования за указанный период.

6.2.4. Отчетные показатели

Остатки и обороты – стандартные бухгалтерские отчетные показатели:
  • остатки (сальдо) рассчитываются на момент времени;
  • обороты рассчитываются за период.

Соответствующие настройки определяют число колонок показателей.
Ниже приводятся настройки и, в качестве результата, колонки показателей – от простого к сложному:

Вариант 1. Установлен по умолчанию.

image

Вариант 2.

image

Вариант 3.

image

Вариант 4.

image

6.2.5. Свойства объектов

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

image

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

image

Верхний правый список – база пользователя, критерии фильтрации которой можно задать в правом окне. Также можно установить связь между объектами, по какому-либо из свойств.
Помимо свойств объектов, присутствующих на левой панели управления, в перечне фигурируют пункты:
  1. Тип объекта: [type_object],
  2. Фаза существования объекта, под которой понимается приход или расход объекта. То есть можно выбрать объекты, поступившие или выбывшие за определенный период,
  3. Тип операции: [type_operation],
  4. Комментарий к операции: [comment],
  5. Актуальность:: [actual].

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

image

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

image

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

6.2.6. Пообъектный учет

Пообъектный учет задает элемент «Считать пообъектно». Данный элемент указывает на необходимость группировать либо не группировать при вычислении объекты, обладающие одинаковыми свойствами.
При установленном флажке «Считать пообъектно» подсчет показателей производится по отдельным объектам, независимо от того, обладают ли они аналогичными свойствами. Соответственно при снятом флажке на «Считать пообъектно» подсчет показателей производится по группам объектов, обладающих аналогичными свойствами.
Допустим, для представления в отчете выбраны колонки «Объект» и «Сорт». В соответствии с установленным на левой панели критерием фильтрации отобраны два объекта, причем оба обладают аналогичными свойствами: [Объект] = Шайба; [Сорт] = Первый. Величина первого объекта по выбранному измерителю 25 единиц, второго объекта – 10 единиц.
При установленном флажке на «Считать пообъектно» отчет будет иметь две строки:

image

При снятом флажке на «Считать пообъектно» отчет будет иметь одну строку, общую для обоих обладающих идентичными свойствами объектов:

image

Как видно из примера, колонка «Тип» имеет место при условии, что отчет считается пообъектно.

6.2.7. Итоги

При флажке, установленном на элементе «Показывать итоги», в отчете по каждой колонке показателей присутствует итоговая строка, к примеру:

image

6.2.8. Форма ведомости

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

1. Ведомость с расположением свойств в соответствии с иерархией.

image

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

2. Ведомость с расположением показателей в строку.

image

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

image

4. Ведомость, отображающая периоды.
Требуется указать периоды для отображения: сутки, неделя, декада, месяц, квартал, год.

image

6.3. Экспорт данных

Построенный отчет можно экспортировать. Экспортируется таблица, непосредственно представленная в рабочем окне. Форматы экспорта – на усмотрение программиста. Интерфейс стандартный.

ЗАКЛЮЧЕНИЕ


Идеальное распространение программы выглядит следующим образом:
  1. Пользователи приобретают программу для домашнего, а также складского (неофициального) учета. Для передачи объекта от одного пользователя другому пользователи регистрируются в Учетном мироздании.
  2. Посредством передачи объектов устанавливаются связи между пользователями. Число пользователей возрастает.
  3. Становится популярным получать от магазинов информацию о купленных товарах. Для этого магазинам также приходится регистрироваться в Учетном мироздании.
  4. В процесс учета включаются не только продавцы, но и производители, ведь информация об объекте создается в процессе производства.
  5. Цепочки участников программы расширяются до начальных производителей, занимающихся добычей полезных ископаемых.
  6. Единообразным учетом оказывается охвачен весь производственный процесс, также процесс потребления производимых продуктов. Де-факто возникает мировая учетная система.
  7. Учетное мироздание подвергается законодательной регламентации и полностью вытесняет бухгалтерский учет.
Support the author
Share post

Comments 19

    0
    Всегда мечтал стать первым комментатором. Вот, решил не упускать случая и откомментировать первым хотя бы собственный пост.
    Ау, люди! Кто-нибудь понимает, что методология учета – это не программистские навороты, а нечто совсем иное? Кому-нибудь методология интересна? Найдется фирма, готовая реализовать Учетное мироздание на практике и денег за него заплатить? Нужен кому не паренек на побегушках, который еще и в бухгалтерии маракует, а умудренный ошибками Методолог? Или я со своим компьютерным учетом как из глубокого космоса прилетел, так обратно в космос могу возвращаться?!
    Ау, мыслящие существа, что скажете?
      +2
      Вы можете в более понятной и краткой форме описать цели и задачи проекта? Или привести пример из жизни, когда приложение может быть применено.
      Честно говоря, всю статью я не осилил, но прочитав половину, я так и не понял, о чем идет речь.
        –4
        Читайте заключение.
        Речь идет о том, что бухгалтерские программы основываются на двойной записи: иначе они не могут, т.к. применение двойной записи закреплено законодательно. Однако данная методология устарела: ей от 5 до 10 веков, и она категорически не совместима с компьютерными технологиями, поскольку изобреталась для бумажной формы учета. Учитывать на компьютерах по двойной записи — это нонсенс, все равно что лазером резать дрова, чтобы растопить печку. Но печка и лазер — уровни несопоставимые. Поэтому — традиционная бухгалтерия должна умереть! Она бы давно сама преставилась, без моей помощи, по причине отказа основных жизненных функций, да вокруг бухгалтерии слишком много народу кормится.
        К сожалению, вопрос учетной методологии — вопрос экономический.
          +1
          А для кого и чего это все, в чем конечная цель? Упрощение бухгалтерского учета? Простые юзеры должны решать задачи бухгалтерского учета на предприятиях? Зачем? Какие преимущества получает обычный человек? Вы можете привести пример?
            –1
            Могу.
            Конечная цель — мировая система учета продуктов труда. Представьте, что вы покупаете в магазине товар — допустим, плавленый сырок. Тогда (при условии, что Учетное мироздание состоялось, конечно) вы можете узнать, из каких ингредиентов плавленый сырок состоит, кто производитель, когда сырок произведен и т.п. Конечно, это можно прочитать на упаковке, но вы верите в то, что написано на упаковке? А учет, если станет мировым, может решить проблему достоверности. Ведь что-то в плавленый сырок положено, и это что-то подвергалось в свое время учету. Если все правильно организовать, левый товар станет методологически невозможен. Попробуйте объяснить турникету метро, что вас нужно пропустить без билета. Перемахнуть через турникет можно, а объяснить нельзя, потому как технологии и алгоритмы.
            Во-вторых, само собой образуется учет личного имущества, что есть значимый социальный фактор. А поскольку система мировая, возникнет мировая база данных по произведениям человечества: что где и когда было произведено и потреблено. Мировая база знаний, короче, но лишь по производственной деятельности (а то, к чему человек не приложил руку, учтено не будет).
            В-третьих, бухгалтерская профессия исчезнет. С переходом на полностью безналичные расчеты считать будут машины, а сделки станут регистрировать непосредственно предприниматели. Исчезнут бухгалтеры, аудиторы, налоговики и прочие паразитирующие на учете нахлебники. Разве это не результат для обычного человека, о выгоде которого вы печетесь?! А сейчас бухгалтеры ведут учет на компьютерах… Боже ж ты мой! Это все равно что внутрь серверной коробки запихать пятерых гастарбайтеров с логарифмическими линейками и выдавать данное соединение за передовую вычислительную технику. Впрочем, гастарбайтеры не умеют пользоваться логарифмическими линейками, поэтому нет. Это все равно что пользоваться вместо компьютерного калькулятора компьютерным абаком: не указывать числа и действие, как на калькуляторе, а передвигать камешки по счетной доске — и все это на компьютерном экране. Вот такова применяемая бухгалтерская методология. Мне она осточертела, поэтому я разработал методику, позволяющую корректно учитывать в базах данных — настолько правильно, насколько базы данных позволяют.
      +1
      А как в этом комплексе планируется контролировать целостность, а также закрытость (чёрные рынки/нал)?
        –2
        Целостность и закрытость чего, учетных данных? Планируется, а как же.
        Есть в учете такое понятие — коллация. Означает, что при обоюдной сделке изменение в системе одного субъекта обязательно приводит к изменениям в системе другого. Если ты кому-то передал вещь, то кто-то обязательно ее получил. Так что учетные данные целостны принудительным образом. Другое дело, что пользователь может учитывать черный нал или вообще не существующие в реальности объекты, кто ж ему запретит? Но ему придется учитывать по установленным правилам, которые невзначай склоняют к единой и официальной (следовательно, легальной) системе учета. А если не желаешь черного нала, откажись от него: отмени наличное денежное обращение и прими безналичное.
        0
        Блин. Во истину, всё придумано до нас.
        Честно говоря уже не первый месяц в голове вертится аналогичная идея, только у вас «Учетное мироздание», а у меня она как «Вселенная ERP». В моём понимании базовый объект в этой вселенной это изделие/сырьё/материал с совокупностью его характеристик которые существуют в единственном экземпляре у данного производителя/переработчика/добытчика… и доступное для всех участников мира. В принципе всё пересекается с вашей методологией.
        Проблемму я вижу в том, что более менее крупный производитель будет менять свою внедрённую и уже работающую учётную систему, на что либо другое.
        Это «виртуальное мироздание» будет приносить тем больше пользы, чем больше «созидателей» (т.е. производителей или создателей объектов) будет в этом «мироздании».
          0
          Да, идеи согласуются. Все как в жизни: мир состоит из единичных вещей, которые обладают некими характеристиками. базовые характеристики задаются ощущениями, но человечество так устроено, что пользуется вербальными возможностями. Следовательно, каждый человек может охарактеризовать каждую вещь по своему усмотрению, при условии непротиворечивости характеристик.
          Реальное внедрение — действительно проблема. Как я объяснил в комментарии выше, это вопрос экономический: слишком много лиц, заинтересованных в докомпьютерных методах учета. Но тут кто кого: либо ретроградам удастся затормозить технический прогресс в свое удовольствие (что в учете сейчас происходит), либо компьютеризация сметет с лица земли традиционную бухгалтерию, а вместо нее возникнет мировая компьютерная учетная система, сделки в которой будут регистрироваться приблизительно так, как сейчас регистрируются операции в банкоматах.
          По поводу доступности информации для всех участников также согласен: по-хорошему, система должна быть открытой, а понятие коммерческой тайны отменено. И по поводу числа созидателей очевидно: мировую систему может создать только массовое, а со временем поголовное участие в ней. Конечно!
            0
            Вы же понимаете, что Ваша методология предполагает полный отказ от суверенитета государств, а точнее полный отказ от государственности, как явления? Единое земное пространство людей.
            Потому что такая система не подразумевает наличие секретов (военных, дипломатических и т.д.)
            Нет секретов, нет раздельных государств.

            Основная опасность, как бы такая система не привела бы нас к обществу образца «1984».
              0
              Да, я понимаю.
              Приятно, что Вы тоже это поняли. Хотя вывод о «1984» ошибочный: 1984 год — сейчас.
          0
          Мне кажется мысль интересна как идея, но статье явно не хватает вступительной части с описанием практического применения системы и преимуществ ее внедрения уже сейчас, а не «потом когда сервис станет общепланетарным».

          Описание начинается «в лоб», с описаний структурных категорий. И сразу начинаются мысли: Как же я бы мог это использовать? Если я купил пачку чая мне как ее в программу забить как однородный объект или как составной (чай + пачка)? А если чай с жасмином то как? А если вода кипяченая и нет — это одно и тоже или как? А питьевая вода разных производителей это структурно разные объекты или нет?.. И еще множество таких «если»…

          Уверен у вас все продумано и предусмотрено, но первый этап у вас — пользовательское приложение которым пользуются обычные люди, т.к. им оно удобно и решает их проблемы. Значит нужен 1 абзац текста прочитав который пользователь скажет «Вот оно, то что мне нужно, это решит мои проблемы!». Причем это должен сказать средний, массовый пользователь которому до учета по сути вообще дела нет. Пока я такого абзаца не увидел, к сожалению.

            0
            По поводу вступительной части Вы правы: ее не хватает. Но если сосредоточиться на вступлении, за бортом останется техническое задание, которое я и доводил до сведения читателей. Здесь или-или: или научная публицистика, доступная каждому, или скучное техническое описание системы, в которое по определению не каждый въедет.
            По поводу чая Вы немного не так понимаете. Вы покупаете пачку чая — допустим, расплачиваетесь картой, а из магазина Вам (в Вашу базу в Учетном мироздании) автоматически присылается объект, эта самая пачка чая (не пачка, конечно, а учетные сведения о ней). Вы можете охарактеризовать пачку, как хотите (в пределах свободных полей), а можете выбрать поля, использованные магазином. Причем изначально чай характеризует не магазин, а производитель чая (одновременно оберточную бумагу — производители бумаги, по технологической цепочке), так что Вы в любом случае можете увидеть все характеристики всех составных частей продукта (так, как их охарактеризовали предыдущие владельцы, конечно). Если в Учетном мироздании участвуют все субъекты, у Вас в базе значатся все имеющиеся у Вас объекты. Конечно, для этого придется регистрировать выбывшие объекты, например ту же пачку чая после того, как Вы ее выпьете. Как благодаря электронной почте вся переписка находится в Вашем компьютере, так благодаря Учетному мирозданию все имущество окажется зарегистрировано в Вашем компьютере. У так у всех. В результате образуется единая общепланетная система учета имущества, произведенного людьми (продуктов человеческого труда).
            Такая вот идея.
              0
              Забыл ответить по поводу питьевой воды и составных объектов. Отвечаю.
              Питьевая вода разных производителей — разные объекты. И даже одного производителя — тоже разные. Один объект — это одна бутылка воды, один объект, одна вещь, ведь именно так мы и воспринимаем мир. А составной характер объектов определяется по ходу производства. Допустим, добыли нефть — один объект. Нефть разлили по цистернам: теперь объект — нефть в цистерне. Отвезли на НПЗ, где разложили на фракции (каждая фракция стала объектом). Допустим, из какой-то фракции изготовили пластмассовую бутылку (отдельный объект), в которую добавили добытую из артезианской скважины воду. Получился составной объект (пластмасса плюс вода): в таком виде объект поступает сначала в магазин (то есть регистрируется там), а потом покупателю. А Вы, купив бутылку, при желании можете выпить воду и зарегистрировать данный факт, после чего в учете у Вас останется пустая бутылка. У которой можно отследить «историю», начиная от факта добычи нефти. В этом сущность предлагаемой методологии.
              0
              Мне кажется, хорошо было бы предусмотреть какую-то облегченную версию, которой смогли бы пользоваться энтузиасты.
              Например, я ставлю на программу и сразу же ввожу туда все свои предметы. Программа работает по принципу торрентов, в варианте Pandora robux или ещё каком-то.
              Энтузиасты обмениваются вещами и пополняют базу.
              Постепенно система будет развиваться вширь (количество пользователей) и вглубь (от пользователя к поставщику и далее к производителю).
              И конечно программа должна учитывать текущие системы учета товаров. У одной GS1 столько стандартов и способов учета товаров, упаковки, услуг, отношений, которыми уже сейчас пользуются десятки-сотни тысяч предприятий.
                0
                1. О Пандоре читал, эта штука сразу привлекла внимание.
                2. Облегченная версия, утяжеленная версия… Да хоть какая! Какая разница, когда я не могу найти фирму, которая возьмется за проект.
                3. С текущими системами учета моя методология совместима слабо: методологии разные. В идеальном случае одна система просто должна вытеснить другую.
                0
                2. Если сделаете ТЗ «облегчённым», возможно, фирма найдётся быстрее. Плюс в этом посте слишком большая зацикленность на реализации (структура базы с точностью до типов полей, размещение элементов интерфейса и т.д.), хотя вы везде называете себя теоретиком.
                3. Как я уже говорил в комментариях к другим постам, под текущими системами я понимаю больше не программные решения, а материальные — в виде штрихкодов, RFID меток и прочем, что так хорошо коррелирует с Вашей идеей идентификации объекта и его пути от производства до потребления.
                  0
                  У меня есть и облегченное решение. Нет фирмы.
                  Типы полей указывал помощник, который немного больше в этом понимает. Но недостаточно, чтобы все сделать самому.
                  Штрихкоды с моей системой коррелируют отлично, это да.
                  0
                  Автор, вы супермен, познали весь бухучет, постигли Дао и вышли в нирвану. Вот только предлагаемые вами методики несколько далековаты от реалий современных проблем учета. Нужно что-то простое, чтобы взять и прямо сейчас замутить товарно-денежный учет в супермаркете, не выходя в астрал и не дожидаясь наступления всеобщего просветления. Но и не пользуясь двойной записью, не ведя несколько баз данных по разным юрлицам, по разным видам учета для разных фискальных органов. Вот что-то вроде файловой системы и таблиц в Экзеле, где можно учесть что угодно и как угодно.

                  Only users with full accounts can post comments. Log in, please.