Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Доброе утро.

Размышлял тут на тему практически безоговорочного лидерства продуктов 1С на российском рынке в области ПО для бухгалтерского учета. Вспомнилось огромное количество задач по переводу клиента с ПО X на 1С. А в чем сила брат? Тут я с ходу ответил себе, что сила в многолетнем опыте. 1С развивалась очень долго и сложность продукта наращивалась постепенно. Создать с нуля программу с таким же функционалом и начать продавать её дешевле чем 1С - задача фантастическая. Едем дальше: а в чем сложность функционала и нужен ли он большинству пользователей? Может можно сделать что-то попроще для начала? Что можно выкинуть из 1С, чтобы ТЗ по созданию конкурента стало бы реальным к выполнению, небольшой команде стартаперов?

Чтобы придумать конкурента 1С, надо разложить сначала саму 1С по полочкам и на каждой полочке выписать плюсы и минусы. А потом мы выкинем полочки, на которых много минусов, и посмотрим, что осталось.

Итак первое разложение делается само собой, исходя из архитектуры 1С: платформа и конфигурации.

Платформа:

Текущая платформа очень сильно развивается, настолько сильно и быстро, что её развитие потихоньку превращается из преимущества в огромный косяк. Фирма 1С продолжает поддерживать обратную совместимость с предыдущими версиями. Все конфигурации начиная с 8.0 работают в 8.3, а при этом там не то что новый функционал появился, там в корне изменилась идеология.

Интерфейс пользователя:

От десктопно-заточенного обычного приложения все перешло к веб-заточенному управляемому приложению. Плюс включена поддержка мобильных платформ, прямо в той же среде разработке мы можем сформировать мобильное приложение. Это очень круто, но излишне. На мой взгляд, поддерживать в одной платформе разработку трех разных видов форм - явно излишне. На самом деле тут даже не на три полки можно разделить, а на больше:

1. Обычное приложение - чистый десктоп под windows. Собственно это добро тянется с версии 8.0 и Фирма 1С никак не решится обрезать этот апендикс. В современных реалиях это не актуально, т.к. в десктопе есть еще и Linux и Mac OS, их доля мала, но они есть. Плюс доступа к базе не получить без наличия платформы и эта проблема решается только с помощью RDP доступа к серверу предприятия. Вторая проблема - незаточенность под быстрый клиент-сервер, точнее наоборот - заточенность только под быструю связь клиента и сервера, можно даже не пытаться работать в 1С если сервер не в вашей локальной сети. Это последствие создания удобного метода разработки, разработчику не требовалось разделять код на серверный и клиентский (бэк-енд и фронт-енд), все писалось "в одной процедуре" и из-за этого нереальное количество обращений клиента к серверу, что требует быструю сеть с минимальными задержками.

Итак плюсы: нереальная скорость разработки своих конфигураций. Ни одна IDE, ни один фреймворк, никто на этой планете не дает такую скорость разработки БД с нуля со всеми формами, бизнеслогикой, разделением прав и пр. как 1С.

Минусы: не кроссплатформенная, не годна для многопользовательских БД с клиентами на слабых каналах.

2. Управляемое приложение в веб (через браузер) - это совсем другой подход к рисованию форм. Мы говорим какие элементы и в каком порядке будут присутствовать на форме, т.е. просто перечисляем их, задавая ограниченный набор свойств. Их положение платформа определяет сама. Это удобно для хранения описания формы, это приводит к единообразию внешнего вида, авторам платформы легко поменять весь дизайн и цветовые решения. Разработчикам не надо ломать голову над тем, какой высоты должна быть кнопка 15 пикселей или 30. За это облегчение разработчиков заставили разделить процедуры на клиентские и серверные, теперь им надо думать. Как это работает? Через одно место! Платформа умеет генерить html код с javascript в ответ на запросы, на основании описания форм. Есть компонента (wisapi.dll), которая умеет вязать 1С и веб сервер (Apache или IIS). Вроде круто, но по факту это лишнее звено в виде web-сервера, на пути от клиента к серверу и обратно. Web-серверы нынче круты и могут обслуживать кучу запросов одновременно. Сама серверная часть 1С тоже крута. Движок БД в виде MSSQL или ORACLE тоже крут. Но когда все эти "качки" должны по очереди обработать запрос пользователя, а еще к ним вклинили wisapi.dll - слишком много накладных. Но результат хорош - мы лазаем по БД через браузер, из любой точки планеты, с любого устройства. Насчет любого устройства я не соврал, но вот комфортно работать получится только с десктопного браузера, т.к. интерфейс заточен под мышь, тыкать пальцем и скролить им - неудобно.

Итак плюсы: кроссплатформенно, хорошо для удаленной работы, не нужно клиентское приложение, браузер есть везде, хоть планшет, хоть телефон.

Минусы: верстка html и обработчики событий на JS заточены под десктоп, из-за сложности скриптов JS они работают не на всех браузерах, много посредников в архитектуре, тяжелые формы лагают, т.к. верстка становится неприподъмной.

