Pull to refresh

Comments 109

История о том, как братья не хотели купить лицензию на плохой английский вasic, и написали свой, и что выросло - с тем и мучаемся ...

Вы, наверное, просто статью не прочитали. Которая вся посвящена тому, что есть в Платформе помимо языка программирования

там есть и всегда был плохой английский basic. Но из-за того, что документация по умолчанию использует русскоязычные варианты синтаксиса, а также существенная часть кода уже написана на русском (типовые конфигурации) — он не прижился.

Он не прижился потому что он не удобен и не нужен. Какой смысл писать на английском когда удобнее оперировать теми же понятиями что и твой заказчик? Зачем вспоминать как там будет *оборотно-сальдовая ведомость* или *воронка продаж* или любое другое понятие введённое в словарь конкретного предприятия?

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

Лучше про "новинки" рассказать, Исполнитель там, система взаимодействия, вот это вот всё

Про это тоже можно.
+ в список новинок платформа для разработки сайтов "1С:Элемент".

У 1С документация платная.

Вы уверены, что не нарушили никакого правила?

Платным является только использование портала ИТС. В данной статье нет ничего "секретного".

У 1С документация платная

Серьёзно?..

Бесплатную документацию с бесплатными книжками, бесплатную учебную версию платформы и бесплатные учебные типовые конфигурации можно найти и бесплатно скачать на сайте 1С в разделе "Бесплатное": https://online.1c.ru/catalog/free/learning.php

Да, кстати, - а кириллический домен у них есть? :)

Не помню когда именно, вроде с лета прошлого года, но документация разработчика уже бесплатна для всех кто зарегистрируется на developer.1c.ru.

Там написано:


Бессрочные комплекты для разработчиков с сертификатами 1С

а получение сертификата тот еще затратный путь, так что о бесплатности тут как-бы неправильно говорить.

При чем тут комплект разработки? Я говорил про техническую документацию на ИТС. Комплект разработки качается с online.1c.ru учебная версия и учитесь. Для работы необходима полноценная платформа и она покупается. Для специалистов, которые внедряют и поддерживают крупные проекты, могут приобрести полноценную платформу для себя со скидкой.

Статья похоже что пытается привлечь внимание новичков к платформе, для полноты формируемого представления было бы круто рассказать, как мне кажется, про показатели качества выпскаемых релизов платформы и типовых конфигураций (или почему среди людей сопровождающих 1с не принято ставить последние обновления, а "отставать" на 2-3).

Качество сильно страдает в основном из-за законодателей. Сегодня выпустили закон, а реализовать нужно вчера. Да и вообще оно у нас сложноватое. С ковидом сколько такой фигни вылезло например. Или маркировка, тут тоже нельзя сказать, что то, что творилось на старте-это вина разработчиков типовых.

Если бы не переменчивость и витиеватость законодательной базы и форм отчетности, никакого бы 1с и вовсе не было бы.

Надо все же сравнивать сравнимое. Помню муки одного крупного дистрибутора при внедрении Axapta. Про SAP вообще ходит присказка, что это месть германского народа за вторую мировую)

Вот я примерно об этом и говорю, подход "Не смотрите что я писаюсь, Васичкин вообще какается" считается в этой экосистеме нормой.

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

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

А админы сразу свежий патч на виндовс накатывают? А потом думают как откатить назад?

В любом сложном проекте есть место ошибкам. На то они и сложные проекты

Чего точно хотелось бы в 1с, это событий изменения свойства.

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

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

Подписаться на изменение данного прикладного объекта нельзя?

Платформа позволяет подписаться на: 1) запись всего объекта в БД 2) на интерактивное изменение значения в поле, которое связано со свойством объекта (в контексте формы), но ни один ни второй вариант не решат проблему @Naf2000.

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

Собственно, наличие событий изменений свойств само по себе проблему тоже не решит - упрется в то, что нужно будет или переписывать логику типового решения, либо ждать пока это сделает сам вендор.

На самом деле, не обязательно дублировать код. Достаточно разместить его в общем модуле КлиентСервер. Это, конечно, костыль, но работает =)

Только при этом придется еще и типовой код переписывать и в будущем все его изменения самостоятельно поддерживать. А в этом случае уже все равно - есть возможность подписаться или нет.

Я имею ввиду возможности самой платформы. Если идёт разработка своей конфигурации. А с изменением типовых конфигураций, конечно, сложнее.

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

На чем написана платформа, компилятор? Была ли раскрутка компилятора?

