На случай, если кто-то рассчитывал моими руками настучать по башке потенциальному конкуренту, так сказать, докладываю.
Для начала, про сам программный продукт. В базе данных есть инструмент, называемый триггером. Это программа, которая запускается всякий раз, когда в базе в какой-то таблице происходит изменение. Например, запись суммы по строке как произведения количества на цену. Или запись суммы по документу (как суммы по строкам), когда в документ добавлена строка. Или как пересчёт оборота по счёту (и запись его в некую таблицу с оборотами за периоды) при вводе очередной проводки. Инструмент этот, в принципе удобен и (особенно если по каким-то причинам нужен именно он) используется. Но пользоваться им можно по-разному.
Например, у меня есть два триггера. Первый обновляет дату изменения строки (ставит системную на момент изменения). Второй вычисляет и записывает ту самую сумму по строке как произведение цены на количество. Тогда происходит вот что: выполнился первый, записал дату. Выполнился второй (ведь триггеров два), записал сумму. Но самим фактом записи суммы он инициировал повторную отработку первого триггера. А он, в свою очередь, повторно запустил второй (т.к. опять произошли изменения). Если второй написан грамотно (т.е поставлена проверка отработки только если менялись количество или цена), то он, запустившись, ничего не сделает и процесс завершиться. Но, в любом случае произойдёт запуск 4 (четыре!) раза вместо одного, если бы всё было засунуто в один триггер. Если есть ещё один триггер, например вычисляющий сумму НДС по строке, то запусков будет уже 9 штук и т.д. Именно так происходит в этой программе и это заложено даже в базовой комплектации. Добавлю, что триггера очень часто меняют не только свою таблицу, но и другие. А эти изменения запускают триггера, которые меняют следующие таблицы и так далее. При этом на каждой таблице (из-за такой схемы) всё будет запускаться по много раз (пусть даже ничего не делая).
А теперь пусть кто-то где-то, например, забыл вставить проверку на условие запуска. Тогда обновление чего-то будет запускаться столько раз сколько происходит запусков этого триггера. Изменение запустит дальнейшие триггеры. На быстрой машине, да на базе в которой два введённых документа не видно будет (очень быстро). На новой базе новому клиенту тоже не очень видно будет, но это уже скрытый дефект.
Разработчики базовой конфигурации за таким, видимо, следят. Если же ручные доделки (а эта фирма занимается именно этим), то никакой гарантии. Более того, организационно сделано решительно всё, чтобы происходило именно так. Оно и происходит. Возможно, есть ещё какие-то ситуации (строго говоря, не являющиеся ошибками) при которых может такое запускаться. Я детально не разбиралась и, видимо, в обозримый период и не буду.
Вообще-то, разработчик соорудил ловушку (создав конструкцию, а которой что-то потенциально способно запускаться сотни раз), а разработчик способен (хоть и не обязан) легко в неё попасть. Довод: «не надо ошибаться», конечно, хорош, но мне решительно непонятно, чего бы им не генерить один триггер с изменениями на всю таблицу. По ряду причин это ничем не хуже, а ловушки бы не было. Далее, выловить это задним числом, мягко говоря, затруднительно, т.к кто же знает на какой таблице повешен триггер без проверки, который всё запускает, при том, что триггеров этих на всех таблицах по N штук. Он совсем не обязан висеть на той таблице, при изменении в которой идёт задержка. Может запускаться дальше по цепочке. Тут, вообще-то даже запись запусков всего, что есть особо не поможет. Если у меня одна конкретная процедура (запущенная одним из триггеров) 850 раз отрабатывала, то сколько же во всём этом списке будет записей?! Как в этом разбираться?
Если бы лично мне потребовалось с этим работать и если бы по каким-то причинам меня интересовало качество, первое что бы сделала – прошлась бы по базовой конфигурации, собрав базовые триггера в один на таблицу. Это убрало бы ловушку (сделав последствия ошибок менее фатальными) и упростило бы контроль возможных неприятностей. Тот случай, когда лучше один раз это сделать, чем потом постоянно мучиться (чем они, так понимаю, и занимаются в компании со своими клиентами).
Что касается самой штуковины… Строго говоря, ничего всерьёз плохого сказать не могу, хотя есть некоторая непривычность (из 2007-го офиса они, что ли, форму меню пытались взять вместо обычного?). Достаточно приятные списки и поиски по ним, например фильтры a la расширенный Excel (ещё группировки, возможность красить строки, создавать базовые фильтры, выводить сбоку дополнительную информацию). Явно кто-то вначале делал удобно для себя а потом додумался это продавать.
Очень раздражают, по сути, модальные окна. Если что-то открыто, то даже всё окно свернуть нельзя. Приходится закрывать окно и только потом сворачивать. Несколько окошек открыть нельзя. Можно только переходить по открытым вкладкам. Откуда взялось понятно. DOS-овская отрыжка и желание сделать «как было раньше». Ещё, наверное, воспоминания о пользователях, что-то открывающих и путающихся в открытом. Наверное, было актуально лет 10 назад. Сейчас эта «защита от дурака» не слегка раздражает.
Вообще же, это желание сделать «как было раньше» (без учета перехода в другую среду) у них, видимо, обычное дело. Прямое следствие – Web интерфейс с тщательно прорисованной такой же, потому жутко тяжёлой страницей (вдобавок с перерисовкой при каждом действии, которая гонит все эти навороты с сервера при нажатии каждой кнопки). Но это, всё равно, мелочи.
Если задаться такой целью, то настроить тут можно многое. Хотя 1C-у эта штука, конечно, не конкурент. В том числе и потому, что 1C доделанный под программиста. А это… ну не совсем каменный топор, но хоть глобальные-то модули можно было сделать. Даже их нет. Не говоря уж о прочих мелких неудобствах.
Приятный встроенный OLAP и графики. В 1C-е не видела. Т.е. квалифицированному аналитику, желающему самостоятельно играть в цифру, самое то.
Перегонка в документы (шаблоны Word, Excel) договоров с подстановкой даты, суммы. Хранение документов любого формата в себе (удобно для создания какого-нибудь внутреннего документооборота, чтобы бумажки не терялись). Прочие мелкие приятные настройки (например, настройка формы выпадающего списка без дополнительного программирования: не только название, но и ещё любые поля).
Перед описанием странностей конкретной конторы, напишу, кто там дальше. А дальше там – остатки группы Абелева (смею предположить), т.е. старые знакомые, отодвинувшиеся из гос структур в бизнес. У нас в чём угодно есть чиновничья, бандитская и спецслужбистская составляющая. У этих (на глаз и навскидку) доминирует, скорее, бандитская. С другой стороны, её может вообще не быть. А всё это может быть дешёвой попыткой что-то изобразить. Потому похоже, но выглядит странно.
Самое время написать про странность конторы, которая наводит на мысль о том, что бутафорией может быть вообще всё. С одной стороны – правильные слова про продукт. С другой – феноменальная замшелая тупорылость, вызывающая вопрос: Настоящий идиот, или придуривается, покрывая разводку? Идиот, похоже, настоящий. Рекомендую попытаться представить человека в плавках и пиджаке. И то и другое хорошо, но в своей логике. А тут две стратегические логики, противоречащие друг другу. Причём диаметрально. Вывод? Он не думает. Он просто повторяет слова, которые посчитал правильным на себя «надеть».
Надо отдать должное «потемкинской деревне». Сооружена трудолюбиво. Т.е, надо отдать должное трудолюбию. Обычно это делают иначе и проще. Зато получается убедительнее. Зато тут оригинальнее.
По конфигурациям, которые они придумывают… Пара простых примеров.
Первый: Имеется документ. У него несколько состояний. Например, «создан», «изменен», «в архиве». Его, естественно, можно менять в выпадающем списке. А ещё можно менять кнопкой «Изменить», по которой в том же списке на экране меняется состояние с «создан» на «изменен». Если кнопка, то зачем список? А если список, то зачем кнопка? Это чем-то похоже на проведение документа. Там кнопка, которую можно нажать, но там нет списка. Это чем-то похоже на дублирование кнопки, элемента меню и сочетания клавиш клавиатуры. Но там меню и кнопка, а тут кнопка и список, а так нигде не делают.
Второй: чудовищная структура, в которой почему-то есть возможность поставить три галки, ввести трёх возможных поставщиков (в разных полях) и в разных же полях ввести количества и цены. Выбирается тот поставщик, возле которого стоит галка. Код обработки этого кошмара, естественно, столь же кошмарен. При всей фантазии не представляю, почему это так надо было делать. Ситуация обычная и решение для этого существует столь же обычное.
Третий: Прочее, что обычно делают не так (в том числе проще во всех смыслах). А так обычно не делают, хотя и есть такая возможность.
Тоже ощущение, что пытались сделать на что-то похоже, а получилось очень странно. Разумная идея – разводят заказчика, раздувая смету (опять же) очень экзотическим способом. Но это не вяжется ни с типовыми привычками типового заказчика, ни с прочим впечатлением от конторы.
Бывшие чиновники, похоже, пытаются заниматься бизнесом. Представления о том, как должно быть у них несколько странные, но какие есть. Тут переплелись научная база (подозреваю, ещё советских времён от всяких пустомель) и, например, представления о работе программиста примерно тех же времён. То, что плёл этот тип и пытался делать, заставило вспомнить воспоминания о временах больших машин и специфику работы тех времён.
Т.е, конкретно эти собрали в идейном плане, вроде, хорошее (где-то угадали, где-то нет) и честно попытались это использовать. Отсюда и результаты. Закономерные если всё делать именно так. А исходный продукт тут, видимо, не причём. SQL Server, тем более. Это, реально, самое быстрое, что сейчас есть. На порядок быстрее Firebird-а, например. Сама проверяла. Просто он тут некорректно работает.
Отошли эти ребята, так понимаю, в арендодатели вкусной недвижимости или в обслугу. Кстати, вспоминается Кировлес, которому сильно поплохело, когда на него повесили расходы за аренду каких-то участков под конец правления старой команды. Т.е, в конце 2008-г, что сильно способствовало итоговому банкротству, вину за которое пытаются повесить на Навального, «укравшего лес». Строго говоря, некорректно предполагать, что все везде делают одинаково, но всё-таки…
На финансовое благополучие это всё не очень похоже. Иначе, зачем напрягаться и огород городить? Но, несомненно, живы как группа. Будут рады быть полезными кому-то сверху (только пальчиком поманите). Отношения конкретной конторы и лидерами не обязаны быть взаимной любовью, но некая общность и взаимоподдержка, похоже, имеется.
|