Маленькие хитрости больших реестров
17 октября 2007
Рубрика: Технологии. Тэги:
Автор: .

pic
Как известно всем, кто имеет отношение к бухгалтерии и интересуется своей зарплатой, в нашей стране внедрена Накопительная пенсионная система, далее НПС. Некоторое время назад подходный налог был снижен на 1% и вместе с этим введено отчисление с налогооблагаемой суммы размером 1% в счет НПС. Каждому гражданину Узбекистана присвоен уникальный номер Индивидуальной накопительной системы, далее ИНПС. В 2006 году суммы, причитающиеся по НПС каждому сотруднику ежемесячно сдавались в банки, обслуживающие предприятия, в виде списков, напечатанных на бумаге.

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

Итак, программа называется «Электронные реестры предприятия», предназначена для ввода и формирования файла со сведениями о работниках, участвующих в накопительной пенсионной системе. Разработчик – известная ташкентская компания OOO “Intelligent Solutions”. Работа с программой проста и интуитивно понятна. Для предприятия ежемесячно вносится список работников с их ИНПС и суммой отчислений для каждого, а также общие сведения для всех работников — ИНН предприятия, сумма отчислений, номер расчетного счета, период, за который начислена сумма, общая сумма заработка всех сотрудников, сумма отчислений всех сотрудников и количество сотрудников. Казалось бы все просто – причем, попробовали – сразу все заработало, суммы вносятся, формируется файл, который и надо на флешке отвезти в банк.

pic

pic

Но сразу возникла проблема. В организации (не буду называть ее, да это и не важно) количество сотрудников выражается четырехзначным числом. Можно сесть один раз, потратить пару недель и ввести все ИНПС и фамилии, а потом каждый месяц лишь заново вводить величину отчислений. Но и это «лишь вводить» будет занимать несколько дней. И при механическом вводе с ведомости возможны ошибки ввода. И это все при том, что в организации внедрены программы, рассчитывающие зарплату (написанные на языке Visual FoxPro). Естественно, что встал вопрос об автоматизации этого утомительного процесса. Самым трудным казалось тогда сформировать точно такой же файл, какой формирует программа «Электронные реестры предприятия» чтобы банк принял ее и мог использовать в своей части глобальной межбанковской программы, объединяющей все отчисления по НПС в одну базу. К счастью, файл оказался не бинарный, а текстовый, но содержал специальные символы с кодом 29 – эти символы ни на экране, ни на принтере не отображаются, так как в кодировке CP-1251 (Windows) нет соответствующих символов (в MS DOS были, но это не важно). Вот фрагмент кода программы, реализующей создание и автозаполнение файла для пакета «Электронные реестры предприятия»,

pic
pic

Пояснения к фрагменту. Он работает после основного блока расчета зарплаты, когда введены для каждого сотрудника отработанные дни, отпускные, больничный, разовые премии и прочие начисления и вычеты, программа посчитала все и сформировала платежную ведомость. А в полях базы данных NUM_PENS, FAMILIA, ITOGO_1, NPS_1 содержатся соответственно ИНПС, ФИО работника, сумма заработка и сумма отчислений в пенсионный фонд. По всей базе сотрудников программа и проходит в строке (1) командами SCAN \ ENDSCAN, формируя список. Видно, что в формировании строк участвует переменная GS, в которой записан тот самый символ с кодом 29 – в строке (2). В строке (3) формируется первая строка файла, содержащая общие сведения, которые запрашиваются через соответствующие переменные, объявленные в начале фрагмента.

pic

Но оказалось, что радость от того, что удалось сформировать необходимый файл автоматически за секунды немного преждевременная. Как оказалось, банк требует весь список за месяц одним файлом. А в организации несколько подразделений, зарплата которым рассчитывается разными программами, разными бухгалтерами на разных машинах. То есть, в один файл никак не «сливается». И вообще у разных подразделений могут быть разные атрибуты, вплоть до расчетного счета и даты расчета. Переговоры с представителем банка не давали результата, он упорно твердил, что если будет не одним файлом, то он не сможет принять и обработать данные. Ситуация грозила стать тупиковой и перечеркнуть всю работу. Но удалось связаться с разработчиком из OOO “Intelligent Solutions”. Они терпеливо выслушали и посоветовали работать с помощью параметра «номер рейса» — я еще удивлялся в начале – что это за параметр и зачем он нужен? Правда, представитель банка не соглашался и говорил, что не смотря на номер рейса у него все смешается в одной базе, пришлось свести его с разработчиками и он «сдался».

Теперь бухгалтеры предварительно договариваются, какому подразделению какой номер рейса присвоить, вводят его (переменная REIS в фрагменте кода) и он не позволяет данным в компьютере банка «смешиваться». Таким образом, проблема была решена и сотрудники бухгалтерии избавились от постоянного многочасового изнурительного труда.

Еще небольшая тонкость. В имя файла входит код клиента – 8 символов, один из которых стоит после точки. На втором поле после точки в имени файла стоит номер месяца одной позицией и третья цифра – номер рейса от 1 до 9. Естественно – возникает вопрос – а что делать с двузначным номером месяца, начиная с октября – как «втиснуть» его в одну позицию? Для этого, как сказано в инструкции, используются буквы латинского алфавита, вместо 10 – a. 11 – b, 12 – с (это шестнадцатеричная система)

Эта «неприятность» обходится таким маленьким фрагментом

pic

Здесь переменная MON – это номер месяца, если он больше 9, то он складывается с числом 87 и берется символ с кодом полученного числа. Для числа 97 – код символа a, 98 – b, 99 – c, а дальше нам уже не надо. Если месяц менее 10, то символ просто равен номеру месяца.

Вот и все – такими мелкими шагами удалось решить такие крупные проблемы. Кто не сделал еще – помогите своим бухгалтерам.

Orphus system
Подписывайтесь на канал infoCOM.UZ в Telegram, чтобы первыми узнавать об ИКТ новостях Узбекистана
В Telegram
В WhatsApp
В Одноклассники
ВКонтакте