30 мар. 2011 г.

Quick and dirty DB cleanup

На скорую руку, очистить базу от документов и проводок можно следующим образом:
  1. Отключить триггеры (перед этим желательно запомнить какие триггеры были в неактивном состоянии).
  2. Выполнить delete from ac_entry.
  3. Выполнить delete from inv_movement.
  4. Выполнить delete from inv_balance.
  5. Потом удалять данные из таблиц позиций документов (имена %LINE). Можно написать такой запрос: SELECT 'DELETE FROM ' || a.relationname || ';' FROM at_relations WHERE relationname like 'USR$%LINE', выполнить в IBExpert, скопировать в буфер результат и вставить в окно скрипта.
  6. Выполнять многократно delete from inv_card c where not exists (select c1.id from inv_card с1 where c1.parent = c.id) пока все не удалится.
  7. Выполнять многократно delete from gd_document, смотреть какие таблицы ругаются и удалять из них информацию. Повторять, пока не очистится gd_document.
  8. Подключить отключенные триггеры.
Если надо оставить некоторые документы в базе, то соответствующие ограничения на типы документов или даты следует добавить в запросы удаления. В том случае, когда удаляются данные только некоторых документов, путем очистки соответствующих таблиц шапок и позиций, может пригодиться следующий запрос, который удаляет из таблицы gd_document все записи для которых нет связанных в специфических таблицах документов:
execute block
as
  declare variable stmt varchar(1024);
  declare variable dt integer;
  declare variable rn varchar(31);
begin
  for
    select t.id, r.relationname from at_relations r
      join gd_documenttype t on t.linerelkey =  r.id
    into :dt, :rn
  do begin
    stmt = 'delete from gd_document doc ' ||
      ' where doc.documenttypekey = ' || :dt ||
      ' and not (doc.parent is null) ' ||
      ' and not (doc.id in (select documentkey ' ||
      '   from ' || :rn || '))';
    execute statement :stmt;
  end
end

23 мар. 2011 г.

Про нас пишут

Вадим Станкевич пишет про Гедымин в статье "Свободное ПО для корпоративных пользователей: ожидания и перспективы" для журнала ITБел:


А также: Проект "НИВА-БП" возможности и перспективы. Беседа с завкафедры "Экономика и управления предприятиями АПК" УО «Белорусский государственный экономический университет» Жудро М.К.

Новая документация

Документация по подсистеме Птицеводство. 70 страниц.

Документация по бизнес планированию. Руководство пользователя и подробнейший контрольный пример. Около 200 страниц.

Вся документация в PDF.

15 мар. 2011 г.

Firebird в театре

Система заказа билетов Театра оперы и балета, Филармонии и (скоро) Театра музкомедии используют Firebird в качестве базы данных.

Кстати, если уж речь зашла о театрах, то Театр им. Я Купалы, Молодежный театр и Театр кукол в Минске автоматизированы на Гедымине.

13 мар. 2011 г.

Наша первая выставка

Похоже, после годичного перерыва снова примем участие в TIBO.
Таким был крошечный шестиметровый стенд на самой первой нашей выставке в 1998-м году, в павильоне ВДНХ на ул. Я Купалы.

В руках у Антона рекламный буклет компании Софт-Информ. Мы готовились к выпуску Совета Анжелики и их продукт считался нашим основным конкурентом. Буклет разорвали, а через пару недель милиция разгромила одну из самых успешных белорусских IT компаний второй половины девяностых. Такое вот черное вуду получилось.

Вызов функции по ссылке в VBScript

Хотя в языке VBScript отсутствует понятие указатель на процедуру/функцию (собственно, отсутствует понятие указатель как таковое), достигнуть похожего эффекта можно с помощью конструкции Eval. В приведенном ниже примере на вход процедуры Test передается имя функции, которая должна быть вызвана.
Option Explicit

Function TestAdd(A, B)
  TestAdd = A + B
End Function

Function TestSubstract(A, B)
  TestSubstract = A - B
End Function

Sub Test(FuncName, K, N)
  MsgBox Eval(FuncName & "(K, N)")
End Sub

Sub Macros
  Test "TestAdd", 100, 40        ' на экране 140
  Test "TestSubstract", 100, 40  ' на экране 60
End Sub

10 мар. 2011 г.

Халоднае эстонскае сонца

Від на Таллінн з Ranna Tee.

Проблема с интервальными деревьями в старых файлах настроек

Если при восстановлении базы (ранее сконвертированной под Firebird 2.5) из архива выдает сообщение об ошибке с текстом "Input parameter mismatch for procedure USR$_P_EXLIM_...", значит на базу с новой структурой интервальных деревьев была загружена настройка со старыми деревьями.

В таком случае надо на исходной базе выполнить в окне SQL редактора команду:
DELETE FROM fin_versioninfo WHERE id > 112
Затем подключиться к ней новейшей версией gedemin.exe (всегда можно скачать с нашего сайта) и дождаться окончания обновления структуры базы данных. В процессе обновления будут пересозданы все процедуры и триггеры интервальных деревьев.

После этого базу можно архивировать.

Почему проблемная процедура создается без ошибок при загрузке настройки -- вопрос к создателям Firebird.

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

2 мар. 2011 г.

10-я и 11-я

Две последние (в хронологическом порядке, а не вообще) наши группы. Октябрь 2010 г. и январь 2011 г., соответственно.