3. Управляемое приложение толстый клиент - под десктоп под windows, но т.к. это те же управляемые формы, то в платформу просто вшили браузер, как элемент управления, который и отображает содержимое форм. Тут нет web сервера как промежуточного звена, но цена за это- нужно установить платформу на все клиентские устройства. К тому же хитрый ход с вживлением браузера мне не очень по душе, получается внутри все та же многозвенная структура, только в рамках одного процесса: 1С генерит html и JS, передает это в элемент управления, тот уже исполняет, шлет в "виртуальный" web-сервер запросы и т.д.. Почему не сделали свой движок отображения как в случае с обычными формами - непонятно. Тяжелые формы с большим количеством таблиц и элементов - лагают так же как в web-варианте. От толстого клиента нет никакого толку!

Итак плюсы: ну толстый клиент точно корректно отобразит внешний вид формы, на этом все.

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

4. Управляемое приложение тонкий клиент - под десктоп, но на любой платформе. По сути тонкий клиент состоит почти только из движка встроенного браузера, поэтому фирма 1С сбацала его под все известные оси для десктопа. Вроде как он менее требователен к каналу связи и к характеристикам машины.

Плюсы: хоть какая-то кроссплатформенность, легкий дистрибутив, вроде как ниже требования к железу.

Минусы: надо ставить приложение, тяжелые формы лагают, все таже стремная архитектура.

5. Мобильное приложение - это вообще отдельная песня. 1С придумало способ работы с мобильника с помощью приложения, а не браузера, да еще и с возможность пользоваться локальной БД, т.е. работа в оффлайн. Плюс есть еще легальный способ выкачки всего этого через магазин приложений. Это клевая фишка, т.к. как я говорил, что верстка не приспособлена под мобильные устройства и браузер на планшете скорее как запасной способ работы с БД, а не основной, когда кровь из носу надо что-то посмотреть в базе, а под рукой только мобильник. Как это устроено внутри - не скажу, но уверен еще через большую попу. 

Плюсы: возможность оффлайн, заточенный интерфейс.

Минусы: только мобильные платформы, надо стаивть приложение, лишние танцы с бубнами для разработчика.

Объектная модель:

Объектов в 1С много. Очень много. Очень очень много. Начнем с прикладных.

Прикладные это те, которые являются структурой БД, т.е. её сущностями (справочники, документы, регистры). Добавили прикладной объект = создали от одной (до хз скольки) таблиц в БД и связи. Очень удобная штука, я бы даже сказал гениальная. Но с развитием платформы их становится все больше и больше и порой кажется, что задачи, для которых создается новый объект - слишком узкие и можно было бы решить их с помощью более простых. Изобилие объектов требует серьезных знаний от разработчиков, но при наличии этих знаний ускоряют разработку и даже вносят некую методологию, что снимает много головной боли на тему "а как бы лучше сделать вот этот механизм?". Однако методология навязанная платформой не всегда гуд, ведь жизнь она такая: не всегда можно заставить директора завода нажимать кнопки именно в этой последовательности. Еще одним минусом изобилие - тяжесть платформы: у каждого объекта есть свое поведение зашитое в платформе, есть свое визуальное представление.

Есть еще и куча программных объектов, которые нужны для разработки вычислений, формирования отчетности, обмена данными... Тут в 1С вообще беда, например для работы с файлами XML есть несколько объектов, каждый из которых создавался "в своё время", но потом он переставал удовлетворять потребностям разработчиков и создавали новый объект. то же самое и для интеграции 1С с сайтами, чего тут только нет. На мой взгляд это обилие явно плохо сказывается на интерпритаторе, давно пора порезать устаревшие объекты. Я давно перестал верить своей голове, я хелп стал открывать по любому чиху, т.к. нереально запомнить все методы всех объектов, да и просто помнить все возможности платформы - нереально. Мне нравится старая 1С 7.7 тем, что о ней я знаю все, и сходу знаю каким инструментом надо пользоваться в той или иной ситуации. Правда бывают ситуации, под которые инструмента - нет. Но может, тогда и не надо ничего делать?

Плюсы: очень много всего, найдется все, под любую бизнес задачу.

Минусы: очень много всего.

Конфигурации

Конфигурация - это то решение, которое разработано на базе платформы. Тут 1С и молодцы и в тоже время это кромешный ад для разработчика. Современные основные конфигурации от 1С умеют ВСЕ!!! В них не надо ничего дорабатывать. Структура БД в них состоит из тысяч таблиц, в них миллионы строк кода. Тут мое мнение однозначно: "всем не угодишь". Не надо запихивать все возможности в исходный продукт. Пусть плюшки кастомно делают сторонние разработчики в индивидуальном порядке. В большинстве случаев на реальных предприятиях не задействовано и половины прикладных объектов, имеющихся в конфигурации, но они там есть. При старте системы, платформа интерпритирует и исполняет тысячи строк кода, подготавливает среду исполнения. Любое типовое решение открывается долго. лезет при открытии в интернет, чего-там качает/проверяет. Все они очень тяжелые.

