Pull to refresh

Comments 22

Можно я покритикую?
Хабр вроде технический сайт, а здесь советы вида:
1. Создайте проект
2. Напишите там код
3. Купите наш продукт
4. Не забудьте про мобильных пользователей
5. Продавайте
6. Поддерживайте
Может, лучше на Мегамозг?
Планировал эту статью как вводную для более программистских статей на эту же тему. Хотелось бы, чтобы они были в связке на одном ресурсе. Тема оказалась достаточно обширная.
Как по мне то весь этот огород поддерживать будет невозможно. Так что 7 пунктом будет закрытие проекта.
Огород-то небольшой: 1С + Asp.Net.
Очень много интернет-магазинов со связкой 1С + Битрикс, поддерживают как-то. Но в случае с Битриксом еще обмен присутствует, который тоже нужно поддерживать.
Как по мне то большой. К тому что вы написали нужно добавлять 1С + Asp.Net + IIS(Apache) + Ваша компонента + frontend(и не просто html+css+js, вы используете bootstrap+jquery). Это ж сколько разных технологий нужно значь что обновить это все к актуальным версиям. Думаю в веб-мире уже придумана куча модулей для администрирования и как по мне это будет более правильным решением.
По поводу 1С + Битрикс то в моей компании тоже хотели задействовать эту связку, но отказались ввиду сложности настройки обмена с Битриксом(нам нужно было получать данные в реальном времени, а не через выгрузки в xml) в конце концов подняли обмен с сайтом через веб-сервисы и горя не знаем.
Если сравнивать с Битриксом, то огороду у Битрикса (и у других CMS) не меньше: 1С + PHP + Apache + обмен + стили Битрикса. Мало кто переживает по этому поводу, потому что отдельно заказывают фрилансеров 1С и отдельно Битрикс. 1С-ников найти достаточно легко за сносную оплату. А вот знающих Битрикс встречается значительно меньше. Битрикс со временем стала очень сложной системой со множеством взаимосвязанных частей и ограничений. Некоторые изменения там просто не реализуемы.

В веб-мире не может быть кучи модулей для администрирования. Потому что модуль подразумевает встраивание в систему управления модулями (CMS), а администрирование подразумевает жесткую привязку к структуре данных, которая может быть вообще любой.
Важно писать сразу управляемое приложение на управляемых формах. Такой подход позволит в будущем опубликовать интерфейс через Интернет. 1С с версии 8.2 позволяет работать с проектом из Интернета.


Важно писать под Вэб интерфейс тогда уж… можно на УФ нарисовать то, что не будет работать через «интернет». Избавляться от модальности и т.д.
Если остановиться на шаге 2, то нужно шлифовать веб-интерфейс 1С.
На следующих шагах 1С используется в качестве административного интерфейса для настройки и модерации веб-проекта. Администраторам проще установить тонких клиентов с доступом через веб-адрес. Тонкие клиенты превосходят веб-интерфейс 1С по скорости и функциональности. Именно поэтому не заостряется внимание на развитии веб-интерфейса 1С.

Управляемые формы скорее упрощают дальнейшую связку 1С с Asp.Net через Business Connector или COM, так как УФ заставляют разработчика 1С мыслить в клиент-серверном направлении. Они вынуждают писать серверные процедуры и функции 1С и продумывать вызовы через простые типы.
Единственное преимущество 1С заключается в том, что ежеквартально обновляются формы регламентированной отчетности для сдачи налоговых и прочих деклараций, ввиду прямой связи между отчетностью и продажами, вести учет последних в 1С оправдано целесообразностью.

Однажды, будучи работником в организации специализирующейся на обслуживании 1С, вынужден был реализовать букмекерский учет. Реализовал с нуля, достаточно удачно, за относительно небольшие для клиента деньги. Но по сравнению с аналогичными системами реализованными на C/Delphi решение на 1С было убогим, несмотря на то, что выжал практически все — вплоть до написания внешних компонент, одна из которых для, примера, позволяла осуществлять «мега» оперативные обмены данными (изменения в центральной базе моментально, речь о нескольких секундах, применяются на всех региональных периферийных). Вы вероятно занимаетесь 1С относительно недавно, и, как писали имеете опыт C#, поэтому испытываете амбиции, применяя знания основ программирования полученных при разработке на С# к 1С, узнавая все больше нового об этой платформе, и приятно расслабляетесь используя встроенные объекты 1С, вместо того, чтобы кропотливо создавать аналог, например, регистра накопления в качестве объекта проекта на C#. Проще скажу — можно шахматы на 1С написать, но какой в этом смысл? Минус — отсутствие производительности как таковой (*1), ограниченные возможности UI, отсутствие техподдержки (*2), ужасающий факт при некоторых обновления платформы получить «кирпич» вместо работающего до этого рабочего решения (и как следствие срочного отката обновления платформы обратно *3), и еще много минусов можно привести. А плюса всего два — быстрая разработка, и хороший «откат» от 1С за продажу их ПО (если память не подводит 50% возвращаются франчу).

