Каждый из вас может оставить свой вклад в истории. И оно того стоит...

05.06.25

Команда - Мотивация

Разрабатывая открытые решения, мы внимательнее относимся к коду, интерфейсу, документации и оформлению. А изучение чужого кода вдохновляет и открывает новые подходы. Расскажем об опыте создания открытых решений для 1С, ценности open-source и роли сообщества.

В 2005 году я окончил университет по специальности «Бухучет» и должен был стать бухгалтером. Но во время практики и первой работы случай свел меня с руководителем проекта по внедрению SAP R/3 в одном из крупнейших газодобывающих холдингов России. На этом моя карьера бухгалтера резко закончилась.

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

Будучи тогда еще молодым и не особо востребованным специалистом, я оказался в фирме, которая занималась разработкой для собственных нужд одной из газовых компаний. Время тогда было интересное – программистов еще не заваливали смузи-предложениями, и за вопросы в духе: «Есть ли у вас менторство в компании?» можно было получить хорошее ускорение в сторону выхода с собеседования. Никто ни с кем особо церемониться не собирался.

 

 

Да и программистов 1С (тогда еще 7.7) вообще мало кто считал программистами. Хотя… Возможно, я преувеличиваю. Пошутили, и ладно.

 

Немного истории

 

 

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

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

Я очень быстро открыл для себя FormEx – если кто помнит 7.7, это инструмент, который позволял работать с формами, отслеживать движение мышкой, изменять размеры, передвигать элементы. В стандартной 7.7 с этим было немного грустно, и FormEx тогда давал нам больше, чем «восьмерка» сейчас. Поэтому для меня, как человека, который я хотел делать на 1С что-то красивое, но программировать толком еще не умел – это было в свое время отличное открытие.

Таким же открытием для меня оказался 1C++, который для программистов 7.7 тогда был практически как швейцарский нож. Однако первое, с чем я столкнулся во время работы с 1С++ – это отсутствие толковой документации. Сашу Орефкова было практически невозможно поймать, он – «птица гордая», пойди его найди. А все остальные тусуются на форумах, и задавать им нубские вопросы мне было неудобно. Поэтому я просто закатал рукава и начал разбираться сам – восстанавливать документацию, потихоньку перелопачивать.

В конечном итоге я сделал и выложил на форуме справочник по 1С++ и FormEx в виде специальных als-файлов, которые открывались в составе синтакс-помощника 7.7. Поначалу я думал, что это никому особо не понадобится – старожилы и так все знают. Но сообщество 1С++ мой вклад приняло, и это стало для меня большой неожиданностью. Люди, которых я считал практически небожителями, говорили: «Вау, молодец, классно». Я такого отклика действительно не ожидал. Поскольку я для них стал «своим», это дало мне право задавать вопросы и получать обратную связь.

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

  • в стандартной 7.7 был свой синтаксис запросов, совсем непохожий на привычный язык SQL;

  • 1cpp.dll позволяла сделать прямой запрос к SQL-базам данных в нотации SQL-языка с некоторым синтаксическим сахаром;

  • а возможность делать прямые запросы к DBF из кода 1С появилась позже, когда Саша Орефков выложил 1SQLite, и там тоже был свой синтаксический сахар.

Т.е. в 1cpp.dll – соленый сахар, в 1SQLite – перченый сахар. Выбирайте каждый свой. А мы писали тиражное решение, которое хотели сделать универсальным, и мне, как руководителю разработки, было тяжело объяснить ребятам, что надо постоянно что-то комбинировать. Я посмотрел на недавно вышедшую «восьмерку», порадовался, как они классно сделали там язык запросов, и подумал – почему бы не сделать так же в 7.7?

Так появился класс ПрямойЗапрос – фактически аналог механизма запросов в «восьмерке». Он обеспечивал единый синтаксис, единое выполнение и единую параметризацию для абсолютно разных платформ. И главное – все это было открыто. Любой человек мог посмотреть, как там все сделано, и в случае необходимости адаптировать его под любую базу данных, учитывая особенности различных версий SQL. Там была документация – если не ошибаюсь, 150 страниц.

