>> у Вас есть море от альтернатив, от отключения сбора данных до
Вот штатного средства для отключения сбора данных, даже за деньги, я не нашел…
>> Бета-тестером работаю я (абсолютно бесплатно, прошу заметить)
Несколько излишне эмоциональное высказывание, позволю себе заметить. Для меня, если честно, абсолютно не важна ваша материальная мотивация. Если бы за участие в Insider Preview вам платили по миллиону долларов в неделю, я бы вам слова против не сказал. Не завистливый я, имею привычку только искренне радоваться, если у кого-то что-то хорошо.
>> Да-да, пользователь не обязан предоставлять обратную связь, зато рассказывать про то, как неудобно пользоваться глючной виндой — всегда пожалуйста.
Ну, собственно, это так и есть. Основополагающие принципы демократии и гласности. Именно, что не обязан, и именно, что имеет право.
>> Вася не готов потратить 100 рублей на то, чтобы рассказать нам про то, чего он хочет от нашего продукта в дальнейшем
Классическое перекладывание с больной головы на здоровую. Вася, может быть, и хочет получить более качественный продукт, но требовать с него (условные) 100 рублей за право поспособствовать в повышении конкурентоспособности продукта, который ему даже не принадлежит…
Собственно, из ходовых принципов я заметил один реально работающий: если вы не платите за товар, значит, товар — вы. Вот тут, собственно, «собака и порылась». Микрософт склонен и товар продать, и пользователя до кучи.
Прибавлю свои 2 копейки к 200 долларам…
Вот мне лично кажется, что:
1. Если я уже заплатил 200 долларов, требовать с меня еще и фидбека + «участия в судьбе операционной системы» достаточно странно. Я вполне себе купил продукт, и ни на какие бета-тестирования не подписывался, нету этого в EULA.
2. Включать телеметрию втихую у человека, который еще и деньги за это заплатил — вообще форменное свинство, имхо.
Если вы — участник «Insider Preview» и заинтересованы в развитии ОСи, вы себе телеметрию вполне себе включите. Остальных-то за что?
Ну а «от пользователей ж не допросишься нормальную обратную связь предоставлять» — это перл. Пользователь вполне себе деньги заплатил за продукт и не обязан ее предоставлять в принципе. А у вас получается «У Васи же 100 рублей не допросишься, возьму сам из кошелька, пока Вася не видит.»
Не то, чтобы ComОбъект и прочее было проблемой. Но неудобство оно вызывает, тут вы, наверное, со мной согласитесь.
>> В любом случае я сделал всё, что мог. Найду другое приложение своих сил.
А отчаиваетесь вы зря. Инструмент вы создали, при этом достаточно неплохой, и он, вероятно, будет востребован. Просто с аудиторией промахнулись.
Вот лично мне интероп с 1С интересен в обратную сторону. Когда, условно, COM-сервером выступает сама 1С-ка. Т.е. интерфейс, который позволяет, скажем, из .Net-кода или из Java замутить конструкцию вида:
List GoodsListFrom1S = Com1SInterface.getInstanceByQuery(«Справочник.Номенклатура»)
.getByParent(«001245»);
for(Inst1SItem item: GoodsListFrom1S) {
System.out.println(item.Name());
}
Смысл в договоре, имхо, есть всегда.
Даже указание этапов внедрения с, допустим, поэтапной оплатой а) дисциплинирует стороны б) позволяет минимизировать потери обеих сторон в случае «фейла».
Не совсем понял из формулировки:
Вы считаете, что «грамотно составленный договор» должен защищать только интересы заказчика, или только той стороны, на которой в этом договоре находитесь вы?
Возможно, между нами возникло недопонимание, способное «развести по разные стороны баррикад». Дальше много текста, дочитают не все, а вот эта вещь мне кажется важной.
Формулировка первого предложения позволяет думать, что вы считаете возможным и необходимым менять бизнес-процессы в целях автоматизации как таковой (насколько я понял по дальнейшей с вами переписке, это не так).
Предлагаю переформулировать, чтобы получилось что-то вроде:
Не все заказчики понимают, что сама по себе автоматизация ничего не дает. Чтобы был эффект, заниматься нужно оптимизацией бизнес-процессов, и автоматизацией, как частью этого общего процесса. Да, для этого придется анализировать бизнес-процессы и, вероятно, многое в них менять. Вот к этому, как правило, заказчик не готов.
В этом и проблема: все хотят оставить все как есть, но чтобы работало «как надо и на базовой конфигурации», и чтобы все это было «как-то автоматизированно».
А это важно — понимать и анализировать свои внутренние бизнес-процессы и осознавать возможную необходимость их изменения.
PS: Зануда mode off.
По сути, я мысль-то какую пытаюсь донести. Фраза: «Не все заказчики готовы к тому, что для внедрения автоматизации, нужно многое менять в бизнес-процессах». Вот она мне делает больно. Она позволяет думать, что заради автоматизации можно и нужно менять бизнес-процессы. Кто-то ведь может это всерьез воспринять!
Автоматизация как таковая ни при каких обстоятельствах не должна быть основанием для изменения бизнес-процессов.
Дальше можете «поскипать», рассуждения более отвлеченные из опыта суровых моих будней в бытность мою 1С-ником. Там комментарии к вашему посту.
>> Давайте так. Интеграция автоматизации обычно всегда идет с оптимизацией бизнеса.
Ну вот неправда же. Для оптимизации бизнеса нужно, как минимум, провести анализ бизнес-процессов и много считать. Что, как минимум, предполагает наличие в «оптимизируемой» организации технолога, экономиста, аналитика, либо людей, таковых заменяющих.
Рискну предположить, что доля «интеграции автоматизации в целях оптимизации бизнеса» относительно доли «так надо, так принято и у соседей так есть, у них все классно» или «мы понятия не имеем, что теперь с этим делать, предлагаю начать с автоматизации как у всех, подстроиться, а там уже разбираться» не только ничтожна, но и пренебрежительно мала.
Конкретно в вашем примере — это все хорошо, но слишком уж «теоретически», что ли. На практике выглядит, чаще всего, так:
Всем ставят «1С: Конфигурация, на которую хватило денег» и доводят «Важный Приказ о Ведении Управленческого Учета За Подписью Самого» о необходимости с 13 числа текущего месяца начать «плодотворно работать» в 1С.
В мелкой организации оператор, от руки записывавший заказ, по-прежнему записывает его от руки, но потом, вместо того, чтобы отнести кладовщикам в соседний кабинет, «забивает в 1С». Руководство видит, что оператор «автоматизированно передает заказ через централизованную систему». Прогресс налицо, все довольны: начальство улыбается, оператор наращивает жирок на ягодичных мышцах.
В конторах покрупнее все серьезнее: группа ответственных лиц на еженедельном докладе Самому показывает объемные графики количества шагов, сэкономленных операторами в результате автоматизации с положительной динамикой и анимационными вставками. Все, по-прежнему, довольны.
И вот так (возможно, у вас прямо противоположный опыт) в подавляющем количестве случаев из того, что я видел.
Проблема не в автоматизации. Проблема в голове и управленческих кадрах. И внедренцах: «Их много, но они не слишком хороши». Ну вот честное слово, 99% «интеграторов» будут вам искренне рассказывать о том, что именно «Типовая конфигурация 1С — УУ.115.24.86.НазваниеИнтегратора: Для Успешных Предприятий» — идеально подходящее конкретно Вам решение. С оговорками «Только не берите базовую за 5 тысяч, она для несерьезных людей! В ней нет модулей УспешныйРостПредприятия2.0, УвеличениеПрибылей.В4.5Раза и платного по подписке ЭкономияВосьмидесятиПроцентовБюджетаВсегоЗа500РублейВМесяц». Что самое пикантное — более половины этих интеграторов даже зла вам не желают, и не лгут, формально. Они реально в это верят!
Основная проблема не в том, что «Не все заказчики готовы к тому, что для внедрения автоматизации, нужно многое менять в бизнес-процессах». Корректная фраза будет «Основная проблема в том, что для внедрения автоматизации нужно многое менять в бизнес-процессах».
Задача автоматизации бизнес-процесса целиком и полностью состоит из автоматизации бизнес-процессов. Любые попытки «что-то поменять» — это либо искажение задачи и навязывание своей «единственно правильной точки зрения», либо уже не автоматизация.
Если интегратор, подрядившийся автоматизировать ваши процессы, предлагает их поменять «потому что платформа так не позволяет» — значит, либо интегратор «ниочинь», либо платформа вам не подходит! Просто берем и ищем «более другого» интегратора, либо выбираем другую платформу! Иных вариантов нет. Вы заказали автоматизировать ваши бизнес-процессы, а не фантазии интегратора!
А вот если состоявшихся бизнес-процессов по какой-то причине нет, то вам не интегратор 1С нужен. Вам постановщик бизнес-процессов нужен. Это совершенно иная задача. Давайте уж «мухи отдельно, а котлеты отдельно». Причем сначала нужно определить необходимые бизнес-процессы, а уж потом искать под них платформу. Никак не наоборот. Наоборот всегда «попа» получается.
Да, зачастую заказчик сам не понимает тонкой «почти неощутимой» разницы между «запуском 1С» и «постановкой бизнес-процессов». Но в том и долг добросовестного интегратора — объяснить, чем одно отличается от другого, а не «впаривать» наивному лопуху-клиенту «свое единственно-правильное видение базовой конфигурации 1С».
На самом деле, предыдущему оратору, по большей части, нечего возразить. «автоматизация бардака приводит к появлению автоматизированного бардака». Точка.
По большому счету, «фора» у 1С есть, даже возражать не буду. Собственно, попробую перечислить ее плюсы (если чего забыл, добавьте):
— некий «средний по палате» бизнес-процесс «из коробки», который худо-бедно работает. Пусть и не идеально, местных особенностей и пожеланий не учитывает, зато здесь и сейчас;
— «соответствие законодательным реалиям». Ну, т.е., при использовании строго стандартных вещей без «допиливания», вы имеете более-менее работающую и относительно «безгеморройную» платформу, отслеживающую изменения законодательства и суровую окружающую действительность «за вас»;
— стоимость разработки/сопровождения/допиливания относительно невысока. Ни для кого не секрет, что именно 1С-специалисты — одни из самых низкооплачиваемых в отрасли. «Средняя по палате зарплата» на той же самой Java, ЕМНИП, в пару-тройку раз выше.
В каких случаях это хорошо? Правильно, на старте. В условиях жесткого дефицита времени и средств. Смею заявить, именно для старта 1С-платформа — практически идеальное решение. «Дешево и сердито» и «прямо сейчас и уже работает». Из классической тройки «быстро-качественно-дешево» имеем два пункта, которые про скорость и дешевизну.
А качество? Качество, покамест, не настолько важно. Оно «вылезет» потом. Вы же согласны, что и недостатки у 1С есть. Попробуем перечислить и их (просто самые очевидные):
— замкнутость экосистемы, завязка на единственном вендоре, нишевость и изоляция от остальных экосистем (как следствие, постоянная позиция «догоняющего» относительно сколько-нибудь универсальных и распространенных в мире платформ) — это мы выделим в 1-й «пласт»;
— порог вхождения для специалиста из преимущества на старте превращается в недостаток при развитии. Сказывается «качество исходного материала». Многие из тех, кого другие платформы «отсекли на старте», могут найти себя в 1С, а потому, опять же, «в среднем по палате», качество и уровень спецов ниже, чем во многих других экосистемах;
— этот пункт следует из предыдущего. Качество техподдержки и сопровождения. Оно действительно ужасно. Часто по запросу к вендору вы получите рекомендацию следовать принятым в базовых конфигурациях механизмам, ну, т.е. «не выпендриваться и слушать Валенки»;
— отсутствие «переносимости опыта». По большому счету, опыт программирования под 1С не дает ничего при попытке «перелезть» на другую платформу. Просто другие языковые конструкции, принятые методики. Отстутствие многих очень полезных и привычным «другим программистам» инструментов. У 1С свой путь, что и логично. Язык 1С — это DSL, как ни крути.
— затрудненность интеграции с другими платформами…
Ну, по большому счету, перечислять можно бесконечно долго. Это в принципе нормально при сравнении узкоспециализированного доменно-специфичного языка с полноценной платформой.
Собственно, к чему все это. Заказчик — бизнес. Тут прямо уж как ни крути. И для бизнеса сугубо «поровну», какая «идеологически верная/не верная платформа» его обслуживает. Для бизнеса есть строго 3 понятия: скорость, качество сопровождения, стоимость поддержки. Все остальное — фантики, интересные исключительно специалистам, по большей части, далеким от непосредственно бизнеса. И вот при росте бизнеса «экономия на спичках» (на фоне суточных оборотов уже в пару-тройку миллионов разница в стоимости сопровождения, для примера, 1С/Java уже не настолько ощутима) в виде 1С-как-основной-платформы-учета может свидетельствовать о 2 вещах:
1). Полная стандартность бизнес-процессов. — Честно говоря, не видел «в живую», но верю, что есть люди, эффективно работающие с 1С «как есть».
2). Недостаток управления. — Это может быть как элементарная лень, так и недопонимание «для чего это вообще нужно» или неспособность проанализировать и выстроить свои собственные бизнес-процессы.
Важно понимать, где у всей схемы «голова». Руководство, меняющее свой бизнес-процесс под имеющееся программное решение — это либо руководство молодого небольшого предприятия, вынужденное «экономить на спичках», либо хреновое руководство. Хорошо поставленный процесс предполагает регламентированность, упорядоченность, очевидность и непротиворечивость. При наличии всего этого, по большому счету, преимущества 1С теряются, т.к. самая большая проблема — формализация и упорядоченность этих самых бизнес-процессов.
В конечном итоге, при отсутствии регламента/схемы бизнес-процессов/четкого понимания того, что происходит или должно происходить/постановки непосредственно этих самых бизнес-процессов, выбор платформы — это не более, чем «вкусовщина». Какая разница, которая из платформ не справляется с возложенными на нее задачами?
Вот мы и пришли к тому, что АСУ — это автоматизация систем управления. Существующих систем управления. Сначала бизнес-процесс, а уж потом его автоматизация. Нельзя автоматизировать что-то несуществующее. Попытка изменить бизнес-процесс компании «под программу» свидетельствует о том, что «что-то пошло не так».
«автоматизация бардака приводит к появлению автоматизированного бардака» — в этом, КМК, вся суть.
>> 1С это не только DSL.
Все же DSL. Все же, язык не поворачивается назвать 1С языком общего назначения. Ну вот хоть режьте.
Более того, ваша статья — прямое подтверждение моих слов. Вы пишете обертку для использования в коде 1С конструкций C#, высокоуровневого языка общего назначения. Зачем вы это делаете? Очевидно, компенсируете недостающие в 1С механизмы.
Насчет поддержки со стороны компании 1С. Ну, в бытность мою штатным программистом 1С 7.7 такие вещи как «1С++» и «прямые запросы» были не только «глотком воздуха», но и шикарнейшим подспорьем. Насколько я в курсе, каких-то попыток интегрировать (хотя бы на уровне идей) или поддержать со стороны вендора замечено не было. Оно и логично. Дайте возможность «бесшовной интеграции» 1С с Net или Java, и возникновение мысли «А зачем в этой конструкции 1С?» станет исключительно вопросом времени. В конечном итоге, фирма 1С заинтересована не только и не столько в количестве возможностей для разработчика, сколько в удержании разработчика «внутри себя», в пределах строго своего технологического стека (очень похоже на ранний Microsoft). В конечном итоге, 1С раскачивается что-то сделать тогда, когда разработчики уже буквально бьются головой о стену, завывая «ну дайте уже фичу, ну интегрируйте продукт». На выходе мы получаем, как правило, узкоприменимое местечковое решение от самой 1С без интеграции с чем-то уже имеющимся. Возьмите хоть пресловутый контроль версий и «выгружаемую конфигурацию».
>>> 1С заинтересована выходить за пределы СНГ.
Ну, это все хотят. Но именно с этим у 1С проблемы. Без глобальной смены политики — не получится. Короче, не верю.
Ну а по поводу «руслиша»… Ну, может оно и моя личная неприязнь. Но даже вот по клавиатуре посмотрите. Есть такие символы, как <>…
Если Переменная1(тут переключение раскладки) > (переключение раскладки) Переменная2 Тогда…
Ну неудобно…
Нравы, как раз, нормальные. Даже образцовые, я бы сказал. Хоть и не без перегибов. Вон, и я минусов нахватал).
Просто в вашей же статье немного спорная подача. Взять хотя бы заголовок: «Асинхронное программирование в 1С через .Net Native ВК».
Дело в том, что непосредственно сама механика RPC в кроссплатформе в .Net Core к 1С отношение имеет постольку-поскольку. Ну, т.е., практически никакого. Да и представление об «асинхронном программировании» может варьироваться. Вы же сами, несмотря на громкий заголовок, пишете «Это конечно не совсем асинхронное программирование». Признаться, из заголовка можно было ожидать большего, но, чуда не случилось.
Впрочем, пора, наверное, завязывать с речами «адвоката Хабра». Чисто по сути, язык 1С — это DSL, возможно, неплохой, но при этом достаточно ограниченный, замкнутый, обреченный на отставание и завязанный на своей вполне себе проприетарной экосистеме, причем от единственного вендора, практически не встречаемого за пределами СНГ (если надобно, могу привести обоснования по каждому пункту из перечня).
По статье конкретно из критики:
лист=ъНовый(«System.Collections.Generic.List`1[System.Threading.Tasks.Task]»);
Вот это действительно страшно выглядит. Тут остается только искренне сочувствовать тем, кто вынужден это писать. И, таки да, по моему мнению кириллица в программировании — зло. Ну хотя бы из-за таких вот языковых конструкций. Вдумайтесь. Давайте на примере попробуем:
Sheet = xNew(«System.Collections.Generic.List`1[System.Threading.Tasks.Task]») — ну реально же лучше. Даже не потому, что смотрится более «нативно». Просто есть такая штука — контекст. В данном случае я говорю о мыслительном контексте. И вот его «переключение» — штука достаточно накладная. Да, в данном случае его не избежать при любом раскладе. Мы имеем строку на C#, обернутую в строку 1С. Т.е. нам надо с 1С-контекста переключиться на контекст C#, что уже неприятно. Вы предлагаете в процессе переключиться еще и с русского языка на английский. Вот чисто по мне — это недостаток.
Ну а по поводу «если она будет интегрирована 1С» из вашего следующего коммента. Не уверен, что это нужно самой 1С. Даже ваша статья — это попытка «побега» из текущих реалий 1С. Много просто нет, а хочется. В случае «бесшовной интеграции» с .Net, имхо, миграция конфигураций с 1С на .Net — вопрос исключительно временный. Не уверен, что 1С в этом хоть сколько-нибудь заинтересовано. Впрочем, тут могу ошибаться. Некоторое достаточно продолжительное уже время с 1С не пересекался, потому за «курсом компании» не слежу.
Ради всех цифровых богов, не подумайте, что хотел обидеть или задеть. Попробую объяснить свою, возможно, сугубо субъективную точку зрения.
Начнем с предпосылок, с чего все начинается.
Начинается все с человека, искренне увлеченного 1С. Собственно, это только хорошо, и, даже более того, вызывает уважение. Увлеченность вообще штука редкая и склонная вызывать уважение (причем не только среди 1С-ников, но и в любой другой сфере в принципе). Вот этот самый человек пишет статью на хабр. Увлеченно пишет, в восторженных тонах, ведь он нашел очень интересный материал (в вашем случае прямо честно скажу, материал интересный, да и подход мне лично понравился). Естественно, человек ожидает некоторой отдачи, причем положительного толка, на то, что он написал. И вот тут, как правило, закопана собака. Эта собака закопана в той части, которая Хабрахабр.
Кто здесь собирается и комментирует? Правильно, технические специалисты совершенно различного толка, но, как правило, с некоторым опытом за спиной. Взгляните на вашу статью глазами «не 1С-ника» (смею уверить, таких тут подавляющее большинство).
Вы показываете некоторую «прорывную фичу», которая для любого разработчика (не 1С) кажется нормой и вообще «ничем удивительным». При этом выглядит решение, мягко говоря, «странно».
Коммент «Очень helpful статья, и ъЯзык замечательный. Thanks вам, за то что продвигаете его в массы КонецСпасибо» — он, конечно, может показаться излишне язвительным, но, суть в том, что он «по теме» (при этом выдержано идеально в стилистике и корректно ровно в той мере, каковая необходима для сохранения смысла шутки-с-долей-правды, респект автору).
К сожалению, человеку свойственно рефлексировать. И вы, как и все прошлые авторы «в тематике», не избежали этой участи. Я вас не виню, это действительно очень сложно — не отреагировать на подкол, а рассмотреть за ним вполне конструктивную критику. А она есть, и она действительно указывает на существенный недостаток. Вы же «срефлексировали». Вот это: «Понимаешь, я пишу основной код на 1С. Там все по русски. И этот код предназначен для 1С...» — больше похоже на детскую обиду и что-то вроде «а ты ваще вали отсюда, я тут пишу».
Вот тут — самый опасный капкан.
Если вы чувствуете в себе силы «отшутиться», подколоть в ответ, либо разумно по полочкам разложить «конструктивную часть вопроса» и проигнорировать все «неконструктивные выпады», тогда да — вопросов нет, вы специалист, который, в окружении неразумных детей разъясняет суть вопроса. Если вы хоть раз ответили обидой или «неконструктивом» со своей стороны, вся ваша идея с публикацией неизбежно превращается в балаган в комментариях и корм для троллей, когда сурово-адекватные пользователи минусуют вас за неконструктив, а «кормящиеся» участники продолжают вас троллить.
Собственно, вот так и получается хабрасуицид. Что с этим делать — решать вам. Вы можете больше не писать на эту тему, либо подготовиться к реакции многоуважаемой публики. Можете попробовать написать на профильные ресурсы по 1С, но, боюсь, там это будет неинтересно (специфика специализации на 1С).
Если хотите конструктивной и выдержанной критики и полемики — милости прошу, можно пообсуждать конкретно вашу статью. Попробуем потренироваться в сдержанности, мне это тоже не повредит)
А я и не говорил, что O(log n) больше, чем O(n).
Я говорил, что на уровне «чистой» математики, собственно, само понятие «сложности» алгоритма — достаточно странная штука.
Для «чистого» математика выборка из массива чисел выглядит как «для всех X бОльших Y». А вот трудоемкость поиска этих самых X, бОльших этого самого Y — это уже вопрос скорее прикладной математики, применительно к конкретно имеющейся системе. Т.е. я больше о том, что в отрыве от конкретной модели, с которой мы работаем, налагающей свои вполне определенные ограничения, расчет трудоемкости и прочего, мягко говоря, не имеет смысла.
С точки зрения математика result = result0 + 4 = result1 * 18 = 24 * 5 — вполне себе нормальная цепочка. Для программиста инстанцирование промежуточных result'ов — боль и разразаривание ресурса.
Даже в случае сортировки, выборки и т.д. Если программист уверен в том, что размер списка значений не превысит, допустим, 4 элементов, оптимальный алгоритм сортировки — пузырек, оптимальный поиск — линейный перебор.Поэтому призывы «а давайте абстрагируемся от всех деталей и выпилим любую возможность в них углубиться, чтобы не вызывать соблазна» мне лично кажутся злом.
Т.е. вместо «uint_8», например, программисту предлагается разобрать «код проверки входных данных»? Гуммано…
В общем и целом статья строго философская, на тему «если бы слоны были бабочками». «Под капотом» у всего этого один фиг процессор с таки адресами памяти и набором примитивных операций. Вся «иммутабельность» и т.д. и т.п. — абстракция. При этом, в том виде, что предложен в статье, абстракция не имеет под собой основы и нарочь оторвана от реальности. Это все просто мат. теория.
Собственно, поиск по красно-черному дереву не имеет никакого математического обоснования. С точки зрения чистой математики поиск в дереве имеет бОльшую линейную сложность, чем элементарный перебор в лоб. Отсюда и проблема. В статье — красиво. На практике — это «горизонт», который, как мы помним, «удаляется по мере приближения».
Ну и, чтобы два раза не «вставать», движение Open Source держится не только и не столько на «признании, уважении и первенстве», сколько на простой невозможности некоторых людей не писать код. Скольких контрибюторов ядра Линукс вы знаете? Я — ни одного, кроме самого Линуса. О какой популярности тут может идти речь, если о них не знает никто, кроме тех, кто с ними же работает?
И даже тут «признание, уважение и первенство», таки имеет место быть. Просто признание не со стороны «ширнармасс», а конкретно со стороны «уважаемого человека Линуса», например. Признание от коллег и т.д. и т.п. Конечно, мировая слава не всех манит, но признание от людей, которых человек сам уважает (что важно), значит, причем значит многое.
Вот штатного средства для отключения сбора данных, даже за деньги, я не нашел…
>> Бета-тестером работаю я (абсолютно бесплатно, прошу заметить)
Несколько излишне эмоциональное высказывание, позволю себе заметить. Для меня, если честно, абсолютно не важна ваша материальная мотивация. Если бы за участие в Insider Preview вам платили по миллиону долларов в неделю, я бы вам слова против не сказал. Не завистливый я, имею привычку только искренне радоваться, если у кого-то что-то хорошо.
>> Да-да, пользователь не обязан предоставлять обратную связь, зато рассказывать про то, как неудобно пользоваться глючной виндой — всегда пожалуйста.
Ну, собственно, это так и есть. Основополагающие принципы демократии и гласности. Именно, что не обязан, и именно, что имеет право.
>> Вася не готов потратить 100 рублей на то, чтобы рассказать нам про то, чего он хочет от нашего продукта в дальнейшем
Классическое перекладывание с больной головы на здоровую. Вася, может быть, и хочет получить более качественный продукт, но требовать с него (условные) 100 рублей за право поспособствовать в повышении конкурентоспособности продукта, который ему даже не принадлежит…
Собственно, из ходовых принципов я заметил один реально работающий: если вы не платите за товар, значит, товар — вы. Вот тут, собственно, «собака и порылась». Микрософт склонен и товар продать, и пользователя до кучи.
Вот мне лично кажется, что:
1. Если я уже заплатил 200 долларов, требовать с меня еще и фидбека + «участия в судьбе операционной системы» достаточно странно. Я вполне себе купил продукт, и ни на какие бета-тестирования не подписывался, нету этого в EULA.
2. Включать телеметрию втихую у человека, который еще и деньги за это заплатил — вообще форменное свинство, имхо.
Если вы — участник «Insider Preview» и заинтересованы в развитии ОСи, вы себе телеметрию вполне себе включите. Остальных-то за что?
Ну а «от пользователей ж не допросишься нормальную обратную связь предоставлять» — это перл. Пользователь вполне себе деньги заплатил за продукт и не обязан ее предоставлять в принципе. А у вас получается «У Васи же 100 рублей не допросишься, возьму сам из кошелька, пока Вася не видит.»
>> В любом случае я сделал всё, что мог. Найду другое приложение своих сил.
А отчаиваетесь вы зря. Инструмент вы создали, при этом достаточно неплохой, и он, вероятно, будет востребован. Просто с аудиторией промахнулись.
Вот лично мне интероп с 1С интересен в обратную сторону. Когда, условно, COM-сервером выступает сама 1С-ка. Т.е. интерфейс, который позволяет, скажем, из .Net-кода или из Java замутить конструкцию вида:
List GoodsListFrom1S = Com1SInterface.getInstanceByQuery(«Справочник.Номенклатура»)
.getByParent(«001245»);
for(Inst1SItem item: GoodsListFrom1S) {
System.out.println(item.Name());
}
Даже указание этапов внедрения с, допустим, поэтапной оплатой а) дисциплинирует стороны б) позволяет минимизировать потери обеих сторон в случае «фейла».
Вы считаете, что «грамотно составленный договор» должен защищать только интересы заказчика, или только той стороны, на которой в этом договоре находитесь вы?
Формулировка первого предложения позволяет думать, что вы считаете возможным и необходимым менять бизнес-процессы в целях автоматизации как таковой (насколько я понял по дальнейшей с вами переписке, это не так).
Предлагаю переформулировать, чтобы получилось что-то вроде:
Не все заказчики понимают, что сама по себе автоматизация ничего не дает. Чтобы был эффект, заниматься нужно оптимизацией бизнес-процессов, и автоматизацией, как частью этого общего процесса. Да, для этого придется анализировать бизнес-процессы и, вероятно, многое в них менять. Вот к этому, как правило, заказчик не готов.
В этом и проблема: все хотят оставить все как есть, но чтобы работало «как надо и на базовой конфигурации», и чтобы все это было «как-то автоматизированно».
А это важно — понимать и анализировать свои внутренние бизнес-процессы и осознавать возможную необходимость их изменения.
PS: Зануда mode off.
Автоматизация как таковая ни при каких обстоятельствах не должна быть основанием для изменения бизнес-процессов.
Дальше можете «поскипать», рассуждения более отвлеченные из опыта суровых моих будней в бытность мою 1С-ником. Там комментарии к вашему посту.
>> Давайте так. Интеграция автоматизации обычно всегда идет с оптимизацией бизнеса.
Ну вот неправда же. Для оптимизации бизнеса нужно, как минимум, провести анализ бизнес-процессов и много считать. Что, как минимум, предполагает наличие в «оптимизируемой» организации технолога, экономиста, аналитика, либо людей, таковых заменяющих.
Рискну предположить, что доля «интеграции автоматизации в целях оптимизации бизнеса» относительно доли «так надо, так принято и у соседей так есть, у них все классно» или «мы понятия не имеем, что теперь с этим делать, предлагаю начать с автоматизации как у всех, подстроиться, а там уже разбираться» не только ничтожна, но и пренебрежительно мала.
Конкретно в вашем примере — это все хорошо, но слишком уж «теоретически», что ли. На практике выглядит, чаще всего, так:
Всем ставят «1С: Конфигурация, на которую хватило денег» и доводят «Важный Приказ о Ведении Управленческого Учета За Подписью Самого» о необходимости с 13 числа текущего месяца начать «плодотворно работать» в 1С.
В мелкой организации оператор, от руки записывавший заказ, по-прежнему записывает его от руки, но потом, вместо того, чтобы отнести кладовщикам в соседний кабинет, «забивает в 1С». Руководство видит, что оператор «автоматизированно передает заказ через централизованную систему». Прогресс налицо, все довольны: начальство улыбается, оператор наращивает жирок на ягодичных мышцах.
В конторах покрупнее все серьезнее: группа ответственных лиц на еженедельном докладе Самому показывает объемные графики количества шагов, сэкономленных операторами в результате автоматизации с положительной динамикой и анимационными вставками. Все, по-прежнему, довольны.
И вот так (возможно, у вас прямо противоположный опыт) в подавляющем количестве случаев из того, что я видел.
Проблема не в автоматизации. Проблема в голове и управленческих кадрах. И внедренцах: «Их много, но они не слишком хороши». Ну вот честное слово, 99% «интеграторов» будут вам искренне рассказывать о том, что именно «Типовая конфигурация 1С — УУ.115.24.86.НазваниеИнтегратора: Для Успешных Предприятий» — идеально подходящее конкретно Вам решение. С оговорками «Только не берите базовую за 5 тысяч, она для несерьезных людей! В ней нет модулей УспешныйРостПредприятия2.0, УвеличениеПрибылей.В4.5Раза и платного по подписке ЭкономияВосьмидесятиПроцентовБюджетаВсегоЗа500РублейВМесяц». Что самое пикантное — более половины этих интеграторов даже зла вам не желают, и не лгут, формально. Они реально в это верят!
Задача автоматизации бизнес-процесса целиком и полностью состоит из автоматизации бизнес-процессов. Любые попытки «что-то поменять» — это либо искажение задачи и навязывание своей «единственно правильной точки зрения», либо уже не автоматизация.
Если интегратор, подрядившийся автоматизировать ваши процессы, предлагает их поменять «потому что платформа так не позволяет» — значит, либо интегратор «ниочинь», либо платформа вам не подходит! Просто берем и ищем «более другого» интегратора, либо выбираем другую платформу! Иных вариантов нет. Вы заказали автоматизировать ваши бизнес-процессы, а не фантазии интегратора!
А вот если состоявшихся бизнес-процессов по какой-то причине нет, то вам не интегратор 1С нужен. Вам постановщик бизнес-процессов нужен. Это совершенно иная задача. Давайте уж «мухи отдельно, а котлеты отдельно». Причем сначала нужно определить необходимые бизнес-процессы, а уж потом искать под них платформу. Никак не наоборот. Наоборот всегда «попа» получается.
Да, зачастую заказчик сам не понимает тонкой «почти неощутимой» разницы между «запуском 1С» и «постановкой бизнес-процессов». Но в том и долг добросовестного интегратора — объяснить, чем одно отличается от другого, а не «впаривать» наивному лопуху-клиенту «свое единственно-правильное видение базовой конфигурации 1С».
По большому счету, «фора» у 1С есть, даже возражать не буду. Собственно, попробую перечислить ее плюсы (если чего забыл, добавьте):
— некий «средний по палате» бизнес-процесс «из коробки», который худо-бедно работает. Пусть и не идеально, местных особенностей и пожеланий не учитывает, зато здесь и сейчас;
— «соответствие законодательным реалиям». Ну, т.е., при использовании строго стандартных вещей без «допиливания», вы имеете более-менее работающую и относительно «безгеморройную» платформу, отслеживающую изменения законодательства и суровую окружающую действительность «за вас»;
— стоимость разработки/сопровождения/допиливания относительно невысока. Ни для кого не секрет, что именно 1С-специалисты — одни из самых низкооплачиваемых в отрасли. «Средняя по палате зарплата» на той же самой Java, ЕМНИП, в пару-тройку раз выше.
В каких случаях это хорошо? Правильно, на старте. В условиях жесткого дефицита времени и средств. Смею заявить, именно для старта 1С-платформа — практически идеальное решение. «Дешево и сердито» и «прямо сейчас и уже работает». Из классической тройки «быстро-качественно-дешево» имеем два пункта, которые про скорость и дешевизну.
А качество? Качество, покамест, не настолько важно. Оно «вылезет» потом. Вы же согласны, что и недостатки у 1С есть. Попробуем перечислить и их (просто самые очевидные):
— замкнутость экосистемы, завязка на единственном вендоре, нишевость и изоляция от остальных экосистем (как следствие, постоянная позиция «догоняющего» относительно сколько-нибудь универсальных и распространенных в мире платформ) — это мы выделим в 1-й «пласт»;
— порог вхождения для специалиста из преимущества на старте превращается в недостаток при развитии. Сказывается «качество исходного материала». Многие из тех, кого другие платформы «отсекли на старте», могут найти себя в 1С, а потому, опять же, «в среднем по палате», качество и уровень спецов ниже, чем во многих других экосистемах;
— этот пункт следует из предыдущего. Качество техподдержки и сопровождения. Оно действительно ужасно. Часто по запросу к вендору вы получите рекомендацию следовать принятым в базовых конфигурациях механизмам, ну, т.е. «не выпендриваться и слушать Валенки»;
— отсутствие «переносимости опыта». По большому счету, опыт программирования под 1С не дает ничего при попытке «перелезть» на другую платформу. Просто другие языковые конструкции, принятые методики. Отстутствие многих очень полезных и привычным «другим программистам» инструментов. У 1С свой путь, что и логично. Язык 1С — это DSL, как ни крути.
— затрудненность интеграции с другими платформами…
Ну, по большому счету, перечислять можно бесконечно долго. Это в принципе нормально при сравнении узкоспециализированного доменно-специфичного языка с полноценной платформой.
Собственно, к чему все это. Заказчик — бизнес. Тут прямо уж как ни крути. И для бизнеса сугубо «поровну», какая «идеологически верная/не верная платформа» его обслуживает. Для бизнеса есть строго 3 понятия: скорость, качество сопровождения, стоимость поддержки. Все остальное — фантики, интересные исключительно специалистам, по большей части, далеким от непосредственно бизнеса. И вот при росте бизнеса «экономия на спичках» (на фоне суточных оборотов уже в пару-тройку миллионов разница в стоимости сопровождения, для примера, 1С/Java уже не настолько ощутима) в виде 1С-как-основной-платформы-учета может свидетельствовать о 2 вещах:
1). Полная стандартность бизнес-процессов. — Честно говоря, не видел «в живую», но верю, что есть люди, эффективно работающие с 1С «как есть».
2). Недостаток управления. — Это может быть как элементарная лень, так и недопонимание «для чего это вообще нужно» или неспособность проанализировать и выстроить свои собственные бизнес-процессы.
Важно понимать, где у всей схемы «голова». Руководство, меняющее свой бизнес-процесс под имеющееся программное решение — это либо руководство молодого небольшого предприятия, вынужденное «экономить на спичках», либо хреновое руководство. Хорошо поставленный процесс предполагает регламентированность, упорядоченность, очевидность и непротиворечивость. При наличии всего этого, по большому счету, преимущества 1С теряются, т.к. самая большая проблема — формализация и упорядоченность этих самых бизнес-процессов.
В конечном итоге, при отсутствии регламента/схемы бизнес-процессов/четкого понимания того, что происходит или должно происходить/постановки непосредственно этих самых бизнес-процессов, выбор платформы — это не более, чем «вкусовщина». Какая разница, которая из платформ не справляется с возложенными на нее задачами?
Вот мы и пришли к тому, что АСУ — это автоматизация систем управления. Существующих систем управления. Сначала бизнес-процесс, а уж потом его автоматизация. Нельзя автоматизировать что-то несуществующее. Попытка изменить бизнес-процесс компании «под программу» свидетельствует о том, что «что-то пошло не так».
«автоматизация бардака приводит к появлению автоматизированного бардака» — в этом, КМК, вся суть.
Все же DSL. Все же, язык не поворачивается назвать 1С языком общего назначения. Ну вот хоть режьте.
Более того, ваша статья — прямое подтверждение моих слов. Вы пишете обертку для использования в коде 1С конструкций C#, высокоуровневого языка общего назначения. Зачем вы это делаете? Очевидно, компенсируете недостающие в 1С механизмы.
Насчет поддержки со стороны компании 1С. Ну, в бытность мою штатным программистом 1С 7.7 такие вещи как «1С++» и «прямые запросы» были не только «глотком воздуха», но и шикарнейшим подспорьем. Насколько я в курсе, каких-то попыток интегрировать (хотя бы на уровне идей) или поддержать со стороны вендора замечено не было. Оно и логично. Дайте возможность «бесшовной интеграции» 1С с Net или Java, и возникновение мысли «А зачем в этой конструкции 1С?» станет исключительно вопросом времени. В конечном итоге, фирма 1С заинтересована не только и не столько в количестве возможностей для разработчика, сколько в удержании разработчика «внутри себя», в пределах строго своего технологического стека (очень похоже на ранний Microsoft). В конечном итоге, 1С раскачивается что-то сделать тогда, когда разработчики уже буквально бьются головой о стену, завывая «ну дайте уже фичу, ну интегрируйте продукт». На выходе мы получаем, как правило, узкоприменимое местечковое решение от самой 1С без интеграции с чем-то уже имеющимся. Возьмите хоть пресловутый контроль версий и «выгружаемую конфигурацию».
>>> 1С заинтересована выходить за пределы СНГ.
Ну, это все хотят. Но именно с этим у 1С проблемы. Без глобальной смены политики — не получится. Короче, не верю.
Ну а по поводу «руслиша»… Ну, может оно и моя личная неприязнь. Но даже вот по клавиатуре посмотрите. Есть такие символы, как <>…
Если Переменная1(тут переключение раскладки) > (переключение раскладки) Переменная2 Тогда…
Ну неудобно…
Просто в вашей же статье немного спорная подача. Взять хотя бы заголовок: «Асинхронное программирование в 1С через .Net Native ВК».
Дело в том, что непосредственно сама механика RPC в кроссплатформе в .Net Core к 1С отношение имеет постольку-поскольку. Ну, т.е., практически никакого. Да и представление об «асинхронном программировании» может варьироваться. Вы же сами, несмотря на громкий заголовок, пишете «Это конечно не совсем асинхронное программирование». Признаться, из заголовка можно было ожидать большего, но, чуда не случилось.
Впрочем, пора, наверное, завязывать с речами «адвоката Хабра». Чисто по сути, язык 1С — это DSL, возможно, неплохой, но при этом достаточно ограниченный, замкнутый, обреченный на отставание и завязанный на своей вполне себе проприетарной экосистеме, причем от единственного вендора, практически не встречаемого за пределами СНГ (если надобно, могу привести обоснования по каждому пункту из перечня).
По статье конкретно из критики:
лист=ъНовый(«System.Collections.Generic.List`1[System.Threading.Tasks.Task]»);
Вот это действительно страшно выглядит. Тут остается только искренне сочувствовать тем, кто вынужден это писать. И, таки да, по моему мнению кириллица в программировании — зло. Ну хотя бы из-за таких вот языковых конструкций. Вдумайтесь. Давайте на примере попробуем:
Sheet = xNew(«System.Collections.Generic.List`1[System.Threading.Tasks.Task]») — ну реально же лучше. Даже не потому, что смотрится более «нативно». Просто есть такая штука — контекст. В данном случае я говорю о мыслительном контексте. И вот его «переключение» — штука достаточно накладная. Да, в данном случае его не избежать при любом раскладе. Мы имеем строку на C#, обернутую в строку 1С. Т.е. нам надо с 1С-контекста переключиться на контекст C#, что уже неприятно. Вы предлагаете в процессе переключиться еще и с русского языка на английский. Вот чисто по мне — это недостаток.
Ну а по поводу «если она будет интегрирована 1С» из вашего следующего коммента. Не уверен, что это нужно самой 1С. Даже ваша статья — это попытка «побега» из текущих реалий 1С. Много просто нет, а хочется. В случае «бесшовной интеграции» с .Net, имхо, миграция конфигураций с 1С на .Net — вопрос исключительно временный. Не уверен, что 1С в этом хоть сколько-нибудь заинтересовано. Впрочем, тут могу ошибаться. Некоторое достаточно продолжительное уже время с 1С не пересекался, потому за «курсом компании» не слежу.
Начнем с предпосылок, с чего все начинается.
Начинается все с человека, искренне увлеченного 1С. Собственно, это только хорошо, и, даже более того, вызывает уважение. Увлеченность вообще штука редкая и склонная вызывать уважение (причем не только среди 1С-ников, но и в любой другой сфере в принципе). Вот этот самый человек пишет статью на хабр. Увлеченно пишет, в восторженных тонах, ведь он нашел очень интересный материал (в вашем случае прямо честно скажу, материал интересный, да и подход мне лично понравился). Естественно, человек ожидает некоторой отдачи, причем положительного толка, на то, что он написал. И вот тут, как правило, закопана собака. Эта собака закопана в той части, которая Хабрахабр.
Кто здесь собирается и комментирует? Правильно, технические специалисты совершенно различного толка, но, как правило, с некоторым опытом за спиной. Взгляните на вашу статью глазами «не 1С-ника» (смею уверить, таких тут подавляющее большинство).
Вы показываете некоторую «прорывную фичу», которая для любого разработчика (не 1С) кажется нормой и вообще «ничем удивительным». При этом выглядит решение, мягко говоря, «странно».
Коммент «Очень helpful статья, и ъЯзык замечательный. Thanks вам, за то что продвигаете его в массы КонецСпасибо» — он, конечно, может показаться излишне язвительным, но, суть в том, что он «по теме» (при этом выдержано идеально в стилистике и корректно ровно в той мере, каковая необходима для сохранения смысла шутки-с-долей-правды, респект автору).
К сожалению, человеку свойственно рефлексировать. И вы, как и все прошлые авторы «в тематике», не избежали этой участи. Я вас не виню, это действительно очень сложно — не отреагировать на подкол, а рассмотреть за ним вполне конструктивную критику. А она есть, и она действительно указывает на существенный недостаток. Вы же «срефлексировали». Вот это: «Понимаешь, я пишу основной код на 1С. Там все по русски. И этот код предназначен для 1С...» — больше похоже на детскую обиду и что-то вроде «а ты ваще вали отсюда, я тут пишу».
Вот тут — самый опасный капкан.
Если вы чувствуете в себе силы «отшутиться», подколоть в ответ, либо разумно по полочкам разложить «конструктивную часть вопроса» и проигнорировать все «неконструктивные выпады», тогда да — вопросов нет, вы специалист, который, в окружении неразумных детей разъясняет суть вопроса. Если вы хоть раз ответили обидой или «неконструктивом» со своей стороны, вся ваша идея с публикацией неизбежно превращается в балаган в комментариях и корм для троллей, когда сурово-адекватные пользователи минусуют вас за неконструктив, а «кормящиеся» участники продолжают вас троллить.
Собственно, вот так и получается хабрасуицид. Что с этим делать — решать вам. Вы можете больше не писать на эту тему, либо подготовиться к реакции многоуважаемой публики. Можете попробовать написать на профильные ресурсы по 1С, но, боюсь, там это будет неинтересно (специфика специализации на 1С).
Если хотите конструктивной и выдержанной критики и полемики — милости прошу, можно пообсуждать конкретно вашу статью. Попробуем потренироваться в сдержанности, мне это тоже не повредит)
Впрочем, вполне обоснованно.
Я говорил, что на уровне «чистой» математики, собственно, само понятие «сложности» алгоритма — достаточно странная штука.
Для «чистого» математика выборка из массива чисел выглядит как «для всех X бОльших Y». А вот трудоемкость поиска этих самых X, бОльших этого самого Y — это уже вопрос скорее прикладной математики, применительно к конкретно имеющейся системе. Т.е. я больше о том, что в отрыве от конкретной модели, с которой мы работаем, налагающей свои вполне определенные ограничения, расчет трудоемкости и прочего, мягко говоря, не имеет смысла.
С точки зрения математика result = result0 + 4 = result1 * 18 = 24 * 5 — вполне себе нормальная цепочка. Для программиста инстанцирование промежуточных result'ов — боль и разразаривание ресурса.
Даже в случае сортировки, выборки и т.д. Если программист уверен в том, что размер списка значений не превысит, допустим, 4 элементов, оптимальный алгоритм сортировки — пузырек, оптимальный поиск — линейный перебор.Поэтому призывы «а давайте абстрагируемся от всех деталей и выпилим любую возможность в них углубиться, чтобы не вызывать соблазна» мне лично кажутся злом.
В общем и целом статья строго философская, на тему «если бы слоны были бабочками». «Под капотом» у всего этого один фиг процессор с таки адресами памяти и набором примитивных операций. Вся «иммутабельность» и т.д. и т.п. — абстракция. При этом, в том виде, что предложен в статье, абстракция не имеет под собой основы и нарочь оторвана от реальности. Это все просто мат. теория.
Собственно, поиск по красно-черному дереву не имеет никакого математического обоснования. С точки зрения чистой математики поиск в дереве имеет бОльшую линейную сложность, чем элементарный перебор в лоб. Отсюда и проблема. В статье — красиво. На практике — это «горизонт», который, как мы помним, «удаляется по мере приближения».
И даже тут «признание, уважение и первенство», таки имеет место быть. Просто признание не со стороны «ширнармасс», а конкретно со стороны «уважаемого человека Линуса», например. Признание от коллег и т.д. и т.п. Конечно, мировая слава не всех манит, но признание от людей, которых человек сам уважает (что важно), значит, причем значит многое.