Резюмируя, Вашу статью можно сократить до «хороший стартап — стань очередной фирмой обслуживающей ПО от 1С».

— *1) поясню — 80 гигабайт данных о продажах в разрезе 9 параметров выбираются из таблиц 1С в базе SQL прямым запросом и загружаются в QlikView порядка 20 минут, после чего данные в последнем фильтруются по любому из этих 9 параметров моментально (будучи единожды импортированным) — вопрос почему 1С сама не может реализовать подобное хранение данных с целью быстрого доступа к ним? это риторически…

*2) попробуй для начала сообщить 1С о том, что в нашел баг в очередном релизе платформы… сам знаешь сколько надо заплатить абонплаты, чтобы это сделать. ну а информация об исправленных багах вообще закрытая для всех без исключения.

*3) для примера — была создана база для розничных магазинов. обменивалась с базами данных на кассах (Штрих-М Кассир) пакетами (архивы с данным). Вышло очередное обновление платформы 1С и имена файлов в архивах стали «битыми» — русская кодировка перестала поддерживаться. 70 магазинов остановились. В синтакс-помощнике есть упоминание про недопустимость использования национальных алфавитов при некоторых условиях. Наши программисты проверили, условия не распространяются. Реализовали. А через 1.5 года условия вдруг стали распространяться. Что это было — ранее была ошибка в коде платформы или сейчас возникла ошибка?!
Быстрое создание проекта вы тоже отметили. Для стартапа это плюс — получить как можно быстрее прототип, показать владельцу и клиентам идею.

Достоинство 1С еще и в том, что она очень распространена, и в 90% случаев о ней слышали везде. Это означает, что для проекта указание «Совместимо с 1С» является ценностью. Именно так поступает Битрикс.

Чтобы не заботиться о багах платформы, мы стараемся не обновлять платформу и работаем на старой версии до последнего. Последний раз обновились на 8.3.5 из-за добавленных хешей 1С, а потом до 8.3.5.1570 из-за ошибок отображения списка планов обмена.

Компанию 1С не ругает только ленивый. Я тоже этим занимаюсь, чтобы 1С не расслаблялась. Но, нужно также отдать должное 1С. В последнее время она стала более отзывчивой. Скорее всего, воздействие оказал ее выход на Запад в англоязычную среду. В Европе и США публика привередливая, и с существующим подходом 1С не смогла бы конкурировать.
Как тут не ругать 1С с ее политикой лицензирования и требования платы за каждый чих. У меня была коробка полученная от 1С когда на их олимпиаду съездил, но с софтовым мать его ключом, который на каждый чих слетает + забыл введенные данные при его регистрации и платформа превратилась в тыкву. А зарплата начинающего специалиста никак не позволит приобрести аппаратный ключ для экспериментов дома (учебная версия какая то древняя + только под win). Чтобы скачать ту же последнюю версию БСП или другой какой то библиотеки — нужна ИТС судя по всему, которая тоже не 3 копейки стоит. Был шум про IDE на Eclipse основанную, вот только нужна та же ИТС. Хочешь почитать документацию — ИТС. А уж процедуру сообщения в 1С о багах платформы вообще не представляю.
1C сделали версию для обучения бесплатной. В нее входят материалы методической поддержки 1С: ИТС для разработчиков. Вроде, идут на встречу.
«Хм, еще недавно учебная версия это в лучшем случае 8.3.3 была, сейчас версия догнала актуальную, это радует, еще бы не только под win…

А смысл от ИТС для разработчиков, если ту же EDT по нему не скачаешь? Каким бы eclipse не был, конфигуратор он превосходит. У меня так то нет опыта с чем то кроме 1С, так, игрался с eclipse немного, и, по моим воспоминаниям, он хоть и подтормаживал, но возможностей больше имел. Я уж не говорю про нормальные системы контроля версий. Правда есть опасение что с ним вообще сервер 1с для разработки потребуется, в таком случае он превращается в тыкву для разработчиков у которых нет средств на серверную лицензию.» Neikist
Про Eclipse я, честно говоря, не понял 1С. Они там пытаются повторить конфигуратор. Я работал с Eclipse для Java, не скажу, что это очень комфортная среда. И, главное, язык программирования там остался 1С.
У меня есть альтернативное предложение: Visual Studio + С#, транслируемые в 1С. В такой связке и IDE комфортная и язык позволит конфигурации на модули разбить через классы и наследование.Но эта альтернатива требует очень много ресурсов.
Я занимаюсь разработкой на 1С последние 12 лет. Участвую в разработке конфигурации для биллинга, наша конфигурация работает по всей РФ в общей сложности обслуживает порядка 80 000 000 абонентов.