Я помню лозунг 1С мол 8.0 бысрее 7.7. А 8.1 быстрее 8.0 и т.д. до 8.3 - это ложь! Сама платформа может и быстрее, что тоже пока не известный общественности факт, но в конфигурации выпущенные на новой платформе вводили много нового функционала, очень много. Для примера в конфигурации для автоматизации торгово-складской деятельности в 7.7 было 5 ролей пользователей в 8.3 около 200. Нет никакой документации по поводу этих ролей, да это и невозможно. Нереально пользоваться этим монстром. Но 1С выкрутилось, они создали справочник с группами пользователей и сделали те самые 5 предопределенных групп. Список справочников в 8.3 не помещается на экране, его хрен проскролишь, для этого авторы придумали удобные поиски по структуре данных. Все эти усложнения в структуре конфигураций требовали от платформы все новых и новых возможностей. Если сейчас на современной платформе разрабаотать конфигурацию - полный аналог конфигурации времен 7.7 по структуре - она будет "летать". Она будет моментально запускаться и делать своё дело быстрее, чем пользователь поймет, что произошло. Но Фирма 1С идет по пути наращивания сервисов, на мой взгляд это тупик. Тут нужна либо модульность, либо типовые конфигурации нужно сделать проще.

 

На мой взгляд достаточно нахоливарил, чтобы сформировать набросок ТЗ по альтернативе 1С моей мечты :)

1С моей мечты

1. Собственно однозначно в нем бы осталось два режима: пользователя и конфигурирования. Встроенная среда разработки - это сила

2. В силу современных реалий однозначно все через браузер, чтобы кроссплатформенно, удаленно и пр. Даже для однопользовательских версий на локальной машине

3. Серверная часть должна сама по себе быть web-сервером. Никаких php, apache, ISS, компонент сторонних разработчиков. Запустили исполняемыq файл - поднялся на машине web-сервер. В зависимости от настроек выбирать порт, доступ из вне и т.д. Настройки уровня сервера в текстовом конфиге, в лучших традициях :)

4. Клиент - браузер, поэтому сервер тупо генерит html с javaScript. Тут мое мнение таково, что все должно быть универсально и работать даже на старых браузерах. Не думаю, что для рисования формы действительно нужны хитрые скрипты и пр. Например при переходе в другое окно страница должна перезагружаться полностью, не вижу смысла экономить трафик за счет усложнения скриптов. Будь проще и люди к тебе потянуться. Примеры которые мне не нравятся это сама 1С и SharePoint, у них очень все сложно, открывая html код понять что там внутри - нереально, ну не может то, что визуально выглядит как табличка с пятью колонками и 10ю строками иметь тысячи строк верстки, скриптов и таблиц стилей. Верстка - максимально простая, никаких тегов div 10 раз вложенных друг в друга.

5. Метаданные - упростить. Регистр расчета - зло, в ЗУП 3.0 1С от него почти отказалось. Регистр бухгалтерии - зло. Планы обмена - можно реализовать на справочниках. Задачи и бизнес-процессы - можно реализовать на документах.

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

7. Встроенные объекты. А вот встроенные объекты - ну нах столько мути? Все эти интернет почты, http запросы, фабрики XDTO... все лесом. Максимально упростить подключение внешних компонент и все это добро писать на C++. Так и разрабы 1С будут ближе к остальному it миру и велосипеды изобретать не будут. Я бы обязательно реализовал бы какой-нибудь объект для работы с xml, чтобы работать с ним как с деревом, в 1С сейчас нет ничего удобного. Объект для работы с DBF думаю убрал бы, это уже старьё, а если надо, то см. выше C++ в помощь.

8. Схема компоновки - это крутая круть, но уж больно замороченная. Программно ей пользоваться сложно, на уровне мышки, все равно то и дело не хватает возможностей. Я бы порезал немного её функционал, но упростил бы программную работу с этим объектом, чтобы простой макет СКД можно было сделать 5ю вызовами методов на базе зепроса. К примеру 1я строка - создаем переменную типа СКД; 2я строка - присваиваем текст запроса; 3я - в настройки добавляем одну группировку детальных записей со всеми полями; 4я - выполняем с получением данных в табличный документ; 5я - показываем таблицу на экране.

 

Ну в кратце как-то так :) глупость конечно, но мало ли, мысли надо фиксировать

 

Авторизуйтесь пожалуйста

Комментарии   

0 # popitka1 24.10.2016 05:45
Автор, ты зачем все это написал? Получилось мед, говно и гвозди в одном посте.
Единственная мысль, которую я вынес из этого огромного текста:
Цитата:
в 1С надо выкинуть половину функционала, тогда она мне понравится
Но они этого не делают не от хорошей жизни. До сих пор не снята с поддержки Бухгалтерия 2.0, поэтому обычные формы выкидывать нельзя. Если бы все дружно переходили на новые версии, то может и резали бы устаревший и избыточный функционал.
0 # Антон Филоненко 24.10.2016 05:51
Люди не переходят на новые версии, т.к. боятся двух факторов:
1. Они сами не справятся с новыми конфигурациями (ну в 3.0 реально надо больше знаний, чтобы работать)
2. Их ИТ специалисты не смогут им быстро и дешево помочь (сложней система - больше инженер часов на решение проблем)

До сих пор иногда соблазняюсь на установку клиенту УТ 10.3.