Если вы о языке внутри платформы для 1с программистов — то это интерпретатор, компиляции там нет (есть, правда, псевдокод — но, насколько я знаю, никакой оптимизации в нем нет — т.е. чисто как вариант представления кода). Если о языке, на котором саму платформу писали — то, судя по сообщениям, когда она аварийно падает — это C++ (ругается на строки в файлах .cpp), а еще в комплекте установочных файлов видел vc_redist (т.е. собрано на visual studio).

Больше всего, наверно, хакали платформу с целью допиливания удобных фич вот эти ребята — snegopat.ru. Думаю, если не считать саму фирму 1с — то они знают о внутренностях больше всех.

Рискую быть заминусованым, но ответьте кто-нибудь, пожалуйста, как обычный человек становится 1С программистом? Это не камень в огород, просто почему из всего разнообразия языков\фреймворков\стеков, кто-то принимает осознанное решение работать вот в этом?

PS а статья отличная, спасибо. Как "классический" программист с интересом почитал

Их в институтах готовят на специальностях типа «прикладная информатика в экономике». То есть они в первую очередь бухгалтеры/экономисты/финансисты — а 1С им дается сразу как инструмент. В целом, это разумно — потому что когда они придут на предприятие — там будет 1С с вероятностью 99.999%
UFO just landed and posted this here
Ну что тут сказать? Россия — страна контрастов…

В 1С очень низкий порог входа, учил Java около года, может быть даже Джуном смог бы работать. Но найти работу без опыта по моему не реально, во всяком случае в моем городе, вакансии были не менее мидл. Я когда с сисадминов решил уйти в программисты, основы 1С изучил месяца за три и потом устроился на работу во франч, по большому счету за чашку риса. Но через полгода франча уже работал в организации штатным программистом. Может когда-нибудь и получится уйти в Java.
Но то что 1С очень низкий порог входа это факт, может от этого и жуткого кода куча. Особых проблем при написании кода на русском не вижу. Единственный плюс английского, на нём код короче получается, так как на английском слова обычно короче русских.

Весь код можнно писать и по-английски - это поддерживается платформой.

И даже смешанно можно :)

Я вижу и другие плюсы в английском варианте 1С-кода (а вот об озвученном вами совершенно не задумывался):
  • Намного привычнее видеть в листинге именно английский, глаза сами цепляются за знакомые while, for, and, if, function, etc.
  • Существительные в английском не надо склонять, у глаголов побудительное наклонение совпадает с инфинитивом и т.д.
  • Читая русскоязычный текст, я — чисто по привычке — ожидаю хотя бы некоторого соблюдения норм русского языка. Синтаксических, в первую очередь.
  • Следствие из предыдущего пункта: так как я, к счастью, очень редко вижу подобные листинги, машинально воспринимаю их как работу PROMPT'a и машинально же пытаюсь «реверснуть в исходный», а это отнимает силы и время. Да и просто фрустрирует — пытаюсь разглядеть алгоритм, а занимаюсь чёрт знает чем.

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

Ну в копилку историй могу свою написать. Работал сначала инженером-программистом (скорее, инженером), затем начальником ИТ-отдела компании, пусть и немаленькой по числу людей, но совсем не связанной с ИТ, да еще и муниципальной. В принципе, в то время зарплаты были для недавнего выпускника вуза вполне неплохими. Но года 4 назад понял, что нужно что-то менять в жизни. Учитывая, что 1С на прошлом месте водились, причем помимо типовых ЗУП и Бухглатерии были и самописные системы, пошел искать варианты как начальника (вакансий почти не было и с улицы устроиться было почти нереально), так и программиста 1С. В итоге поменял работу с повышением в зарплате, а спустя год-полтора уже получал еще вдвое больше.

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

На фирме, в которой работал, использовали 1С. Модернизацией и обслуживанием конфигурации занималась 3-я фирма. Со временем, чтобы не ждать выполнения работ со стороны 3й фирмы, стал внедрять какие-то изменения самостоятельно. Так, постепенно, разобрался в конфигурировании этого приложения.

как обычный человек становится 1С программистом?

Раньше спрос и доход у 1С программистов был значительно выше, чем на тех же PHP и JS кодеров.

А кто-то выбирает SAP, Axapta, Navision, под разные задачи разные инструменты. где-то лучше такие системы как 1С, где-то "классические" языки\фреймворки\стеки

В свое время человеку из регионов стать каким то другим программистом не 1С было практически без шансов. Ибо другие программисты там не особо нужны.
Я думаю в маленьких городах и сейчас так. Хотя удаленка потихоньку берет свое

