ПРОБЛЕМЫ И РЕШЕНИЯ Нормализация как инструмент современного бухучета Светлана Земцова специалист отдела внедрения и сопровождения Департамента банковского ПО RSBank V.6 компании RStyle Softlab При составлении баланса в форме оборотной ведомости в целых тысячах рублей у кредитных орга низаций нередко возникали вопросы, связанные с округлением остатков и оборотов по счетам. Для внесения ясности в этот вопрос Банк России подгото вил Письмо от 28 мая 2001 г. № 66Т «О порядке округ ления данных в оборотных ведомостях кредитных организаций». Согласно этому документу, кредитная организация должна самостоятельно выбрать алго ритм округления остатков и оборотов по счетам бух галтерского учета и прописать его в соответствующих внутрибанковских регламентах. Казалось бы, банку дана полная свобода выбора… Однако в том же самом Письме указаны и четкие границы, в рамках которых может быть проведено округление баланса. Таким образом, перед компаниями—разработ чиками банковского ПО встала задача реализовать механизм округления, который соответствовал бы всем предъявляемым требованиям и ограниче ниям Банка России. Поиск оптимального решения продолжается на протяжении уже нескольких лет, и сегодня есть все основания полагать, что он бли зок к своему логическому завершению. RStyle Softlab разработала для своих клиентов новый алго ритм нормализации — «В тысячах СМ», который вошел в состав ИБС RSBank V.6 release 20. Эволюция алгоритма нормализации Первым решением, которое наша компания пред ложила своим клиентам, стал алгоритм нормализации «В тысячах». Хотя на момент своего создания он и удо влетворял требованиям времени, у него были существенные RSCLUB № 4 2007 г. ОКТЯБРЬ—ДЕКАБРЬ Антон Саламатов руководитель группы «Отчетность» отдела программных разработок Департамента банковского ПО RSBank V.6 компании RStyle Softlab недостатки. Один из них состоял в том, что при выпуске отчетов за разные периоды (неделя, месяц, квартал) ито говые суммы входящих остатков могли отличаться. Поэто му работы по качественному улучшению механизма нор мализации были продолжены. В результате появились алгоритмы «В тысячах 2», «В тысячах 3», «В тысячах 4» и, наконец, «В тысячах 5». Последний был наиболее эффективным и многофункциональным, но имевшиеся в нем подводные камни сделали его дальнейшее развитие невозможным. Именно поэтому было принято решение полностью переработать алгоритм нормализации, разуме ется, с учетом полученного опыта. Качественно новое решение Алгоритм «В тысячах СМ» Итог проделанных работ — алгоритм нормализации «В тысячах СМ». Это качественно новое решение, однако при его реализации были сохранены все лучшие черты предшественника. В частности, возможность исключить некоторые счета из процесса нормализации и задать прио ритеты по счетам для отнесения погрешности. При этом подход к настройке приоритетов и исключений изменился: теперь каждому счету можно назначить приоритет, на основании которого алгоритм нормализации будет при нимать решение о том, куда следует отнести погрешность при округлении по главе учета. Чем выше приоритет, тем больше вероятность, что погрешность будет отнесена именно на этот счет (при усло вии сохранения всех требований к нормализованным дан ным, в первую очередь погрешность будет отнесена на счета с приоритетом «1»). Для всех счетов по умолчанию приоритет установлен равным «50». Если у какоголибо балансового счета значе ние приоритета изменить на «51», то на такой счет погрешность будет отнесена только в том случае, когда не удается распределить ее по остальным балансовым сче там второго порядка. 65 Нормализация как инструмент современного бухучета Приоритетное отнесение погрешности на счета Перед расчетом формы 101 пользователю необходимо настроить алгоритм нормализации «В тысячах СМ». Путь к корневому каталогу всех настроек — REPORT/FLOOR/SM. В первую очередь заполняется список настроек и подна строек для определения приоритетов по отнесению погрешности (табл. 1 и 2). Перечень имеющихся настроек пользователь может самостоятельно расширить, добавив аналогичные вплоть до PRIORITY_99. Наибольшее число соответствует самому низкому приоритету. Исключение счетов из процесса нормализации Сравнивая алгоритмы «В тысячах 5» и «В тысячах СМ», нельзя не отметить, что в последнем изменилось понятие счета, исключенного из нормализации. Теперь оно означает «счет с приоритетом отнесения погрешности ниже минималь ного». Напомним, что минимальный прио ритет, который может задать пользова тель, — «99». А вот для счетов, исключен ных из нормализации, он устанавливается равным «100». Пользователь может задать значения настроек для исключения счетов из нормализации (табл. 3). Отметим, что счета, исключенные из нормализации, все же могут быть скорректированы алгоритмом, так как исключение — это лишь назначение минимального приоритета, однако веро ятность такой корректировки невелика, она возможна лишь в некоторых специ фических случаях (подробнее см. раздел «Корректировка счета, исключенного из нормализации»). Примеры нормализации формы 101 Наглядно преимущества нового реше ния можно продемонстрировать на кон кретных примерах. Рассмотрим несколь ко вариантов нормализации формы 101. Все они представлены в виде таблиц, где колонка «Т» содержит точное значение по счету (в рублях и копейках), а колонка «Н» — нормализованное. Ячейки, в кото рых нормализованное значение отличает ся от арифметически округленного точно го значения, выделены зеленым цветом. Сначала рассмотрим простейший слу чай корректировки остатка для достиже ния сходимости суммы нормализованных 66 остатков по балансовым счетам арифметически округлен ному остатку по главе. Предположим, настройка «Счета, исключенные из нормализации» не используется (табл. 4). А теперь немного изменим условие: поместим счет 10202 в список счетов, исключенных из нормализации (табл. 5). Корректировка счета, исключенного из нормализации Ранее уже упоминалось о том, что счета, исключенные из нормализации, все же могут быть скорректированы посред ством алгоритма. Рассмотрим ситуацию, когда это возможно. Воспользуемся примером, приведенным в таблице «Настройка “Счета, исключенные из нормализации” не используется» (см. табл. 4), поместив при этом счет 10202 в список счетов, исключенных из нормализации. Таблица 1. Список настроек для установки приоритетов отнесения погрешности Настройка Тип Значение Назначение по умолчанию ERROR_FAULT_PRIORITY Флаг NO ERROR_FAULT_PRIORITY /CHAPTER_1 Строка <Пусто> Содержит поднастройки для задания приоритета по счетам 1й главы. ERROR_FAULT_PRIORITY /CHAPTER_2 Строка <Пусто> Содержит поднастройки для задания приоритета по счетам 2й главы. ERROR_FAULT_PRIORITY /CHAPTER_3 Строка <Пусто> Содержит поднастройки для задания приоритета по счетам 3й главы. ERROR_FAULT_PRIORITY /CHAPTER_4 Строка <Пусто> Содержит поднастройки для задания приоритета по счетам 4й главы. ERROR_FAULT_PRIORITY /CHAPTER_5 Строка <Пусто> Содержит поднастройки для задания приоритета по счетам 5й главы. Использовать ли маски счетов для приоритетного отнесения погрешности? Таблица 2. Список настроек для каждой главы, служащих для установки приоритетов при распределении погрешности Настройка Тип Значение Назначение по умолчанию PRIORITY_1 Строка <Пусто> Маски счетов для приоритетного отнесения погрешности с приоритетом 1. PRIORITY_2 Строка <Пусто> Маски счетов для приоритетного отнесения погрешности с приоритетом 2. PRIORITY_3 Строка <Пусто> Маски счетов для приоритетного отнесения погрешности с приоритетом 3. PRIORITY_4 Строка <Пусто> Маски счетов для приоритетного отнесения погрешности с приоритетом 4. PRIORITY_5 Строка <Пусто> Маски счетов для приоритетного отнесения погрешности с приоритетом 5. RSCLUB № 4 2007 г. ОКТЯБРЬ—ДЕКАБРЬ Нормализация как инструмент современного бухучета округленного для сохранения сходимости с предыду щим периодом. Изменить нормализованное значение исходящего остатка на 1 000 руб. было бы возможно, если бы по этому счету существовал кредитовый обо рот за отчетный период (хотя бы в размере одной копейки). Однако существующий запрет на изменение нулевого оборота на ненулевой приводит к тому, что исходящий остаток исключенного из Таблица 3. Список настроек для исключения счетов из нормализации нормализации счета оказывается скорректированным. Настройка Тип Значение Назначение Заметим, что на практике подобная по умолчанию ситуация вряд ли возможна, поскольку EXCLUSIONS_LISTS Флаг NO Использовать ли маски счетов, необходимым условием для ее возник исключенных из нормализации? новения является неожиданное исклю EXCLUSIONS_LISTS Строка <Пусто> Маски счетов, исключенных чение из нормализации счета, который /CHAPTER_1 из нормализации для 1й главы. ранее всегда в этом процессе участво EXCLUSIONS_LISTS Строка <Пусто> Маски счетов, исключенных вал. При этом на данном счете должен /CHAPTER_2 из нормализации для 2й главы. содержаться нормализованный остаток, EXCLUSIONS_LISTS Строка <Пусто> Маски счетов, исключенных а обороты за отчетный период должны /CHAPTER_3 из нормализации для 3й главы. быть нулевые. EXCLUSIONS_LISTS Строка <Пусто> Маски счетов, исключенных Предположим, что эти данные соответствуют данным предыдущего периода. Тогда исходящие остатки предыдущего периода по отношению к периоду текущему будут являться входящими (табл. 6). Несмотря на то что счет 10202 помещен в список счетов, исключенных из нормализации, его нормали зованное значение отличается от арифметически /CHAPTER_4 из нормализации для 4й главы. EXCLUSIONS_LISTS /CHAPTER_5 Строка <Пусто> Корректировка ненулевых оборотов Маски счетов, исключенных из нормализации для 5й главы. Таблица 4. Настройка «Счета, исключенные из нормализации» не используется Счет Входящие активы Т Н 10201 10202 20202 0 0 Глава 0 0 Входящие пассивы Дебет Кредит Исходящие активы Т Н Т Н Т Н 0 0 0 0 1300 1 0 0 0 0 1400 2 2700 3 0 0 2700 3 2700 3 2700 3 2700 3 0 0 Т Н Исходящие пассивы Т Н 1300 1 1400 2 2700 3 Таблица 5. Счет 10202 поместили в список счетов, исключенных из нормализации Счет Входящие активы Т Н 10201 10202 20202 0 0 Глава 0 0 Входящие пассивы Дебет Кредит Исходящие активы Т Н Т Н Т Н 0 0 0 0 1300 2 0 0 0 0 1400 1 2700 3 0 0 2700 3 2700 3 2700 3 2700 3 0 0 Т Н Исходящие пассивы Т Н 1300 2 1400 1 2700 3 Таблица 6. Корректировка счета, исключенного из нормализации, посредством алгоритма «В тысячах СМ» Счет Входящие активы Т Н 10201 10202 20202 2700 3 Глава 2700 3 RSCLUB № 4 2007 г. ОКТЯБРЬ—ДЕКАБРЬ Входящие пассивы Дебет Кредит Исходящие активы Т Н Т Н Т Н 1300 1 0 0 400 0 1400 2 100 0 0 0 300 0 0 0 3000 3 400 0 400 0 3000 3 2700 3 Т Н Исходящие пассивы Т Н 1700 1 1300 2 3000 3 Приведем пример еще одной ситуа ции, когда удовлетворить все тре бования Письма Банка России № 66Т к нормализации формы 101 невозможно. В нашем случае рассмотрены два идущих подряд месяца (табл. 7 и 8, c. 68). Для отнесения погрешности с условием сохранения сходимости по строкам и столбцам существуют три варианта: 1) корректировка нулевых обо ротов (табл. 9, c. 68); 2) корректировка входящих остатков (табл. 10, c. 68); 3) корректировка исходящих остатков на сумму, превышающую 999 руб. 99 коп. (табл. 11, c. 69). Очевидно, что все эти вари анты противоречат требованиям к нормализации. В первом случае производится корректировка нулевых оборотов, во вто ром — корректируются входя щие остатки, в результате чего нарушается сходимость с пред ыдущим периодом, а в третьем — исходящий остаток изменяется на сумму, превышающую 999 руб. 99 коп. При этом разнести погрешность так, чтобы удовле творялись все требования 67 Нормализация как инструмент современного бухучета по первому варианту, как наибо лее предпочтительному. Таблица 7. Месяц первый Счет Входящие активы Входящие пассивы Дебет Т Т Н Т Н Т 10201 0 0 0 0 1400 2 1400 2 10202 0 0 0 0 1300 1 1300 1 10203 0 0 0 0 1300 1 1300 1 10204 0 0 0 0 1300 1 1300 1 5300 5 0 0 5300 5 5300 5 5300 5 5300 5 Н 20202 0 0 Глава 0 0 0 0 Кредит Исходящие активы Н Таблица 8. Месяц второй Счет Входящие активы Т Н Входящие пассивы Дебет Кредит Т Н Т Н Т Н 10201 1400 ? 0 ? 0 ? 10202 1300 ? 300 ? 0 ? 10203 1300 ? 300 ? 0 ? 10204 1300 ? 300 ? 0 ? 0 ? 900 ? 900 1 900 1 20202 5300 ? Глава 5300 5 5300 5 Таблица 9. Корректировка нулевых оборотов Счет Входящие активы Входящие пассивы Дебет Т Т Т Н Н Кредит Н Т Н 10201 1400 2 0 1 0 0 10202 1300 1 300 0 0 0 10203 1300 1 300 0 0 0 10204 1300 1 300 0 0 0 0 0 900 1 5300 5 900 1 900 1 20202 5300 5 Глава 5300 5 Таблица 10. Корректировка входящих остатков Счет Входящие активы Т Н Входящие пассивы Дебет Кредит Т Н Т Н 10201 1400 1 0 0 0 0 10202 1300 2 300 1 0 0 10203 1300 1 300 0 0 0 10204 1300 1 300 0 0 0 0 0 900 1 900 1 900 1 20202 5300 5 Глава 5300 5 5300 5 Т документа № 66Т к нормализации, не представляется возможным. В такой ситуации алгоритм округления «В тысячах СМ» наследует поведение алгоритма «В тысячах 5»: допускает корректировку нулевых оборотов. Таким обра зом, разнесение погрешности будет произведено 68 Т Н Исходящие пассивы Т 5300 Н 5 Техническая реализация алгоритма нормализации «В тысячах СМ» Требования к нормализации формы 101 Полагаем, что техническим спе циалистам будет небезынтересно ознакомиться с методикой, на базе Исходящие Исходящие активы пассивы которой был создан алгоритм. В пер вую очередь сформулируем основ Т Н Т Н ные требования к нормализации. 1400 ? 1. Арифметически округлен 1000 ? ные остатки по главе (входящие 1000 ? и исходящие) должны равняться 1000 ? нормализованным. 4400 ? 2. Необходимо, чтобы нормали 4400 4 4400 4 зованные остатки по главе (входящие и исходящие) равнялись сумме нор мализованных остатков балансовых счетов (т. н. сходимость по столбцу). Исходящие Исходящие 3. Для каждого счета (и для главы) активы пассивы должна обеспечиваться сходимость Т Н Т Н по строке (по итоговым значениям, 1400 1 по рублям и по валюте). 1000 1 4. Нормализованные итоговые 1000 1 значения по каждому счету должны 1000 1 равняться сумме нормализованных 4400 4 данных (по остаткам и оборотам) 4400 4 4400 4 в рублях и валюте. 5. Входящие остатки текущего отчетного периода должны равняться исходящим остаткам предыдущего. Исходящие Исходящие 6. Погрешность округления активы пассивы остатка, то есть разница между нор Н Т Н Т мализованным и точным значением, 1400 1 по абсолютной величине не должна 1000 1 превышать сумму в 999 руб 99 коп. 1000 1 7. Необходимо, чтобы для счетов 1000 1 корреспонденции (99998 и 99999) 4400 4 нормализованный остаток по актив 4400 4 4400 4 ному (пассивному) счету корреспон денции был равен сумме нормализо ванных остатков по пассивным (активным) счетам (за исключе нием пассивного /активного/ счета корреспонденции). Заметим, что все эти требования можно представить в виде уравнений, в левой части которых находятся линейные комби нации остатков и оборотов по балансовым счетам, а в правой — константные значения. RSCLUB № 4 2007 г. ОКТЯБРЬ—ДЕКАБРЬ Нормализация как инструмент современного бухучета Алгоритм нормализации формы 101 Таблица 11. Корректировка исходящих остатков на сумму, превышающую 999 руб. 99 коп. Счет Входящие активы Т Н Входящие пассивы Дебет Кредит Т Н Т Н 10201 1400 2 0 0 0 0 10202 1300 1 300 1 0 0 10203 1300 1 300 0 0 0 10204 1300 1 300 0 0 0 0 0 900 1 5300 5 900 1 900 1 20202 5300 5 Глава 5300 5 Т Приведение задачи нормализации к задаче линейного программирования (ЛП) К перечню основных требований к нормализации формы 101 нужно добавить ряд эмпирических требова ний. Перечислим их в порядке убывания приоритета. 1. Минимизация количества измененных исходящих остатков. 2. Минимизация количества измененных входящих остатков. 3. Минимизация количества оборотов, у которых изме няется нулевая сумма. 4. Минимизация количества измененных оборотов с нену левой суммой. 5. Приоритетное отнесение погрешности на рублевую составляющую. Таким образом, задача нормализации сводится к клас сической задаче ЛП, где основные требования определяют набор линейных ограничений, а эмпирические — целе вую функцию Z. Формулировка задачи линейного программирования Найти оптимальный план {xi } , доставляющий экстремум целевой функции вида: Целью данной публикации не является знакомство нашей ауди тории с симплексметодом, поэто Н Т Н Т му мы не будем на нем подробно 1400 2 останавливаться. Приведем лишь 1000 0 краткое описание алгоритма нор 1000 1 мализации (рис. 1) с использова 1000 1 нием этого метода для решения 4400 4 поставленной задачи ЛП. 4400 4 4400 4 1. Загрузить данные баланса. Данные по рассчитанному балансу загружаются в нормализатор, после чего все суммы арифмети чески округляются. 2. Задать счета, исключенные из нормализации. В соответствии в настройками реестра (см. раздел «Исключение счетов из процесса нормализации») определяются маски сче тов, которые необходимо исключить из нормализации. На ито говые остатки по этим счетам погрешность относиться не будет. 3. Задать счета, предпочтительные для отнесе+ ния погрешности. По указанным настройкам реестра Исходящие активы Исходящие пассивы 1 Загрузить данные баланса 2 Задать счета, исключенные из нормализации 3 Задать счета, предпочтительные для отнесения погрешности 4 Задать технические счета корреспонденции 5 Задать столбцы, исключенные из нормализации n Z = ∑ ci ⋅ xi → opt , i =1 6 Исключить из нормализации столбцы для входящих остатков при следующих ограничениях: n ∑a ij ⋅ xi Ωb j 7 Загрузить исходящие остатки предыдущего периода в качестве входящих текущего i =1 xi ≥ 0 , где 8 Выполнить нормализацию для итоговых значений aij , b j , ci — постояные коэффициенты, 9 i ∈ [1, n], j ∈ [1, m] , opt Для каждого балансового счета 2#го порядка выполнить нормализацию для рублей и валюты — max или min, Ω — один из знаков ( ≤, ≥, = ). Для решения задачи ЛП выбран симплексметод, как один из наиболее распространенных и эффективных. RSCLUB № 4 2007 г. ОКТЯБРЬ—ДЕКАБРЬ Рис. 1. Схема алгоритма нормализации 69 Нормализация как инструмент современного бухучета (см. раздел «Приоритетное отнесение погрешности на счета») определяется маска счетов, на которые погреш ность округления будет относиться в первую очередь. Чем выше приоритет счета, тем больше вероятность отнесения погрешности на него. (В первую очередь погрешность относится на счета с приоритетом «1».) По умолчанию при оритет для всех счетов устанавливается равным «50». Если присвоить ему значение «51» и более, то на этот счет погрешность будет отнесена только в том случае, когда ее не удастся разнести по остальным счетам. Для счетов, исключенных из нормализации, приоритет равен «100». 4. Задать технические счета корреспонденции. В параметрах главы определяются счета корреспонденции. Для каждого счета должно соблюдаться следующее тождество: остаток по активному (пассивному) счету корреспонденции равен сумме остатков по пассивным (активным) счетам за исключением пассивного (активного) счета корреспонденции. 5. Задать столбцы, исключенные из нормализа+ ции. Например, можно исключить из нормализации вхо дящие остатки (для этого нужно исключить столбцы вхо дящих активных и пассивных остатков). 6. Исключить из нормализации столбцы для входящих остатков. Необходимо запретить нормализа цию входящих остатков. 7. Загрузить исходящие остатки предыдущего периода в качестве входящих текущего. Исходящие остатки предыдущего периода загружаются и используют ся в качестве входящих остатков текущего. 8. Выполнить нормализацию для итоговых значе+ ний. Запускается процедура нормализации, в результате работы которой обеспечивается соответствие итоговых значений всем требованиям к нормализации. Рублевые и валютные суммы на данном этапе игнорируются (итоговое значение представля ет собой сумму рублевой и валютной составляющих). 9. Для каждого балансового счета 2+го порядка выполнить нормализацию для рублей и валюты. Достигается сходимость по рублевой и валютной строке, равенство нормализованного итогового значения сумме нор мализованных данных по рублям и валюте (и для остатков, и для оборотов) для каждого балансового счета 2го порядка. * * * В заключение хотелось бы отметить, что по нашей инфор мации на сегодняшний день компания RStyle Softlab един ственная на рынке банковской автоматизации, кто может предложить своим клиентам алгоритм нормализации, обла дающий всеми теми достоинствами, о которых мы говорили выше. Кроме того, у нашего решения есть еще одно важное преимущество: использованный в нем подход может быть рас пространен и на другие формы отчетности. Проведение таких работ — в планах компании. Мы уверены, что новая разработ ка будет востребована нашими клиентами. Амбициозные планы по развитию бизнеса? RStyle Softlab поддержит самый активный рост вашего дела. Интегрированная банковская система RSBank V.6 предназначена специально для решения задач масштабного банковского бизнеса. Создайте на ее основе единый информационный контур для реализации розничных операций, потребительского и ипотечного кредитования, автокредитования, работы с ценными бумагами — в общероссийском или даже глобальном масштабе. С помощью RSBank V.6 вам по плечу любые задачи. Узнайте больше о возможностях программных продуктов линейки RS-Bank V.6 на www.softlab.ru R#Style Softlab. Лицом к людям Александр Коваленко, директор Департамента банковского ПО RSBank V.6 70 RSCLUB № 4 2007 г. ОКТЯБРЬ—ДЕКАБРЬ