Дальше вышел класс ПоставщикДанных – аналог «восьмерочного» динамического списка, позволяющий буквально в четыре строки кода реализовать для справочника динамическое чтение и фильтрацию данных. Он тоже был полностью открытым, к нему была документация. Для меня написание этого класса стало квинтэссенцией и «лебединой песней» в 7.7, потому что с «семерки» я ушел практически сразу же после того, как его выложил. Так жизнь распорядилась, бизнес порешал. Тем не менее я эту разработку тащил до 2015-го года, хотя еще в 2011-м уже никаких дел с «семеркой» не имел вообще.

Получается, что учиться «восьмерке» я начал в 2010 году, полностью на нее перешел где-то в 2011, а в 2013-м у нас уже вышли свои собственные первые решения на 1Сv8.

 

 

Вот как выглядела наша «семерка», которую мы разработали в 2010 году – мне кажется, что она и в современных реалиях выглядит в целом адекватно. Все табличные поля и кнопки отборов работали так же, как сейчас работает динамический список. И для того, чтобы все это сделать, надо было написать по 4 строчки кода на каждую из них. Работало шикарно, и до 2015 года я все это поддерживал.

 

Эволюция мотивации. «Зачем оно тебе» от момента когда я только начинал джуниором, до сегодняшнего дня. Хотя, возможно, речь не столько о мотивации: просто «шило в одном месте»…

 

После перехода на «восьмерку», я какое-то время занимался своими основными обязанностями в бизнесе – руководил компанией, управлял разработчиками и учился.

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

Когда мы пишем что-то «в стол», можно позволить себе городить любые костыли, не писать документацию – если что-то не понравится, всегда можно выбросить или переделать. Наверняка у каждого найдутся обработки, которые переписывались по нескольку раз только потому, что предыдущая версия куда-то потерялась.

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

Мне важно, чтобы код был разложен по областям, упорядочен и вычищен, и если приходится создавать множество условий «ИначеЕсли», я сразу оборачиваю их в отдельную функцию – просто потому, что цена рефакторинга всегда выше, чем цена за то, чтобы написать код сразу хорошо.

Раз в полгода я перечитываю 1С-овские стандарты. У нас есть собственные стандарты в компании, и мы периодически устраиваем некоторые споры. У нас есть некоторые отклонения, но они тоже имеют вполне себе железобетонные основания.

 

 

И я категорически не понимаю разработку по принципу Вовки из известного мультика «И так сойдет» – не приемлю такого, и не знаю, зачем это надо.

 

Цена open-source

 

 

Дальше был период «восьмерки». Поначалу мелкие разработки, потом – что-то более серьезное.

Сначала я выкладывал все это на Инфостарте. Чуть позже у меня появился GitHub.

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

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

Мне никогда не стыдно за код, написанный даже 10 лет назад. Да, сегодня я пишу иначе, но тогда это был максимум того, что я умел. Поэтому любое из этих решений, если оно вам нравится – можно взять, доработать и использовать так, как вам нужно.

 

 

Здесь можно вспомнить Юрия Дудя с его фирменным: «А что ты заработал на том, что выложил?»

Результаты довольно скромные – особенно на фоне более коммерчески успешных решений. Если взять всю эту сумму и разделить на 17 лет, получится примерно 500 рублей в месяц.

Плюс мне за все время пришел один-единственный донат – 250 рублей. Это произошло, когда в эпоху «семерки» я организовал что-то вроде краудфандинга – мы собирали деньги, чтобы оплатить доработку 1cpp.dll. Я тогда оплатил всю сумму из своих, а мне какое-то время еще продолжали поступать переводы, и в итоге пришло немного больше, чем я заплатил – те самые 250 рублей сверху. Было забавно.

 

«У самурая нет цели, есть только путь». Как начать, нужен ли план и что там ждет впереди…

 

 

Если вы хотите запустить свой собственный pet-проект, имейте в виду: выкладывать его в опенсорс или продавать – решать только вам.