Я стал потому что жизнь заставила. В один момент очень давно поменяли НДС на 18% с 20% а поправить код было некому. В то время была 1С 7.7 и ставка гуляла в хардкоде, изменение в справочнике не помогало. Пришлось садиться и разбираться, потом втянулся. Сейчас занимаюсь микросервисами на Java, но 1С тоже не бросаю (а точнее клиенты не дают). Никогда не понимал почему есть 2 разных мира: разработка и 1С разработка. Мне кажется это разное в головах. Или не знают 1С и судят или не знают ничего кроме 1С и тоже судят. 1С конечно имеет много недостатков, но при этом и огромное количество преимуществ. Может эта статья немного сблизит два мира.
Еще бы статью в виде сравнения механизма решения каких-то несложных задач: как решить классически и как в 1С - было бы супер.

Скажу честно, мне просто понравилось разрабатывать/дорабатывать конфигурации в 1С, изучал изначально совершенно другие ЯП, душа просто лежит

Поделюсь своим относительно небольшим опытом (3 месяца обучения и 4 месяца работы по сей день) попадания в 1С. Считаю нужным уточнить: я второкурсник очного отделения вышки на IT направлении, с корочкой СПО и армией за плечами. Почему и как 1С.

  1. Низкий порог вхождения. Компания, в которой я сейчас работаю, предложила: бесплатное обучение, ментора, гарантию трудоустройства (с необходимостью отработать на них 2 года), удаленку, возможность совмещения с очной учёбой и стипендию (но она выплачивалась уже после окончания обучения в + к окладу). При этом компания не требовала практически ничего: было только собеседование с HR, который оценил мою адекватность и мотивацию к работе. После обучения при трудоустройстве был более серьезный собес с системным архитектором и непосредственными руководителями, но и он был сравнительно простым.

  2. Относительно неплохая ЗП для студента с кристально чистой трудовой: 23к на должности стажера (2 месяца) и 30к оклада после официального трудоустройства.

  3. Возможность роста: компания предоставляет доступ к платной документации ИТС и курсам подготовки к сдаче экзаменов 1С Профи и Специалист. Сами экзамены так же оплачивает компания, а в случае успешной сдачи – повышает ЗП.

  4. Неплохая востребованность на рынке.

  5. Опыт работы на крупном проекте: я попал в команду сопровождения государственного предприятия, имеющего филиалы по всей России.

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

    Мысли перебраться во что-то более современное не отбрасываю, параллельно изучаю другие сферы, но что из этого в итоге получится – не знаю :)

Походил по собеседованиям, взяли только в туда :)

Через год звонков клиентам пропала скованность, смог нормально собеседования проходить

там всё верно сказали, до 2014 года зарплата была у 1сников сравнимой и даже выше чем у phpшников и java программистов, причем к началу 2014 года она условно сравнялась, а в нулевых, во времена всеобщей автоматизации те кто немного умел менять надписи в полях макетов печатных форм мог точно не переживать, что останется голодным.
1с лично для меня стал проводником в мир программирования, который казался чем-то невероятно сложным и в универе я его познавал исключительно зазубриванием паттернов.

Сейчас пишу на 1с свободно, параллельно пишу всякие штуки на python и в котлин с простейшим приложением въехал за 3 дня.
Недавно в мире python открыл для себя jupyter notebook мне просто нравилось перед сном всякие графики со своих 1совских баз строить и скидывать руководству всякие зависимости, но в итоге прошел курс по СКД встроенному в 1с и да, jupyter крут, но данные в СКД вертеть веселее и проще, пусть и не так просто делать это с айпада.

Когда я решила переходить в айти, то учила Java. Но по окончанию обучения в мои 42 года меня были рады видеть только в 1С. Чаще встречала подобные случаи. Но бывает и "по любви".

UFO just landed and posted this here

Звучит очень грустно. 35 лет - далеко не приговор, не отчаивайтесь. Знаю много людей которые в 35+ ушли в айти и почему-то в iOS. Посмотрите популярные направления, тот же веб-фронтенд, простое портфолио уже дает очень много шансов на собеседование.

Но мне интересно, можно, пожалуйста, поподробнее что именно в 1С Вам не нравится? Хочу понять, именно сам инструмент не удобен и плохо решает свою задачу, либо просто подходы плохо матчатся с тем что общепринято в IT?

Проблема 1С заключается в том, что традиционно для Win/X86 решений — оно пытается быть сразу всем и «вещью в себе». Например:

— Вы не контролируете схему данных, которую 1С создает себе в БД. Оно само решит как называть таблицы, где будут индексы, сколько будет полей, и т.д. Классические программисты, конечно, привыкли уже к ORM — но не до такой степени чтобы вообще никак не влиять на этот процесс.

— До недавнего времени, конфигурация (формы, метаданные БД, коды) была большим блобом, который нельзя хранить в системе управления версиями. Сейчас какое-то управление версиями есть (как я понял, внутри 1С прикрутили git), но опять-же это вам не maven, где приложение собирается через pom-файлы с возможной подгрузкой компонентов через репозиторий.

