Данная публикация создана как ответ на весьма поверхностную и одностороннюю публикацию.
«Чем плоха 1С и почему так не любят программистов 1С» .
Судя по комментариям, многие далеки от понимания того, что такое программирование 1С на самом деле.
1. Платформа и конфигурация
В понимании большинства программистов 1С — это бухгалтерия.Так было до версии 6.0 включительно.
Начиная с версии 7.5 приложение состоит из 2-х частей - платформы, написанной на языке C++, и конфигурации, включающей описание структуры таблиц, визуальных объектов и кода на языке 1С, очень похожем на Visual Basic. Из всего этого следует, что платформу можно использовать для решения очень широкого круга задач, в том числе не связанных с бухгалтерским учетом.
Все, что можно решить без 1С, используя комбинацию клиентское приложение+база данных.
Не так давно компания начала выпускать библиотеки, которые являются основой стандартных конфигураций, но могут использоваться и в сторонних проектах — библиотека стандартных подсистем и библиотека подключаемого оборудования.
Они содержат инфраструктурный функционал, например ведение списка пользователей, встроенный почтовый клиент, обмен по правилам обмена и т.д. Плюсом является то, что они хорошо описаны и могут быть реализованы частично.
2. Авторы
Как описано в пункте 1, платформа и конфигурация — это разные программные продукты, их делают разные группы разработчиков, которые, по моим данным, мало общаются друг с другом.Платформу делают очень опытные разработчики, многие занимаются ее разработкой начиная с 7.5, т.е.
с 1996 года.
С конфигурациями все гораздо хуже.
Конфигураций много, можно даже сказать безумно много.
Авторов там очень много, и опыт некоторых вызывает большие вопросы.
Судя по кадровой политике, к авторам конфигураций особо не церемонятся и относятся не очень хорошо.
Например, новое флагманское решение «ERP. Управление предприятием 2.0» написана совершенно новой молодой командой.
Команда, разработавшая предыдущее флагманское решение — Управление производственным предприятием (PEM), осталась не у дел.
Из этого следует, что качество платформы всегда будет лучше качества стандартных конфигураций от 1С.
3. Технологичность
Пример 1С демонстрирует, что отечественные ИТ-компании очень успешны и могут создавать программные продукты мирового уровня.Платформа 1С содержит уникальные для мирового рынка учетных систем решения.
Например: 3.1. Использование табличного документа для макета, где разные строки могут иметь разные форматы столбцов (то есть разное количество столбцов в разных строках).
При экспорте из этого формата в XLS создается необходимое количество столбцов для отражения всех форматов; 3.2. Схема композиции данных (DCS), позволяющая строить отчеты любой сложности на основе данных из таблиц текущей базы данных, таблиц внешних источников данных SQL или OLAP, а также произвольных таблиц из памяти.
В тексте запроса, написанного на языке, являющемся подмножеством языка SQL, можно указать места вставки полей выбора, выбора и сортировки.
После настройки отчета СКУД преобразует шаблон запроса в конечную форму, отправляемую на сервер базы данных.
В этом случае СКУД вычисляет ненужные для результата поля и временные таблицы запроса и исключает их из запросов; 3.3. Возможность разработки под Windows и Linux, на русском и английском языках.
Вы можете запускать приложения на Windows, Linux, через веб-браузер, iOS, Android. При этом для выполнения функционала 1С в браузере выполняется автоматический перевод с языка 1С на JavaScript; 3.4. Использование собственного языка запросов позволяет приложению работать с любой из следующих баз данных: Microsoft SQL Server, Oracle Database, IBM DB2, Postgre SQL, файловая база данных 1С.
Для корректной работы с версионными базами данных Oracle и Postgre используется собственный механизм блокировки; 3.5. Использование UUID в качестве идентификаторов строк в базе данных позволяет упростить задачи интеграции различных систем 1С между собой; 3.6. Механизм внешних компонентов, позволяющий создавать компоненты на C++ для различных ОС и браузеров, поддерживаемых платформой; 3.7. Ограничение прав доступа на уровне записей с помощью шаблонов запросов, что дает неограниченные возможности по тонкой настройке прав; 3.8. Полное отделение структуры базы данных от структуры приложения.
Имена таблиц и полей базы данных генерируются автоматически, что, во-первых, вынуждает использовать механизмы интеграции платформы, а во-вторых, позволяет сделать нормальные названия элементов структуры приложения (метаданных) на русском языке; 3.9. Механизм распределенных информационных баз, позволяющий создавать неограниченное количество узлов текущей информационной безопасности, в которые будут загружаться изменения данных и изменения конфигурации, и из которых они будут загружаться.
А самое приятное то, что ее разработчики не боятся двигаться вперед и решать весьма амбициозные задачи.
На мой взгляд, платформа 1С возникла в очень удачный момент времени – производительности и объема памяти компьютеров стало достаточно для реализации очень смелых проектных решений, пусть и не всегда оптимальных.
4. Разработчики
Изначально платформа разрабатывалась для того, чтобы позволить людям, далеким от программирования (даже без технического образования), модифицировать систему.Это справедливо для платформы 7.*; это было очень компактно, понятно, хоть и немного запутанно.
С выходом 8.0 планка для разработчика была поднята очень высоко, и учитывая все, что есть в платформе 8.3, можно с уверенностью сказать, что специалисту без технического образования стать хорошим разработчиком практически невозможно, хотя Само понятие хорошего разработчика в среде 1С весьма расплывчато.
Объем типовой конфигурации УПП ~3 миллиона строк кода, не считая структуры базы данных, макетов отчетов, ролей и т.п.
Отсутствие строгой типизации и русского языка просто привлекают многих людей, далеких от программирования, что-то изменить, в результате чего что-то перестает работать.
Отсюда и появление термина «программист 1С» как низшей касты среди разработчиков.
Сами разработчики платформы в какой-то мере способствуют такому положению дел, иначе бы они давно исключили построитель запросов из конфигуратора.
Более или менее сложные запросы, написанные с его использованием, являются прямыми кандидатами на govnokod.ru .
1С – это другое.
Можно работать в не ИТ компании, можно работать в ИТ компании, можно даже работать в самой 1С.
И 1С во всех этих местах разная.
Если вы работаете в крупной компании-франчайзи, то работа программиста мало чем отличается от работы в других ИТ-компаниях.
Одно из заблуждений состоит в том, что хороший программист 1С должен знать бухгалтерский учет. Категорически нет, бухгалтерский учет должен знать аналитик бухгалтерского учета, учет производства и затрат – аналитик управленческого учета, расчет заработной платы – аналитик учета заработной платы.
Разработчику 1С необходимо ровно столько знаний в вышеперечисленных областях, чтобы понять, чего от него хочет аналитик.
Точно так же, как системный программист должен знать основы работы ОС, а веб-программист должен знать основы верстки.
Но что должен знать хороший разработчик 1С: 4.1. Принципы работы СУБД, планировщик запросов, блокировки; 4.2. Минимизация обмена данными между клиентом, сервером приложений и базой данных; 4.3. Недавно появилась работа с COM, ADO, XML, SOAP, REST API. Конечно, чтобы писать качественный код, не обязательно читать литературу, связанную просто с технологией разработки ПО, а еще лучше иметь опыт разработки на других языках программирования.
К сожалению, подавляющее большинство программистов 1С об этом даже не догадываются.
5. Проблемы с платформой
Несмотря на все преимущества, у платформы есть проблемы.Причём многие из них не решаются десятилетиями.
5.1. Отсутствие опций плагина в конфигураторе.
Существует проект openConf для платформы 7.7. Для 8.* есть проект «Снеговик».
Но это все на самом деле хаки, что очень печально сказывается на возможности их использования и качестве поддержки; 5.2. Низкая производительность виртуальной машины под управлением p-кода, т.к.
не используется двоичная трансляция.
Сейчас это обстоятельство начало влиять на подходы разработчиков типовых конфигураций из 1С — запросы стали использоваться повсеместно; 5.3. Отсутствие возможности тонкой настройки структуры базы данных и запросов к конкретной базе данных.
Например, дополнительные индексы приходится добавлять с помощью инструментов базы данных, что является нарушением лицензионного соглашения; 5.4. Отсутствие возможности наследования между обработками, что позволило как-то компенсировать отсутствие ООП.
Проект openconf для версии 7.7 имел эту функцию и был ею очень доволен; 5.5. Использование собственного хранилища конфигураций.
В этом случае всю конфигурацию можно заливать/скачивать в формате xml, но при каждой закачке/закачке не анализируются изменения в файлах, поэтому все файлы в каталоге тупо перезаписываются, что, во-первых, делает процесс долгим (для SCP настройки тома, около 15 минут), а во-вторых, делает невозможным использование системы контроля версий.
Эта проблема решена в openconf версии 7.7; 5.6. Нет возможности получить номер строки образца в запросе, хотя в основных базах данных эта функция есть (ROW_NUMBER для SQL Server), хотя для других баз данных платформа могла бы сделать необходимое левое соединение с примечанием о производительности в документации, как это сделано для других конструкций языка запросов; 5.7. Отсутствие концепции проекта в конфигураторе, которая могла бы помочь с переносом изменений из тестовой среды в производственную среду; 5.8. Стандартный механизм обновления конфигураций использует простое сравнение текстов и объектов, а не слияние, хотя внутри конфигурации присутствует старая версия стандартного функционала.
Фирма 1С знает о многих из этих проблем и уже давно готовит новый конфигуратор, написанный на платформе Eclipse, но когда он наконец выйдет, никто не знает. В следующей публикации я попытаюсь объяснить недостатки типовых решений от компании 1С на примере старой флагманской конфигурации «Управление производственным предприятием», особенно с учетом выхода нового флагмана «ERP Управление предприятием 2.0».
Теги: #1с #программирование #программирование #1С-Битрикс
-
Настройка Jvm На Примере Одного Проекта
19 Oct, 24 -
Агрегация И Осведомленность
19 Oct, 24