В любом случае, нужно с чего-то начать:

  • Определяем пул решений, которые у вас есть. Здесь важно не просто выбрать то, что вам нравится, а вспомнить себя в тот момент, когда вы работали над этими проектами. Выберите те, которые были для вас наиболее актуальны – кто-то сейчас проходит этот же самый путь, и для него это тоже может быть интересно.

  • Начинаем классическую работу над ошибками – ищем «квадратные колеса» в нашем велосипеде. Анализируем, что мы накостылили и продумываем, как это переписать.

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

  • А если ничего не осталось? Если после составления списка вам кажется, что все уже все выложили – это неправда. Всегда можно найти какое-то старое решение от другого автора, которое давно не обновляется, и адаптировать его, если вы понимаете, что обновленная версия может оказаться востребованной. Например, CFU&CFE-reader, который я переписал, был пятилетней давности.
    Вложенные в такую разработку усилия окупятся знаниями. В большинстве случае, когда я делал свои разработки, я не всегда досконально знал используемую технологию. Я обычный человек – я что-то знаю, но в мире знаний в разы больше. Поэтому я изучал, разбирался, вникал. И теперь эти знания остались со мной, стали частью моего опыта и повысили мою ценность как разработчика. А я, тем не менее, пошел дальше.

  • Когда мы разберемся с нашими разработками и решим, что можно выложить, нужно определиться со стоимостью. И здесь «я тебе один умный вещь скажу, только ты не обижайся»: некоммерческая разработка не легче коммерческой, а, возможно, даже сложнее. И объяснение этому достаточно простое:

    • В коммерческом решении пользователю, который его покупает, не всегда интересно, насколько качественно оно устроено внутри – главное, что оно работает и выполняет свою задачу.

    • А вот в некоммерческом решении, в open source, у вас критиканов будет столько, сколько людей его найдут – в вас кинут все, что можно найти в близлежащих магазинах. Поэтому оформить код и сделать документацию для всех, кто захочет участвовать в разработке – это действительно сложная работа.

 

 

Поэтому при выкладывании своей разработки: нужно обязательно учесть следующее

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

  • Написать документацию. Хоть строчку, но выдавите себя. А программистам писать документацию – это всегда тяжело и больно. «Что тут писать-то? Тут же все работает, все понятно!»

  • Отладить свой код.

  • Определиться с площадкой. Основные варианты – GitHub и Инфостарт. Есть еще третья, Habr, но надо иметь железные нервы, чтобы попытаться туда зайти. Там 1С-ников прям любят.

  • Оформить публикацию. Это тоже достаточно сложная работа, потому что нужно разобраться в требованиях к оформлению на площадке и изучить ее best practices.

А вот если вы все это проигнорируете, учитывайте, что срок жизни публикации на «Инфостарте» – неделя.

  • Если ты не попал в топ, ты тонешь.

  • Если ты попал в топ, у тебя есть еще неделя.

  • Если успел попасть в обсуждения, у тебя есть еще две недели, а потом ты все равно утонешь.

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

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

 

Чему я научился у сообщества, и мои ошибки при общении с ним

 

 

Есть хорошее правило: «Хочешь идти быстро – иди один. Хочешь идти далеко – идите вместе».

У меня для этого правила есть забавное профессиональное искажение. Я как руководитель компании давно научился делегировать, распределять задачи и наблюдать за процессом со стороны.

Но когда речь идет о личном проекте, мой демон вырывается наружу. Я могу часами возиться с одной кнопкой, передвигать ее туда-сюда, а потом полностью все удалить и начать с нуля. Могу пообещать Инфостарту, что выпущу релиз через неделю, а потом: «Я тут такую фичу придумал, буду две недели ее пилить» – если я знаю, как улучшить реализацию, я не отказываю себе ни в чем.

Поэтому я вряд ли смогу научить вас работать с комьюнити. Есть большие open-source сообщества типа OneScript или Vanessa Automation – я смотрю на них и понимаю, что у меня так не получится. Для меня разделить свою разработку с кем-то – это все равно что вырвать кусок самого себя. Хотя, опять-таки, когда разработка переходит от чего-то личного к бизнесу, тут отчуждение происходит автоматом.

Поэтому считаю, что это уже скорее профессиональное искажение: когда я разрабатываю в open-source, я «важный птиц».

 

Роль открытых решений в развитии сообщества 1С

 

 

В завершение хочу сказать, что open source для всех разработчиков – это плечо, на которое мы можем опереться. Это наши учителя, источники вдохновения и инструменты, которыми мы можем воспользоваться.

Невозможно стать хорошим разработчиком, если ты не изучаешь чужой код. Можно изучать код типовых решений, но чужой код, выложенный в open source – это взгляд людей, которые вообще необязательно занимались 1С. Поэтому изучение open-source-решений приносит новые подходы и идеи, о которых просто мало кто задумывался.