— Делать интеграции с внешним оборудованием — б-э-э. Не система это реального времени, и время исполнения непредсказуемое. Ну потому что у ней внутри свои потоки, планировщик, и целая куча всего — к чему вы доступа не имеете.

В целом, мой вывод такой — если вы собираетесь иметь дело с автоматизацией российской бухгалтерии или российского же производства/торговли — берите 1С без раздумий. Стандартные конфигурации будут достаточно актуальными для законодательства, а справочники/регистры учета являются на территории РФ стандартом де-факто.

Но если у вас стоит задача не документы проводить/печатать — возьмите лучше платформу общего назначения — хотя бы ту же Java/Spring/Hibernate. Иначе вы будете бороться с волшембным внутренним миром 1С больше, чем решать прикладную задачу.

И наконец — 1С это закрытая платформа. Есть ровно одна компания, которая определяет изменения в релизах платформы и типовых конфигурациях. Нравится она вам, не нравится — если вы выбрали 1С, то вы будете с этим мириться. Я предпочитаю работать с продуктами с открытым кодом — где владелец проекта обычно некоммерческая организация, где есть понятные процессы развития платформы, процессы взаимодействия с коммьюнити, и т.д. Где в крайнем случае (если хозяин платформы сошел с ума — а мы уже знаем, что такое бывает даже с уважаемыми в прошлом людьми) — вы можете хотя бы форкануть проект и жить с ним, занимаясь самостоятельно поддержкой…

Делать интеграции с внешним оборудованием — б-э-э. Не система это реального времени

Так, ведь, она так и не позиционируется.

Работа с внешним оборудованием - это чаще всего торговое оборудование: сканеры, кассы, весы и т.п..

Когда 1С жила в бухгалтерии — это было еще ничего. И действительно, весы, сканер — и этого хватало. Но сейчас оно пытается в рамках ERP поехать прямо на производство. И там тогда надо или разводить целый зоопарк из уровней автоматизации, чтобы 1С оставлась в уютном мире документов — либо пытаться подключать всякую промышленную фигню прямо к системе. Ну то есть, слушать сокеты, отрабатывать проблемы связи и все такое… И в рамках 1С — это тяжко, прямо вот тяжко… Понятно, что теоретически — бери VC и пиши бинарный драйвер для полного счастья, но это опять платформно-зависимо и непереносимо. Я поэтому скептически смотрю на попытки 1С стать полноценной платформой для автоматизации. В мире есть платформы лучше (единственный недостаток — нужно знать английский).

Всё так.

Для управления сложным оборудованием и в режиме реального времени 1С не самая подходящая платформа.

Ну я работал с Axapta и с M3 Infor на промышленных предприятиях, и все равно между оборудованием и этими ERP была система управления производством (SCADA). А еще много где применяются системы складского учета (WMS). Так что мне странно видеть, когда люди все в одну коробку хотят свалить.

Вы не контролируете схему данных, которую 1С создает себе в БД. Оно само решит как называть таблицы, где будут индексы, сколько будет полей, и т.д.

Верен только тезис про нейминг таблиц и полей. Все остальное вполне контролируемо — состав и тип прикладных полей определяет разработчик, системные поля описаны в документации. аналогично с индексами.

1С — это высокоуровневый (относительно СУБД) фреймворк. Поэтому нормально, что он самостоятельно занимается структурой СУБД, пряча детали реализации от разработчика.

До недавнего времени, конфигурация (формы, метаданные БД, коды) была большим блобом, который нельзя хранить в системе управления версиями. Сейчас какое-то управление версиями есть (как я понял, внутри 1С прикрутили git)

Выгрузка текстов модулей была еще в 7.7. В 8.0 реализовали полную выгрузку/загрузку конфигурации. Начиная с 8.2 стало возможным полностью вести разработку в исходных кодах, используя конфигуратор как «компилятор». Практически же, только с выходом EDT — это стало полноценным вариантом разработки.

Собрать проект вообще не проблема:
vrunner compile --src src/cf --out bin/my.cf

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

Частично верно. Только 1С определяет изменения в платформе. Вендоров «типовых» продуктов сильно больше одного, но да самые известные делает 1С.

Где в крайнем случае (если хозяин платформы сошел с ума — а мы уже знаем, что такое бывает даже с уважаемыми в прошлом людьми) — вы можете хотя бы форкануть проект и жить с ним, занимаясь самостоятельно поддержкой…

Примеры бизнес приложений «где можно сделать форк» не предоставите? Что-нибудь уровня SAP/Axapta.
Я всегда говорю, что 1С — это разновидность религии. Либо ты веришь, либо нет. :-)