Отвечу кратко на вопросы.

1. «Почему 1С сама не может реализовать подобное хранение данных с целью быстрого доступа к ним.»
Вы точно так же в 1С можете создать отдельную таблицу (регистр) в которую выгружать уже готовые данные, это так же займет 20-30 минут. Затем указать регистр в качестве источника для динамического списка. При этом отборы, сортировка будут выполнятся мгновенно, плюс как бонус вам будет доступна группировка и условное оформление списка.

У нас в базах есть таблицы с историей за 8 лет там миллиарды записей при этом динамический список с ними корректно работает, конечно не мгновенный отклик но в пределах 5-6 секунд накладывается отбор.

2. «попробуй для начала сообщить 1С о том, что в нашел баг в очередном релизе платформы… сам знаешь сколько надо заплатить абонплаты, чтобы это сделать. ну а информация об исправленных багах вообще закрытая для всех без исключения.»

Я не совсем понял в чем конкретно проблема. В том что нужно платить абонентскую плату?
При наличии подписки на ИТС и официально купленной лицензии для того что бы зарегистрировать ошибку платформы достаточно просто отправить электронное письмо на адрес поддержки 1С.
В течении часа приходит сообщение что ошибка зарегистрирована.
Так же есть трекер на котором видно все зарегистрированные ошибки, их статус, планируемые даты исправления. (https://bugboard.v8.1c.ru/)
Так же мне например на почту приходят зарегистрированные ошибки:
Пример:
«Формат редактирования числа
Код ошибки: 10140287 Исправлена в тестовой версии (8.3.8.43) Код(ы) обращения: TP#3461
На устройствах под управлением ОС Android не работает вторичная группировка в формате редактирования числа.»

Более того на партнерском форуме можно задавать вопросы и обобщатся непосредственно с Сергеем Нуралиевым (Главный архитектор платформы).
Так что с поддержкой у 1С все хорошо.

3. «А через 1.5 года условия вдруг стали распространяться. Что это было — ранее была ошибка в коде платформы или сейчас возникла ошибка?!»
Ну конечно такое ведь только в 1С может быть, другие платформы и компоненты всегда абсолютно стабильны и проблем с обновлением в ИТ мире не существует?

Что бы таких проблем не было перед обновлением тестируют функционал на новой платформе, точно так же вы не станете использовать новую версию компонента DELPHI сразу в продакшен? Так почему вы решили что платформу не нужно тестировать перед тем как накатить на 70 магазинов.

У нас например больше 6000 установок нашей конфигурации, она так же работает со сканерами ШК, ФР, экваринговыми терминалами, картридерами для спец. смарт карт, поставляет данные для как минимум 40 разных систем (в основном через SOAP/XML/DBF) и еще много чего еще. Есть конечно проблемы но вот так что бы базы по всей РФ остановилась такого никогда не было, в редких случаях были проблемы с редкими операциями да и то только на тестовых стендах в пилотных регионах.

От себя добавлю по поводу производительности.
Производительность языка 1С особой роли не играет т.к. основная нагрузка это запросы к БД при этом запросы в основном транслируются на субд 1:1.
Единственный момент который косвенно влияет на производительность то что 1С не использует все возможности конкретной СУБД т.к. заточена на использование разных СУБД.

Что бы таких проблем не было перед обновлением тестируют функционал на новой платформе, точно так же вы не станете использовать новую версию компонента DELPHI сразу в продакшен? Так почему вы решили что платформу не нужно тестировать перед тем как накатить на 70 магазинов.

По качеству работы релиз от компании 1С фактически равноценен бета-версиям или релиз-кандидатам от крупных зарубежных компаний.

Производительность языка 1С особой роли не играет т.к. основная нагрузка это запросы к БД при этом запросы в основном транслируются на субд 1:1.

Прямая запись в обход 1С дает увеличение производительности в 50-100 раз. С трансляцией запросов на чтение тоже не все гладко: когда обрабатываются значения нескольких типов, субконто или планов видов характеристик.
Производительность языка 1С начинает играть роль при использовании 1С в качестве веб-сервера.
«Прямая запись в обход 1С дает увеличение производительности в 50-100 раз.»

Вы вероятно смешиваете понятия 1С и ORM когда вы напрямую используете update вы обходите не 1С вы обходите уровень ORM.

Приведу пример.
Есть справочник в нем 1 000 000 записей, нужно написать обработку обновления до нового релиза. Алгоритм такой:
Если Field1=15 тогда Field2=null
Если Field1=10 тогда Field2=12
Иначе Field2=Field1.

На 1c мы вынуждены обойти все 1 000 000 записей
— считать из базы объект
— изменить объект
— записать объект

Это займет допустим 9 часов.

На SQL то же самое можно сделать за 4 минуты вызвав update.

Казалось бы преимущество за SQL?

Но если копнуть глубже то окажется что во первых:
У части заказчиков есть свои подписки на запись объекта которые делают изменения в других объектах.
Нужно регистрировать изменение объекта что бы потом отправить их в подчиненные узлы РБД
При записи объекта происходит анализ его содержимого и в транзакции записи меняются другие объекты.
Дополнительно нужно проверять права а имеет ли пользователь инициировавший этот алгоритм права на доступ к полям Field2, Field1.
Так же нужно вспомнить что часть клиентов работают на Postgree другая на DB2 и есть 2 клиента которым пока хватает DBF.

В итоге получается что UPDATE он конечно быстрее но по факту он и проще значительно.
И зачастую лучше подождать 9 часов на ORM системе чем распутывать клубок для написания прямого запроса.
Любая ORM система (не только 1С) всегда уступает прямому доступу к данным но при этом значительно можно упростить реализацию бизнес логики.

По поводу чтения, с составными типами тяжело работать как через ORM так и через прямые запросы.

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

В 1С любая домохозяйка может нащелкать флажков и потом удивляться что запросы долго работают. Так как простой с виду запрос платформа превращает в сложный(он объективно сложный и проще его сделать нельзя, т.е. это не проблема платформы).
Вы вероятно смешиваете понятия 1С и ORM когда вы напрямую используете update вы обходите не 1С вы обходите уровень ORM.

Я не призываю бездумно пользоваться прямым чтением/записью. Понятно, что прежде чем что-то предпринимать, нужно хорошо подумать.
Для групповой пометки на удаления документов с отменой проведения, например, прямой доступ чаще всего вполне сгодится.
В последних версиях платформы 1С, сделали встроенный сервер, хотя, может я не правильно понимаю:
Встроенный веб-сервер

Новый вариант кластера серверов версии 8.4.1 более не требует стороннего веб-сервера. Веб-сервер теперь встроен в специальный компонент — шлюз кластера, тесно интегрированный с новым балансировщиком нагрузки и реестром кластера.
Балансировщик нагрузки

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


Асинхронная обработка в 1с возможна: http://kb.mista.ru/article.php?id=696

По JSON тоже что-то добавили:
В версии 8.4.1 реализован специальный сервис управления кластером, предоставляющий программный веб-интерфейс (REST API) для настройки кластера и управления кластером. Все данные передаются в формате JSON, что делает возможным интеграцию кластера «1С: Предприятия» с любой инфраструктурой и не ограничивает выбор технологий для интеграции.


Вопрос: можно ли на http сервисах 1С сделать полнофункциональный сайт (без публикации интерфейса)?
Технологическая платформа 8.4, версия 8.4.1.445
Релиз, опубликованный на данной странице, предназначен только для тестирования!

Вопрос: можно ли на http сервисах 1С сделать полнофункциональный сайт (без публикации интерфейса)?

А почему нет? По сути это те же Вэб сервисы только возвращающие html код
На текущий момент очень трудоемко. Штатно не решены проблемы: кэша, уязвимостей, нет гибкой настройки. Самостоятельное решение упрется в медленную скорость 1С.
По идее и в 8.3.5 есть http-серисы, но 1С может использоваться в веб только для очень ограниченного круга задач. В основноа для интеграции с другими системами.
1. Мероприятия по оптимизации под поисковики будут ограничены: у URL есть префикс
2. Медленный язык 1С увеличивает время отклика веб-сервера
3. Нет штатной реализации гибких кэшей, проверок на безопасность

1С всегда будет уступать популярным веб-серверам Apache и IIS даже по числу людей в сообществах. Как следствие, если сейчас искать решение возникшей проблемы для IIS, то с вероятностью 99% уже в интернете есть решение. А в 1С такой информации не будет. А в быстро меняющемся мире веб такие проблемы возникают постоянно: от новых MIMI-типов до интернациональных доменных адресов.

По JSON тоже что-то добавили

Поддержку JSON они добавили ранее, так как сериализация скриптами 1С работала минутами.
Sign up to leave a comment.

Articles