Наиболее популярные open-source проекты 1С, выложенные на GitHub, перечислены в новости Инфостарта.

Кроме этого, есть специальный агрегатор 1С-ных open-source проектов OpenYellow, где собраны все репозитории GitHub по 1С, у которых есть хотя бы одна звездочка.

У пятикратного чемпиона по кроссфиту Мэтта Фрейзер есть такая фраза:

«Hard work pays off» – тяжелый труд окупается.

Разработка open source – это всегда тяжелый труд. Чтобы себя мотивировать, нужно иметь железный стержень.

Но поверьте, этот труд приносит большое моральное удовлетворение – ты понимаешь, что не только приносишь что-то полезное бизнесу, но и отдаешь что-то сообществу.

В конце концов, меня так учили: если ты где-то что-то взял, будь добр, верни это. Если не можешь вернуть, отплати добром за добро. Это – то хорошее, с чем нам всем потом жить.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.

См. также

Личная эффективность Бесплатно (free)

Один из ведущих мировых специалистов по Канбан в IT-индустрии, Доминика Деграндис, считает, что продуктивность работы можно увеличить с помощью техник визуализации. Автор решил разобраться, применимы ли советы из ее книги «Визуализируйте работу. Как выявить расхитителей времени и оптимизировать процессы» к нашей IT-рутине.

05.06.2025    189    0    BiboMiho    0    

1

Личная эффективность Обучение и наставничество Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

Здесь я рассказал, как я со временем сформировал свой взгляд, кем хочу стать и как вижу себя в будущем.

02.06.2025    376    0    user2148151    2    

0

Личная эффективность Компетенции и навыки РП Бесплатно (free)

Харизма помогает руководителю вдохновлять команду, влиять без давления и выстраивать доверие. Это не врожденное качество, а ресурс, который нужно подпитывать и развивать. Те, кто сможет развить в себе харизму, станут не только уверенными руководителями, но и свободными, по-настоящему счастливыми личностями. Расскажем о том, как харизма руководителя влияет на успешность проекта.

28.05.2025    341    0    user596192_shiiisha    0    

0

Личная эффективность Россия Бесплатно (free)

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

20.05.2025    319    0    FrolovAN    0    

3

Личная эффективность Бесплатно (free)

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

12.05.2025    1165    0    apatyukov    44    

14

Личная эффективность Бесплатно (free)

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

12.05.2025    403    0    FrolovAN    0    

3

Мотивация Бесплатно (free)

OKR (Objectives and Key Results) – это способ ставить и достигать стратегические цели с максимальным вовлечением сотрудников. Расскажем об эволюции целеполагания, отличиях OKR и KPI и типичных ошибках при внедрении OKR.

06.05.2025    560    0    Gorinich007    0    

3

Личная эффективность Бесплатно (free)

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

25.04.2025    1024    0    DuyunElena    0    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. akR00b 24 05.06.25 15:17 Сейчас в теме
Отличная статья, спасибо.
juricher; vandalsvq; +2 Ответить
2. orefkov 1157 05.06.25 19:45 Сейчас в теме
Можно или "внести вклад в историю", или "оставить вклад в истории".
NeLenin; vandalsvq; +2 Ответить
3. vandalsvq 1634 05.06.25 20:11 Сейчас в теме
(2) с текущей инфляцией второе легче )))))
6. starik-2005 3177 06.06.25 13:04 Сейчас в теме
(3)
инфляцией
Инфляция платформы 7.7 уже обесценила разработки для нее, оставив в основном только историческую ценность. Вход в историю обеспечен, но даже в музеях яндыкса нет коробок с 7.7.

ЗЫ: Я для 6.0 еще писал конверторы выгрузок проводок для переноса, которые убирали дубли. Паскаль + АСМ. Работало очень быстро, компы были очень медленными, даже Novell Netware стояла в качестве сетевой ОС. Предположу, что уже почти нет народу, которые про нее что-то смогут пояснить.
7. vandalsvq 1634 06.06.25 14:51 Сейчас в теме
(6) кстати, надо бы им подарить ))))
10. starik-2005 3177 06.06.25 15:00 Сейчас в теме
(7) Я тут как-то в комментах спросил, что такое "показать пример кода", ибо иногда спрашивали на собеседованиях. И оказалось, что люди делятся на несколько групп.