Для многих разработчиков дико работать в системе, где платформа изолирует тебя от БД. Да, я понимаю, что у 1С исторически есть файловая БД, и все такое — но уже давно можно было поставить всем SQL и не брать за это денег… Маркетинг!

Опять же, в других средах автоматизации — есть выбор: хочешь, дай системе право за тебя таблицы делать, хочешь — прописывай маппинг к существующей таблице. В 1С — за вас разработчики лучше знают, чего вы на самом деле хотите.

Что касается SAP или Axapta — то это еще менее удачные и более монструозные системы чем 1С. Про SAP шутят, что его внедрение заканчивается только с банкротством заказчика. Axapta я лично видел как внедряли — а потом с середины месяца откатывались на 1С, чтобы хоть как-то работать.

Лично мне ближе концепция автоматизации не по принципу «одна платформа, один фюрер, один народ», а разработка федеративной (сервисной или микро-сервисной) архитектуры — где каждый модуль достаточно прост, а сложное поведение достигается их взаимодействием через общую шину или очереди сообщений. А 1С пусть живет там, где ей место — примерно в бухгалтерии, она в ней вне конкуренции — пока генералитет 1С сидит в общественных советах налоговой и правительства, и получает инфо об изменении нормативки раньше, чем простые смертные.
Для многих разработчиков дико работать в системе, где платформа изолирует тебя от БД.

А насколько дико работать в системе которая изолирует тебя от памяти? от прорисовки пикселей UI на дисплее? от работы с дисками? от работы с оборудованием через IRQ?

Нет, конечное есть разработчики которые до сих все это делают напрямую, но вот чтоб прям «многие» это вряд ли. Те же Java и C# успешно изолируют разработчиков от работы с этими сущностями.

Опять же, в других средах автоматизации — есть выбор: хочешь, дай системе право за тебя таблицы делать, хочешь — прописывай маппинг к существующей таблице. В 1С — за вас разработчики лучше знают, чего вы на самом деле хотите.

Проблема не в делать таблицы — проблема в поддержке изменений этих таблиц. В крупных проектах изменение схемы БД отдельная головная боль. Платформа частично снимает это с разработчика. Ценой определенных компромиссов, конечно.
Ну тут остается сказать только что другие платформы — которые выросли не из бухгалтерии, а как платформы общего назначения — позволяют получить доступ ко всем этим низкоуровневым функциям. Берете binding к своей любимой системной библиотеке, и пользуетесь ей из-под Java. Потому что в Java на самом деле есть и небезопасные операции с памятью, и динамическая генерация байт-кода, и много чего еще. И главное — есть сообщество, которое эти функции поддерживает и развивает. А в 1С это будет как-бы сложнее, потому что это фирма 1С должна решить — надо оно вам или нет, и если надо, то в каком виде.

А поскольку у 1С есть еще и коммерческий интерес — то оно делает то же, что и Microsoft в свое время: вместо того, чтобы дать доступ к существующим имплементациям — оно делает свое, немного кривое и несовместимое. Вы этим начинаете пользоваться — и вот уже цель достигнута: с платформы 1С вы никуда не денетесь. Ибо совместимость…

аналогично с индексами

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

Какие именно создаются индексы описано в документации. Выстраивать архитектуру решения необходимо с учетом его особенностей.

На практике — все кейсы с произвольными составными индексами мы решали или изменением архитектуры или изменением запросов. В итоге составные индексы остаются в дюжине мест, где «так сложилось исторически» и менять архитектуру в этом месте уже сложно. Для нового функционала уже года 3 точно критичной нужды в составных индексах нет, хотя конечно, это облегчило бы архитектуру в некоторых местах.

У 1С программистов есть одна нехорошая черта - они тестируют на пользователях)

И так сойдет

Причем программисты всех уровней, от разработчиков конфигураций до местных гуру.
Возможно это общая проблема low code программирования, где важнее быстро выкатить результат, чем его технологическое качество.

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

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

А программисту долго тыкать в кнопки на экране некогда. Да и данные актуальные не всегда есть. Он поэтому написал — и отдал. Фатальных ошибок все-равно не будет: формула распровести-провести известна любому специалисту и бухгалтеру. Поэтому тестят все сами пользователи на боевой базе. :-)

Фатальных ошибок все-равно не будет

Вспоминается... да, это вы рано ушли )
База конечно не сотрется, а все остальное возможно вполне

А как же тестовая база?

А программисту долго тыкать в кнопки на экране некогда. Да и данные актуальные не всегда есть. Он поэтому написал — и отдал. 

А как же тестовая база?

Вы сами себе противоречите

