Как Программисту 1С стать Java developer'ом

    Несколько лет назад, когда я искал пути из программистов 1С в Java developer'ы — я бродил впотьмах, пытаясь нащупать дверь, в существовании которой был не уверен. Я пытался найти истории успеха, но кроме пары комментариев ничего не нагуглил. Мир Java выглядел огромным, а количество фрэймворков бесконечным. Было совершенно непонятно: что учить, что не учить, что нужно в работе, а что никто не использует. Если ты хочешь в Джаву, теряешься в бесконечных названиях технологий и фрэймворков и хочешь узнать какие же из них надо изучать, а на какие не обращать внимания — эта статья для тебя!



    Некоторые начальные допущения


    • в этой статье мы не будем обсуждать вопрос «зачем?», будем только — «как?». Если ты сюда пришел — ты сам знаешь зачем.
    • я никогда не получал образования как-то связанного с ИТ, поэтому мои рекомендации — это рекомендации от человека и для человека, который на момент начала изучения Java никогда ни на чем кроме 1Са не писал. Если у тебя диплом по разработке ПО — часть рекомендаций может быть лишней.
    • я постараюсь нарисовать картину, отражающую какую-то среднестатистическую вакансию. Естественно, если ты хочешь в какое-то узкое, специфичное направление вроде big data или наоборот embedded — тебе лучше узнать об этом направлении подробнее.

    Плохие новости


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

    Во-вторых, готовься, что если ты сейчас топовый 1Сник — твой доход скорее всего восстановится когда ты станешь уверенным middle'ом. Как правило, это не меньше 2-3 лет практики, но в конечном счете все зависит от тебя.

    В-третьих, не жди, что твой 1Сный опыт тут кому-то интересен. У тебя может быть 100500 успешных проектов и вся стена в 1Сных сертификатах — это никого интересовать не будет. Ты будешь джуном, с тобой будут разговаривать как с джуном и у тебя будут задачи как у джуна. Но тут есть ложка меда: даже если ты не топовый 1Сник, в вопросах SQL, скорее всего, ты потягаешься с Senior Java developer'ами.

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

    1. Тратить 1 час каждый день — это намного лучше чем тратить 7 часов раз в неделю. Если ты решил идти — иди. Без отговорок. Каждый день. Ладно, в воскресенье можешь отдохнуть.
    2. Если ё инглиш из нот вэл — улучшай его! Это тот навык, который тебе пригодится: мало того что почти все, что ты сможешь прочитать, будет на английском, так тебе еще и код на нем писать! Скорее всего, первое что тебе потребуется — это навык чтения и понимания прочитанного. С listening и speaking можешь повременить.

    Подготовка. Основы языка


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

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

    Если ты тоже выберешь джава — не забивай себе голову Java EE, тебе нужна только Java SE. Что такое Java ME и Java FX вообще лучше не знать )

    Итак, с чего же начать? Я не советую тебе бросаться покупать двухтомник Хорстманна и тысяче страничный «Spring 5 для профессионалов» и пытаться все это вызубрить. Даже если ты расскажешь все это наизусть — знания не подкрепленные практикой выветрятся очень быстро. Начни с онлайн площадок по обучению программистов. Я решал JavaRush. Дошел наверно до 15 уровня. Это заняло около 1-2 месяцев (с цифрами могу что-то наврать, дело было давно)

    Затем принимайся за HackerRank. Не пугайся его названия — там можно выбрать уровень сложности и на простейшем тебе будут предлагать задачи уровня инвертировать строку. Добейся, чтобы задачи среднего уровня (medium, баллов на 30) решались без проблем. Хотя система оценок иногда дает сбой и бывают такие задачи на 30 баллов, что проще какой-нибудь hard на 60 баллов решить, но в основном ты должен справляться. Это займет тебя еще на 1-2 месяца.

    Теперь пора читать Хорстманна. Имей ввиду, что это хорошая книга, но она покрывает Java целиком (только язык, не фреймворки) и даже те ее части, которые почти нигде не используются. Моя рекомендация: в первом томе забей на разделы связанные с UI и на весь второй том. И еще, если будет туго, в первом томе пропусти многопоточность и вторую половину дженериков — этого могут не знать даже мидлы, для джуна не страшно. Еще важно не попасть в ловушку версий: книга, которая называется Java 2 — это древность. Тебе нужна версия 1.8 или 9. Или ориентируйся на дату издания: 2015 год и позже подойдут.

    Я надеюсь, во время чтения Хорстманна ты не бросишь HackerRank, может, даже решишь пару задачек баллов на 80-100. В целом, больше 60 баллов подниматься не нужно, потому что там начинается не столько прикладное программирование, сколько «искусство ради искусства». Но если ты чувствуешь в себе силы — иногда бери hard, лишним это не будет. И еще, имей ввиду, что большинство сложных задач — это классические алгоритмические задачи, которые ты можешь гуглить: смысл упражнений на хакерранке не в том чтобы придумать с нуля алгоритм, который уже давно придуман, а в том чтобы узнать о самом существовании алгоритма и реализовать его.

    Продолжение подготовки. Фреймворки, инструменты и практики.


    После всего этого, ты почти готов пойти на собеседование. Осталось совсем чуть-чуть:

    • еще раз обрати внимание на коллекции и на сложность поиска в них. Эту тему мусолят все. Не пытайся узнать все подряд: лучше хорошо знать базовые коллекции (ArrayList, LinkedList, HashSet, HashMap, может еще TreeMap), чем знать три десятка, но «по верхам». Т.е. ты должен понимать, как коллекция работает внутри. Есть хороший канал на ютубе, там все разжёвывают для джунов. Прямо так, как тебе и нужно. Вбиваешь в поиск «урок по java коллекции» — первая ссылка на него. Там же есть видео под названием «что нужно знать перед собеседованием». Ты не должен знать прямо все что там перечисляют, ты все-таки джун, на мой взгляд, если ты осилишь 2/3 тем — будет ок.
    • что такое спринг (тебе нужен Spring Core и Spring Boot) — там понаверчено немало, но 95% практики использования — не сложнее хэловорлда. Ты должен понимать базовые концепции, вроде того что такое IOC и зачем это вообще и уверенно владеть 1-2 способами объявления и инжекции бинов (не xml). Возможно, тебе стоит еще попробовать сделать несколько REST-сервисов на Spring Web: там нет ничего сложного, но будет определенный плюс.
    • как писать тесты (посмотри на JUnit и Mockito) — в 1Се в принципе нет такой практики как написание тестов. В Java код без тестов — это не код, потому что код считается нерабочим, до тех пор пока нет доказательств обратного.

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

    Все твои домашние проекты должны собираться Maven'ом и версионироваьтся Git'ом. Это просто инструменты, стоит набить руку — и уже перестаешь их замечать. В качестве среды разработки советую тебе взять Idea, по моим наблюдениям ее сейчас используют почти все. Бесплатной версии тебе должно хватить.

    Если ты не стеснен в средствах — можешь посетить какие-нибудь курсы по Java разработке. Я считаю, что базовый курс брать не стоит, поскольку все что там будут объяснять не стоит того, чтобы тратить на это время и деньги. Возьми курс по Spring Core или JUnit: с одной стороны ты получишь знания, пообщаешься с будущими коллегами, с другой — тебе не будут 3 дня разжевывать, что такое цикл.

    Где-то между делом, надо почитать теорию программирования. Тебя обязательно спросят про SOLID и паттерны. Паттерны (они же шаблоны проектирования) — это весьма интуитивно-понятные вещи, хотя на Википедии описаны так, что чёрт ногу сломит, лучше читать не настольно заумные статьи. На мой взгляд, хватит такого набора: Интерфейс, Билдер, Прототип, Синглтон, Декоратор, Прокси.

    Идём на собес!


    Работодатели
    Есть несколько основных типов работодателей, о которых тебе стоит знать.

    Первый — это бодишоперы. Они же аутстаферы. Самые известные представители: Luxoft и EPAM. Они нанимают людей, а потом перепродают их во всякие Сбербанки. Бодишоперы сажают своих сотрудников прямо в офис заказчика и их почти нельзя отличить от сотрудников заказчика. Зачастую, уровень требований там ниже, а зарплата выше. Но и работать ты будешь в не бог весть каких условиях: это не самые привлекательные проекты, на которые конечный заказчик не смог набрать разрабов с рынка, про трудовой кодекс они будут знать весьма отдаленно, а сам ты не будешь полноправным сотрудником там, где ты будешь работать (всякие плюшки и корпоративы будут проходить мимо тебя). Но тебе же не это надо?

    Аутсорсеры — это конторы, которые нанимают конечные заказчики, но предмет продажи там — не люди, как у бодишоперов, а реализация задач. Такие, как правило, стараются держать разрабов подальше от заказчика и занимаются новыми проектами. Это весьма достойное место работы, но туда с таким опытом как у тебя попасть будет не просто, но не невозможно.

    Продуктовые компании — это конторы типа Яндекса и, прости господи, Касперского, которые продают свой код как конечный продукт, как коробку. Бытует мнение, что тут работать лучше всего: зарплаты большие, плюшек много, задачи интересные, коллективы профессиональные. Когда ты слышишь про бесплатный английский и пиво по пятницам — скорее всего это про них.

    Дальше идут банки и страховые. Тут может быть все сильно по-разному: как правило, в банках есть огромное страшное легаси, на которое никто не хочет идти и новые-модные-стильные-молодежные проекты, на которых вакансии еще как-то закрываются. Сам понимаешь, тебе в первую группу. Хотя, иногда их самомнение может зашкаливать, типа «mission-critical система — не место для джунов». Не обращай на них внимания, такие далеко не все.

    Естественно, этот список не описывает полностью всего рынка труда, есть еще всевозможные стартапы, retail и много-много кого.

    Во-первых, не надо врать про опыт. Поверь, даже если тебя «случайно» примут за мидла на тех.интервью — в работе ты все равно будешь джуном. Поэтому в резюме не стоит выдумывать, что ты уже работал Java developer'ом 15 лет, пользуясь тем, что в названии твоей предыдущей должности не было упоминания 1С. Но кое-какие ходы, для преодоления HR-барьера, предпринять можно. Не выпячивай свое 1Сное прошлое. На паре последних мест работы можешь написать просто «Программист» или «Developer», а буквы «1С» закопай куда-нибудь в описание. Тим-лида ты этим не проведешь, но HR может купится.

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

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

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

    Ходи по собесам, запоминай вопросы, находи на них ответы, затем опять ходи по собесам. На мой взгляд, 1-2 тех.интервью в неделю — приемлемый уровень, чтобы и успевать переваривать полученный опыт и не слишком затягивать поиски.

    Работа джуном


    Самое важное тут — это Тим лид. Ты должен был познакомиться с ним на тех.собесе и «он должен был выбрать тебя и ты должен был выбрать его» (с). Очень важно почувствовать эту химию. Это человек, каждое слово которого в следующие несколько лет, ты должен слушать, запоминать и выполнять. Этот человек будет тащить тебя к вершинам Java разработки и посвящать тебя в самые глубокие нюансы этой магии. И от него, может быть даже больше чем от тебя самого, зависит, насколько крутым разрабом ты станешь и как скоро.

    Итак, мой юный 1С-ник, если раньше ты знал «зачем?», то теперь еще знаешь «как?». Путь в тысячу миль начинается с одного шага. Дерзай!
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 208

      0
      О, все таки написали? Неплохо. Я бы с некоторыми пунктами поспорил наверно, но лениво, да и во многом вкусовщина.
        0
        когда победите лень — пишите, уверен комментарии будут полезнее статьи )
        0
        Из статьи понял только то, что 1С сложнее java оказывается. И что большинство java — программистов не знают sql.
          +1
          1С сложнее java оказывается
          неожиданный вывод. как вы к нему пришли?
            0
            Опыт работы быстрее набивается :-)

            1С — это в первую очередь про знание предметной области, самих алгоритмов ну там не особо много и оптимизация до O(n) там редко требуется. Поэтому зачем в статье вообще она упомянута — неясно.

            Сама 1С сейчас сильно дрейфует в сторону java — почти все инструменты вспомогательные на ней. Так что сам потихоньку вспоминаю эту адовую экосистему.
              +1
              Опыт работы быстрее набивается
              а к этому как пришли?
            +2
            1С сложнее java оказывается

            Скорее не сложнее, а замороченнее (мягко говоря).

              +3
              Ну не проще точно. Хотя и у Java своих скелетов хватает, но 1С там столько своих дырявых и текущих абстракций нагородил, что абстракции Spring по сравнению с ними детский сад. Впрочем справедливости ради я думаю это не вина архитекторов 1С, а особенность рынка бизнес-приложений ну и «так исторически сложилось».

              И большинство 1С — программистов тоже не знают sql. Спросите их хотя бы про базовые механизмы predicate push down. Что не удивительно, так как 1С сам не рекомендует использовать ни подзапросы, ни полагаться на оптимизатор и вообще поддерживают SQL на уровне SQL-92 (не поддерживая даже представлений, который емнип были в том стандарте).
                +1

                У 1С не SQL, а если угодно, EntityQL, который хотел сделать Майкрософт, но что-то там не срослось. И он кросс-субдшный, поэтому вынужден быть минимально доступным подмножеством фич, имеющихся на всех 4 СУБД. Плюс 1С в том, что там есть все и сразу в одной коробке. Часть этого не так хороша, как в какой-то специализированной либе/среде/продукте. Но если сложить ценники 8-9 продуктов узких ниш, и ценник 1С, где "все сразу"...

                  +1
                  по чем там нынче Spring Data?
                    +1

                    Не знаю. А есть там что-то похожее на MXL с возможностью сохранения в PDF?

                      0
                      Даже стало интересно чем вас тот же XLSX для хранения табличных документов не устраивает. Зачем использовать непонятно кем разработанный закрытый формат?
                        0

                        XLSX выигрывает по одним фичам и проигрывает по другим. Выигрывает тем, что он не только формат отображения, но и формулы, умеет играть с источниками данных. Проигрывает, например, если есть строки с разной шириной колонок. Есть задачи, которые удобнее делать в XLSX, есть те, которые удобнее в MXL. Макеты печатных форм часто удобнее шлёпать в MXL.

                          0
                          Проигрывает, например, если есть строки с разной шириной колонок.

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

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

                            Не надо так передёргивать. Если речь про "отчёты в табличном виде", то это некоторый вывод из программы, которые потом пользователем используются для просмотра, несложного анализа и печати. Графические файлы и PDF очень неудобны пользователю для "несложного анализа" (скопировать половину столбца чисел и сложить). HTML и XLSX плохи для печати (нет гарантии, что напечатается также). MXL плох потому что его не отдашь внешнему пользователю (у него может не быть 1С). Текстовый формат (а также csv, json, xml даже с xslt) проигрывает в возможностях оформления.
                            XLS/XLSX открывается внезапно совсем не одинаково и не всегда.
                            Важный плюс 1С в том, что из одного макета получаются приемлемые конечные формы большого количества форматов. У джаспера на словах это как бы почти так, но есть нюансы.
                            На практике за годы разработки, руководства и архитектуренья я вижу, что работа разработчика 1С с макетом и последующее сохранение в общеупотребимый формат в рамках этой задачи занимает в разы меньше времени при более стабильном и предсказуемом результате. И это если сравнивать с удачными платформами (типа Jasper), потому что в неудачных добавить новый формат это вообще отдельный проект.


                            Макеты печатных форм к форматам, в которых формируются эти печатные формы прямого отношения не имеют. В том же Jasper'е можно делать формы с разлинейкой (получая потом предсказуемые XLSX), а можно графические для PDF.

                            Имеют. Табличный документ и его файловое представление MXL — это основной инструмент и одновременно выходной артефакт в 1С. И 1С-ник именно в нём делает форму отчёта. В других платформах обычно это бывает по-другому, там инструмент и выход разнятся (а если не разнятся, то это скорее всего отчёт, формируемый из шаблонного файла MS Office и это один из худших вариантов).

                              0
                              нет гарантии, что напечатается также

                              А у MXL есть гарантия? Это же ячеистый формат с неограниченный шириной, как можно гарантировать что он влезет на A4?
                              На практике за годы разработки, руководства и архитектуренья я вижу, что работа разработчика 1С с макетом и последующее сохранение в общеупотребимый формат в рамках этой задачи занимает в разы меньше времени при более стабильном и предсказуемом результате

                              В конечном итоге вся информация либо выводится на принтер, либо сохраняется в excel (как стандарт ячеистого формата). Промежуточное звено в виде MXL не совсем понятно чем помогает в этом вопросе.
                              Табличный документ и его файловое представление MXL — это основной инструмент и одновременно выходной артефакт в 1С.

                              Я в курсе, но непонятно чем это лучше модели обычных reporting systems. Либо рисуй все в графическом формате для принтера / pdf, либо включай «разлинейку», и рисуй все по линиям, после чего при выгрузке в «ячеистый» формат (xls) все автоматически разложится по ячейкам.
                                +1
                                А у MXL есть гарантия? Это же ячеистый формат с неограниченный шириной, как можно гарантировать что он влезет на A4?

                                Письменной гарантии от вендора нет. Но а) вендор один (в XLSX — несколько "совместимых"), б) если 1С не будет сильно стараться унифицировать печатный вид, то все печатные формы 1С: Бухгалтерии развалятся и для них это будет серьёзный фэйл.


                                В конечном итоге вся информация либо выводится на принтер, либо сохраняется в excel (как стандарт ячеистого формата). Промежуточное звено в виде MXL не совсем понятно чем помогает в этом вопросе.

                                Помогает делать макет 1 раз для всех конечных форматов. Да, есть ограничения. Но сам процесс достаточно удобен для всех целевых применений. Более того — часть процесса вёрстки формы можно отдать даже пользователю. Более того, в 1С мне очень удобно смотреть diff между макетами в системе контроля версий. В отличие от того же jasper (а уж как "прелестно" с SCM работать с каким-нибудь SSRS или SSAS — там вообще труба).


                                Если вы считаете, что эта "модель обычных reporting systems" лучше — да ради бога. Я у обеих сторон вижу гору недостатков и достоинств.

                                  0
                                  Но сам процесс достаточно удобен для всех целевых применений


                                  Так а какие целевые применения?

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

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

                                  Более того, в 1С мне очень удобно смотреть diff между макетами в системе контроля версий


                                  Вы сейчас про их внутреннюю систему контроля версий? Потому как если про выгруженные xml в git, то не понятно чем это лучше Jasper'а. А внутренняя система контроля версий имеет столько недостатков по сравнению с git, что упоминать ее достаточно бесмысленно.

                                  все печатные формы 1С: Бухгалтерии развалятся и для них это будет серьёзный фэйл.


                                  Ну это из разряда «мы успешно решать проблемы, которые сами себе создаем». В других бухгалтерских системах (и контроллинга) что я видел, где задача drill down актуальна, интерфейсы работы с данными просто изначально делают в интерактивных, а не печатных формах.
                                    +1
                                    интерфейсы работы с данными просто изначально делают в интерактивных, а не печатных формах

                                    Внезапно, в 1С табличные документы интерактивны, драг-дроп, клавиатура, евенты мыши, driil-down. Только еще это все и удобно формировать и печатать нормально.

                                      0
                                      А динамические списки (то есть чтение из базы видимыми порциями), реквизиты в панели для текущей записи, человеческие отборы, поиски и сортировки (а не через еще -> изменить вариант и переформировать отчеты), вкладки, «связанные» списки и т.п.?

                                      Не, я понимаю, что можно из печатной формы слепить интерактивную, но только это будет тот самый троллейбус из буханки.
                                        +1

                                        Из коробки контрол табличного документа всего этого не делает. Только отборы поиски и сортировки показывает, причем, сразу на форме, без упомянутого "изменить вариант". Остается пункт "Реквизиты в панели для текущей записи" — ну да, контрол spreadsheet не показывает "реквизиты текущей записи", одна процедура в коде — и конечная юзер-форма будет это показывать. Или ваша претензия, что все задачи работы с данными не вынесены в единый контрол spreadsheet, чтобы прям плюх на форму, и все-в-одном? Ну такое себе желание.

                                          0
                                          Да нет, вопрос зачем печатным формам добавлять функционал интерактивных форм. Получается ни рыба ни мясо (то есть оба варианта не удобны / не производительны в той или иной части).

                                          Не правильнее ли было сделать как в Odoo, где любой список (как и отчет) можно переключить в режим сводной таблицы и там делать любую аналитику (в том числе drill down, и там же переходить к другой информации).
                        0
                        Не знаю
                        сильно дешевле. )))
                        MXL с возможностью сохранения в PDF
                        мне такого делать не приходилось, но гугл подсказывает org.apache.pdfbox. и слово «apache» так же намекает на сильную дешивизну ))
                          –2

                          Я не искал PDF-принтер под Java, но вот под .NET все очень сильно уступает по качеству 1С-у, если говорить про бесплатное. Платное не покупал.


                          Ну и xslx сильно менее удобно писать нежели секции табличного документа и "Документ.Вывести()", не находите? А еще можно вспомнить фичу разных ширин колонок, которой в Excel порой очень не хватает.


                          UPD посмотрел что предлагает PDF-Box и их примеры. Ну нет, это и близко не лежало по времени и простоте выдачи результата по сравнению с 1С.

                            0
                            я запутался в вашей позиции. то вы говорите «дешевле», то вы говорите «качественнее», то «проще и быстрее».
                              +1

                              Поясню. Есть задача отдавать по веб-сервису что-то печатное в PDF. Например счета. И есть метрика time-to-market. На мой взгляд, в 1С эта метрика будет самой лучшей, с учетом в т.ч. и цены фреймворка.

                                +1
                                C JasperReports это делается элементарно.

                                В lsFusion (которая использует как раз JasperReports) вообще на кончиках пальцев:
                                lsfusion.org/try
                                Выберите в списке Печать накладной и замените XLSX на PDF.

                                И все бесплатно.
                                  +1

                                  Замечательно, возьму это название на вооружение.

                                    0

                                    JasperReports отличный инструмент для отчётов. Но 1С-ной системе отчётов (инструменты работы с MXL, конструкторы, построитель, СКД) он скорее проигрывает. Проигрывает в простоте drill-down, сравнение табличных документов в 1С просто есть (джасперу оно не нужно, но когда нужно, то ХЗ что делать), когда нужно сделать странные шибанутые вещи, MXL позволяет. 1С тоже не лапочка, когда надо сделать готовый красивый отчёт-презентацию, но тут проще смотреть изначально на софт для презентаций.
                                    1С-ный MXL, кстати, при определённой прямизне рук, позволяет без проблем работать с гигантскими MXL (миллионы строк). В Jasper я такие объёмы не пробовал, а вот Excel на этих объёмах просто ад.


                                    lsfusion пока изрядно молодой, при всём уважении к ним, я пока не готов детально обсуждать.

                                      0
                                      Тут дело в том, что 1С в своей системе отчетов зачем-то совместили несовмещаемые вещи — печатные формы и бизнес-аналитику. В частности:
                                      Проигрывает в простоте drill-down

                                      Это вообще не задача печатных форм, это задача аналитических отчетов, а точнее BI tools. Например тут. А в плане эргономики аналитических отчетов 1С-ная система проигрывает специализированным BI инструментам вчистую. Ну и вообще делать аналитику на OLTP базе так себе идея.

                                      Работа с гигантскими Excel-файлами тоже «странная шибанутая вещь», вроде троллейбуса из буханки.

                                      Вы же понимаете, что остальные вендоры вроде майкрософт не реализовали систему отчетности как в 1С, не потому что не могут, а потому что просто считают нецелесообразным. Гвозди логично забивать молотком, а бактерии изучать под микроскопом.
                                        +1
                                        Это вообще не задача печатных форм, это задача аналитических отчетов, а точнее BI tools.

                                        Ну… Где-то в мире розовых пони и танцующих единорогов оно так и есть. Реальность же сложнее и интереснее.
                                        Вот есть прям классические отчёты и печатные формы. Счёт-фактура, 2НДФЛ, банковская выписка, отчёт биржевого брокера клиенту, отчёт агента принципалу. Сформировал, отправил, забыл. Со стороны клиента нет и, наверное, не может быть никакого дрилл-дауна.
                                        Есть аналитики статистики, которые сидят в PowerBI, Tableau, QlikView или даже SAS (за психическое здоровье последних я уже не поручусь). Они сидят в башне из белого мрамора и пару раз в квартал/месяц/неделю снисходят к нам, глупым, неся свою мудрость (но мы-то знаем, что они ещё только учатся серьёзно обрабатывать данные на пятончике). Эти чуваки, конечно, без дрилл-дауна просто выпрыгнут с самого верхнего этажа башни, потому что это лучше и проще, чем BI без инструментов.


                                        Но есть и промежуточные задачи. В рамках учётной системы оператор сделал накладную, смотрит — ой, а что это за строчка? Тыкает мышкой, проваливается в карточку товара или контрагента. А вот бухгалтер сформировал ОСВ по счёту — ой, что за странный дебетовый оборотик тут. Тыкает мышкой, листает проводки в карточке счёта. А вот завсклад, который тоже ткнул мышкой в отчёт и теперь-то понял, что за хрень с секцией №152. А вот и директор, который нахмурившись ткнул мышой в диаграмму на столбике и увидел детализированный отчёт по сложному проекту. И все они не могут себе позволить работать даже с QlikView (который как витрина достаточно прост), потому что в 1С это тык мышкой и 2 секунды, а просто найти нужные данные в QlikView или другой отчёт в 1С — это несколько минут.
                                        Мы решаем бизнес-задачи и в них важны такие возможности. Да, в голой теории это можно разнести. А в практике простые возможности drill-down просто необходимы конечным пользователям.
                                        Причём в джаспере дрилл-даун тоже относительно удачный для разработчика по сравнению с MS SSRS, или со старым Crystal Reports (современный лучше, но он стал SAP), или с, простите, FastReport. Я сам в нём делал такие отчёты, но после простоты 1С в данной теме мне это было некомфортно.
                                        Кстати, мне лично сильно не хватает полноценного drill-down в дэшбордах и отчётах Jira и YouTrack. И я много раз видел и даже был участником, когда 1Сники за вечерок делали потрясные отчёты с расшифровкой по данным своих задач, загруженных из Jira.

                                          –1
                                          Но есть и промежуточные задачи. В рамках учётной системы оператор сделал накладную, смотрит — ой, а что это за строчка?

                                          В рамках учетной системы оператор печатает накладную даже не глядя ее. Потому как он набил ее в систему и проверил до по идее.
                                          А вот бухгалтер сформировал ОСВ по счёту — ой, что за странный дебетовый оборотик тут.
                                          А вот завсклад, который тоже ткнул мышкой в отчёт и теперь-то понял, что за хрень с секцией №152.

                                          У аудита и бухгалтерии да — всякие оборотки и «аналитические» отчеты важный инструмент, но:
                                          a) опять-таки как я писал выше не понятно зачем делать это печатной формой, почему не интерактивной.
                                          б) таких задач на современном хорошо автоматизированном предприятии, хорошо если 5% (там люди в основном выполняют конкретные бизнес-процессы в своих АРМах). Проверено на личном опыте.
                                          А вот и директор, который нахмурившись ткнул мышой в диаграмму на столбике и увидел детализированный отчёт по сложному проекту.

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

                                          Еще раз это не я все придумал, это мировой опыт.
                                          Мы решаем бизнес-задачи и в них важны такие возможности. Да, в голой теории это можно разнести. А в практике простые возможности drill-down просто необходимы конечным пользователям.

                                          Тут дело в другом, у 1С просто все очень плохо с интерактивными формами (в частности с вводом и отображением там большого количества в том числе вычисляемой информации), поэтому они и пытаются выкручиваться своими «аналитическими» отчетами. Но это у них скорее вынужденная необходимость.
                                +1
                                JasperReports умеет выгружать куда угодно:
                                community.jaspersoft.com/documentation/jasperreports-server-user-guide-v52/exporting-report

                                Штука бесплатная. Вывод просто делается одной строкой report.exportPdf() или что-то типа того.

                                И JasperReports может вообще в графическом формате работать, не то что разные ширины колонок поддерживать.

                                Да, в 1С аналитические отчеты тоже через табличный документ (по сути печатные формы) сделаны. Но зачем — непонятно. Потому как: а) если для печати, то вообще 21 век на дворе и непонятно зачем деревья убивать, когда можно работать непосредственно в программе б) в аналитике, как правило, нужен интерактив, где в частности можно скажем группировки на лету менять без переформирования отчета и желательно drag-drop'ом как делают во всем мире.
                                  +1

                                  Повторюсь, я не изучал инструменты мира Java. В шарпе с PDF все довольно уныло.

                          0
                          Плюс 1С в том, что там есть все и сразу в одной коробке
                          sing responsibility принцип не согласен с тем, что это плюс )))
                            0
                            Single Responsibility principle — это про то как организовывать и писать код, а не про то что включать или не включать в коробку.
                              0
                              это весьма поверхностное понимание. в каком-то смысле даже разделение властей в развитых странах — это реализация этого принципа
                                0
                                Я бы тогда Вам возразил, что это скорее у вас своя довольно вольная трактовка вполне себе устоявшегося и абсолютно технического термина который строго относится к разработке программного обеспечения и организации кода при ООП.

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

                                И уж если вы хотите перейти на уровень государства, то принцип разделения ветвей власти (как что-то супер-хорошее) не является аксиомой. Это скорее некая парадигма современной «демократии». И эту парадигму почти нигде не удается имплементировать, кроме тех случаев когда общество изначально исторически было сформировано с таким разделением.
                                  0
                                  автор термина делал на этот счет уточнение. принцип про людей а не про код
                            +1
                            И чем он по вашему от того же HQL отличается?
                            И он кросс-субдшный, поэтому вынужден быть минимально доступным подмножеством фич, имеющихся на всех 4 СУБД.

                            MS SQL, Oracle, PostgreSQL уже лет как сто и оконные функции поддерживают и рекурсивные CTE и даже рекурсии в табличных функциях можно нормально реализовать (с пометками). Проверено на личном опыте. Так что это очень странная отговорка.
                              0

                              Ну да, зато они не поддерживают сквозную типизацию и обращение к вложенным таблицам, чтобы в колонке результата запроса был результат другого запроса. Еще раз: в 1С не SQL, а специализированный язык выборки данных, более близкий к EntityQL идеологически. А на SQL похоже, да. И транслируется почти 1-в-1. Но дъявол, как обычно — в деталях. И да, языку запросов 1С есть куда развиваться, кто же спорит. Но вы же понимаете разницу между "есть куда развиваться" и "полное говно"?

                        +1
                        Не знаю почему у всех вызывает статья негатив, мне очень понравилось и я для себя отметил пару фишек. Сам из девопсов в джаву пытаюсь зайти. Спасибо за советы.
                          0

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

                            +1
                            А ну да, ну да. Как обычно «автор не разобрался». Хотя он вроде как в самом 1С даже успел поработать.
                              0

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

                          +6
                          Ожидал другого от статьи, будучи 1С-ником переходящим на Java, позвольте дать несколько советов тем кто хочет выбраться из 1С:
                          1.Самое первое и главное — любовь, страсть к изучению нового в Computer Science.
                          Например у меня на одной из работ был коллега по 1С разработке, когда появилась 1С 7.7, он ругался, когда вышла 1С 8.0, он опять ругал 1С и не спешил что-то на ней делать, когда все клиенты начали требовать тонкий клиент, веб, упр.формы он ныл мне целый год как это плохо и сложно но изучал, я это к тому, что в современном мире разработки ее нет и не может быть!

                          2.У вас должна быть симпатия к английскому языку. Если вы не любите его и не терпите сериалы и фильмы без перевода, словечки и выражения на английском, не хотите и не видите смысла в его изучении, это будет большая проблема. Много интересных статей, книг, коментариев на github и Stack Overflow и других сайтах на английском как и сама Java.

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

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

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

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

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

                          Я начал изучать Java с книги Философия Java, после того как укладывал детей спать, с 23 до 4 утра и я был счастлив. Так что изучайте технологии пока у вас есть время, позже будет тяжелее.

                            +2
                            к изучению нового в Computer Science.
                            (и не только CS)
                            выбирать инструменты… алгоритмы и решения. Уметь признавать поражение и бесконечно учиться у мастеров.

                            можно много чего понять открывая исходники

                            Проектирование приложения, рефакторинг, как ни странно это принесет вам удовольствие

                            Прям очень и очень согласен с перечилсенным. А уж рефакторинг кода на статически типизированных языках используя нормальные инструменты — просто сказка. В 1С даже банальные вещи отрефакторить боль, а потому легаси только копится и правило бойскаута становится применять довольно сложно. Тесты бы проблему немного решили, но их для 1с писать не очень принято, да и неудобно.
                              0
                              А какая волшебная типизация у языка 1С в целом… Шутки про типизацию JS это детский лепет).
                              Можно попытаться засунуть в, например, реквизит регистра с типом СправочникСсылка.Справочник1 значение типа СправочникСсылка.Справочник2, присвоение не произойдет, но и исключения не будет. А чего стоит их своеобразный «типизированный null» для ссылок (я про СправочникИмя.ПустаяСсылка()). Вообще с null у 1С сложные отношения. Есть null, Неопределено, ПустаяСсылка() и «00010101» у даты — видимо из-за этого и появилась костыль-функция ПустоеЗначение(). Вообще про «особенности» языка и платформы 1С можно написать не одну холиварную статью.
                                +1
                                Так недавно и писали. Правда чуть про другие особенности. Почти 2к комментариев набрала.
                                  +1
                                  пустая ссылка особенно доставляет в полях с множественным ссылочным типом, когда значение иногда может быть Неопределено, а иногда пустой ссылкой. а уж если там и примитив типа число/булево возможен — то вообще труба. мы как-то пытались устроить мозговой штурм на тему того, как сделать аналог ЗначениеЗаполнено в запросе — в итоге решили не портить себе нервы )
                                  кстати, Veidt, это тоже неплохой пункт для вашей следующей статьи )
                                    +1
                                    Для следующей статьи у меня уже более чем достаточно пунктов. :)

                                    Работа с null'ами это в принципе беда во многих языках. Я сначала думал что в SQL этот 3-state это жесткая штука, но после того как последнее время пришлось много на JS писать, я понял, что в SQL еще легко отделались. Хотя надо сказать, что именно для задач фронтенда (по сути «тупиковых», которые никем не используются дальше) мне JS даже чем-то понравился, и весь этот огород с undefined и null'ами воспринимается как пусть и не очень приятная, но особенность.

                                    В любом случае я что в первой статье, что во второй не очень хотел / хочу придираться к мелким вещам, которые локальны (!) и к которым можно просто выработать некоторые шаблоны workaround'ов.

                                    Плюс проблему работы с null'ами в 1С можно рассматривать как частный случай проблемы отсутствия явной типизации.
                                      +1

                                      Если вам понадобилось ЗначениеЗаполнено в запросе, то у вас проблемы в модели метаданных, в понимании предметной области, а не разу не в 1С

                                        0
                                        ну естественно! если вам нехватает функций 1Са — значит вы используете 1С неправильно!
                                          0

                                          А вы исключаете такую вероятность, да? Если у вас в одной колонке может быть и пустая ссылка и примитивные типы и Null, то что это за колонка? Ее точно нужно проверять на "заполненность"? А что мы будем считать "заполненностью"? Если там не Неопределено, то значит в нее что-то заполняли, причем в явном виде. И если туда "заполнили" пустую ссылку — это заполнено или нет? Ведь значение-то присваивали и присвоенное значение — это GUID 0000. Оно значимое и именно вы его туда записали. Зачем? Чтобы потом что делать с такой колонкой? Но виноват, конечно 1С, ага :D

                                            0
                                            Оно значимое и именно вы его туда записали

                                            метод ЗначениеЗаполнено с вами не согласен
                                              0

                                              Не надо путать метод языка и тип колонки в результате запроса. ЗначениеЗаполнено проверяет, что значение не является значением по-умолчанию для заданного типа. Аналог: x == default в C# 7.x. Язык запроса вернет вам значение записанное в базу данных. Проверять его на соответствие результату дефолтного конструктора типа — это не задача языка запросов. А сама постановка задачи намекает мне на то, что с этой колонкой явно что-то не так. Такая задача в принципе не должна возникать, если метаданные адекватные.

                                                0
                                                ЗначениеЗаполнено проверяет, что значение не является значением по-умолчанию для заданного типа

                                                разве метод называется «ЗначениеПоУмолчанию»?
                                                  +1

                                                  Разве документация говорит о его поведении что-либо иное?

                                                    0
                                                    название говорит о его поведениии что-то другое
                                                      0

                                                      Разве? Что, например?

                                                        0
                                                        ну… что значение заполнено… я это как-то перефразировать должен?
                                                          +1

                                                          Дык загвоздка-то как раз в том, что такое "Заполнено". В C# с его default и в 1С есть четкое определение того, что считается заполненным. И это по сути — значение типа по-умолчанию. И работает, так как описано. А какой вы смысл в понятие "заполнено" вкладываете, я не знаю.


                                                          Можете сформулировать свое определение "заполненного значения" для произвольного типа данных?

                                                            0
                                                            метод ЗначениеЗаполнено определяет стандарт того что в 1С считается заполненным, а что нет. таким образом, формально выражаясь:
                                                            ЗначениеЗаполнено(Справочник.Имя.ПустаяСсылка()) = Ложь
                                                            , что входит в противоречие с вашим утверждением
                                                            если туда «заполнили» пустую ссылку — это заполнено или нет? Ведь значение-то присваивали и присвоенное значение — это GUID 0000. Оно значимое и именно вы его туда записали
                                                              0

                                                              Давайте начнем с того, что в СУБД колонки строго типизированы. А в "поле составного типа" — могут быть типизированы нестрого. За скобками оставляем, как это хранится в СУБД, мы же про язык запросов говорим и его понимание "заполненности".


                                                              Итак. 1С считает значение "незаполненным", если это значение совпадает со значением типа по-умолчанию. Это документировано. Вернемся к СУБД. Есть колонка составного типа. Она может принимать значение одного из N возможных типов. Если колонку "заполняли", то тип известен, если колонку не "заполняли", то ее значение "Неопределено". На мой взгляд, здесь понятие заполнености абсолютно прозрачно. Значением по-умолчанию для "составного типа" является Неопределено. Если там что-то другое — значение заполнено. Соответствует спецификации.


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


                                                              Если в скриптовом языке появится тип значения "СоставнойТипИзNДругихТипов", то его значением по умолчанию будет Неопределено, а ПустаяСсылка будет "заполненной". Но, слава Богу, такой тип никто не собирается вводить, ибо незачем. Он существует только для результатов, получаемых из СУБД и то, только потому, что СУБД имеют строго-типизированную природу и нестрогая типизация языка 1С для результата запроса эмулируется с ограничением на число типов.


                                                              Вывод: ЗначениеЗаполнено ведет себя предсказуемо, однозначно и соответствует документации. А если вы хотите сделать ЗначениеЗаполнено для результата запроса — задайте себе вопрос: а какую задачу я хочу этим решить?

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

                                                                  К сожалению, вы неверно меня читаете.


                                                                  1. Я не придумывал строгую типизацию языка запросов, напротив, я сказал, что строгую типизацию имеют СУБД, а язык запросов эмулирует нестрогую типизацию языка 1С в рамках единой системы типов.
                                                                  2. этот пункт просьба пояснить. Что рассыпется? У Док.Объект нет значения по умолчанию, вы неверно прочли предложение "значение незаполнено, если оно совпадает со значением типа по-умолчанию". У ДокументОбъект значения по-умолчанию, доступного в скриптовом языке просто нет. Ничего не рассыпется.
                                                                  3. Я пытаюсь пояснить свою мысль введением аналогии про "странный строгий тип". Аналогия не зашла, ну что-ж жаль. Неудачная оказалась.
                                                                  4. к какому выводу?
                                                                  5. Да, 1С всего лишь инструмент. Если он чего-то не позволяет, иногда надо просто понять, что задача вышла за возможности инструмента. Не все работы при ремонте квартиры можно сделать перфоратором. Даже хорошим. А вот когда перфоратором начинают вкручивать лампочки — тут и возникает мой вопрос — а вы точно знаете, что делаете?
                                      +1

                                      ПустаяСсылка это не null, не пишите ерунду. ПустаяСсылка это uuid 0000-0000...

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

                                    это не всегда возможно кстати, не весь код вокруг нас — opensource, что кстати особенно касается вотчины java — энтерпрайза
                                      0
                                      Тем не менее декомпиляторы очень неплохо спасают, если конечно есть хотя бы скомпилированная и не обфусцированная версия. ctrl+b в идее и уже смотришь декомпилированный кусок кода. В 1С же даже предположить невозможно что у конкретной функции под капотом и как будет зависеть ее работа от объема данных например. Ну и с open source все гораздо лучше конечно.
                                      0
                                      я с вами отчасти согласен, у меня более «утилитарный» подход к вопросу.
                                      с другой стороны вы уже немного вторгаетесь в вопрос «зачем?», а я изначально задавал рамки «как?»
                                      0
                                      готовься, что если ты сейчас топовый 1Сник — твой доход скорее всего восстановится когда ты станешь уверенным middle'ом. Как правило, это не меньше 2-3 лет практики

                                      не всегда это так. у меня есть история успеха слезания с иглы 1С сразу на позицию сеньора java девелопера с грейдом в зп. но практика — да, должна быть. можно делать заранее (до перехода) и выкладывать на гитхаб, например.

                                        0
                                        с иглы 1С сразу на позицию сеньора java девелопера
                                        а чо, так можно было??? )))
                                          0
                                          Ну… Я тоже перешел без потери в окладе… Правда повезло, да и как у 1сника оклад был не очень.
                                            0

                                            А у меня есть история успеха с хорошим окладом 1сника :)

                                            0

                                            Так нужно было. Если вкалывать, то по-полной!

                                          +1
                                          Хочется обнять и плакать…
                                            0

                                            Вот вам примерный план перехода с 1С на Java:


                                            1.Начать читать Философия Java и Javarush(не обязательно, но полезно), установить IntelliJ Idea, Open JDK


                                            2.Найти готовый гид по созданию CRUD приложения с нуля, технологии: Java WebApp Spring, Angular, сервер Tomcat. (все это время читать теорию)


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


                                            4.Создать свой github, загрузить проект, склонировать, выучить базовые команды (все это время читать теорию)


                                            Дорогие коллеги по 1С, кто имеет вопросы по переходу на Java пишите сюда или в личку, готов помочь всем кому смогу по мере сил.

                                              +4

                                              Да ептыть — берите и делайте фичи из проекта стат. анализатора для 1С (https://1c-syntax.github.io/bsl-language-server/) — предметная область знакомая, а написано на Java. Идеальное место, чтобы 1С-нику, оставаясь в модели языка 1С кодить на Java. Плюс крайне дружелюбное сообщество.

                                                0
                                                Хм, почему то был уверен что вы все на C# ваяеете… Вообще то что вы предлагаете можно было бы советовать, только одно но, если сам не пользуешься инструментом — может быть неинтересно его ковырять (ну либо будет проблематично понимать потребности пользователей и фиксить ошибки). А инертность многих команд такова что его внедрить будет очень сложно))
                                                  +1

                                                  BSL Lang Server и плагин для SonarQube написаны на Java. На шарпе сделан скриптовый движок oscript.io

                                                  0
                                                  Это как пытаться реанимировать динозавра или нацепить на жигули дворники от мерседеса?
                                                  Нет уже спасибо, есть более интересные вещи.
                                                    +1

                                                    Аргументировать сможете?

                                                      0
                                                      Аргументировать что? То что язык 1С отсталый? вы и так все знаете, лично я достаточно потратил своего времени на этого динозавра (и трачу до сих пор), пора двигаться дальше, и всем 1С-никам желаю того же.
                                                        +1

                                                        Нет, аргументировать то, почему 1С-нику не будет легче начать изучать Java с участия в около-1С-ном проекте BSL Language Server.

                                                          0
                                                          Какие технологии из полезных для получения работы использует проект? Как можно объяснить будущему работодателю что ты делал? Можно ли гордиться результатом? Сомневаюсь.
                                                          (Как вы поняли я не любитель 1С Предприятия как платформы и 1С как фирмы и их методов, в будущем не хочу иметь ничего общего).

                                                          Лучше наверное сделать кросс-платформеное веб приложение с оффлайн доступом, с современных фронтом и БД на облачных сервисах как альтернативу скажем не сложной Торговле или CRM?
                                                            0
                                                            Какие технологии из полезных для получения работы использует проект?

                                                            Из того, о чем знаю я:


                                                            • antlr4
                                                            • gradle
                                                            • lombok
                                                            • jackson
                                                            • language-server-protocol
                                                            • какая-то кодогенерация и темплейтинг

                                                            точнее могут рассказать авторы (думаю, они читают тред)


                                                            Как можно объяснить будущему работодателю что ты делал

                                                            … я делал статический анализатор кода с парсером на базе antlr, работал с графом узлов AST. Применял паттерн visitor, библиотеки А,B,C DI-контейнер X, писал правила эвристики, выявляющие ошибки в чужом коде


                                                            можно ли гордится результатом

                                                            решение enterprise-класса, применяемое в десятках крупных предприятий страны, чем не повод для гордости

                                                              0
                                                              может и так, и все это как костыль для «языка» 1С? Круто
                                                                0

                                                                Не совсем понятно, как статический анализ может являться "костылем" языка? Причем, неважного какого. Вот есть SonarQube для C# — это костыль для C# или как?

                                                                  0
                                                                  Ну да костыль для 1С, как и большинство интересных разработок на инфостарте. Я конечно понимаю, что эти разработки хорошо продаются и внедряются, но все это ради проприетарного ПО с закрытым кодом, старым языком, решениями с кучей бойлерплейта, кучами багов на уровне платформы и ужасным интерфейсом?
                                                0
                                                На Java вы уже достигли уровня дохода, который был на 1С?
                                                  0
                                                  К счастью, не всё измеряется уровнем дохода :))
                                                    0

                                                    Твой следующий чекпоинт — Scala :)

                                                  +2

                                                  Какая-то немного путанная статья… Старание изучать новое, безусловно, похвально, но вы и сами отметили, что 1С-ники шарят в быстрых запросах намного лучше многих и многих тертых Джава/Шарпистов. Я сам сейчас наблюдаю на работе (перешел в C#) как "ведущие погромисты" такое в SQL отправляют и потом думают: "а где же тормозить может...?"


                                                  Далее — анализ предметной области, анализ задачи. У 1С-ников в крови понимание смысла предлагаемой бизнес-идеи, и отсюда гораздо более качественная ее декомпозиция на модули, сущности, интеграции. Опять же, "настоящие" программисты — специально пишу в кавычках, потому что уже насмотрелся на них — говнокодеры похлеще самых сраных 1С-ников — думают про иерархии классов, а будет ли на выходе адекватная система, которая делает то, что от нее хотели — им пофиг. Если аналитик за них не подумал, лепят горбатого и прикрываются отмазкой "ну так в аналитике". А то, что сука, здравому смыслу постановка противоречит и хотя бы задуматься "а не накосячил ли аналитик" — нет, это выше моих сил, я вот классы будут сверху до низу проектировать, смысл это не ко мне.


                                                  Средней руки 1С-ника можно смело ставить лидом аналитиков, не прогадаешь. Да еще и SQL соптимизирует и ORM-щиков краснеть заставит.

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

                                                      Не прижилась? Где не прижилась, откуда информация? Программист, который понимает смысл задачи, а не monkey-coder, который делает РОВНО то, что написано — приживётся везде, и будет любим и оплачиваем

                                                        0
                                                        SAP например не соединяет функции аналитика и программиста в одном человеке. да и 1Сные конторы как только поднимаются чуть выше плинтуса обзаводятся аналитиками/методологами.
                                                          –1

                                                          Функции аналитика и разработчика объединяют в своих сотрудниках только мелкие франчи, которым удобно, чтобы студент за мелкий прайс был и швец и жнец. С другой стороны, от такой школы жизни вырастает качественный, сильный разработчик — сразу сильного уровня, только синтаксис поменять и считай готовый спец. А вот "кодеров по ТЗ" в других экосистемах — пруд-пруди и такое лепят с честными глазами "так в задаче написано" — что аж волосы шевелятся и хочется заменить их 1С никами к херам собачьим.

                                                            +1
                                                            ну и поинт то в чем? пусть ваш сильный разработчик сходит в гугл — расскажет им что он достоин зп $200k в год, потому что он прошел школу жизни
                                                              +1

                                                              200к хочет любой разработчик, только один их стоит, а другой- нет. Поинт в том, что язык программирования не важен и светлая мечта "уйду из 1С и заживу" — наивна. Не обязательно быть 1С-ником, чтобы быть говнокодером. Верно и обратное, не обязательно быть говнокодером, если пишешь на 1С

                                                                0
                                                                Не обязательно быть 1С-ником, чтобы быть говнокодером. Верно и обратное
                                                                это правда
                                                              0
                                                              А помимо синтаксиса еще поменять голову, которая совсем к другому программированию привыкла))
                                                                +1

                                                                При наличии оной — это несложно. Скажем так, если делал курсовик на C на первом курсе — можешь писать на чем угодно из мейнстрима.

                                                                  0
                                                                  Ну, на первом курсе у меня еще ПК не было, но курсе на третьем читал K&R. И да, писать то можно на чем угодно. Но писать ХОРОШО — далеко не факт. Ну и C — тоже процедурный язык. Перестроить голову на ООП и ФП — далеко не просто (даже если забыть про маргинальные случаи вроде акторов (хотя не такой уж и маргинальный), хардкорных ФП языков и прочего).
                                                      +1
                                                      Вообще для изучения джавы в этом году JetBrains+Stepik сделали такую штуку га Hyperskill — мне очень понравился их поход в том, что в процессе обучения выполняются хоть простые, но все же проекты, т.е. сразу видишь применение знаний. Ну и конечно огромное количество задач для практики(и теоретической информации тоже). Единственным минусом для некоторых может оказаться то, что там все полностью на английском.
                                                        0
                                                        хорошая штука, спасибо. посмотрел пару задач — чем-то напоминает хакерранк
                                                          0
                                                          Только хакерранк — для того чтобы произвести оценку скилов и платный, а гиперскилл — для обучения и пока что бесплатный(и судя по всему основной функционал и останется бесплатным)
                                                            0
                                                            я не знаю есть ли у хакерранка платные услуги, но я обошелся без них, полностью free.
                                                            и раздел interview preparation там действительно есть, но есть и problem solving на котором надо тренироваться
                                                              0
                                                              А да, действительно, я сразу не нашел. Но все равно — там больше ориентация на определение уровня, чем на обучение. Немного разные инструменты под немного разные задачи.
                                                        +2

                                                        Как показывает практика нормальный 1Сник осваивает java на уровне хорошего мидла за неделю.
                                                        Смотреть здесь https://github.com/1c-syntax/bsl-language-server

                                                          +1
                                                          Хм, больно крутые у вас 1сники. Я до сих пор в байт-коде почти не шарю, (особенно том что для классической jvm а не для андроидных далвика и арта, все таки отличаются довольно неслабо они, да и не очень интересно мне), с многопоточностью пробелы гигантские, да с адекватным построением архитектуры и паттернами пробелов немало. Про библиотеки и вспоминать страшно, сколько их существует и сколько еще не знаю. А ведь почти год как начал изучать и писать на ней. На котлине правда, но один фиг jvm. Это я еще не вспоминаю про сопутствующий инструментарий вроде обработчиков аннотаций, гредла с мейвеном, докеров всяких и прочей бубуйни.
                                                          Ну ладно можно вдвое сократить сроки за счет того что я не сказать что очень активно впахиваю. Ну еще вдвое за счет того что менторов нет и приходится до всего доходить только головой и гуглом. Еще вдвое можно скостить за мою общую тупость. Ну даже еще вдвое за то что был посредственным 1сником — все равно не вижу как можно за неделю освоить java на уровне хорошего мидла.
                                                            +2

                                                            Тут место для картинки "C++ за 21 день"

                                                              0

                                                              Архитектура и паттерны не относятся к java. Это фундаментальные знания.
                                                              Байт код мидлу нахер не нужен.
                                                              Принципы построения многопоточности во всех языках похожи.
                                                              Библиотеки всегда учатся только те, которые нужны. В целом одна дополнительная библиотека осваивается от 2 часов до недели.
                                                              Градл мавен докер надо понимать, но чем это
                                                              отличается от других сборщиков? мидлу не обязательно лезть в дебри. Надо уметь настраивать сборку и понимать последовательность. В 95% случаев за сборки отвечают более опытные разработчики, чем среднестатистический мидл. Ну а докер вообще к яве не относится. Предполагается что ты его уже знаешь! Все ведь запускали 1с и edt в докере, нет?


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

                                                                0
                                                                Архитектура и паттерны не относятся к java. Это фундаментальные знания.

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

                                                                Но без этого трудно сказать что знаешь jvm. Да и я вот все еще из джуна выползаю — уже разок пригождался. Ни за что не поверю что мидлу оно не нужно.
                                                                Принципы построения многопоточности во всех языках похожи.

                                                                Угу, обенно в 1с и java. Очень смешно, да.
                                                                Библиотеки всегда учатся только те, которые нужны.

                                                                Тем не менее нужно их много, и на разных местах/проектах они разные. И багаж этих знаний у мидла довольно высок чтобы без проблем выбирать нужные под конкретную задачу, зная подводные камни и плюсы каждой.
                                                                Градл мавен докер надо понимать, но чем это
                                                                отличается от других сборщиков? мидлу не обязательно лезть в дебри. Надо уметь настраивать сборку и понимать последовательность. В 95% случаев за сборки отвечают более опытные разработчики, чем среднестатистический мидл. Ну а докер вообще к яве не относится. Предполагается что ты его уже знаешь! Все ведь запускали 1с и edt в докере, нет?

                                                                Вы живете в мире сказочных пони. Большинство 1сников до сих пор ни разу не слышали про докер, на edt ругаются, а системы сборки для них магия. Опять же, мне вполне себе в последнее время приходится ковыряться с gradle. CI вот буду настраивать в скором времени. А я ведь еще даже не мидл. Да и докер только как пример был. Нормальному разработчику еще дофига чего нужно знать из ПО, чего средний 1сник не встречал.

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

                                                                Если говорить об 1снике который как и большинство их замкнуты в 1сной экосистеме и за ее пределы не выходили — это те же годы почти. Ну раза в 2 скостить можно.
                                                                Если говорить о прошаренном 1снике который старается быть в курсе того что и как в других экосистемах — будет чуть проще, но одна теория и домашние эксперименты без тысяч часов практики погоды не сделают, но да, въехать будет проще.
                                                                Ну и про изучение явы с нуля без фундаментальных знаний и без опыта — 2 года это вы махнули. За этот срок если у человека не исключительные способности и если он не впахивает по 100 часов в неделю — мы хорошо если jun+ получим.
                                                                  0

                                                                  Вы были на последнем инфостарте?
                                                                  Сейчас про докер едт и системы сборки не знает только совсем темный и ленивый.

                                                                    0
                                                                    Не всем оплачивают инфостарт. Тем более что мне он уже перестал быть интересен. Вы сейчас серьезно опыт пары-тройки тысяч 1сников пытаетесь на всех растянуть?
                                                                      +1

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

                                                                        0
                                                                        Не обязательно. Даже среди них инертность мышления сильна. Да и как то странно под опытным 1сником лида подразумевать. А большинство 1сников, с опытом пару-тройку лет, про все это ничерта даже от лидов не слышали, которые покумекали и решили что это не для их маленьких проектов. edt тоже потеря времени, да и программистам железо менять нужно. Не стоит мерить все мерками столиц и крупных компаний.
                                                                          +1

                                                                          Да, есть проблема в нежелании 1С-ников вылезать из своего мирка. Но разве это проблема 1С, как фреймфорка?

                                                                            0
                                                                            Коммьюнити формируется в т.ч. усилиями вендора. Ну и как бы выше просто упомянули «опытного 1сника», т.е. примерно медианного, без всяких оговорок, и он якобы подтянется до уровня хорошего мидла за неделю. Хотя, я уверен, даже человеку приходящему из гораздо более близкой экосистемы C# потребуется месяц-другой чтобы сравняться с нормальным мидлом java. Ровно и наоборот.
                                                                              +1

                                                                              Вы в SAP загляните. Там до сих пор считается нормой интеграция через обмен файликами Excel. А за предложение выдавать оттуда PDF вас скорее всего тихо убьют, чтобы крамолу подавить в зародыше.

                                                                                0
                                                                                «С козырей решил зайти» :) Вы еще COBOL вспомните.
                                                                                  +1

                                                                                  Что значит "вспомните"? SAP вообще-то мировой лидер, лучшие методологии и современные технологии. Кажется я цитирую их методичку, но это только говорит о том, что они не закрылись, а вполне себе продают и внедряют. Это не вчерашний день.

                                                                                    0
                                                                                    Ну а на COBOL по городским легендам проводится 80% всех финансовых транзакций в мире. Только непонятно зачем на них смотреть. Они как и 1С заняли свои ниши, не по причине качества продукта, а потому что были первыми на рынке, которые ему хоть что-то цельное предложили. Но это не повод всю жизнь оставаться в «средневековье».
                                                                                      0
                                                                                      Ну с т.з. продвинутости разработчиков сап и правда глупо вспоминать. По крайней мере если там все как вы описываете.
                                                                                0
                                                                                Вопрос в том, что 1С в принципе не хочет интегрироваться в IT-сообщество. Может или не может технически (например использовать готовые системы управления зависимостями, или встраиваться через всякие DI) другой вопрос, но не хочет это точно. И понятно почему, им выгодно, чтобы 1С-ники не смотрели по сторонам. А то начнут сбегать к бесплатным конкурентам не дай бог при любой возможности, и вендор-лок ослабнет, а 1С потеряет деньги.
                                                                      0
                                                                      все что вы описали 1Сник не знает, даже опытный
                                                                        0

                                                                        Это написал опытный 1С-ник и я подтверждаю, что он это знает. Если вы, работая с 1С, всего этого не осилили, то обобщать на всех, право, не стоит

                                                                          +2
                                                                          come on! а middle Java developer умеет проводить операции на сердце и запускать ракеты в космос!
                                                                          давайте будем честны: если мы говорим о массовом сегменте — 1Снику не свойственны такие знания
                                                                            +1

                                                                            Хотите, я вам покажу пару десятков профессиональных C#-разработчиков, которые про докер не знают ровно ничего? А про async/await они знают, что это хорошо, но не знают почему. Быть невеждой можно не только на 1С, это не проблема фреймворка.

                                                                              0
                                                                              Но это автоматически означает что они ни разу не мидлы, а просто мимокрокодилы какие то.
                                                                                +1

                                                                                Нет. В трудовой книжке и в зарплатной ведомости у них написано, что они мидлы. Да и в прицнипе, C# знают хорошо, библиотеки, фреймворки. Но только на уровне ежедневных потребностей. Вглубь не лезут. Это потому, наверное, что Microsoft плохой и .NET говно.

                                                                                  0
                                                                                  На заборах тоже много чего пишут. То что многим джунам пишут что они мидлы — ничего не значит. Просто ЧСВ тешат. Есть «мидлы» по бумаге которых и джунами то стыдно назвать, что с того?
                                                                                    +1

                                                                                    Боюсь, классификация джун/мидл/сеньор слишком условна, чтобы завязываться на нее в дискуссии. То, что я понимаю под словом "мидл" — они этому соответствуют. Задачи делают, библиотеки знают, на ревью откровенного говна отдают немного. НО — дальше рамок своих служебных задач не интересуются. Докер, Девопс, особенности TPL и async — "зачем, оно просто работает и я знаю, как это использовать". Это мидлы, в моей классификации, а в вашей — возможно нет, см. первое предложение в этом каменте.

                                                                                    0
                                                                                    ну вы бы еще посмотрели что у них в резюме написано
                                                                                      +1

                                                                                      Не понял тезис. А чем мне бы это было полезно?

                                                                              0
                                                                              Что говорить о массе если в моем прошлом франче, имеющем несколько коробок на счету, проект в портфолио с несколькими тысячами пользователей (пусть не самым лучшим образом сделанный), входящий в относительно небольшое число франчей имеющих статус «Центр разработки» про докер большинство впервые узнало чуть больше года назад только от меня, покивало головой и забило. А хотя нет, кажется они у вас таки вебинар заказали, послушать. Но по моим сведениям оно так дальше и не пошло с тех пор. Собственно по остальным пунктам у большинства также пробелы. Но сертификатами увешаны как елки, да. Правда не уверен что сейчас там есть больше одного-двух экспертов, в основном сертификаты чисто по конфигурациям.
                                                                                0
                                                                                Вот я — 1С-ник со стажем 18 лет. И впервые слово Докер прочитал тут в комментариях. Мельком погуглил — на кой вообще это нужно тем, кто занимается 1С?
                                                                                  0
                                                                                  Ну вот а товарищи выше утверждают что это любой 1сник знает и потому ему не нужно будет это объяснять при переходе на другие стеки (правда за докер все зря зацепились так, в изначальном каменте я скорее подразумевал «докер и т.п. технологии которые средний 1сник не знает за ненадобностью а джависту они нужны»).
                                                                                    +1

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


                                                                                    С докером то же самое, девопсу — обязательно, а джаверу-бекендщику — просто полезно и то, по желанию.


                                                                                    Вывод: "товарищи" выше не утверждают ничего необычного, и уж тем более того, что докер знает любой 1С-ник.

                                                                                      0
                                                                                      Цитирую ZEEGIN
                                                                                      Сейчас про докер едт и системы сборки не знает только совсем темный и ленивый.

                                                                                      Не, конечно джавист или любой другой спец может разрабатывать и деплоить по старинке проект, ручками, но как бы так уже мало кто делает. То же и с мобилками, у многих на CI сборка мобилок и тесты в докер контейнерах крутятся. Ну и да, лучше не цепляться к бедному докеру так сильно, речь скорее про весь стек инструментов полезных разработчику, частью которого докер в т.ч. является.
                                                                                        +1

                                                                                        "ленивый и совсем темный" не подразумевает "1С-ник", верно же?

                                                                                          0
                                                                                          Ммм… И? Во-первых среди 1сников таких гораздо больше по моим наблюдениям, среди них вообще немногие программированием интересуются и развиваются в этом направлении спустя время. Во-вторых из за обособленности экосистемы и коммьюнити 1снику таки сложнее перескочить. И уж тем более сразу за неделю с уровня мидла в 1с на уровень мидла в java/kotlin/c#/js/etc.
                                                                                            +1

                                                                                            За неделю не знаю. Без бэкграунда точно нельзя, а с бэкграундом и stackoverflow под рукой — думаю можно

                                                                            –1
                                                                            Байт код мидлу нахер не нужен.

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

                                                                          — а от этого вообще чуть слеза не покатилась)

                                                                          Сам сейчас в процессе перехода с 1С на Swift и iOS разработку. И так же, как и автор, до этого ни на чем кроме 1С не писал. Надеюсь, мой мозг еще не травмирован этим опытом и у меня еще есть шанс стать настоящим программистом)
                                                                            +1

                                                                            Когда начнете писать энтерпрайз-приложения с базой данных, моделями предметной области и ui — вспомните 1С не одним добрым словом, поверьте.

                                                                              0
                                                                              Ну вот пишу приложения, правда под андроид, ни разу не вспоминал 1с добрым словом. Наоборот, с ужасом вспоминал как приходилось городить простыни кода, копипастить или извращения изобретать для банальных вещей, или вот мучаться с рефакторингом.
                                                                                +1

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

                                                                                  0
                                                                                  1с хороша только в основном за счет доступности кадров в регионах, выстроенной системе франчей, низкого порога входа и большого количества готовых решений многое в которых open source, пусть и платно. Преимуществ в платформе как таковой особых нету. Не говоря уж о языке. Даже какой нибудь js (чтоб его черти сожрали, ужасная дрянь) — пусть уродлив, но куда гибче.
                                                                                    0
                                                                                    Кстати. Меня постоянно пинают, что я в статье не упомянул плюсы 1С. И я честно ищу их для второй части статьи, чтобы она была не такой однобокой.

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

                                                                                    Другое дело, что в современном мире польза такой расширенной работы в отчетах, а особенно в оборотках весьма сомнительна. Современные системы должны быть (и бывают) куда более бизнес-процесс ориентированными, где пользователь работает в АРМах, где он одновременно и видит нужную ему информацию и вводит ее в систему. А в этом плане у 1С все очень плохо. А оборотки (и другой интерфейс аналитических отчетов) по сути важны в процессах аудита / бухгалтерии и там где процессы очень плохо автоматизированы. Как инструмент же BI СКД очень неудобен.

                                                                                    При этом если исключить работу со временем и аналитикой по периодам, то те же регистры это одно простое материализованное представление.
                                                                                      0

                                                                                      Плюсы в 1С не очень явные, они раскиданы по платформе и видны, когда видишь, как это делается в других платформах. В основном это НЕ фичи, а наоборот — отказ от фич. Несколько примеров.


                                                                                      1. (Мой любимый пример) Числа. В 1С есть только аналог BigDecimal в контексте переменных встроенного языка (и numeric/decimal в данных). Это офигенно роняет производительность (сравните цикл инкрементов до миллиарда с любым языком, даже с Python). Но сколько же раз я видел ошибок прикладных программистов в решениях связанных с этим. То float начинают для денег использовать, то с округлением напортачат, то за maxint уйдут, то в конвертации между типами ерунду наделают. А как прекрасно выглядит java-код, который интенсивно работает с bigdecimal/biginteger! Особенно через пару месяцев, после его написания. Я после пары раз такого опыта, для этих задач настоятельно рекомендую kotlin или scala (ну или .NET) — там хотя бы перегрузка операторов есть.
                                                                                      2. Unicode. Что, блин, может быть проще? Не надо в 2019 году использовать однобайтные ASCII кодировки (кроме интеграции с дремучими legacy). Ни за что. Но нет же. Раз в год-два я очередной раз объясняю людям, что надо использовать nvarchar и не надо однобайтный varchar в БД (когда этой системы будет 100-200 инсталляций кастомизированных по несколько ТБ и в одной самой ценной невозможно будет внести имя клиента — будет прикольный фэйл). В 2015 году у gitlab отваливалась LDAP-авторизация из-за неправильной работы с кодировками, у JetBrains IDE до сих пор не везде работает с кириллицей в именах файлов. Ну чёрт подери — доколе?
                                                                                      3. Нумерация документов/справочников. В 1С она точно не самая гибкая и не самая лучшая. Но что делают в банковском софте и в самописных системах учёта — ну это же просто мрак. То identity воткнут (и потом "ой, а почему у нас дырки"), то наоборот, сделают генератор, который работает с блокировкой на уровне СУБД (и станет узким местом).
                                                                                      4. Составные типы. Я не рад тому, как это сделано в 1С. Но опять же ровно до того момента, как приходит пора увидеть очередную попытку их переизобрести в самописных решениях. Ну как же так вот у этих людей (senior+ уровня!) и гуру C# и Java получается сделать ещё хуже? Да даже с идентификаторами ссылки. 1С приняла волевое решение — всё, все идентификаторы ссылок абсолютно синтетические, но последовательные, примерно как NEWSEQUENTIALID в MS SQL и нет больше проблем, например, при репликациях/обменах. Нет же, разработчики других систем упрямо лепят что-то типа identity (она же короче!), тащат их в GUI, пока не придёт пора делать несколько связанных инстансов (и тут их ждёт открытие).
                                                                                      5. Ещё одна мелочь — отображение списков. В 1С есть достаточно удачные механизмы листания (больших) списков и навигации по ним. Вообще тема достаточно неприятная, она идеально не решается: тут либо интуитивно и просто (но риск огромных рекордсетов на клиенте), либо той или иной кривизны пейджинг. Те, кто делают пейджинг часто делают его криво. Те, кто делает честный скроллбар — кладут базу данных, канал и клиента.
                                                                                      6. Одно место для проектирования пользовательского интерфейса (я про управляемые формы). Спору нет, в веб-клиенте интерфейс работает не то чтоб идеально. Но работает. А вот для многих других учётных и банковских систем сделать удалённое рабочее место — это проект уровня предприятия. Оговорка: к счастью для тех кто изначально сделал на вебе это либо не нужно, либо есть Электрон.

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

                                                                                        +1
                                                                                        Все то, что вы написали стандартный «набор джентельмена» для любой высокоуровневой (в частности ERP) платформы. И все они в 1С реализованы мягко говоря так себе. Я надеюсь вы читали эту статью.

                                                                                        В ваших же пунктах вы кстати почему-то сравниваете с совсем низкоуровневыми платформами вроде Java (даже не .Net где хотя бы LINQ есть). Ну и составные типы если они ссылочные, то это просто костыль для обхода наследования, а если там мешаются разные примитивные типы, то это мина замедленного действия с точки зрения производительности (и сам 1С не рекомендует их использовать по сути). Впрочем в статье выше это все есть.
                                                                                          0
                                                                                          1. Вашу статью я читал. С чем-то согласен полностью, с чем-то частично, с чем-то полностью не согласен, но статья очень хорошая. Даже начинал писать комментарий, но а) я понял, что он по объёму может стать сопоставим со статьёй, б) там и так тьма комментаторов (и опять же — с кем-то согласен, с кем-то нет). Писать такой комментарий ради "в интернете кто-то не прав" — только тепловую смерть вселенной приближать :)
                                                                                          2. Все то, что вы написали стандартный «набор джентельмена» для любой высокоуровневой (в частности ERP) платформы. Для SAP и DAX — соглашусь, но если посмотреть шире, то боюсь разрушить вашу веру в человечество. Если б вы знали, какой трешак происходит в банковской и финансовой сфере даже по перечисленным пунктам.
                                                                                          3. В ваших же пунктах вы кстати почему-то сравниваете с совсем низкоуровневыми платформами вроде Java (даже не .Net где хотя бы LINQ есть). Потому что эти пункты низкоуровневые. Я могу, наверное, 100 пунктов хорошего и 100 плохого написать разной степени низкоуровневости и высокоуровневости. Потому и выбрал именно эти пункты, что сравниваю не только и не столько с Java, сколько со всеми распространёнными языками/платформами. Всё перечисленное применимо для Java/JS/C# и большая часть для Ruby/Python, а то что про СУБД для SQL Server/Oracle/PostgreSQL/MySQL.
                                                                                          4. Главный посыл, что если в платформе/среде есть доступ к распространённым языкам программирования (Java/JS/C#), или прямой доступ к структуре БД, то скорее всего будет возможность, особенно на ранних стадиях разработки решения, наделать решений, которые для этого класса задач будут очень неприятными. А в 1С — не самые лучшие решения, но от типичных грубых ошибок спасают. Я был бы рад, если бы этих грубых ошибок не было, но я их вижу в крупных финансовых организациях во всех без исключений. И во многих "не ERP" решениях (Jira, gitlab, IDEA прямо упомянуты). Отсутствие этих ошибок позволяет гораздо быстрее создать MVP на 1С (в определённом классе задач) и позволяет MVP дальше масштабировать.
                                                                                          5. Ваши статьи по lsFusion внимательно читаю. Не со всем согласен, настроен скептически, но искренне желаю удачи.
                                                                                          6. Ну и составные типы если они ссылочные, то это просто костыль для обхода наследования Мне кажется, что правильнее было бы приводить аналогию, что это тип-сумма из алгебраических типов данных, которые активно используются в ФП. Но работа с ними по-хорошему требует полноценного pattern matching и вообще, гораздо более зрелой работы с типами. Но это всё споры типа "эта какашка больше похожа на орхидею или на розу" — не похожа она ни на то, ни на другое и вообще лежит и пахнет.
                                                                                          7. мина замедленного действия с точки зрения производительности — не такого уж и замедленного, ага, и я выше кидал ссылку на свою статью.
                                                                                            0
                                                                                            какой трешак происходит в банковской и финансовой сфере даже по перечисленным пунктам.

                                                                                            Я в курсе. Но да, фокус в том, что и не понятно какие платформы там использовать. С их то требованиями к ИТ.

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

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

                                                                                            6. Ну то что пока я видел в типовых их используют именно для того, для чего в том же lsFusion используются классы и множественное наследование.

                                                                                            7. Ну так в статье есть ссылка на рекомендации по использованию их самим 1С. И она сводится по сути к тому что: не используйте.
                                                                                  +1
                                                                                  я бы сказал что есть две разнонаправленные тенденции:
                                                                                  — когда надо сделать что-нибудь вроде нового документа — плясок действительно больше, но я думаю что это честная цена за то, что ORM не работает как магия и я не привязан к нему и могу его заменить.
                                                                                  — с другой стороны когда надо описать бизнес-логику — то что в джаве лаконично описывается в три строки — на 1Се надо пилить нудно и длинно
                                                                                  0
                                                                                  Почему Swift, а не Java? Как прогресс?
                                                                                    0
                                                                                    Субъективно больше понравился. Наверное, потому что я отдаю предпочтение iOS, нежели Android. Интереса ради поставил как-то раз Хакинтош, запустил Xcode и понял, что все это время жил неправильно. Строгая типизация, подсветка синтаксиса и ошибок, именованные параметры у функций, замыкания, опциональные значения… В общем для человека, не видевшего ничего кроме 1С — это было сильно.
                                                                                    Сейчас прохожу курсы. Как закончу, буду работу искать.
                                                                                    С чем тяжело, так это думаю с декомпозицией, архитектурой. В 1С процедуры по 4000 строк, делающие все и сразу — в порядке вещей. Хочется писать красивее)
                                                                                      0
                                                                                      Брррр. Ну про 4к строк это вам просто видимо с конфой не повезло. Все таки так даже на 1 не пишут.
                                                                                        0
                                                                                        Пожалуй, Вы правы. Хотел привести пример из типовой конфы — не нашел. Как минимум с тем, что это в порядке вещей — точно погорячился.
                                                                                        0
                                                                                        Интересно было услышать мнение другого человека, что на том же пути. В 1С больше 10 лет, до этого немного паскаля, делфи, с, с++. Давно хотел заняться мобильной разработкой, но руки не доходили. Делал приложения и под IOs и под Android на мобильной платформе 1С, но это, если честно, ужас. Посмотрел курс Стэнфорда по Swift, кое-что повторил, понравилось. Учу английский, на русском информации очень мало, да и вакансий тоже мизер.
                                                                                          0
                                                                                          Я с 1С лет 6 проработал. В какой-то момент стало скучно. Даже с учетом того, что появляются какие-то новые вещи типа расширений и EDT — все равно тоска.
                                                                                          Тоже пробовал мобильную платформу от 1С, но что-то не зашло. Swift начинал изучать также со Стэндфордских курсов. Делал все лекции, ДЗ. Потом понял, что не хватает базы, смотрел курсы cs160a, cs106b — тоже Стэнфорд. Потом еще алгоритмы и структуры данных на Coursera, мобильная разработка на edx, задачки на HackerRank — в общем все, на что времени хватало) На английском несопоставимо больше информации. Хотя сейчас прохожу русские онлайн курсы. К ним, конечно, много вопросов в плане качества, но полезную информацию я и оттуда получил.
                                                                                            0
                                                                                            Любопытный факт замечаю что 1сники часто именно в мобильную разработку уходят. Не только в нее, конечно, но что в андроид чатах такое встречаю, что в чате по флаттеру один из активнейших участников 1сник, что вот тут на хабре многие так же поступили, что сам. Хотя может в чатах по бэку или веб фронтенду та же история, не знаю.
                                                                                              +1

                                                                                              Просто мобильная разработка сама по себе появилась не так давно по времени. Новое, развивающееся, востребованное. Туда не только из 1С уходят. Доля стационарных PC в мировом трафике все ниже

                                                                                    0
                                                                                    Еще хороший вариант готовиться к экзамену 1Z0-815/816 или 1Z0-808/809. Можно не сдавать, но добиться прохождения пробных тестов на 70-80%. Позволяет посмотреть на многие вещи в Java под другим углом, не так, как их понимаешь при прохождении курсов и написания домашних проектов.
                                                                                      0
                                                                                      как мне кажется, это хороший способ вылезти из мидлов в синьеры, а не из 1Сников. но может кому-то прийдется по душе…
                                                                                      0
                                                                                      С JavaRush как то не законченна мысль. Стоит потом продолжать проходить уровни с 15 по 40 или нет смысла если придерживаться программы из статьи?
                                                                                        0
                                                                                        я бросил, не знаю что там дальше 15 уровня
                                                                                        +4
                                                                                        О, как мне это знакомо. 3 года назад, после 13 лет 1с-а понял, что хочу что-то новое. Не помню уже конкретно почему (что-то прочитал в инете про выбор языка программирования), но выбрал Android разработку. Так же начал читать про джаву, потом всякие сайты по программированию Android. Даже купил и прошел курс «мобильный разработчик» на geekbrains.ru. Это, наверное, самая глупая трата денег в моей жизни.
                                                                                        Через пол года начал слать резюме в разные компании. Сейчас с улыбкой вспоминаю, свои тестовые задания с сетевыми запросами на AsyncTask-ах и God Activity. В одной, после тестового задания, мне отказали, но hr (спасибо ему большое) выслал мне перечень с ссылками, что надо изучить: rxJava, Clean Arhitecture, MVP, Dagger… Еще месяца через 3-4 уже что-то мог писать на Rx-ах и устроился в одну компанию, которая разрабатывала приложение на Xamarin и С#, ну там в процессе работы переучился на C#. Переход Java -> C# гораздо легче, чем 1C -> Java. Там работал 2,5 года, почти каждый день узнавал, что-то новое. И пришел к понимаю, что хочу разрабатывать на нативе, ушел в другую компанию. Теперь пишу на Java и Kotlin.
                                                                                        По зп, где-то через год достиг своей 1с зарплаты. Но, как писали выше, деньги конечно хорошо, но это не главное. Главное, что получаю удовольствие от работы. 1С очень ограниченный язык, да и знание бухгалтерии (которая достала) необходимо.
                                                                                        Ощущение от перехода с 1с на Java: вот дали тебе большой лист бумаги, а ты в уголочке рисуешь одним простым карандашом, и внезапно узнаешь, что есть и карандаши других цветов, и лист большой, и до хрена чего нарисовать можно.
                                                                                        Извините, сумбурно получилось.
                                                                                          +1
                                                                                          Самое важное тут — это Тим лид. Ты должен был познакомиться с ним на тех.собесе и «он должен был выбрать тебя и ты должен был выбрать его» (с).

                                                                                          "— А как я узнаю, что он меня тоже выбрал?
                                                                                          — Он захочет тебя убить…" ©
                                                                                            +3
                                                                                            Вставлю свои 5 копеек. Интересно, а много вообще людей пришли в программирование, сразу начиная с 1С? Я лично пришёл в 1998 году, когда только вышла 7.5. Пришёл с неоконченной вышкой, и уже определенным общим багажом знаний, включая опыт решения задач на всяких Бейсиках, асмах, Си(++), Паскалях. До 1С шабашил написанием курсовых и дипломов. На том языке, который требовался заказчику. Это конечно не было серьёзными масштабными проектами, но тем не менее. И дальше ещё несколько лет, уже став ведущим разработчиком 1С, сейчас бы это называлось тим лид, тогда таких слов не было, я очень активно продолжал заниматься ещё множеством других технологий.
                                                                                            То, что теперь называется фулл стэк. Да, конечно же, времена очень сильно поменялись. И сейчас поддерживать тот уровень, который удавалось держать тогда во множестве технологий, уже практически не реально. И я со временем ушёл полностью в 1С. Просто потому, что мне это было интересно, и за это всегда и везде платят вполне хорошие деньги по меркам ИТ. Со временем я, конечно же, стал перегорать. И сейчас 1С уже просто как средство для обеспечения всей остальной жизни. А в остальной жизни вернулся к старым навыкам, которые уже не работа, а хобби: микроконтроллеры, паяльник, юниксы, си, php, JS. Конечно же, я не претендую на то, что быть сеньйором во всём этом зоопарке, но и врядли много найдётся джунов, которые со мной потягаются.
                                                                                            Так что я к чему всё это? Я не признаю определения 1Сник, Джавист или Шарпист. Есть программисты. Хорошие, и не очень. И криворукие уроды ещё :-).
                                                                                            Да, ещё есть и 1Сники, но это те, которые консультируют и настраивают, они не программисты, и практически никто из них никогда не станет хорошим программистом. Но исключения тоже бывают.
                                                                                            Изучить конкретный инструментарий, это дело некоторого времени, и самое главное — наличия причин для этого. Тут автор всё правильно написал, прямо сразу даже мидлом не получится. Вот вариант — как это делать, я вижу единственный приемлемый: это работая в компании, в которой используются разные технологии, постепенно сместится в другой сектор. У нас сейчас, в крупном фин.холдинге, среди коллег люди так и приходили в 1С, и уходили из неё.
                                                                                            Упираться рогом, типа «опостылила эта ваша 1С!» и уходить просто в никуда с нуля, это весьма спорное решение. Я вот для себя причин не могу найти, даже при том, что для меня другие технологии представляются примерно как вождение машины, трактора или квадроцикла. Если действительно хорошо умеешь на одном, то на любом другом виде поедешь практически сразу, а через короткое время и наработаешь навыки до должного уровня, при желаемом условии постоянной реальной практики. По деньгам, по месту работы, по должностям, по перспективам — лично для себя я не вижу причин, уходить с 1С. Я вижу только одну возможную причину — ненависть :-). Скорее всего конкретно к прикладным областям. Тут можно походить к психиатру, но у нас это не принято :-). Сам я считаю это скорее моим преимуществом в области ИТ: я отнюдь не чистый ИТшник, я знаю ещё массу всего о хоз.деятельности, причём во множестве отраслей. Благодаря тому, что прошёл весь положенный путь от франча, и включая многопрофильные компании.
                                                                                              +1

                                                                                              Дай расцелую!

                                                                                                0
                                                                                                Интересно, а много вообще людей пришли в программирование, сразу начиная с 1С

                                                                                                Я пришел. В 2014 правда, и сразу на 8.2.
                                                                                                По поводу того что программист не должен быть программистом на фреймворке или на языке мнение разделяю, но если к этому не прикладывать специально усилий, и неслабых, в течении долгого времени, то не выйдет таковым стать. И очень немало «опытных 1сников» как раз такие программисты на фреймворке и есть.
                                                                                                +2
                                                                                                Упираться рогом, типа «опостылила эта ваша 1С!» и уходить просто в никуда с нуля, это весьма спорное решение. Я вот для себя причин не могу найти, даже при том, что для меня другие технологии представляются примерно как вождение машины, трактора или квадроцикла.

                                                                                                1С — это песочница с более низкими бортами, по сравнению с другими фреймворками. И здесь реально(пока реально!) годам к 35 достать до края этого бортика и понять, что именно в разработке здесь принципиально далее двигаться некуда. Сфер применения мало. Ну производство, ну WMS, ну ритейл, ну ещё несколько вариантов. Опробовав и наладив в каждой из сфер свое решение, проект, одно, второе, третье, далее понимаешь, что следующее — это просто калька с предыдущего. И всё — далее потеря интереса к работе, потому что начинается день сурка.
                                                                                                Доходы тоже ограничены сверху. Ну вырос ты в своем городе до потолка по доходам. Далее — ну переехал в столицу, там вырос по доходам до верхнего уровня. И всё. Куда далее? За пределами бывшего СНГ 1С не распространено, включать трактор без смены профиля смысла нет.
                                                                                                Уходить в руководство — это опять-таки отказ от себя в роли разработчика.
                                                                                                Становиться фрилансером многостаночником, развивать свое — это тоже уже не разработка, да и ситуация с интересной работой ещё хуже, чем в первом абзаце.
                                                                                                Вот и получается что на четвертом десятке лет перед человеком встает вопрос о смене песочницу на другую, где борта повыше, а перспектив побольше.
                                                                                                  +1

                                                                                                  Возможно, на четвертом десятке возникает опыт, который можно передавать более молодым? Руководство отделом, архитекторство, IT-консалтинг, например?

                                                                                                    0
                                                                                                    Так это же все скучно обычным программистам.
                                                                                                      0
                                                                                                      ну это один из вариантов, да, но во всех этих случаях именно разработкой заниматься придется в лучшем случае эпизодически
                                                                                                      +1
                                                                                                      Всё примерно так. Но тут уж тогда вопрос глубже. Работа для жизни, или жизнь для работы?
                                                                                                      Я за свои уж более 20 лет стажа прошёл уже практически всё упомянутое: и руководство, и несколько городов сменил, от мелких к крупным. Ну разве что фрилансом сильно не увлекался, там тоже надо иметь определенный склад характера, важно быть не столько программистом, сколько предпринимателем. Заграницы мы с супругой рассматривали, и пришли к выводу, что они того не стоят. Большинство из наших знакомых, которые свалили, страдали откровенным отвращением ко всему советскому/российскому/русскому, и именно это было основным их движетелем. Мы такой фигнёй не страдаем. В остальном надо себе отдавать отчёт обо всех сопутствующих неудобностях: другая культура, языковой барьер, фактический разрыв с друзьями и родственниками и т.п. И ради чего тогда всё? Я езжу по заграницам, и мне интересны не тур.достопримечательности, а повседневная жизнь людей там, насколько её можно так мельком разглядеть. И я не вижу, чтобы я, мы как семья, могли рассчитывать на принципиальное улучшение качества жизни. Скорее наоборот, очень реально в нём потерять.
                                                                                                      В итоге теперь, уж на пятом десятке, да, честно могу признать, я подвыгорел.
                                                                                                      Вот только во-первых, каждое утро по прежнему иду на работу с удовольствием: крутая компания, один из лидеров в своей отрасли, отличный коллектив, хорошее отношение.
                                                                                                      Во-вторых: полная уверенность в стабильности себя и семьи. Я найду работу практически где угодно и когда угодно, будь то Москва, или мухосранск. И по меркам места она будет вполне достойной. Мы можем в любой момент распродать недвижимость тут и переехать практически в любую точку России, будь то Владивосток, Сочи или деревня в средней полосе. И я, при всё критическом восприятии мира, не вижу причин, чтобы в перспективе 10-20 лет что-то поменялось в этом плане. Как говорится, лишь бы не было войны.
                                                                                                      В-третьих: о планке сверху. Я стараюсь отслеживать тенденции зарплат в ИТ. И я как-то вот нифига не вижу, чтобы в других специализациях планки были сколь-нибудь заметно выше. Да, выше бывает в относительно узкоспециализированных направлениях, те же SAP/Axapta. Или правильнее сказать — были выше. Вот только резко сужается свобода выбора места работы. И куда чаще бывает, что выше планка зависит не от специализации, а от эксклюзивных условий работы, пресловутой «незаменимости». Вот в таких условиях и 1Сники сидят сильно далеко за 200 т.р., и не только в Москве.
                                                                                                      В-четвертых: уже давно таки работа для жизни. Как разработчик, я реализуюсь теперь уже вне работы, проектирую дом, системы умного дома в нём. А работа мне всего лишь позволяет всем этим заниматься, оставляет мне время для этого и даёт средства.
                                                                                                      Причём я отнюдь не считаю такой подход единственно верным, всё зависит от человека. Сам порой с некоторой ностальгией вспоминаю времена, когда жил работой. Теп