Показаны сообщения с ярлыком утилиты. Показать все сообщения
Показаны сообщения с ярлыком утилиты. Показать все сообщения

12 мая 2016 г.

Деноминация 2016. Технические аспекты

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

В отличие от конкурирующих решений наш подход сохраняет всю историю, весь документооборот предприятия до 1 июля.

Первая проблема, которая возникает, это возможная потеря точности. Платформа использует тип Currency, который позволяет обрабатывать денежные величины с точностью до 4-го знака после запятой. После деноминации 0.0001 в новых деньгах будет соответствовать 1-му старому рублю. Все что меньше рубля потеряется (округлится по правилам математического округления). Хотя 1 неденоминированный рубль очень маленькая величина (коробок спичек сейчас стоит 400 рублей) можно представить базу данных, где мелкий товар учитывается поштучно и цена единицы содержит копейки -- пуговицы, швейные иголки, болты, гайки и т.п. Мы рекомендуем в таком случае провести на 30 июня 2016 г. переоценку товара, округлив учетные цены до целых рублей.

Вторая проблема -- округление до целого числа в скрипт-функциях и отчетных формах через вызов функций Round, Int, Fix, CLng, CInt или обращение к полю через свойство AsInteger. Мы внесем исправления в типовые прикладные решения, но решить задачу в общем случае, анализируя программный код и автоматически заменяя вызовы функций нам не представляется возможным. Единственный путь -- заранее создать копию рабочей базы данных, деноминировать ее и затем тестировать на ней все режимы работы и устранять выявленные проблемы.

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

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

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

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

21 мар. 2014 г.

Архивирование удаленного SVN репозитория

На случай ядерной войны (как бы грустно не звучало, но это теперь не шутка) решили подстраховаться и локально заархивировать наш проект с code.google.com. Действия не сложные, может кому пригодятся:
  1. Понадобятся утилиты командной строки SVN. На официальном сайте доступны несколько пакетов для Windows, в которых нам было лень разбираться, поэтому мы просто переустановили TortoiseSVN, указав в процессе галку Устанавливать утилиты командной строки.
  2. Запускаем режим командной строки и идем в папку C:\Program Files\TortoiseSVN\bin
  3. Создаем локальный репозиторий:
    svnadmin create c:\temp\gedemin_svn
  4. Теперь надо в папке c:\temp\gedemin_svn\hooks создать пустой файл pre-revprop-change.bat. Это похоже на вуду, но так надо.
  5. Указываем откуда мы будем синхронизировать данные:
    svnsync init file:///c:/temp/gedemin_svn https://gedemin.googlecode.com/svn/trunk/. Обратите внимание на слэши в обратную сторону (юникс стайл) и их количество.
  6. И запускаем процесс:
    svnsync sync file:///c:/temp/gedemin_svn
  7. Ждем...
  8. По окончании, для проверки, можно создать чистую папку и с помощью TortoiseSVN чек-аутнуть туда проект из нашего локального репозитория. Для этого указываем источник file:///c:/temp/gedemin_svn.
  9. Последующие запуски команды svnsync sync file:///c:/temp/gedemin_svn через день, неделю, месяц, будут загружать только изменения, скомиченные на сервер с момента последней синхронизации.

5 авг. 2012 г.

Виртуальная машина для компиляции Гедымина

Сколько там обещанного ждут? Трех лет точно не прошло, а виртуальная машина для компиляции Гедымина уже тут. Образ под Oracle VM Virtual Box включает:
  • Borland Delphi 5
  • Tortoise SVN
  • Firebird 2.5
  • Исходный код платформы Гедымин
  • Тестовую базу данных
  • IBExpert
  • Файловый менеджер FAR
Теперь любая кухарка сможет управлять государством каждый желающий сможет с минимальными усилиями "выпекать" для себя свежайший экзешник.

UPD: Исходный код Гедымина располагается на диске c: в папке Golden. Для его обновления до текущей версии следует на папке нажать правую кнопку мыши и выбрать команду SVN Update.

7 дек. 2011 г.

etalon.sql

Долгое время формирование эталонной базы данных представляло собой трехступенчатый процесс. Сначала из отдельных файлов в папке SQL создавался скрипт, в результате выполнения которого получалась промежуточная база. Далее, утилита makelbrbtree.exe создавала прямо в этой базе необходимые метаданные интервальных деревьев. Наконец, формировался и выполнялся еще один SQL скрипт (для метаданных и данных, которые должны идти строго после инфраструктуры интервальных деревьев).

Мы изменили утилиту makelbrbtree.exe. Теперь она формирует и возвращает текст с метаданными интервальных деревьев вместо корректировки непосредственно базы данных. Объединив его с имеющимися в папке файлами мы получаем итоговый скрипт etalon.sql для генерации эталонной базы данных от и до за один проход.

PS: а так можно проверить совпадение содержимого двух текстовых файлов в пакетном файле:

...
FC first.txt second.txt /C | FIND "FC: no dif" > nul 
IF ERRORLEVEL 1 goto s_files_are_different
...
:s_files_are_different
...

13 нояб. 2011 г.

Обо всем

  • Наводнение в Тайланде стало серьезной преградой к обновлению офисного рабочего сервера. Четыре 2Тб винчестера на сегодняшний день стоят не намного меньше, чем весь компьютер в сборе еще пару месяцев назад. Печально, что восстановление производства не обещают ранее конца 1 кв следующего года.
  • Краткий курс SQL уже имеет более 100 000 просмотров. К моему стыду, в интернете выложен недоработанный, неоконченный вариант. По сути, черновик. Надо будет разобраться с очередной группой и существенно переделать его. Идея краткого (по настоящему краткого, а не "Освой SQL за 21 день") курса родилась во времена регулярных занятий с сотрудниками ГИВЦа, где действовал жесткий временной лимит — не более 1-1,5 часа раз в неделю.
  • Наша текущая разработка под Windows CE 5 — терминал кладовщика на основе Datalogic Skorpio, является первым нашим true open source продуктом. Не только весь ее исходный код доступен, но и для компиляции используется Free Pascal.
  • Необходимость сделать дубликат 2Тб винчестера выявила полное превосходство бесплатного софта в этом сегменте над платными аналогами. Сначала Nero не смог создать загрузочный DVD из ISO образа Clone Zilla. Размер ISO был небольшим и Nero настойчиво требовал предоставить ему болванку именно формата CD-R. Где сейчас такую найдешь? Infra Recorder справился с задачей не задумываясь.

    Встроенная в Windows Server 2003 R2 утилита архивного копирования не имеет опции для отключения сжатия данных. И это только пол беды, так как используемые ею алгоритмы настолько небыстры, что для сжатия 1.8 Тб по оценке требуется 3-4 суток. FBackup (без сжатия) справился с задачей за одну ночь.

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

Порядок не алфавитный и не всегда хронологический. Вспомните еще кого, пишите в комментарии.

17 апр. 2011 г.

Редактор CSV файлов

При записи в CSV файл Microsoft Excel не сохраняет пустые колонки, если они находятся в конце записи. Как на беду, наша процедура универсального импорта требует строгого соответствия количества полей заданной спецификации. С помощью Гугла легко нашелся автономный бесплатный редактор CSV файлов с широчайшими возможностями.
Как и многие другие замечательные программы, CSVed написан на Borland Inprise Borland CodeGear Embarcadero Delphi.