У 1С программистов есть одна нехорошая черта — они тестируют на пользователях)

У нас один из проектов имеет покрытие тестами 85%. Есть решения с почти полным (90+%) покрытием.

Вы мне еще про Стандарты программирования расскажите
А я вам выложу принтскрины как 1С:Управление холдингом выглядит изнутри

По фен-шую на 1 программиста должно быть примерно 5 тестеров, у вас именно так?

А я вам выложу принтскрины как 1С: Управление холдингом выглядит изнутри

Если код который вы собрались скринить писали не вы, то что именно вы собираетесь демонстрировать? Что код вендора не всегда соответствует его же вендора стандартам — ну да есть такое, это общеизвестная информация. И 1С тут совсем не уникальный вендор.

Как это мешает вам писать поддерживаемый и тестопригодный код?

Все же типовые довольно хорошо написаны, а например разрабы БСП вообще молодцы — там прогресс качества огромный.

По фен-шую на 1 программиста должно быть примерно 5 тестеров, у вас именно так?

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

У нас тесты гоняются в Дженкинсе, и пишут их сами разрабы

Может в этом и есть некоторая проблема?
В том что другие для своих продуктов набирают тестировщиков, а у вас тесты пишут те кто программирует. Т.е. под проблему которую они не видят, они тест не напишут.

Юнит-тесты должны писать сами разрабы. Для мира Java — это вообще практически необсуждаемая норма. Если система проходит автотесты — релиз передается ручным тестировщикам, которые проверяют сценарии слишком трудозатратные для автоматизации. Пока система не проходит тесты самих же разработчиков — ее нет смысла отдавать людям. Пирамида тестирования же ж!
Может в этом и есть некоторая проблема?

Мы пишем тесты для решения конкретной задачи — снижение риска возникновения факапа на проде — как в новом функционале, так и в поломке того, что уже работало. И мы успешно решаем эту проблему.

Какую проблему вы решаете 5 тестировщиками на 1 разраба я не знаю. Возможно, в вашем случае это оправданное решение.

В том что другие для своих продуктов набирают тестировщиков

Возможно это связано с недостаточной степенью автоматизации тестирования.

Так как статья написана для новичков, то также можно почитать еще статью Почему не 1С, чтобы начинающий знал, что его ждет в дальнейшем.

В простых случаях все выглядит красиво, а вот когда начинается промышленная разработка хотя бы с сотнями форм/процессов и десятками программистов, то начинаются проблемы.

Данная статья содержит много сомнительных пунктов.
Часть из них критикует по принципу "мы привыкли иначе, а значит это плохо".
Другая часть делает ставку на отсутствие знаний о платформе у читателя. Т.е. введение в заблуждение.
Но для разбора их всех понадобится написать ещё одну статью.

А если коротко, то это главная предъява из статьи: "Но в 1С решили сделать не как все"

Тут дело в том, что в большинстве современных инструментах разработки что-то делается определенным образом не просто так. Это опыт и эволюция, накопленная годами разработки. И делать свой "Особый путь" только для того, чтобы сделать "не как все" - так себе идея.

Например, вы вообще работали когда-нибудь с IntelliJ IDEA на каком-нибудь языке программирования ? Хорошо представляете разницу с Конфигуратором 1С в плане рефакторинга или review кода ? Или удобство merge изменений в Хранилище 1С и Git ?

По доступным к анализу признакам Конфигуратор набрал техдолга и захлебнулся. Новых изменений в него не вносят. EDT тоже уперся в Конфигуратор, т.к. сборка конфигурации сейчас доступна только в режиме конфигуратора.

На замену активно пишется с нуля автономный сервер, с yml-конфигами, работой только через http, и прочими современными фичами.

EDT в связке с Sonar и Git позволяет хорошо со всем этим справляться.

Как я уже отмечал в статье, 1С не идеальна. И к ней много претензий. Но не всё, что "иначе" автоматически "плохо".

1С - это НЕ универсальная платформа. Она создана для своих целей и заточена под них. Имеет свои особенности в разработке. И 1С далеко не единственная в этом. Именно поэтому в мире множество разных языков, платформ, фреймворков и так далее. Всё для своих целей.

EDT в связке с Sonar и Git позволяет хорошо со всем этим справляться.

Вот тут поподробнее, пожалуйста. У Вас в статье "визуальное программирование", где там все делается формочками, деревьями и т.д. Когда пойдет merge из-за конфликта, например, как это будет выглядеть ? Тоже визуально, или просто придется сливать XML-файлы ? Если XML, то получается, что нужно будет разбираться и в визуальном программировании и в "суровом" XML-представлении ?

EDT умеет мерджить формы без перехода на уровень XML-представления. Внешне все работает как СиО в Конфигураторе.

