Upload
custis
View
701
Download
0
Embed Size (px)
Citation preview
Михаил ЗаборовCustIS «Заказные ИнформСистемы»
Руководитель направления «Торговые сети»Декабрь 2009
Аналитические планы счетов как
архитектурный артефакт
2/113
Занимается разработкойбольших
корпоративныхинформационных систем
на заказ
3/113
Большие проекты
t
0 4 мес.
1 год
Маленькие Средние Наш размерчик!
= от 10 – 15 чел. лет
Команда 5-10 человек
4/113
Очень большие проекты
t
0 1 год 10 лет
= от 40 – 100 чел. лет
Команда 30-50 человек
5/113
Принудительно делим на просто большие
6/113
В чем еще можно мерять размер?
? Объем данных
? Количество транзакций
? Объем изменений
? Длительность проекта
? Количество отчетов?
7/113
Промышленные технологии
8/113
Внутренняя логистика
-Операционная система 24x7
- Объем базы >1 Tb
- 10 млн Проводок в месяц
- Общее количество проводок 270 млн
9/113
Аналитическоехранилище
- Объем базы > 525 Gb
- Проводок в месяц 8 млн
- Общее количество проводок 200 млн
- Пиковое кол-во проводок в день 1.7 млн
10/113
Биллинг ЖКХ«Радей» (Саратов)
- Проводок в месяц 4.6 млн
- Общее количество проводок 130 млн
- Пиковое кол-во проводок в день 2.8 млн
11/113
Успешныеи
востребованные проектыпосле фазы внедрения
вовсе не заканчивают свою
«жизнь»
12/113
0
5000
10000
15000
20000
25000
30000
0 10 20 30 40 50 60 70
Время (мес.)
Ко
л-в
о м
етад
анн
ых
Изменение Создание
Начало работы
13/113
0
5000
10000
15000
20000
25000
30000
0 10 20 30 40 50 60 70
Время (мес.)
Ко
л-в
о м
етад
анн
ых
Изменение Создание
Развитие, сопровождение
Внедрение, адаптация
Сильные измененияв законодательстве
14/113
Корпоративные(Enterprise)Системы
ERP / биллинг /банковские / торговые / складские системы
…
Прикладное программное обеспечение предприятий и организаций
Buzzword
15/113
Немного историиОт инструмента к методологии
16/113
17/113
Методология появилась не сразу
Вначале появились архитектурные паттерны, решавшие прикладные
задачи
Потом появился инструментарий
Выделился специализированный слой архитектуры
Появилась методология описания и использования планов счетов
18/113
19/113
Задачи, которые призван
решать
инструментарий
20/113
Ведение остатков и движений ресурсов
материальные
виртуальны
е
21/113
Гарантия «Консервативности»
«Ничто не может произойти из ничего, и никак не может то, что есть, уничтожиться»
© Эмпедокл
«Однако за время пути собака могла подрасти!»
«Багаж» С.Я.Маршак
Законы сохранения
22/113
Ведение полной истории изменений ресурса
Состояние на любой момент времени
Привязка к документам, породившим изменение
23/113
Отчеты
Повторяемость
Детализация
Согласованность
24/113
Больше всего для этих целей подходит учет:
Двойная запись
Журнал операции
План счетов
«Консервативность»
Полная история
Согласованность отчетов
ЧТО ЕСТЬ УЧЕТ?Основные артефакты
25/113
26/113
http://www.omg.org/technology/documents/formal/gen_ledger.htm
Стандарт OMG
http://martinfowler.com/eaaDev/Account.html http://martinfowler.com/eaaDev/AccountingEntry.html http://martinfowler.com/eaaDev/AccountingTransaction.html
Архитектурныепаттерны
Спецификация на проводочную
машину
Что по этому поводу есть в IT?
27/113
В средневековье
Учет велся в больших хозяйственных книгах
(Ledger)
28/113
Запись в книге (Entry) 2 типа - приход/расход
Страница в книге = счет(Account)
Регулярно рассчитывается остаток или сальдо (Balance)
29/113
Именно эти объекты отразилв своей модели Фаулер
30/113
Но нам нужна двойная запись
У Фаулера есть и такой паттерн (Two Legged Transaction)
Новый термин - проводка(Transaction)
В бух учете: счет зачисления - дебет счет списания - кредит
На самом деле все не так просто
ПРОВОДОЧНАЯ МАШИНА CustIS
Инструментарий
31/113
Наша реализация существенно
сложнее
32/113
Учетные счета (Accounts)
Выделяются различные виды ресурсов – они называются синтетическими (балансовыми) счетами
Для них жестко задан набор аналитик
33/113
34/113
Учетные счета (Accounts)
Под каждым синтетическим счетом есть иерархия аналитических счетов
35/113
Синтетический счет Аналитические счета
36/113
Экземпляры счетов0 1 2 3
Товар на складе: Москва
Товар на складе: Москва:Опт
Товар на складе: Москва:Опт:
А-101 Обруч гимнастический
Товар на складе: Москва:Опт:
44160 Шарики Spezial
…
Товар на складе: Москва:Розница
…
…
Товар на складе: Питер
……
…
……
…
Товар на складе
37/113
Учетные счета (Accounts)
Под каждым синтетическим счетом также есть OLAP куб аналитических счетов
38/113
Текущий остаток хранится на каждом аналитическом счете нижнего уровня
Уче
тны
е с
чет
а
Син
тет
ичес
кие
счет
аА
нал
итич
ески
есч
ета
Аналитика 1
Анал
итик
а 2
N
Аналитика 1
Синтетический счет:
код, активность, [набор аналитик]
Аналитика 2
39/113
Проводки(Transaction)
Между синтетическими счетами типы операцийжестко задают корреспонденции
Аналитика 1
Аналитика 2
Аналитика 1
Проводки
Тип операции
40/113
Схему можно чуть усложнить
41/113
Остатки (Сальдо, Balance)
Несложно получить остаток на гранях OLAP куба
Расчетный счет
Банк
Распорядитель
51
Всего в банке Xу распорядителя Y
Всего в банке X
Всего на р/с Z
Итого на счете 51-2
Всего у распорядителя Y
Всего в банке X на р/с Z
42/113
Кроме того, для каждой ячейки куба, если нужно, хранится график изменения остатка в нужных временных разрезах
43/113
Показатели
Можно хранить (заранее настроенные)произвольные агрегированные показатели по аналитикам счетов и операций
Стандартнаяагрегация
Произвольнаяагрегация
Если нужно, то с графиком
44/113
Кроме агрегированных показателей можно хранить и более детальные (подокументные расшифровки, например состояние заказа)
Показатели
45/113
Можно хранить несколько разнородных показателей в одной записи таблицы БД, например план-факт
Показатели
46/113
И еще…
Множество временных разрезов физическая дата учетная дата бухгалтерская дата период отчетности дата документа
47/113
Мультивалютность Разные типы валюты:
- Документа - Контракта - Учетная - Бюджетная - Национальная - Бухгалтерская
Разные номиналы (рубли, €, $, ¥ и т.д.) Переоценка - Курсовые разницы - Суммовые разницы
И еще…
48/113
Множественность учета Несколько планов счетов Товарный (количественный) учет Денежный учет Смешанный (товарно-денежный) учет в одном плане счетов
Работа с начальным сальдо Процедуры инициализации остатков ведение истории движений до начала расчетов
Разные механизмы создания аналитических счетов Автоматическое по аналитикам операции Ручное в соответствии с требованиями бухгалтерии
И еще…
49/113
Принципиальная схема работы
МЕТОДОЛОГИЯ ОПИСАНИЯ УЧЕТА
Описание нотации
50/113
51/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
ПоступлениеВ библиотеку
Выдача читателю
СписаниеВетхих книг
ВозвратОт читателя
Утрата
Простой план счетов
52/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
ПоступлениеВ библиотеку
Выдача читателю
СписаниеВетхих книг
ВозвратОт читателя
Утрата
Синтетический (балансовый)
счет
Название счета
Аналитики(определяют набор
аналитических счетов)
Операции
Тип операции
Внешний мир(может быть отдельный БС -
Буфер)
Внешний мир(на картинке может быть несколько, но это один
и тот же внешний мир)
53/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
Как читать схемуНачальное состояние системы
Что мы знаем:Остатки:Всего книг в фонде – 0 На руках - 0 в библиотеке - 0
Обороты:Принято книг -
0Выдано - 0Вернулось – 0Потеряна - 0
54/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
1. ПришелГ. Буч.7 книг
положили на полку A1Что мы знаем:
Остатки:Всего книг в фонде – 7 На руках - 0 в библиотеке - 7 по авторам: Буч – 7 по полкам A1 – 7
Обороты:Принято книг -
7Выдано - 0Вернулось – 0Потеряна - 0
55/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
1. Г. Буч. A17 книг
2. Г. Буч. A23 книги
Что мы знаем:Остатки:Всего книг в фонде – 10 На руках - 0 в библиотеке - 10 по авторам: Буч – 10 по полкам A1 – 7 A2 - 3
Обороты:Принято книг -
10Выдано - 0Вернулось – 0Потеряна - 0
56/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
1. Г. Буч. A17 книг
2. Г. Буч. A23 книги
3. Выдали Г.Буча с Полки A2 Заборову
2 шт
Что мы знаем:Остатки:Всего книг в фонде – 10 На руках - 2 в библиотеке - 8 по авторам: Буч – 8 по полкам A1 – 7 A2 - 1
Обороты:Принято книг -
10Выдано - 2Вернулось – 0Потеряна - 0
57/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
1. Г. Буч. A17 книг
2. Г. Буч. A23 книги
3. Г.Буч A2 Заборову
2 шт
4. Т.Кайт A2 6 книгЧто мы знаем:
Остатки:Всего книг в фонде – 16 На руках - 2 в библиотеке - 14 по авторам: Буч – 8 Кайт - 6 по полкам A1 – 7 A2 - 7
Обороты:Принято книг -
16Выдано - 2Вернулось – 0Потеряна - 0
Что мы знаем:Остатки:Всего книг в фонде – 16 На руках - 2 в библиотеке - 14 по авторам: Буч – 8 Кайт - 6 по полкам A1 – 7 A2 - 7
58/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
1. Г. Буч. A17 книг
2. Г. Буч. A23 книги
3. Г.Буч A2 Заборову
2 шт
4. Т.Кайт A2 6 книг
5. Т.Кайт A1 Яницкому
2 шт
Эту ошибку можно
обрабатывать по-разному
Обороты:Принято книг -
16Выдано - 2Вернулось – 0Потеряна - 0
Так нельзя! На полке A1
нет Кайта
59/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
1. Г. Буч. A17 книг
2. Г. Буч. A23 книги
3. Г.Буч A2 Заборову
2 шт
4. Т.Кайт A2 6 книг
5.Заборов1 го
Буча потерял L
Что мы знаем:Остатки:Всего книг в фонде – 15 На руках - 1 в библиотеке - 14 по авторам: Буч – 8 Кайт - 6 по полкам A1 – 7 A2 - 7
Обороты:Принято книг -
16Выдано - 2Вернулось – 0Потеряна - 1
60/113
А если выкладывание на полку
- отдельный процесс?
61/113
Книги в библиотеке (Автор, Полка)
Книги у читателя (Автор, Читатель)
ПоступлениеВ библиотеку
Выдача читателю
СписаниеВетхих книг
ВозвратОт читателя
Утрата
Неразобранные книги(Автор)
Положили на полку
Переложили книгу
Эти картинки понятны и бизнесу
и разработчику
62/113
Товар на складе(место, категория)
Кондиционный товар
Брак и уценка(причина уценки)
ОтгрузкаПриемка
РемонтВыбраковка
Утилизация
В больших планахсчетов мы используем
субсчета
Оченьпохоже на
наследование
63/113
Главныйсчет
Товар на складе(место, категория)
Кондиционный товар
Брак и уценка(причина уценки)
ОтгрузкаПриемка
РемонтВыбраковка
Утилизация
Субсчета
Общие аналитики
Общиеоперации
Специфические аналитики
Специфические операции
64/113
Кондиционный товар(место, категория)
Брак и уценка(место, категория,причина уценки)
Отгрузка
Приемка
РемонтВыбраковка
Утилизация
Приемка
Отгрузка
Эквивалентная запись:
Убрать главный счет Все аналитики главного счета прописать в субсчетах
Все операции главного счета размножить на субсчета
Товар на складе(место, категория)
Кондиционный товар
Брак и уценка(причина уценки)
ОтгрузкаПриемка
РемонтВыбраковка
Утилизация
65/113
Есть еще один «нюанс» -активно/пассивный учет
Баланс компании
Актив - те ресурсы, которые принадлежат компании, или которые она надеется получить в будущем, например, долг за отгруженный товар
Пассив – обязательства или задолженность компании в той или иной форме, например, долг поставщику или обязательства по отгрузке товара
Дебет счета – увеличение ресурса компании или уменьшение ее обязательства
Кредит счета – уменьшение ресурса компании или увеличение ее обязательства
66/113
Эти критерии тяжело понять,
если ты не бухгалтер
67/113
Для нас это выглядит так:
Активный счет - это счет, где увеличение остатка записывается по дебету, уменьшение остатка – по кредиту (т.е. если на него пришла сумма, то остаток на счете увеличился, а если ушла – то уменьшился)
Пассивный счет - увеличение остатка записывается по кредиту, уменьшение остатка – по дебету (т.е. если на него пришла сумма, то остаток на счете уменьшился, а если ушла – то увеличился)
Активно-пассивный счет – это активный счет, на котором разрешен отрицательный остаток
Естественныйход вещей
С ног на голову
Активность A Активность B Остаток на A Остаток на B
активный активный уменьшился увеличился
активный пассивный уменьшился уменьшился
пассивный активный увеличился увеличился
пассивный пассивный увеличился уменьшился
68/113
Теперь вы ничего не сможете сказать по этой картинке…
…если не знаете активность счетов
C «консервативностью»тоже много вопросов
69/113
Отгружено[активный](Клиент)
Долг[активный]
(Клиент,ЮЛ )
Отгрузка
Фиксация В рассчетах
Неразобранные платежи[пассивный]
(р/с)
Разобранные платежи[пассивный]
(ЮЛ, р/с)
Платежка
Разбор платежей
Распределение платежей
ОтменаРаспределения
платежей
Активность счета(пишется словами и/или
выделяется цветом)
Как это отображается у нас
70/113
Отгружено[задолженность]
(Клиент)
Долг[задолженность]
(Клиент,ЮЛ )
Отгрузка
Фиксация В рассчетах
Неразобранные платежи[деньги]
(р/с)
Разобранные платежи[деньги](ЮЛ, р/с)
Платежка
Разбор платежей
Распределение платежей
ОтменаРаспределения
платежей
Появляется остаток
обоих ресурсов
Оба ресурса слопнулись
Можно представить как 2 ресурса
Пользоватьсянужно с
осторожностью
71/113
А как описывать планы счетов по-другому?
72/113
Например так…
73/113
В лучшем случае - так
74/113
Поставщик(Импортер/резидент/уе)
(ВК)
Контрагент(ВК)
Безвозмездные пост.
Товар до таможниТИ
Товар на таможнеТИ
Услуги в пути(ИУ)
ПН+расходыДата ПН
ТИ Дата ППС
ИУДата ППС
Дата по условию на ВК
Отбор по товарув строке ИУ
Коммерческиерасходы
ГТД на ТИ -АоСрекл/корДата ГТД Whitness=3
Доходы(Статьи)
ТИ Дата ППСРыночная цена
Freesign=1
Прямые расходы без НДС
Валюта списанаВалюта счета
Дата валютирования
ИУДата ИУ
НДС таможенный(ставки)
НДС услуг(ставки)
Сборы, пошлины дата ГТД
НДС ИУ ТК
акты по ИУ без НДС
Дата ППСРыночная цена
НДС ИУпоставщика
НДС товар РФ(ставки)
Товар не РФТИ
Бесплатныйтовар ТИ
ТИДата ППС
Склад не РФ (ТИ)
Склад РФ (ТИ)
ТК-нерезидентВК
ТК-резидентВалюта руб СДД
Дата списанияИУ с НДС
Дата ППС ИУ
НДС тамож.дата ГТД
ВК списанаВК
Дата списания
Товар резидентаТИ
ТИ без НДСДата ППС
Поставщик -резидент
52 Валютные счета, аккредитивы 51.Рублевые счета
Дата списания
КН брака
НДС тамож. опл.брокером
НДС ТИ
Дата валютирования
Расходы(Статьи)
АоС+расходыДата ПН
АоС излишкаакты по ИУ товар не РФ
ПН излишкаДата ПН
почти эквивалентно
УЧЕТ - АРХИТЕКТУРНЫЙ АРТЕФАКТ
Как встраивается в приложение
75/113
76/113
Классическая ситуация:
Формочки
Бизнес логикаОбъекты/Классы/Сущности
РеляционныеТаблицы
Справочники
Документы
Что–то еще
Всем понятно что такое«Документ»?
77/113
Наш случай:
78/113
Запросы и выборки Повторяемые отчеты
Первичные документы
Физическая модель Аппаратное обеспечение,
Операционная системаХранение
Реляционная модель(Oracle)
Объектная модель(CisUni, CisUni.Net)
Справочники
Документы
Справочные данные
Отображение
Учетная модель
Операции
Проводки
Остатки
Отображение
Отображение
Документы
Состояние
Чуть подробнее
79/113
Объектная модель ведет учетнуюОтображение может быть
On-line и off-line
80/113
Отчетность
81/113
Отчетность
УЧЕТ – МОДЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ
82/113
83/113
При итеративной разработке
мы работаем с небольшим куском системы
84/113
85/113
Где гарантия, что мы получится то,
что нужно?
86/113
87/113
Нужна общая картина
88/113
89/113
При проектировании такая картина –
модель предметной области
aka Domain Model
90/113
Модель – это упрощенное
приближение реальности.
Максимально простое,
при условии достаточной
близости к действительности.
91/113
Чаще это всего диаграмма классов(ER-модель)
92/113
Мы часто используем Учетные модели, как модели предметной области Совместно с
диаграммой классов
PROFIT:Учет, обычно, более стабилен. В него гораздо реже вносятся изменения - «инвариант предметной области»
Учет обычно более лаконичен и информативен
Практически всегда мы включаем схему учета в концептуальный проект (vision)– диаграмму классов не всегда. И почти всегда рисуем план счетов раньше.
93/113
Планы счетов «прочно вошли в нашу
жизнь»
94/113
95/113
96/113
97/113
98/113
Аналитические планы счетов:
Модель предметной области
Методология описания потоков ресурсов
Дополнительный архитектурный слой
Инструментарий разработки учетных систем
15 лет успешного использования
99/113
Спасибо за внимание!