Я, например, вообще не храню код - для меня достаточно уловить принцип его написания - потом все-равно напишу лучше. Отсюда у меня нет примеров кода вообще, т.к. то, что я писал под MS DOS, сейчас уже точно неактуально, что я писал для 6.0/7.7/8.1/2 - тоже малоактуально, тем более все уже ушло сильно в части технологий. И если что-то для 7.7 писалось еще на PHP и V7Plus.dll (или как оно там в 1С-е было) для доступа к веб-странице, то сейчас это уже никому не нужно. Даже код проверки недействительных паспортов, создававший прям из gz-файла битовую матрицу за минуту, и имеющий эффективность О(1) для проверки паспорта, сейчас уже неактуален.

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

Ну и есть кто-то посредине.

Так вот я считаю, что весь этот древний код надо в глобальном масштабе почикать. Ну чтобы нейросети не учились плхому, даже если код хорош. Он просто устарел.
11. vandalsvq 1634 06.06.25 15:09 Сейчас в теме
(10) а то понаучатся и галлюционируют ))))
12. starik-2005 3177 06.06.25 15:15 Сейчас в теме
(11) Да. Я вот гигакод заюзал. Прошу веб-сервис на С++, а он мне тупо сначала зациклил заголовочный файл - 1000+ раз, пока не снес процесс. А второй раз в конфиг параметр зациклил - в итоге остановился на переполнении строки. тоже 1000+ строк, наверное 2^10.
4. NeLenin 14 06.06.25 11:54 Сейчас в теме
Меня "зацепило" в статье про 1С++ и FormEx . Уважаемый Автор, с меня лайк и скупая мужская слеза. ))

Надеюсь, когда нибудь платформа "1С 8" наконец-то если не догонит, то хоть приблизится к связке "1С 7.7 и 1С++" в плане возможностей языка запросов.
5. orefkov 1157 06.06.25 12:04 Сейчас в теме
(3) Небольшое дополнение по 1С++ - я к нему имел опосредованное отношение. Да, мой код там был, но не основная часть. Я больше по опенконфу, TurboMD и 1sqlite. А по 1С++ основатель был Дмитрий Гусев aka Deb, второй по значимости скорее всего Дима Ощепков с прямыми запросами, много организаторской работы было на Артуре Аюханове aka artbear.
bulpi; artbear; vandalsvq; NeLenin; +4 Ответить
8. vandalsvq 1634 06.06.25 14:56 Сейчас в теме
(5) спасибо за дополнение. Извини, если неверно упомянул тебя. Слов из песни не выдернуть, что я сказал - то на моей совести останется. И я не хотел кого-то обидеть или задеть, смысл был в том, что в то время все кто непосредственно отношение имел к 1С++ и сообществу вокруг для меня были недостижимыми по уровню специалистами. Магами и волшебниками ))))
9. vandalsvq 1634 06.06.25 14:58 Сейчас в теме
(5) и в 1С++ и других компонентах мой вклад так и остался "рядом" (документация, классы), поскольку непосредственно в компонентах я даже не пытался что-то добавить.
13. artbear 1567 06.06.25 17:57 Сейчас в теме
Спасибо за упоминание FormEx и 1С++, сколько сил туда вложено, сколько часов ушло на кодинг, тестирование, поддержку, разборки и даже ругательства )
14. artbear 1567 06.06.25 17:58 Сейчас в теме
(0) ну и в целом, отношение к опенсорс мне близко, хотя я, конечно, ближе к сообществу, чем к разработке в одного человека.
vandalsvq; +1 Ответить
15. quazare 3932 06.06.25 19:56 Сейчас в теме
Я бы не сказал, что 7-ка обесценена, обработки по переходу - выгрузке данных, переносу справочников стоят достаточно дорого тк мало кто умеет их делать сейчас….

Столкнулся с такой задачей в начале года - https://infostart.ru/1c/tools/2277167/

Многие заказчики понимают, что нужны современные системы, без этого сейчас никак…

7-ка сейчас «удивляет» своими устаревшими интерфейсами и подходами к разработке…
Оставьте свое сообщение