Но в 1С решили сделать не как все

Я бы вот это в заголовок и вынес )
Сделали, а сейчас посмотрели и пытаются вернуться к тому как делают все.
Это прежде всего попытка вернуться к нормальной IDE + нормальным средствам коллективной разработки + нормальным тестам

А знаете почему это не получается?

См. выше

У 1С есть одна нехорошая черта — они тестируют на пользователях

1C:EDT выкатили с такими косяками, что в ней работать было невозможно
и сейчас желающих на нее переходить стало на порядок меньше а тестируют ее на своих же разработчиках

Каждый переход по мажорным редакциям это безумству смелых поем мы песню, первые собирают на своей шкуре все косяки.

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

А знаете почему это не получается?

Так и не получится, пока 1С не уйдет от "визуального программирования". Визуальное программирование очень плохо "дружит" с нормальной IDE + нормальным средствам коллективной разработки + нормальным тестам

Странный тезис про «визуальное программирвоание» — в формах вообще не рекомендуется размещать бизнес-логику продукта, только логику интерактивного взаимодействия с пользователем. Как это может мешать писать тесты для бизнес-логики непонятно.

Для тестирования интерактивной работы есть клиент/менеджер тестирования и, как минимум, два фреймворка-обертки над ними от сообщества разработчиков.

Взаимосвязь с IDE и git еще более непонятна. Обе IDE от вендора отлично умеют работать с формами. Собственно именно сложность поддержки разработки форм — ключевой затык в разработке сторонних IDE.

Странный тезис про «визуальное программирвоание» — в формах вообще не рекомендуется размещать бизнес-логику продукта, только логику интерактивного взаимодействия с пользователем

Причем здесь вообще формы ? Вот конкретно в этой же статье есть пункт "Создаем справочники". Или, например, добавление реквизита ИНН. Это все делается "визуально" мышкой, а не "плоским" кодом, как везде (в той же Java). Разве создание новой сущности и добавления к нему поля - это не бизнес-логика ?

Взаимосвязь с IDE и git еще более непонятна. Обе IDE от вендора отлично умеют работать с формами. Собственно именно сложность поддержки разработки форм — ключевой затык в разработке сторонних IDE.

Давайте возьмем какой-нибудь GUI-framework, из наиболее популярных сейчас в мире. Например, React (там прямо на главной странице примеры). Даже там пишется все кодом, а не рисуется мышкой. И там нет никакой сложности поддержки разработки форм. И там понятно, как работает система контроля версий и как идет merge различных изменений. В визуальном же редакторе merge в любом случае будет очень "своеобразным" в случае каких-нибудь сложных изменений.

"Оповещенки" это конечно круто, даже сильнее режет глаза, чем "Выбрать ... Из ... Где ..."

По картинке решил, что сейчас нам расскажут про то как сделать покемона в 1С (ну или пакмана)... Но нет... :))) Если на языке программирования нельзя сделать своего пакмана -- то какой же это языка программирования? :))

Мы используем 1с в МГУ для разработки и поддержки внутренних решений по учету разного (кадры, аспиранты и так далее). При этом для нас 1с это язык программирования/платформа - стандартные конфигурации (программы) не используем.

Что можно сказать про 1с? Это быстро и удобно для разработки программ. Если вам нужно сделать себе какое-то учетное решение в локальной сети, то это может быть ваш вариант. Порог входа в программирование на 1с действительно низкий. Сложность разработки сильно ниже чем, например, в веб-программировании, потому что очень много что за вас делает платформа. Русский язык в программировании... ну глаза рябили первый месяц, потом никакой разницы.

Стандартные конфигурации это, конечно, ад (на мой взгляд). Но этот комментарий и вообще мой опыт - для того, чтобы донести мысль, что 1с не ограничивается стандартными конфигурациями. Если вы берете 1с как платформу, то вы по-прежнему программист, а не тот "1с-программист" в кавычках, про которого вы много что можете прочитать в интернете.

В статье - начальный курс ученика 1С (и почему то с отсылками к VBA). Со множеством неточностей и неразобранностей (невыясненноястей для автора). Может не стоит судить его строго, а посоветовать излагать материал по теме после его усвоения ?

А можно конкретнее за неточности?

Много комментариев прочитал, но нигде не увидел про CI/CD концепцию для 1С. Такое возможно? 🙂

Также было интересно ответить на вопрос: возможно ли PaaS, SaaS или же контейнеризация в случае с 1С? :) Было бы интересно почитать на эту тему

Много комментариев прочитал, но нигде не увидел про CI/CD концепцию для 1С. Такое возможно?

Что именно интересует? У нас и билд и тест и деплой через Дженкинс делается.

Также было интересно ответить на вопрос: возможно ли PaaS, SaaS или же контейнеризация в случае с 1С?

habr.com/ru/company/1c/blog/326654
habr.com/ru/company/cloud_mts/blog/580748

Серверная часть в докере отлично работает.

Это все возможно, и даже работает. Но проблема в том, что людей, которые могут это поддерживать - крайне мало. Да и бизнес не особо готов для этого....

Это всё понятно, один вопрос, а чего оно все тупит страшно на топовом железе?

Тупит не платформа, а некоторые типовые конфигурации, не все.

Ок, какие не тупят?)

Например УТ 10.3, БП2, Розница 1.3, УПП 1.3.

Проще говоря - на технологии УФ "такси" тупят, на обычных формах - не тупят

Не совсем так.

Складывается впечатление, что типовые сейчас очень переосложнены.

Если разрабатывать что-то своё менее объёмное, то оно и на УФ не тормозит.

Почему приложение на Python\Java\C#\C++ тупит на топовом железе?

Вопрос с конкретному приложению.

Данная статья не про конкретные приложения, а про платформу, которая позволяет их писать.

Вообще конечно язык 1С настолько суров, что позволяет писать такие вещи:

	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_ЗаказКлиента_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_ЗаказКлиента_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_ЗаказНаПеремещение_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_ЗаказНаПеремещение_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_ЗаказПоставщику_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_ЗаказПоставщику_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_ЗаявкаНаРасходДС_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_ЗаявкаНаРасходДС_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_ИнвентаризационнаяОпись_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_ИнвентаризационнаяОпись_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_КассоваяСмена_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_КассоваяСмена_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_КорректировкаПоступления_Отправка_ПриОбработке" Тогда 
		ПОД_Документ_КорректировкаПоступления_Отправка_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли ИмяПроцедуры = "ПОД_Документ_КорректировкаРеализации_ПриОбработке" Тогда 
		ПОД_Документ_КорректировкаРеализации_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);

Любой ЯП позволяет писать такие вещи

Во многих языках есть switch…case…default. С ним этот код намного читабельнее вышел бы. В 1С его тоже очень хотелось бы.

По смыслу это одно и тоже, вопрос только в привычках.

СлучайнаяБуква = ПолучитьСлучайнуюБукву();
Если СлучайнаяБуква = "Пи" Тогда
  Действие1();
ИначеЕсли СлучайнаяБуква = "Бета" Или СлучайнаяБуква = "Гамма" Тогда 
  Действие2();
ИначеЕсли СлучайнаяБуква = "Альфа" Или СлучайнаяБуква = "Эпсилон" Или СлучайнаяБуква = "Омега" Тогда 
  Действие3();
Иначе
  ДействиеПоУмолчанию();
КонецЕсли;
Выбор ПолучитьСлучайнуюБукву()
	Когда "Пи" Тогда
		Действие1();
	Когда "Бета", "Гамма" Тогда
		Действие2();
	Когда "Альфа", "Эпсилон", "Омега" Тогда
		Действие3();
	Иначе
  	ДействиеПоУмолчанию();
КонецВыбор;

Какой из вариантов быстрее считывается?

Про привычки тут можно только печалиться, что 1Сники вынуждены были привыкнуть делать многоэтажные "Если ИначеЕсли ИначеЕсли ИначеЕсли", т.к. платформа им не дала switch.

P.S. в "Исполнителе" они таки реализовали switch оператор.

ИМХО, но Switch актуален для простых случаев с небольшим числом веток.
При росте кода и добавлении других условий приходится переделывать его в классический If. Когда листаешь длиннокод, то от свитча он не становится удобнее. Лучше видеть с какой переменной идёт сравнение. Ну и если у тебя просто сравнение с переменной с кучей веток, то, скорее всего, код написан неграмотно. Чаще всего сравнение с разными переменными.

Я за то, чтобы в 1С был Switch, но совершенно не буду страдать от его отсутствия.

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

Лапшеподобный код будет одинаково плохо читаться как при использовании switch, так и с пачкой elif, вы правы. Но это проблема лапшекода.

Поэтому я, таки, страдаю из-за отсутствия свича. Т.к. хочется в разных ситуациях использовать наиболее оптимальные для этого операторы. Надо серию проверок различных условий - ифы; надо выбор веток по одному критерию - свич, но приходится делать иначеесли иначеесли

Есть такой паттерн "команда" и "посетитель". Когда у вас появится новый вид объекта вы будете вот это место дописывать. Используя паттерны, вы построите класс-обработчик, не меняя текущий код, надо только наделить его нужным интерфейсом.

Sign up to leave a comment.

Articles