1С — Добро и зло. Расстановка точек в холиварах вокруг 1С

    image


    Друзья и коллеги, в последнее время на Хабре участились статьи с хейтом в адрес 1С, как платформы для разработки, и выступлениями ее защитников. Эти статьи обозначили одну серьезную проблему: чаще всего, критики 1С критикуют ее с позиции "не осиливших", ругая проблемы, которые де-факто, легко решаются, и, напротив, не задевая проблемы, которые действительно важны, стоят обсуждения и не решаются вендором. Полагаю, что имеет смысл провести трезвый и взвешенный обзор платформы 1С. Того, что она умеет, того что она не умеет, того что она должна бы делать, но не делает и, на сладкое — то, что она делает на ура, а ваши разработчики на %technology_name% будут делать стопицот лет, выкинув на ветер не один годовой бюджет.


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


    Под катом — масса толстых набросов на 1С, на критиков 1С, на Java, .NET и вообще… Вентилятор заправлен, добро пожаловать!


    О себе


    Я знаком с предметом разговора примерно с 2004 года. Программирую наверное лет с 6, с того самого момента, как у меня появилась книжка про профессора Фортрана с комиксами про кота, воробья и гусеницу. Я разбирал программы, которые писал кот с картинок в книжке и выяснял, что они делают. И да, настоящего компьютера у меня тогда не было, но на развороте книжки был нарисованный и я честно нажимал бумажные кнопки, вводя команды, подсмотренные у кота Икса.


    Далее был БК0011 и Бэйсик в школе, С++ и ассемблеры в универе, потом 1С, а потом столько всего, что уже и вспоминать лень. Последние 15 лет я, в основном, занимаюсь 1С, не только в части кодинга, а вообще 1С. Постановка задач, админство и девопс сюда же. Последние лет 5 занимаюсь общественно полезной деятельностью в плане развития инструментов разработки и автоматизации для других 1С-ников, пишу статьи и книжки.


    Определимся с предметом обсуждения


    Для начала давайте определимся о чем пойдет речь, поскольку под буквами "1С" можно понять много всего. В данном случае, под буквами "1С" мы будем понимать исключительно фреймворк разработки "1C: Предприятие" современной, восьмой версии. Мы не будем много говорить о фирме-производителе и ее политике (но немного-таки придется), Мы не будем обсуждать конкретные приложения, написанные с применением этого фреймворка. Технология отдельно, приложения a.k.a конфигурации — отдельно.


    Высокоуровневая архитектура 1С: Предприятия


    Я не зря упоминаю слово "фреймворк". С точки зрения разработчика платформа 1С это именно фреймворк. И относиться к нему надо именно как к фреймворку. Считайте, что это Spring или ASP.NET, выполняемый некоторой средой выполнения (JVM или CLR соответственно). Так получилось, что в мире обычного программирования ("не 1С") разделение на фреймворки, виртуальные машины и конкретные приложения получается естественным, в силу того, что эти компоненты обычно разрабатываются разными производителями. В мире 1С же не принято выделять в явном виде фреймворк разработки и собственно рантайм, кроме того, конкретные приложения, написанные с применением фреймворка, в-основном, также разработаны самой же фирмой 1С. В результате и возникает некая путаница. Поэтому, в рамках статьи нам придется рассмотреть 1С сразу с нескольких сторон и классифицировать ее по нескольким координатным осям. И в каждой оси координат мы положим по лопате коричневого вещества рассмотрим особенности, преимущества и недостатки имеющегося решения.


    Точки зрения на 1С


    1С для покупателя


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


    Для покупателя 1С это быстрый time-to-market. Быстрый. Быстрее чем на Java, C# или JS. В среднем. По больнице. Понятно, что сайт-визитка на реакте получится лучше, но бэкенд WMS-системы — быстрее запустится на 1С.


    1С как инструмент


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


    • серверное приложение
    • приложение, где фигурируют финансы
    • с готовым UI, ORM, Reporting, XML/JSON/COM/PDF/YourDataTransferingFormat
    • с поддержкой фоновых процессов и заданий
    • с системой безопасности на основе ролей
    • со скриптуемой бизнес-логикой
    • с возможностью быстрого создания прототипа и низким time-to-market

    1С вам не нужно, если вы хотите:


    • машинное обучение
    • расчеты на GPU
    • компьютерная графика
    • математические расчеты
    • CAD-систему
    • обработка сигналов (звук, видео)
    • highload http-вызовы с сотнями тысяч rps

    1С как фирма-производитель


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


    • учет финансов
    • легкая кастомизация бизнес-логики
    • широкие возможности интеграции в гетерогенных IT-ланшафтах

    Как производитель, фирма 1С считает, что именно такая стратегия позволяет работать с партнерами и клиентами в режиме win-win. Можно спорить с этим, но примерно так фирма себя продвигает: готовые решения проблем бизнеса, которые можно быстро кастомизировать силами партнеров и встроить в любой IT-ландшафт.


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


    — Эй, бизнес, хочешь, чтобы в твоей 1С было ООП?
    — Это поможет мне решить мои проблемы?
    — Как знать…
    — Тогда не нужно


    Это подход может быть хорошим или плохим, в зависимости от того кто на него смотрит, но он просто такой. Говоря о том, что в 1С нет фичи Х, надо понимать, что ее нет там не просто так, а в контексте выбора "стоимость реализации vs размер профита".


    Технологическая классификация


    "На самом деле одинэсники вовсю используют самые лучшие паттерны, тщательно отобранные заботливыми методистами и разработчиками платформы 1С.
    Когда ты пишешь свой тупой код для простенькой управляемой формы, на самом деле ты юзаешь model-view-controller с double-way data binding в three-layered-data-app-engine, сдобренный high level object-relation-mapping на базе declarative metadata description, имеющей свой platform-independent query language, c declarative data-driven user interface, complete transparent serialization и domain-oriented program language.

    В чём разработчики 1С отличаются от западных коллег, так это в пиаре. Те любят любой фигне дать громкое имя и носиться с ней, как с писаной торбой."
    А. Орефков

    Платформа 1С имеет классическую 3-звенную архитектуру, в центре которой сервер приложений (или его эмуляция за мало денег для мелких лавочников). В качестве СУБД применяется или MS SQL или Postgres. Есть еще поддержка Oracle и IBM DB2 но это, скорее эзотерика, никто не знает что будет, если внедрять 1С на этих базах под средней и высокой нагрузкой. Полагаю, не знает этого и сама фирма 1С.


    В качестве клиентской части выступает либо тонкий клиент, устанавливаемый на машину пользователя, либо веб-клиент. Ключевая особенность — программисты не пишут 2 разных кода, они пишут одно приложение, на одном языке, а вы можете выставить его в браузере, если есть желание или потребность. Кто там хотел подлинного фулстэка и единый язык для фронта и бэкенда, node.js? У них до конца так и не получилось сделать совсем одинаково. Настоящий фулстек существует, но писать придется на 1С. Ирония судьбы, такие дела :)


    В режиме браузера работает также облачное SaaS решение 1С:Fresh, в котором можно не покупать 1С, а взять мелкую базу себе в аренду и вести там учет продаж шаурмы. Просто в браузере, не устанавливая и не настраивая себе ничего.


    Кроме того, есть легаси-клиент, который в 1С называют "обычное приложение". Легаси оно и есть легаси, добро пожаловать в мир приложений 2002 года, а мы все-таки про современное состояние экосистемы.


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


    Фреймворк прикладной разработки использует собственный язык программирования, который примерно напоминает слегка улучшенный VB6, переведенный на русский язык. Людям, ненавидящим все русское, которые не верят, что "if" переводится, как "если" предлагается второй вариант синтаксиса. Т.е. при желании на 1С можно писать так, что с виду от VB не отличить.


    image


    Вот этот самый язык программирования и является основной причиной хейта 1С-ников в сторону своей платформы. Скажем прямо, не безосновательно. Язык задумывался, как максимально простой, призванный выполнить мантру "DEVELOPERS,DEVELOPERS" в масштабах хотя бы СНГ. Коммерческая суть такого решения, на мой взгляд, просматривается четко: больше разработчиков, больше охват рынка. Это сбылось по разным оценкам от 45% до 95%. Сразу скажу, что писать на том языке, на котором думаешь — реально легче. А я знаю довольно много языков программирования.


    С языка, пожалуй и начнем.


    Язык программирования 1С


    Одновременно сильное и слабое место системы. Обеспечивает легкое вхождение, читабельность. С другой стороны, не обновлялся с момента выхода версии 8 в 2002 году и морально устарел. Кто-то скажет "главный недостаток — нет ООП" и будет неправ. Во-первых, ООП не любит не только Нуралиев, но и Торвальдс. А во-вторых, ООП все-таки есть.


    С точки зрения разработчкика, в его распоряжении есть фреймворк с базовыми классами, отображаемыми на СУБД. Разработчик может взять базовый класс "Справочник" и отнаследовать от него справочник "Клиенты". Может добавить к нему новые поля класса, например, ИНН и Адрес, а также, если нужно — может переопределить (override) методы базового класса, например метод OnWrite/ПриЗаписи.


    Фреймворк составлен таким образом, что более глубокое наследование требуется редко, и ограничение в ООП, на мой взгляд, имеет смысл. 1С ориентируется на Domain Driven Development и заставляет думать, в первую очередь, о предметной области разрабатываемого решения и это хорошо. Отсутствует не только соблазн, но и необходимость писать 10 разных DTO и ViewModel только для того, чтобы где-то показать какие-то данные из домена. Разработчик 1С оперирует всегда одной сущностью, не забивая себе контекст восприятия десятком классов с похожими названиями, представляющими одну и ту же сущность, но с другого боку. Любое .NET приложение, например, будет обязательно содержать пяток-другой ViewModel-ей и DTO для сериализации в JSON и передачи данных с клиента на сервер. И примерно 10-15% кода вашего приложения займет перекладывание данных из одного класса в другой ручками или костылями вроде AutoMapper. Этот код надо написать и программистам заплатить за его создание и сопровождение.


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


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


    • Возможность типизации на уровне, например, TypeScript (как следствие более развитые средства анализа кода в IDE, рефакторинг, меньше обидных косяков)
      Наличие функций как объектов первого класса. Чуть более сложная концепция, но количество boilerplate-code из типовых можно было бы сильно сократить. Понимание кода студентом, имхо, даже повысилось бы за счет сокращения объема
    • Литералы универсальных коллекций, инициализаторы. То же самое — снижение объема кода, который надо написать и/или просмотреть глазами. Наполнение коллекций это over 9000% времени программирования на 1С. Писать это без синтаксического сахара долго, дорого и error-prone. Вообще, количество LOC в решениях на 1С превосходит все мыслимые пределы по сравнению с доступными открытыми фреймворками и вообще, всех ваших энтерпрайз Джав вместе взятых. Язык многословен, а это вырождается в объем данных, память, тормоза IDE, время, деньги….
    • конструкции finally У меня есть гипотеза, что эта конструкция отсутствует из-за того, что не подобрали удачного перевода ее на русский язык :)
    • Собственных типов данных (без ООП), аналогов Type из VB6. Позволит не типизировать структуры с помощью комментариев в БСП и волшебных методов, конструирующих эти структуры. Получаем: меньше кода, подсказку через точку, более быстрое решение задачи, меньше ошибок по опечаткам и отсутствующим свойствам структур. Сейчас типизация пользовательских структур лежит полностью на команде разработки Библиотеки Стандартных Подсистем, которая, к честью для себя, тщательно пишет комментарии по ожидаемым свойствам передаваемых структур параметров.
    • Отсутствие сахара при работе с асинхронными вызовами на веб-клиенте. callback-hell в виде ОбработкаОповещения это временный костыль, вызванный внезапным изменением API основных браузеров, но жить так все время — нельзя, преимущество "понимания студентом" асинхронного кода теряется все сильнее. Добавьте сюда никакую поддержку этой парадигмы в основной IDE и все станет еще хуже.

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


    Программисту, который уже много поработал с этим языком, заглянул в js или c# становится скучно в рамках этого языка. Это факт. Ему необходимо развитие. На другой чаше весов у вендора лежит стоимость реализации указанных фич vs увеличение выручки после их внедрения. Тут у меня нет никакой информации о том, что в глазах фирмы в данный момент перевешивает.


    Среда разработки


    Здесь все тоже не гладко. Сред разработки существует две. Первая, это входящий в состав поставки Конфигуратор. Вторая — разрабатываемая на базе Eclipse среда Enterprise Development Tools, сокращенно EDT.


    Конфигуратор обеспечивает полный спектр задач разработки, поддерживает все фичи и является основной средой на рынке. Тоже морально устарел, не развивается, по слухам — из-за объема техдолга внутри себя. Ситуацию могло бы улучшить открытие внутреннего API (в виде дружбы со Снегопатом А. Орефкова или на самостоятельной основе), но этого нет. Практика показала, что сообщество само напилит себе фич в IDE, лишь бы вендор не мешал. Но имеем что имеем. Конфигуратор был прекрасен в 2004-2005, очень напоминал Visual Studio тех времен, местами даже был круче, но так и застрял в тех временах.


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


    Как альтернатива предлагается написанная с нуля IDE, построенная на базе Eclipse. Там исходники, как и в любом другом софте живут в виде текстовых файлов, хранятся в GIT, ветки-пулреквесты, все вот это вот. Из минусов — уже который год не выходит из статуса беты, хотя с каждым релизом становится все лучше. Про минусы EDT писать не буду, что сегодня минус, завтра исправленная фича. Актуальность такого описания быстро сойдет на нет. На сегодняшний день разрабатывать в EDT можно, но непривычно, нужно быть готовым к некоторому количеству багов IDE.


    Если посмотреть на ситуацию через упомянутую "призму 1С", то получается примерно следующее: продажи коробок выход новой IDE не повышает, но отток DEVELOPERS-ов возможно сократит. Что ждет экосистему с точки зрения комфорта разработчика сказать сложно, но Microsoft уже однажды профукал мобильных разработчиков, слишком поздно предложив им свои услуги.


    Управление разработкой


    Здесь все существенно лучше, чем в написании кода, особенно в последнее время, когда стараниями сообщества на свет были вытащены проблемы автоматизации администрирования, запущены прототипы, призывающие выкинуть на свалку хранилище 1С и пользоваться git, быстрым blame, code-review, статическим анализом, автодеплоем и etc. В платформу были добавлены многие фичи, повышающие уровень автоматизации задач разработки. Однако, все эти фичи были добавлены только и исключительно для разработки собственных крупных продуктов, когда стало очевидно, что без автоматизации уже никак. Появились авто-слияния, трехстороннее сравнение KDiff-ом и всякое такое. На гитхабе запущен gitconverter, который, положа руку на сердце, был идеологически утянут с проекта gitsync, но доработан под процессы компании-вендора. Благодаря упоротым парням из open-source автоматизация разработки в 1С сдвинулась с мертвой точки. Открытое API конфигуратора, имхо, сдвинула бы и моральную отсталость основной IDE.


    На сегодняшний день, хранение исходников 1С в git с привязкой коммитов к задачам в Jira, ревью в Crucible, накатка кнопкой из Дженкинса и отчеты Allure о тестировании кода в 1С и даже статический анализ в SonarQube — это уже далеко не новость, а, скорее, мейнстрим в компаниях где есть много разработки на 1С.


    Администрирование


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


    Проблему здесь составляет то, что вендор не предлагает ничего особенного в части готовых решений для этой самой диагностики. Да, есть 1С: КИП и ЦУП, они даже и неплохи, но сильно платные и есть не у всех. В сообществе есть ряд наработок по подключению графаны, заббикса, ELK и прочего из типового набора админа, но единого решения, которое устроит большинство — нет. Задача ждет своего героя. А если вы бизнес, который планирует запуститься на кластере 1С — вам нужен Эксперт. Свой внутри или со стороны, но нужен. Это нормально, что есть отдельная роль, с компетенциями по работе сервера, не каждый 1С-ник должен это знать, просто надо понимать, что такая роль нужна. Возьмем к примеру SAP. Там программист, скорее всего, даже со стула не встанет, если ему на сервере приложений предложат что-то настроить. Он может тупо не уметь и ему стыдно не будет. В методологии SAP есть отдельная роль сотрудника под это. Почему-то в отрасли 1С считается, что это должно сочетаться в одном сотруднике за ту же зарплату. Это заблуждение.


    Минусы сервера 1С


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


    В остальном, сервер 1С это такое же приложение, как любое другое и администрируется примерно так же, посредством чтения документации и стука в бубен.


    Docker


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


    Коммерческая составляющая


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


    Например, задача послать клиенту счет в PDF решается за час работы студента. Та же задача на .NET решается покупкой проприетарной библиотеки, либо парой дней или недель кодинга сурового бородатого разработчика. Иногда, и то и другое сразу. И да, я говорил только про формирование PDF. Мы не сказали, откуда этот счет вообще появится. Веб-фронтендер должен наверстать формочку, куда оператор вобьет данные, бэкендер должен будет создать dto-модели в для передачи JSON, модели для складирования в базу данных, структуру самой базы данных, миграции на нее, формирование графического отображения этого самого счета и только потом — PDF. На 1С, вся задача целиком, с полного нуля делается за час ровно.


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


    Сколько времени займет эта задача у разработчика .NET с момента установки visual studio на чистый комп до демонстрации заказчику? А по стоимости разработки? То-то же.


    Сильные стороны 1С, как платформы


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


    1. Unicode. Что, блин, может быть проще? Не надо в 2019 году использовать однобайтные ASCII кодировки (кроме интеграции с дремучими legacy). Ни за что. Но нет же. Все равно кто-то в какой-нибудь таблице использует однобайтный varchar и приложение поимеет проблемы с кодировками. В 2015 году у gitlab отваливалась LDAP-авторизация из-за неправильной работы с кодировками, у JetBrains IDE до сих пор не везде работает с кириллицей в именах файлов. В 1С качественная изоляция прикладного кода от слоя работы с БД. Там нельзя типизировать таблицы на низком уровне и косяки малокомпетентных джуниоров на уровне БД там невозможны. Да, там возможны другие косяки малокомпетентных джуниоров, но разнообразие проблем сильно меньше. Вы мне сейчас скажете, что у вас-то приложение спроектировано правильно и слой доступа к БД изолирован как положено. Посмотрите в свое корпоративное самописное Java-приложение еще раз. Пристально и честно. Совесть не мучает? Тогда я за вас рад.
    2. Нумерация документов/справочников. В 1С она точно не самая гибкая и не самая лучшая. Но что делают в банковском софте и в самописных системах учёта — ну это же просто мрак. То identity воткнут (и потом "ой, а почему у нас дырки"), то наоборот, сделают генератор, который работает с блокировкой на уровне СУБД (и станет узким местом). На самом деле, довольно сложно сделать эту, казалось бы, простую задачку — сквозной нумератор сущностей, с разрезом уникальности по некоторому набору ключей, префиксацией, так чтобы это не блокировало базу при параллельном вводе данных.
    3. Идентификаторы записей в БД. 1С приняла волевое решение — все идентификаторы ссылок абсолютно синтетические и всё тут. И нет проблем с распределенными базами и обменами. Разработчики других систем упрямо лепят что-то типа identity (она же короче!), тащат их в GUI, пока не придёт пора делать несколько связанных инстансов (и тут их ждёт открытие). У вас такого нет? Честно?
    4. Списки. В 1С есть достаточно удачные механизмы листания (больших) списков и навигации по ним. Сразу оговорюсь — при правильном применении механизма! Вообще тема достаточно неприятная, она идеально не решается: тут либо интуитивно и просто (но риск огромных рекордсетов на клиенте), либо той или иной кривизны пейджинг. Те, кто делают пейджинг часто делают его криво. Те, кто делает честный скроллбар — кладут базу данных, канал и клиента.
    5. Управляемые формы. Спору нет, в веб-клиенте интерфейс работает не то чтоб идеально. Но работает. А вот для многих других учётных и банковских систем сделать удалённое рабочее место — это проект уровня предприятия. Оговорка: к счастью для тех, кто изначально сделал на вебе это не коснется.
    6. Мобильное приложение. С недавних пор вы можете писать и мобильные приложения, находясь в той же самой экосистеме. Тут чуть сложнее, чем с веб-клиентом, специфика устройств заставляет писать специально под них, но, тем не менее — вы не нанимаете отдельную команду мобильных разработчиков. Если нужно приложение для внутренних нужд компании (когда мобильное решение корпоративной задачи важнее желтого дизайна UI) — просто пользуетесь той же платформой из коробки.
    7. Reporting. Под этим словом я понимаю не BI-систему с большими данными и лагом на ETL-процесс. Имеются в виду оперативные отчеты персонала, позволяющие оценить состояние учета здесь и сейчас. Остатки, взаиморасчеты, пересортицу и т.п. В 1С из коробки поставляется система отчетов с гибкой настройкой группировок, фильтров, визуализации на стороне пользователя. Да, на рынке есть аналоги круче. Но не в рамках решения все-в-одном и за цену порой выше, чем решение все-в-одном. А чаще даже наоборот: только reporting, но дороже, чем платформа целиком, и хуже по качеству.
    8. Печатные формы. Ну-ка решите на .NET задачу отправки зарплатной ведомости в PDF сотрудникам на почту. А теперь задачу печати товарных накладных. А с сохранением их копий в тот же PDF? Для 1С-ника вывод в PDF любого макета это +1 строка кода. А значит + 40 секунд рабочего времени, вместо дней или недель на другом языке. Макеты печатных форм в 1С потрясающе удобны в разработке и достаточно мощны, чтобы конкурировать с платными аналогами. Да, наверное, в табличных документах 1С не так много возможностей по интерактиву, нельзя быстро получить 3D диаграмму с масштабированием при помощи OpenGL. Но оно точно надо?

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


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


    Я не говорю, что 1С решит все кейсы, но для внутреннего корпоративного приложения, когда не надо брендировать UI — что еще нужно?


    Ложка дегтя


    Наверное, сложилось впечатление, что 1С спасет мир и все другие способы написания корпоративных систем — неправильны. Это совсем не так. С точки зрения бизнесмена, если вы выбираете 1С, то помимо быстрого time-to-market необходимо учесть и следующие минусы:


    • Надежность сервера. Требуются действительно качественные специалисты, способные обеспечивать его бесперебойную работу. Мне неизвестна готовая программа подготовки таких специалистов от вендора. Есть курсы для подготовки к сдаче экзамена "Эксперт", но этого, на мой взгляд, недостаточно.
    • Поддержка. Смотри предыдущий пункт. Чтобы иметь поддержку от вендора, ее надо купить. Почему-то в отрасли 1С это не принято. А у SAP — почти обязательно к приобретению и никого это не смущает. Без корпоративной поддержки и без эксперта в штате — с глюками 1С можно остаться один-на-один.
    • Все-таки на 1С нельзя сделать совсем все. Это инструмент и как у каждого инструмента у него есть границы применимости. В ландшафте с 1С очень желательно иметь "не 1С-нутого" системного архитектора.
    • Хорошие 1С-ники стоят не дешевле хороших программистов на других языках. Хотя, плохих программистов нанимать дорого независимо от языка, на котором они пишут.

    Расставим точки


    • 1С это фреймворк быстрой разработки приложений (RAD) для бизнеса и заточен под это.
    • Трехзвенка с поддержкой основных СУБД, клиентским UI, весьма неплохим ORM и репортингом
    • Широкие возможности по интеграции с системами, которые умеют то, чего 1С не умеет. Хотите машинного обучения — возьмите Python, а результат слейте в 1С по http или RabbitMQ
    • Не надо стремиться делать все на 1С, надо понимать ее сильные стороны и использовать их в своих целях
    • Разработчики, которые тяготеют к копанию в технологических фремворках-гаджетах, и к переделыванию каждые N лет на новый движок — в 1С скучают. Там все очень консервативно.
    • Скучают разработчики и в силу очень маленькой заботы о них со стороны фирмы производителя. Скучноватый язык, слабая IDE. Они требуют модернизации.
    • С другой стороны, разработчики, которые не могут найти себе развлечение посредством применения и изучения другой нравящейся технологии — плохие разработчики. Они будут ныть и перейдя в другую экосистему.
    • Работодатели, не позволяющие своим 1С-никам запилить что-то на Питоне — плохие работодатели. Они потеряют сотрудников с пытливым умом, а на их место придут monkey-кодеры которые, будучи со всем согласны, затащат корпоративный софт в болото. Его все равно придется переписать, так может было б лучше чуть ранее немного инвестировать в Питон?
    • 1С коммерческая компания и внедряет фичи исключительно исходя из собственных интересов и целесообразности. Её нельзя в этом винить, бизнес обязан думать о прибыли, такова жизнь
    • 1С зарабатывает тем, что продает решения проблем бизнеса, а не проблем разработчика Васи. Два эти понятия коррелируют, но приоритет именно такой, который я сказал. Когда разработчик Вася станет готов платить за личную лицензию на 1С: Решарпер — он появится довольно быстро, "Решарпер" А. Орефкова тому подтверждение. Если бы вендор поддерживал его, а не боролся с ним — глядишь возник бы рынок софта для разработчиков. Сейчас на этом рынке полтора игрока с сомнительными результатами и все из-за того, что интеграция с IDE отрицательная и все делается на костылях.
    • Практика специалиста-многостаночника уйдет в небытие. Современные приложения слишком объемны чтобы помнить их и со стороны кода и со стороны бизнесового использования. Сервер 1С также усложняется, удержать все виды экспертизы в одном сотруднике будет нельзя. Это должно повлечь за собой востребованность специалистов, а значит привлекательность профессии 1С-ника и рост окладов. Если раньше Вася три-в-одном работал за одну зарплату, то теперь нужно нанимать двух Вась и конкуренция среди Вась может подстегнуть общий рост их уровня.

    Заключение


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


    И еще — если к вам пришел наниматься 1С-ник, то 1С-ника можно смело ставить на должность лида аналитиков. Понимание задачи, предметной области, навыков декомпозиции у них развито великолепно. Уверен, что это именно за счет принудительного применения DDD в разработке на 1С. Человек обучен думать о смысле задачи в первую очередь, о связях между объектами предметной области, при этом имеет технический бэкграунд по интеграционным технологиям и форматам обмена данными.


    Отдавайте себе отчет, что идеального фреймворка не существует и берегите себя.
    Всем добра!


    P.S.: огромное спасибо speshuric за помощь в подготовке статьи.

    Only registered users can participate in poll. Log in, please.

    У вас есть 1С на предприятии?

    • 12.9%Вообще нет.86
    • 31.5%Есть, но только в бухгалтерии где-то. Основные системы на других платформах210
    • 42.0%Да, основные бизнес-процессы работают на ней280
    • 13.5%1С должна умереть, будущее за %technology_name%90

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 768

      +3
      Я надеюсь, что все больше разработчиков 1с будут смотреть на мир через парадигму «я знаю, какой язык лучше подойдет для этой задачи», не боясь изучать и применять python, js, c++, c# или java. Кроме того, хочется, чтобы и новые разработчики приходили с таким отношением, это во многом зависит от того, на сколько привлекательной будет инфраструктура разработки для молодых разработчиков, которые не боятся нового, не боятся совмещать.

      Мой кейс таков: я начал «разрабатывать» год назад с 1с, а благодаря знакомству с oscript за последние полгода успел решить бизнес задачи на python и js, познакомишись с bootstrap, mvp, docker.
        +1
        Никто не заметил тут пропаганду oscript, ага. Еще одна поделка сбоку к 1с, не поддерживаемая вендором. И бизнес 1с автор не знает и не понимает. Бизнес в том, чтобы создать массовый спрос на работу фирм партнёров, которым выгодно массово продавать клиентам коробки и лицензии и попутно — бесконечные обновления, доработки и «работу» недоученных специалистов, сменяющих друг дружку каждый день (ибо их легион). Клиентам, кроме траты денег, это не приносит ничего хорошего, но и альтернатив не много (и неспроста). Лишь бухгалтерия и ЗУП могут считаться относительно полезными решениями, помогающими бизнесу отчитываться перед государством. Все остальные решения и их перепиленные армиями одинесников вариации — создают лишь проблемы бизнесу, которые нужно постоянно решать, постоянно оплачивая труд радующихся такому положению вещей «недоучек». Это всегда намного дороже, чем профильные облачные решения и сервисы, покупаемые в аренду.
          0
          Еще одна поделка сбоку к 1с, не поддерживаемая вендором

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

          Клиентам, кроме траты денег, это не приносит ничего хорошего, но и альтернатив не много (и неспроста).… Это всегда намного дороже, чем профильные облачные решения и сервисы, покупаемые в аренду.

          Угу. Так и есть. Хорошо для 1С, что кроме вас этого никто не понял, поэтому бизнес продолжает покорно платить 1С за то, что та им создает проблемы. Это ведь так типично для бизнеса — не считать свои деньги, да.
          Ну теперь-то вы им глаза открыли, надеюсь?
            +1
            Хорошо для 1С, что кроме вас этого никто не понял, поэтому бизнес продолжает покорно платить 1С за то, что та им создает проблемы

            Конечно хорошо для 1С. Монополия всегда хороша для монополиста.
              0
              Как же монополия? Вон, смотрите и ls fusion есть, и ofBiz, и SAP, и Dynamics, и на C# вон кто-то сам себе написал решение. И все лучше чем 1С.
              Просто бизнес он глупый. Продолжает есть кактус за свои деньги.

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

              Как там у Гоголя?
              «Год 2000 апреля 43 числа. <...>Теперь передо мною все открыто. Теперь я вижу все как на ладони. А прежде, я не понимаю, прежде все было передо мною в каком-то тумане.»
                0
                Ах, да. Точно. Забыл. Законодательство в стране меняется, потому что 1С договорилась с налоговой, чтобы заработать на ИТС. Именно так.


                Как раз проблема именно в сложном законодательстве. В частности, в области бухгалтерского учета (неоправданная сложность) и начисления заработной платы (во многом из-за того, что налоги на зарплату платит организация, а не сотрудник, но и опять же ненужная сложность). Плюс нет стандартной, для всего мира, разделения на финансовые (Bil / Invoice) и товарные (Receipt / Shipment) документы, так как ТОРГ-12 в себе совмещает оба документа сразу.

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

                  О да, сложное законодательство только в РФ. В США, например, совсем простое. Наверное именно по этой причине многие производители ПО для бизнеса там даже ни не берутся самостоятельно посчитать, например, Sales Tax. Он всего навсего зависит от Штата, дня недели, месяца, времени суток, типа товара, наличия льгот, лиценщий, праздников и т.п.

                    0
                    Так вот откуда списали драконий покер:
                    Понимаешь, условные модификаторы зависят от определенных переменных, вроде дня недели, числа игроков, положения стульев и тому подобного. А поскольку этот матч организован загодя, мы знаем, какими будет большинство этих переменных. Например, играть будете только вы двое, а ты, как вызванный на матч, имеешь право выбрать стул… займи, между прочим, стоящий лицом к югу.
                      0
                      Да вы мои мысли читаете, демон!
                      0

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

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


                        Это вынуждено.
                        Если вы про ЕС — банально — там НДС очень разный в разных странах. Если про США, то там налог с продаж разный в разных местах.
                        В РФ в этом нет необходимости — ибо всё едино.
                        Загадка почему в Японии налог с продаж нужно самому добавлять, там вроде нет сложных исключений.
                      +2
                      Ах, да. Точно. Забыл. Законодательство в стране меняется, потому что 1С договорилась с налоговой, чтобы заработать на ИТС. Именно так.

                      Как раз проблема именно в сложном законодательстве


                      Е-рун-да.

                      Как человек со всем этим работающий утверждаю.

                      На предприятиях зачастую:

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

                      И т.п.

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

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

                      Чувствительной к законам является только бухгалтерская 1С. Да, та обновляется часто.

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

                      Онлайн-кассы, учет алкоголя. Корректировочные счета-фактуры — да и то не для всех, многие делают их в бухгалтерской 1С. Изменение транспортных документов, но это не такое уж и сложное изменение. И… да пожалуй все. Мелкие изменения форм документов, типа добавить ГТД в счет-фактуру — ну такого плана изменения еще раза 10 за 20 лет были критичны, но я не считаю это за серьезную проблему. На этом всё.

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

                      К чему я это?

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

                      А ведь, утверждаю из опыта, именно там и основные деньги. Если вещи нужны фирме как воздух. Это ее ежедневная деятельность. Это её конкурентное преимущество и пр. и пр.

                      А бухгалтеркая нужна, по сути, раз в квартал/раз в месяц, когда нужно налоги считать.

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

                        0
                        Полностью с Вами согласен насчет относительной неважности бухгалтерского и фискального учета.

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

                        У них во всех решениях всегда три документа: Order / Invoice / Shipment. У них нормально, когда Вам поставляют товар в течение месяца без каких-либо документов с ценами. Вы их приходуете по какой-то условной цене из заказа. А потом вам выставляют на них счет (причем цена может не совпасть с ценой в заказе). В постсовке же вы не можете без финансового документа (например, ТОРГ-12 или ТТН, в котором есть цены) оприходовать товар.

                        И, например, вот это обстоятельство достаточно сильно влияет на логику процессов приемки и отгрузки. По этой причине тот же Odoo из коробки под РФ ну никак не подходит. Если конечно, не делать двойной ввод в 1С и иметь разную себестоимость в Odoo и 1C.
                          0
                          И, например, вот это обстоятельство достаточно сильно влияет на логику процессов приемки и отгрузки. По этой причине тот же Odoo из коробки под РФ ну никак не подходит. Если конечно, не делать двойной ввод в 1С и иметь разную себестоимость в Odoo и 1C.


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

                          Их можно считать сразу, а можно и не сразу — зависит от бизнес-требований.

                          Мне известны вполне себе крупные бизнесы, которые свою себестоимость видят раз в месяц в лучшем случае.

                          Эта вещь не всегда связанная с отгрузкой.

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

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

                          Которые специалисту очевидны.
                            0
                            Вы не поняли меня. Чтобы было понятнее, ответьте мне на простой вопрос:

                            Могу ли я в РФ ЗАКОННО отгрузить покупателю товар без каких-либо документов, в которых указаны цены, а он в свою очередь принять его (в том числе и по бухгалтерскому учету)? Документы на оплату с ценами при этом ему выставить через месяц.

                            А в англосаксонских и европейских моделях учета — это в порядке вещей.
                              0
                              Могу ли я в РФ ЗАКОННО отгрузить покупателю товар без каких-либо документов, в которых указаны цены, а он в свою очередь принять его (в том числе и по бухгалтерскому учету)? Документы на оплату с ценами при этом ему выставить через месяц.


                              Это вообще не проблема софта и программиста.
                              Это проблема юриста и бухгалтера.

                              Знаю многих что так делают. С 1С.
                              Как это соответствует закону — не знаю.
                              Спросите лучше на форуме бухгалтеров.

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

                                0
                                Так мне не надо спрашивать у бухгалтеров. У меня очень большой опыт в этой области. И ответ простой: незаконно. И понятно почему — кризис доверия между бизнесом и государством.

                                А в других странах — это стандартная схема. И поэтому там во многих местах другие процессы, под которые и заточены у них многие программы. По этой причине большинство из них не подходит для РФ из коробки и требует, как минимум, адаптации.
                                  0
                                  Так мне не надо спрашивать у бухгалтеров. У меня очень большой опыт в этой области. И ответ простой: незаконно. И понятно почему — кризис доверия между бизнесом и государством.


                                  Ваш большой опыт не знает что такое договор ответственного хранения и агентский договор?

                                  А в других странах — это стандартная схема. И поэтому там во многих местах другие процессы, под которые и заточены у них многие программы. По этой причине большинство из них не подходит для РФ из коробки и требует, как минимум, адаптации.


                                  Разумеется, не подходит, если брать как полное комплексное решение всех задач.

                                  Но упомянутая вами схема с осуществлением сначала отгрузки, а уже потом отложенной реализации — вполне себе реализуема.

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

                                  Но не в самой сути учета.

                                    0
                                    уже потом отложенной реализации — вполне себе реализуема

                                    Как она может быть реализуема, если незаконна?

                                    Как Вы сделаете печатную форму документа в Odoo для Delivery Order, если там в документе цен нет вообще? Что Вы там напечатаете?

                                    Ваш большой опыт не знает что такое договор ответственного хранения и агентский договор?

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


                                      Как она может быть реализуема, если незаконна?

                                      Как Вы сделаете печатную форму документа в Odoo для Delivery Order, если там в документе цен нет вообще? Что Вы там напечатаете?


                                      Потому что законна. Выше я написал какие бывают подходящие виды договоров для этого.

                                      Да и не только. Вы забываете, что отгрузка товара != переход прав собственности.

                                      Обычно это так, да. Это и ввело вас в заблуждение.

                                        0
                                        То есть Вы предлагаете при внедрении Odoo со всеми покупателями заключать договора комиссий / ответственных хранений? Даже если им просто пачку бумаги продаете?
                                          0
                                          а потом вы за эту пачку выставляете цену равную в пропорции НДС уплаченному за квартал и требуете с государства возмещения ибо доверие между бизнесом и государством? Имхается мне за такие схемы в любом государстве будут ожидать проблемы.
                                          Вопросы определения НДС и прибыли. Прибыль считается как разница выручки и затрат. Затраты >= себестоимость. Если себестоимость is null то Прибыль is null тоже, а это не тот ответ, который устроит ФНС в конце налогового периода. Схема с определением себестоимости и НДС входящего в конце налогового периода мысль конечно заманчивая, но см. п.1
                                            0
                                            Посмотрите вот эти ссылки:
                                            https://www.odoo.com/documentation/user/13.0/inventory/management/reporting/valuation_methods_anglo_saxon.html
                                            https://www.odoo.com/documentation/user/13.0/inventory/management/reporting/valuation_methods_continental.html

                                            Там внизу примеры, когда цены в заказе (PO) отличаются от цен в накладной/счете(Invoice). И посмотрите, как у них вообще проводки разносятся по счетам, и какие там счета есть.

                                            Например, как Вам такой классный счет, как:
                                            23000 Goods Received Not Purchased

                                            Какой его аналог в РФ (это именно не неоплаченные, а некупленные товары)?
                                              0
                                              некупленные, т.е. взятые на хранение? чем ответственное хранение не подходит, сейчас попробуй еще найти дурака который не через ответственное хранение работает, вплоть до самой покупки в рознице. Правда ЭДО с онлайн фискальниками скорее всего положит конец этой налогоуменьшающей практике или даст начало использованию ИИ в прогнозировании остатка собственного товара и продаж в ближней перспективе
                                                0
                                                Нет, именно с переходом права собственности, а не взятые на хранение. Но без документов на оплату (и в частности, без цен и сумм). Вы смотрели ссылки выше? Там же есть примеры.
                                                  0
                                                  В РФ это называется «Ордерная система»
                                    0
                                    Отгружайте на ответственное хранение по любым ценам с правом продажи. Отгружайте на комиссию, опять же указав цены по которым товар уйдет конечному потребителю, отражайте на забалансе суммы прихода плюс минус по рыночным ценам кого бы они там сильно волновали, как мне кажется проблема надумана.
                                  0
                                  Отгрузить можете.
                                  Принять к складскому учету без цен можно, к бухгалтерскому — нельзя.
                                    0
                                    А вот в западном бухгалтерском учете — можно принять по цене из заказа. В этом и принципиальное различие (в том числе и в счетах).
                    +1

                    Пропаганда, какое прекрасное слово!

                      0

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

                        0
                        А теперь просто посмотрите на ситуацию глазами студента, которому нужно купить квартиру, т.к. после вечеринки студентка от него залетела и жениться — придется:
                        25 килорублей «стажер» на частичной занятости, пока диплом не получил. 60-80 килорублей — «помошник программиста 1С» на первый год после института. 150-200 килорублей с примерно третьего года после института до пенсии. Стабильно. Независимо от кризисов. Не надо каждый год осваивать новый фреймворк. Не надо шесть раз в год разбираться как в новомодной парадигме правильно делать 3-д эффекты при открытии формы ввода… Никаких нервотрепок, никаких авралов, при желании — все свободное время можно посвятить подработкам, которые дают хорошую «прибавку к пенсии», т.к. очень много мелких фирм, которые не могут себе позволить платить ежегодную мзду интегратору, но которым пару раз в год что-то надо в 1С подправить…
                        Я бы сам уже лет десять бы как подался бы в 1С, но лично у меня любое соприкосновение с финансами и бухгалтерией вызывает уверенность, что они должны быть запрещены как особо извращенные виды пыток. Но я был знаком с несколькими людьми, у которых подобная работа вызывает радость, экстаз и чувство глубокого удовлетворения.
                          +1
                          Никаких нервотрепок, никаких авралов

                          Очень смешно))

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

                          Ну с такими обычно и проблем больше. Вам же они тоже не захотят платить

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

                          А еще там есть жесткие дедлайны. Зайдите как-нибудь в бухгалтерию в последний день сдачи отчетности по НДС
                            0
                            Зайдите как-нибудь в бухгалтерию в последний день сдачи отчетности по НДС

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

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

                            Очень смешно))

                            Ага. То, что у 1С-ника считается авралом, у ГИПа и ПМа на строительстве, например, ЦОДа называется «как здорово, что отпуск, и тебя никто не дергает!»
                            Я когда гиповал, «в отпуске» обычным делом было штук пять звонков в день с необходимостью принять решение, ошибка в каждом из которых (все ещё) может вылиться в пару лет отсидки…
                            0
                            Я бы сам уже лет десять бы как подался бы в 1С, но лично у меня любое соприкосновение с финансами и бухгалтерией вызывает уверенность, что они должны быть запрещены как особо извращенные виды пыток

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

                            А вот сопутствующие задачки (с финансами связанные косвенно) типа WMS | логистики | интеграций с удовольствием решаю. Так что там не все так плохо.

                            Иногда возникает вопрос: «а чего бы все это не делать на java», но один из ответов — внезапно, некоторые собственники не хотят решений не на 1С. Не потому что «1С это супер, ничего лучше нет», а потому что они на подсознательном уровне не хотят плодить зоопарк систем, т.к. чувствуют, что поддержку если что, им будет искать сложнее/дороже.
                            Плюс у некоторых есть негативный опыт с проваленными внедрениями и при этом позитивный при работе/внедрении 1С (это примерно как у некоторых комментаторов в этой статье, но с противоположным знаком).
                              0
                              Попервости тоже 1С-ом зарабатывал. Потом на С перешел и сейчас Java-Kotlin. На яве стрессов и дедлайнов хватате, но от работы во франче 1С у меня самые жуткие воспоминания остались в плане нервотрепок. Весь негатив (зачастую вполне заслуженный) по поводу 1С и фирмы которую ты представляешь — на тебя изливается. А народ, который пользуется услугами франча весьма… специфичный… за копейку удавятся и тебе весь мозг съедят, а от этих копеек твой доход напрямую зависит.
                              Когда ушел оттуда — мне обычная разработка показалась просто заповедником спокойствия и околонулевого стресса. Я уж лучше буду фреймворки каждый год изучать, тем более что мне это интереснее чем изучать очередные нововведения в бухучете.
                              Да и не нужно это так часто делать, тот-же спринг, например, один из основных используемых фреймворков на Яве, он вполне эволюционно развивается, новые важные изменения в нем не так часто происходят, что-бы их изучение как-то напрягало. А большинство хайповых тем вообще в IT, и изучать нет особого смысла — бабочки однодневки.
                                0
                                Ну опять же, «Работа с 1С != Работа во франче» и «Работа с 1С != Работа с бухгалтерией». Так-то да, франч это бизнес по продаже коробок + потогонка с простыми задачами за мелкий прайс, в большинстве своем. Но в какой-нибудь условной веб-студии будет плюс минус тоже самое.
                                Стоит только перейти к разработке условно-коробочного решения или проектным работам и появляется спокойствие, время на изучение и использование современных технологий (в т.ч. и не 1С) и т.д.

                                0

                                Я в сфере 1с проработал более 15 лет, и за это время деградация кадров шла по экспоненте. И завтра этот ваш студент будет конкурировать за поддержку 1с с бывшими дворниками, продавцами и другими специалистами широкого профиля. Поэтому да, ипотеку придется платить 25 лет.

                            0
                            Самое интересное, что автор этого поста и автор oscript — это одно и тоже лицо :)
                            Андрей, спасибо тебе за твою работу! Реально в одиночку сделал просто мега инструмент. Используем oscript для сборки и тестирования своего решения.
                            Теперь что касается: «бизнес 1с автор не знает и не понимает». Наоборот! Все достаточно точно и по делу. Бизнес сам решает платить вендору или партнёрам или нет. Верно? Если бизнес платит, значит его все устраивает и у него нет других альтернатив. Да, все далеко не идеально, но есть вещи, которые очень удобны. Помню, как в 2007 знакомился с 1С и был впечатлён в 1С 7.7 табличным документом и посекционным выводом в отчетах (до этого имел счастье работать с Fast Report в Delphi), а тут все было настолько просто и функционально, что я был просто шокирован.
                              0

                              Спасибо!

                              +1
                              Легионы недоучек, проблемы бизнесу решениями от 1С…
                              Суть в том, что за такие деньги других вменяемых альтернатив нет. И бизнес выбирает 1С за то, что есть уже готовые решения их проблем, которые можно довольно-таки легко подпилить. И есть масса специалистов, пусть даже недоучек и, кого вы там назвали…
                              Возьмите Java, вы даже недоучку с трудом найдёте, а готового решения для бизнеса российского вообще нет.
                              На самом деле все понимают, что 1С то подвинуть не сложно: сделайте аналогичные решения позволяющие автоматизировать учёт и отчётность. Да хотя бы отчётность автоматизируйте, а учёт, как показывает практика, всё равно, кто во что гаразд делает у себя. Однако, воз и поныне там. Ни кто напрягаться не хочет. Потому что это затратно на первоначальном этапе. Чтобы написать и выкатить в массы такой продукт и приучить бизнес к нему, нужно десятилетие. Мало кто может себе позволить 10 лет работать в убыток, чтобы потом получать какие-то крохи в конкуренции с «монополистом».
                              Монополии то нет у 1С. Ну, может быть тот факт что наше законодательство налоговое сильно извращено и постоянно меняется, и за это кто-то приплачивает — это может такое быть в нашей стране. Но в остально, ни кто не припятствует выйти на рынок и сразиться с 1С. Но желающих не возникает. Бизнес устраивает то, что есть.
                              Отдельно от лица недоучек вам отвечу. В станах python, java и проичих хватает также недоучек, которых берут, за неимением лучшего, или же по знакомству, и в довольно-таки крупных компаниях, даже государственного сектора процветает такой говнокод, за такие деньги высокие, что 1С'ники отдыхают, даже самые занюханные франчи. А, кстати, и про аутсорсеров от java тоже наслышан. Там тоже процветает схема, продавать за дорого стажоров, под видом крутых специалистов. А специалистов, только на презентациях показывают заказчикам, чтобы пыль в глаза бросить.

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

                                А может господин комментатор не знает и не понимает бизнес 1с? В 90-е и 00-е вендору было экономически выгодно развивать партнерскую сеть в целях экспансии. Но уже в конце 00-х началась политика покупки крупных партнеров.

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

                                А думаете франчам интересно быть просто «кузнецей кадров» для рынка и превращать за свой счет вчерашних студентов в завтрашних штатных сотрудников для своих же клиентов? Думаете выгодно вместо использования налаженного конвейера продаж вкалывать за каждую копейку?
                                0

                                Интересно. Какое может быть типичное использование у oscript?

                                  0
                                  Вообще, его довольно успешно «продали» 1С-никам как замену powershell — т.е. вроде и решаешь задачи вне 1С, а вроде как и на привычном языке пишешь.
                                  В итоге на нем реализовали ряд решений из мира «взрослого DevOps и CI/CD», только с местным, так сказать, колоритом. Фактически — снизили порог входа для 1С-ников в мир современных технологий.
                                +11
                                Редкая статья про 1с от 1сника с которой я согласен за исключением некоторых спорных пунктов но которые обсасывали во всех спорах по 10 раз и повторяться бессмысленно. Упомяну разве что пару мелочей
                                На сегодняшний день, хранение исходников 1С в git с привязкой коммитов к задачам в Jira, ревью в Crucible, накатка кнопкой из Дженкинса и отчеты Allure о тестировании кода в 1С и даже статический анализ в SonarQube — это уже далеко не новость, а, скорее, мейнстрим в компаниях где есть много разработки на 1С.

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

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

                                Как человек делавший (по крайней мере на то время 17-18 год) самый крупный проект на мобильной 1с для предприятия (магнит тогда 3к лицензий на мобильную платформу купил) — в этом пункте вы ну ооооочень лукавите. Во первых разработка рест апи и механизма синхронизации при больших объемах справочников, необходимости работы оффлайн и невозможности удобно собирать логи — та еще боль, а для среднестатистического 1сника и вовсе задача с которой он ни разу не сталкивался. Во вторых — все равно пришлось начинать вникать в нативную разработку чтобы реализовать рядом пару других приложений мобильных для общения с мобильной 1с чтобы удовлетворить требования. В третьих из за ограничений платформы мы вообще едва не попали на необходимость писать все на нативе с нуля поскольку 1с не проходила аудит безопасников магнита. Им нужна была довольно тесная интеграция приложения с мдм системой, шифрование базы и прочее, а все это возможно только через подключение SDK вендора к приложению. И внешней компонентой это не решалось ибо требовало именно что встроить очень крепко, прямо в платформенный код. Да, сейчас, когда я уже год только и занимаюсь нативной разработкой под андроид я бы это осилил, но боюсь это бы противоречило лицензионному соглашению с 1с, сделало бы практически невозможной обновление (ибо не факт что патч бинарника одной платформы подошел бы к другой) и заняло бы дофига времени. В итоге аудит мы прошли, но чисто административными методами, а бодания заняли примерно год.
                                  0

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

                                    +4

                                    Было бы классно послушать Ваш рассказ о реальном положении дел в мобиле для 1С и о том проекте

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

                                        Тоже занимаюсь разработкой и поддержкой мобильного приложения на платформе 1С. Ничего не изменилось:)

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

                                            Веселая была история, когда гугл плэй вывалил требование — теперь только x64 приложения! — а сборщик мобильных приложений умел только x32. Пришлось допиливать сборщик, а фирма 1С новый сборщик выкатила только спустя сколько-то месяцев.

                                              0
                                              Веселая была история, когда гугл плэй вывалил требование — теперь только x64 приложения!

                                              Это зачем им?
                                              Ведь полное еще 32-битный аппаратов.
                                                0
                                                C августа обязалово Google Play Store. К слову многие разработчики фрейморков озадачились заранее поддержкой 64х платформы ведройда и в июне\июле уже выкатили релизы сборщиков. Странно, если верить выше написанному, что 1С нет.
                                                  0
                                                  Так и камней еще предостаточно. Но… "каменный век закончился не потому, что закончились камни" (с)
                                          +1
                                          Я занимался поддержкой мобильного приложения для супервайзеров в аэропорту. Бэк тоже 1С, синхронизация через web-сервисы. Мобильная платформа 1с не подходит для систем, критичных к производительности. Скорость работы низкая по сравнению с нативными приложениями, т.к. девайсы были не первой свежести со старым андроидом. Стабильность работы никакая, фоновая синхронизация из-за проблем со связью виснет, лечится только перезапуском приложения. Вылазили системные ошибки при синхронизации, вылечилось, правда обновлением версии мобильной платформы.Ну и ограниченная функциональность, пришлось разбираться во внутренностях андроид для решения проблем взаимодействия с другим приложением. Но зато быстрый прототип, это да.
                                            0

                                            Дешевле было (а на самом деле, бесплатно) просто в фигме прототипировать.

                                        +4
                                        И еще — если к вам пришел наниматься 1С-ник, то 1С-ника можно смело ставить на должность лида аналитиков.

                                        Похоже у кого-то скоро собеседование… </мысли в слух>
                                          +1

                                          Нет, но я время от времени собеседую людей, в т.ч. не на 1С-ные позиции.

                                          +4

                                          Редкой объективности статья про 1С. Впрочем, видя кем она написана — не удивительно. Респект.


                                          Хочется добавить, что если очень нужно, брендировать интерфейс 1С теперь тоже умеет, просто это отдельная фича и не для всех.

                                            0
                                            Цвета перекрасить — вполне для всех. Стили в управляемом приложении стали доступны (с 8.3.13) и перекрасить приложение можно.
                                              +1

                                              Перекрасить можно, но оно все равно будет узнаваемой 1С-кой. Иногда корп-дизайн это ключевой фактор для UI. А иногда наоборот — не имеет значения. Я лишь обозначил этот момент, чтобы было проще принимать решение.

                                                0
                                                Я ответил лишь на замечание, что перекрасить можно не всем.
                                                А «стандартный» дизайн можно рассматривать и как «про»: практически любой новый пользователь ИС уже умеет этой системой пользоваться, так и «контра»: нельзя сделать то, что очень хочетсянужно в данном конкретном месте ИС.
                                              0
                                              Поддерживаю
                                              +1
                                              Опят показывает, что в обсуждениях про 1С никогда не удаётся поставить точку )
                                                0
                                                Скоро все закончится. Сейчас тренд — облачные решения и сервисы, работа с большими данными, микросервисы и т.п. В этих сферах 1с пролетает мимо и с большим свистом. Архитектура микросервисов позволяет взять и переписать любой сервис на НОВОЙ технологии, если она появилась, на ЛЮБОМ языке или фреймворке, если он лучше старого. Это избавляет от ловушек легаси, в которой застряла 1с и скоро просто утонет после того, как появятся государственные облачные сервисы, решающие задачи с учетом и отчетностью. Непонимание этой тенденции не оставляет в покое многих пытаться безуспешно выходить с технологиями прошлого века на международные рынки и тягаться там на поле с местными мастодонтами. Это глупо, как и глупо пытаться искать программистов 1с в среду, где зарабатывают на консалтинге и продажах коробок/лицензий.
                                                  0
                                                  Да, но два нюанса.
                                                  Первый — для того, чтобы клиент (маленькая шаражка на 10 человек) ощутила от этого выгоды — она должна быть клиентом SaaS сервиса (в котором внутри и отказоустойчивость, и микросервисы и все-все-все), но тут внезапно выясняется, что, во-первых, Ваши данные — не Ваши (они в облаке и принадлежат ему), а, во-вторых, если Вам очень нужна какая-то функциональность, то ее могут реализовывать годами, ибо Вы — не в приоритете. В случае НОРМАЛЬНЫХ SaaS (типа Slack) это решается богатым АПИ, которое клиент может использовать и тягать любые данные к себе. И наоборот.
                                                  Второй момент — получается, все эти микросервисы и прочее могут позволить только большие клиенты, т.к. у них есть возможность отстегивать за это кучу денег. Это реально дорого. Сложность программного обеспечения перемещается из одного уровня (в монолите вся сложность где-то внутри) на уровень связи между всеми этими микросервисами. С одной стороны, это позволяет быть просто супер-гибкими (действительно -не нравится микросервис — взяли, выкинули, внедрили новый). С другой — шаурмячная себе это позволить в принципе не сможет, но это ей и не нужно.

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

                                                  Это вообще мечта всех, наверное… Чтобы были качественные облачные гос. сервисы… экономящие деньги и силы граждан и других клиентов.
                                                    +1
                                                    Не совсем так. Облачные решения — это сфера еще более массовая, чем тот сегмент рынка, что сейчас есть у 1с. И решения делаются еще более приспособленными для массоаого пользователя. И по цене в том числе. А от государства они будут еще и бесплатными.
                                                      +1
                                                      шаурмячная себе это позволить в принципе не сможет, но это ей и не нужно

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

                                                      А если серьезно, то как раз в мелким клиентам всякие «1С:Fresh», «МойСклад» и т.д. легче заходят. Без всякой доработки. Такой парадокс, что те кто может себе позволить платить деньги за доработку SAAS решения, предпочитает сервер держать поближе к себе (ну или в каком-нибудь надежном далеком датацентре, но на своем выделенном сервере).
                                                  +4

                                                  Спасибо! Отличный обзор! Очень посмеялся, очень хорошо написано, жизненно.


                                                  конструкции finally У меня есть гипотеза, что эта конструкция отсутствует из-за того, что не подобрали удачного перевода ее на русский язык :)

                                                  можно было сделать


                                                  ПОПРОБУЙ
                                                    здесь_код
                                                  ИСКЛ
                                                    обработка_ошибок
                                                  НАКОНЕЦ
                                                    обработка_finally

                                                  видимо, выглядит некрасиво


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

                                                  не хватает сравнения с "великим и ужасным" SAP.

                                                    +6
                                                    «накряйняк» прикольней)
                                                      +7
                                                      Лучше так: :)

                                                      ПОПРОБУЕМ
                                                        здесь_код
                                                      НЕВЫШЛО
                                                        обработка_ошибок
                                                      ИВСЁТАКИ
                                                        обработка_finally
                                                      
                                                        +1

                                                        Есть ещё слова "эпилог", "финал" (или "финиш"), "исход", так же по смыслу может подойти слово "однако".

                                                          +1
                                                          конструкции finally У меня есть гипотеза, что эта конструкция отсутствует из-за того, что не подобрали удачного перевода ее на русский язык :)
                                                          В конце концов,
                                                            0

                                                            Пока читал, в голове вертелось "ПОЛЮБОМУ", что соответствует целевому смыслу применения, а не подстрочнику. Ну или "ОБЯЗАТЕЛЬНО". Предложенные выше варианты, мне кажется, этому критерию не соответствуют, кроме разве что "финиша".

                                                            0

                                                            Попытка
                                                            Исключение
                                                            ПослеПопытки
                                                            КонецПопытки

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

                                                              Только почему-то все забывают цену "впрыжка" туда....

                                                                +8
                                                                И то что есть цена выпрыгивания обратно, микросервисы — не панацея вообще ни разу
                                                                0
                                                                Не всё можно загнать в микросервисы
                                                                  +8

                                                                  поправка: не все НУЖНО загонять в микросервисы

                                                                  0
                                                                  я кстати думал об этом. это не невозможно. над CI/CD нужно будет конечно поработать, плюс нужна совершенно иная система обмена данными (на нормальных технологиях и отличных от текущих принципах), плюс облачную интеграцию закостылить (сквозная авторизация, балансировка и пр), но в целом, думаю, я смог бы запилить систему с нормальным откликом. Другое дело — кто готов вывалить мешок денег за это? ))
                                                                    0

                                                                    А много ли в мире учётных систем на микросервисах? Ну то есть не чтоб мелочёвка сбоку, а чтобы прямо главную книгу банка или что-то подобное на микросервисах?

                                                                      0

                                                                      А 1С предназначена исключительно для "главной книги банка"?


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


                                                                      Аргумент "НЕ НУЖНО" выглядит по меньшей мере странно.

                                                                      0

                                                                      Не совсем монолит, но в силу изначального рождения как продукт исключительно для учёта, дальнейшие "мутации" не могли ослабить доминанту. 1С это очень хорошее решение для учета. В первую очередь для учета в торговли в РФ. Это было заложено в продукт "с рождения".
                                                                      В силу этой генетической особенности решения, игрища с разными подходами к эволюционному развитию мало применимы и вредны. 1С это не нужно от слова совсем.


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

                                                                      +3
                                                                      Не упомянут очень важный минус. Все современные типовые конфигурации 1С очень громоздкие и неповоротливые, сделаны по принципу «пихай всё что только можно сразу в типовое решение». Отсюда страшнейшие проблемы с производительностью. Причем как-то это исправить со стороны программиста 1С не возможно: в 1С не знают что такое модуляризация и внедрение зависимостей. Ну т.е. совсем не знают.
                                                                      Есть функционал подсистем и функциональных опций, но он прямо скажем очень слабо развит.
                                                                      В результате этой раздутости, помимо проблем производительности, возникают проблемы и с касомизацией под конкретного заказчика, любая доработка, даже казалось бы не значительная, выливается очень серьёзными трудозатратами — посмотрите стоимости внедрений современных ERP-УПП-БУ-УТ где-нибудь на тендерных площадках.
                                                                        +2
                                                                        Не упомянут очень важный минус. Все современные типовые конфигурации 1С очень громоздкие и неповоротливые, сделаны по принципу «пихай всё что только можно сразу в типовое решение». Отсюда страшнейшие проблемы с производительностью.


                                                                        На самом деле, нет.

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

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

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

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

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

                                                                          0
                                                                          Да, это практически именно то, что я хотел сказать.
                                                                            0
                                                                            «сел и сразу поехал» это принципиальный момент.

                                                                            Посчитайте стоимость серверного железа и лицензий на серверное ПО (1С, MS, MS SQL) при нагрузке хотя бы в 100 человек online. Чтобы на типовом решении «сесть и сразу поехать» нужен очень большой бюджет. И становится весьма спорно, а перевешивают ли плюсы минусы.
                                                                              +1

                                                                              Ну серверное железо в любом случае нужно, независимо от стека технологий. Без сервера не заработает. Железо на "100 человек онлайн" нужно весьма скромное. Лицензии да, нужны, но тут какое дело — если надо 100 человек но нет денег на лицензии, значит не нужно 100 человек. Обычно, если решение делается под сотни пользователей — покупаются ключи по 500 и бюджет особо не смущает. А когда нет денег на сотку, то скорее всего, конторка слабовата, хоть и хочет себе "большой" сервер.

                                                                                –1
                                                                                Если вам продали клиентские лицензии по 500 рублей, вас, я извиняюсь, обманули. Ну и, соответственно, вся дальнейшая математика неверна.
                                                                                Железо на «100 человек онлайн» нужно весьма скромное
                                                                                Это либо у нас разные представление о скромности, либо вас обманули дважды.
                                                                                  0
                                                                                  «по 500» это не «по 500 рублей», а «комплект лицензий по 500 штук».
                                                                                    0
                                                                                    Ну так и пишите, а то не совсем понятно. Там выгода получается: 3552 руб. против 6300 руб. Так понятнее было бы всем.
                                                                                    +1
                                                                                    Железо на «100 человек онлайн» нужно весьма скромное


                                                                                    Это либо у нас разные представление о скромности, либо вас обманули дважды.


                                                                                    Зарплата, налоги, офис на 100 человек — это порядка 10 000 000 рублей ежемесячно из расчета средней 50 000 зарплаты на человека.

                                                                                    И что по сравнению с 10 000 000 рублей ежемесячных трат вы считаете дорогим в вопросе одноразовых трат на покупку сервера?

                                                                                    Это простому человеку сумма кажется большой.
                                                                                    А для предприятия со 100 сотрудниками — покупка серверного оборудования вовсе не самая значительная трата в течение года. На фоне то же зарплаты или аренды помещений стоимость сервера теряется.
                                                                                      0
                                                                                      Тут у вас слишком грубые расчеты, смысла нет. Это с одной стороны, а с другой стороны, внедряя типовое решение на более-менее сложном объекте, вы столкнетесь с необходимостью доработок и кастомизации под заказчика, и тут все прелести типового решения как универсального и подходящего всем (как позиционируется), опять же выльются очень серьёзными трудозатратами, а это время и деньги к которым нужно быть готовым.
                                                                                        +1
                                                                                        Тут у вас слишком грубые расчеты, смысла нет.


                                                                                        Затраты в 10 млн. рублей в месяц на 100 сотрудников, на запрату, налоги, офис — даже заниженные.

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


                                                                                        Я этими разработками занимаюсь профессионально уже очень много лет.
                                                                                        Нет ничего страшного.

                                                                                        Главное:

                                                                                        По сравнению с 100% разработкой под себя — доработка типового решения это тьфу, копейки. Ну и времени куда как меньше. И результат гарантированее.

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

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

                                                                                            Разумеется.
                                                                                            Бизнес не стал бы платить, если ли бы для него это были действительно существенные деньги.

                                                                                            Фокус в том, что «для предприятия копейки, а для человека очень даже дофига».

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


                                                                                            Не вижу никакой неразрешимой проблемы.

                                                                                            Есть только одна-единственная сложность: всё дело только в том, что за человек занимается принятием решений — где брать типовую, а где пилить своё.

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

                                                                                            В корне неверное мнение, покупка коробки — это да, тьфу копейки. Но на этом только все начинается. Я знаю очень много заваленных примеров внедрения решений 1С, тут можно назвать и УТ, и УПП, и ERP, местами даже ЗУП умудряются завалить. Вот в чем проблема.
                                                                                              0
                                                                                              В корне неверное мнение, покупка коробки — это да, тьфу копейки. Но на этом только все начинается. Я знаю очень много заваленных примеров внедрения решений 1С, тут можно назвать и УТ, и УПП, и ERP, местами даже ЗУП умудряются завалить. Вот в чем проблема.


                                                                                              Я этим занимаюсь профессионально очень много лет. Видел и удачные внедрения без каких-либо доработок вовсе. Видел и переписанные с нуля.

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

                                                                                              Потом, возможно, будут еще доработки. Но для начала эксплуатации множество доработок при внедрении — не типичная ситуация.

                                                                                              Не означает, конечно, что описанной вами ситуации нет в принципе. Отчего же — есть. Но нечасто.

                                                                                              Я эти ситуации в своей карьере хорошо помню, так как это хорошие деньги мне лично. К сожалению они не типичны, не часты.
                                                                                    +1
                                                                                    Посчитайте стоимость серверного железа и лицензий на серверное ПО (1С, MS, MS SQL) при нагрузке хотя бы в 100 человек online. Чтобы на типовом решении «сесть и сразу поехать» нужен очень большой бюджет. И становится весьма спорно, а перевешивают ли плюсы минусы.


                                                                                    1) Почему MS-SQL, а не бесплатный PostgreSQL, с которым 1С уже много лет умеет работать?

                                                                                    2) Давайте посчитаем на 100 человек ежемесячный бюджет. Зарплата + налоги + физические рабочие места. При зарплате в 50 000 рублей в месяц — это около 10 000 000 рублей расходов в месяц. Ежемесячно. Что на этом фоне разовая стоимость внедрения (последующая тех. поддержка уже значительно дешевле чем первичное внедрение)?

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

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

                                                                                    И становится весьма спорно, а перевешивают ли плюсы минусы.


                                                                                    Фирму интересуют не столько деньги, сколько сроки. Ибо не успел — и потерял кучу потенциальной прибыли.

                                                                                    «Сел и поехал» VS «Разрабатывать своё в течение пары лет» (с рисками что не получится, что специалист уйдет)?

                                                                                    Бизнес уже дал ответ на это.

                                                                                    Лет 20 назад не пилил своё только ленивый. Сейчас — типично как раз что подавляющее большинство сидит на готовых решениях (в большинстве это 1С: Предприятие).

                                                                                    Разумеется, не типовые решения имеют место быть. И платят за них хорошо.
                                                                                    Я как раз этим и занимаюсь — очень не типовой автоматизацией.

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

                                                                                    Уникальные не типовые куски проекта делают у меня только отдельные специфические задачи, только те, где они заведомо на порядки выгоднее типовых решений.
                                                                                      +1
                                                                                      Почему MS-SQL, а не бесплатный PostgreSQL, с которым 1С уже много лет умеет работать?

                                                                                      А потому что вы не сможете привести реальный пример внедрения какой-нибудь типовой конфигурации 1С на PostgreSQL, к сожалению.
                                                                                        0

                                                                                        Да ладно! Господин Дорошкевич, если вы нас слышите, не могли бы вы набросать зачетных примеров внедрения на постгресах?

                                                                                          0
                                                                                          Сомневаюсь, что он что-то толковое ответит… Франчи обычно работают по принципу — выставил клиенту побольше заоблачных часов и свалил поскорее и подальше, пока тот не опомнился. А разгребать будут совсем другие ребята.
                                                                                          Если вы думаете, что PostgreSQL — это серебряная пуля, поздравляю, вы молоды и только в начале пути.
                                                                                            +1

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

                                                                                              0
                                                                                              А есть толковые мануалы для людей уровня сисадмина — как тюнить Postgress для 1С? Сталкивались с тем, что на Postgress проблемы с производительностью, переходишь на MS SQL — проблемы уходят.

                                                                                              У нас нет опыта тюнинга Postgress, рекомендуем приобретать MS SQL. Клиент приобретает.

                                                                                              Возможно, это неправильно, но клиенту надо работать здесь и сейчас, он не будет ждать, пока мы найдем причину тормозов в связке Postgress + 1С, а MS SQL вполне отработан.
                                                                                                +1

                                                                                                Толковые мануалы — мануалы по постгресу и иногда ради любопытства заглядывание в планы запросов. Обычно все решаемо. Запросы очень часто могут работать на разных СУБД с разной скоростью, это норма. Вполне себе бывают запросы, которые ложатся на MS, но работают на PG. Кроме того, для нагруженных 1С существует коммерческая версия PostgresPro, которая по бенчмаркам уделывает коммерческий же MS SQL (но я ее не щупал).


                                                                                                он не будет ждать, пока мы найдем причину тормозов в связке Postgress + 1С, а MS SQL вполне отработан.

                                                                                                И да, безусловно задачу клиента за его деньги надо делать на том инструменте, которым вы владеете лучше. Не надо внедрять постгрес ради постгреса.

                                                                                                  0
                                                                                                  Открою вам пару секретов:
                                                                                                  1) Тюнингом параметров всех проблем производительности не решить. Бенчмарки дело хорошее, но если бы всё было так просто, никто бы и не смотрел в сторону MS SQL.
                                                                                                  2) Цена коммерческой версии PostgresPro сопоставима с ценой MS SQL, политика лицензирования также похожа (есть варианты на ядра, есть на пользователей). Думаю, очевидно, почему так.
                                                                                                    0

                                                                                                    Хм… тюнингом не решить, переписыванием запросов не решить, а чем решить?

                                                                                                      0

                                                                                                      В прошлом холиваре один внедренец предлагал сначала реорганизовать бизнес-процесс клиента, а только потом лезть в оптимизацию.

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

                                                                                                        Хотя, справедливости ради, не совсем понятно — причем тут оптимизация запросов — типа, а давайте у вас закупщики будут вносить информацию только до обеда, продажники — после обеда, а бухгалтера вообще по ночам работают, чтобы программа не тормозила?

                                                                                                        P.S. вот пока писал, вспомнил, что на одном из мест работы похожим образом была организована работа фин. отдела, потому что много лет назад обмен между ИС запускали вручну. и пару раз в день («так исторически сложилось»). Меняли процесс в обратную сторону — запустили регулярный автоматический обмен, но так и не нашли понимания у привыкших к старому режиму финансистов, даже просили «вернуть как было».
                                                                                                          0
                                                                                                          У того комментатора посыл был в том что если запросы тяжелые или их нужно делать часто — значит нужно менять бизнес процессы чтобы их не было. Всегда. А оптимизировать запросы бессмысленно и неправильно поскольку на его взгляд разрабатывать качественную с технической точки зрения систему дорого и долго. Нужно брать коробку и подгонять бизнес процессы к ней. Если бизнес процессы не укладываются в коробки — значит они неправильны.
                                                                                                            0
                                                                                                            Ну, если заменить «всегда нужно» на «возможно нужно», то мнение имеет право на жизнь.
                                                                                                              0

                                                                                                              Так делает сап, это их прямо методичка: наши процессы выверены и непогрешимы, если у нас чего то нет — вам это не нужно. Ну а то, что склад называется "завод" это надо просто принять и поверить. С вас $2 млн

                                                                                                            0

                                                                                                            Это, кстати часто правильно.

                                                                                                              0

                                                                                                              Жаль только, что изменить бизнес процесс не всегда возможно в разумное время.

                                                                                                    0
                                                                                                    Проблема в том, что там не просто тюнинг. Там иногда надо запросы полностью переписывать для быстрого выполнения (у них оптимизиторы по разному работают). А, учитывая, что типовые сплошь на плоском псевдо-SQL, то очень тяжело сделать, чтобы они одновременно эффективно выполнялись на обоих базах. Поэтому видимо в 1С просто тюнингуют их под MS SQL, а на PostgreSQL — как получится. Понятно, что франчам тогда логичнее не связываться с PostgreSQL.
                                                                                                      0
                                                                                                      Да, согласен с вами.
                                                                                                        0

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

                                                                                                          0
                                                                                                          Сомнений может и нет, но в типовых как будет? Если MSSQL, то такой запрос, а иначе вот такой? Там и так жесть творится, когда строка запроса «собирается» из кучи мест, а будет еще жестче?
                                                                                                  0

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


                                                                                                  Любому клиенту или внедренцу можно позвонить и спросить действительно ли это так.


                                                                                                  http://1c.ru/rus/partners/solutions/search.jsp?q=&Version=8&workingMode=2&dbServer=2&small=&big=&smallDbConns=&bigDbConns=&smallThinClientConns=&bigThinClientConns=&smallWebClientConns=&bigWebClientConns=&labelgeo_id=&geo_id=&DateSince=&DateTill=&isArchive=1&showParams=0

                                                                                                    0
                                                                                                    А что тут странного. Приведите пример УТ, ERP, БУ, где 100+ рабочих мест на PostgerSQL. Ну есть ДО 300 рабочих на PostgreSQL 1c.ru/rus/partners/solutions/solution.jsp?SolutionID=968986. Но это документооборот всего лишь. Сравнение вообще ни о чем, не та интенсивность работы, ни тот функционал.
                                                                                                      0

                                                                                                      Мне известно внедрение в одном федеральном министерстве на 1000+ пользователей на постгрес.

                                                                                                        0
                                                                                                        Ооо… Слова красивые, но покажите цифры.
                                                                                                        Что за конфигурация, сколько документов одного вида, какая интенсивность работы док/час. И главное, бюджет…
                                                                                                        Вы думали, какого-то впечатлили фразой «в одном федеральном министерстве»…
                                                                                                          0

                                                                                                          Есть такое слово — коммерческая тайна. Иногда лучше помолчать, уж извините. Не верите — я переживу.

                                                                                                            0
                                                                                                            Я бы сказал, есть такое красивое слово…
                                                                                                        +1

                                                                                                        Фрешик https://1cfresh.com

                                                                                              0
                                                                                              Кстати в целом согласен. Поскольку есть некоторый опыт участия в разработке коробок — что то модульное сделать действительно почти нереально. Как то, пусть не идеально, это получается у БСП, но там над этим работает большая команда крутых профессионалов, в других продуктах от 1с и франчей таких команд немного, если вообще есть.
                                                                                                0
                                                                                                Да, БСП следует упомянуть как безусловный плюс. Но и это не решает всех проблем.
                                                                                                  0
                                                                                                  Собсно я скорее хотел этим примером показать что модульность в теории возможна, но очень сложна и под силу только очень сильным командам. Что не есть гуд. Коробки разрабатывает много франчей, и у них таких команд нету.
                                                                                              +1
                                                                                              критики 1С критикуют ее с позиции «не осиливших»
                                                                                              не очень вяжется с правосудием на картинке, хотя наличие пункта «1С должна умереть» в голосовалке заставляет признать мужество автора )
                                                                                                0

                                                                                                Т.е. trollface вам ни на что не намекнул?

                                                                                                  0
                                                                                                  поскольку он стоит на другой чаше весов — я подумал, что он символизирует тех, кто тролит 1С, а не автора, тролящего тролей 1С )
                                                                                                    0

                                                                                                    Там в картинке много смыслов, в том числе и такой, как вы сказали. Еще на картинке не виден момент добавления тролля на чашку. А ну как она резко пойдет вниз? :)

                                                                                                0
                                                                                                Спасибо автору, после такой статьи, можно перестать скрывать что пишешь на русском )
                                                                                                  0

                                                                                                  А зачем было скрывать? Даешь каминг-ауты! ))))

                                                                                                    +1
                                                                                                    Всем добрый день, я Денис и я программирую на 1С с 2007 года
                                                                                                    *Вялые аплодисменты и вздохи сочувствия
                                                                                                      0
                                                                                                      угу. т.е. 1Сники, по вашей логике, должны совершить каминг-аут? вы на чьей стороне??? )))
                                                                                                        0

                                                                                                        На стороне 1С-ников, безусловно. :) На дворе 2019 год и делать каминг-ауты модно и почетно. Никаких "вздохов сочуствия", только всеобщее одобрение и восторги :trollface:

                                                                                                          0
                                                                                                          А ещё мы должны требовать, чтобы во всех фильмах про хакеров в команде присутствовал как минимум один 1С-ник!
                                                                                                      0
                                                                                                      Если бы проблемой языка была русскоязычность… Автор как раз вполне верно описал минусы языка. Вот без шуток — из современных языков вижу наиболее подходящим для платформы дарт. Многопоточности нет, есть изоляты работающие по модели акторов и встраивающиеся в механизм асинхронности через async/await. Типизация по умолчанию статическая, но есть простенький вывод типов позволяющий меньше кода писать. Причем работает не только для переменных но и для параметров функций. Также есть тип dynamic для совсем маргинальных случаев. Очень удобные методы работы с коллекциями
                                                                                                      например collection if/for вообще до того ни в каких языках не видел
                                                                                                      Dart 2.3 also introduced collection if and collection for, which you can use to build collections using conditionals (if) and repetition (for).

                                                                                                      Here’s an example of using collection if to create a list with three or four items in it:

                                                                                                      var nav = [
                                                                                                      'Home',
                                                                                                      'Furniture',
                                                                                                      'Plants',
                                                                                                      if (promoActive) 'Outlet'
                                                                                                      ];


                                                                                                      Here’s an example of using collection for to manipulate the items of a list before adding them to another list:

                                                                                                      var listOfInts = [1, 2, 3];
                                                                                                      var listOfStrings = [
                                                                                                      '#0',
                                                                                                      for (var i in listOfInts) '#$i'
                                                                                                      ];
                                                                                                      assert(listOfStrings[1] == '#1');


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

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

                                                                                                          0
                                                                                                          Ну лямбда не обязательно должна контекст замыкать. Часто этого и не нужно. Впрочем и замыкания нередко бывают полезны. В той же java замыкание может только final переменные захватывать, сами понимаете — сложностей тут немного. В котлине вот правда можно любые переменные и свойства захватывать — но как то тоже проблем не возникало.
                                                                                                            0

                                                                                                            Ну лямбда по-определению может что-то захватывать. Т.е. если в языке есть лямбды — они должны предоставлять такую возможность, или нельзя заявлять, что в языке есть лямбды.

                                                                                                              +1
                                                                                                              Как минимум вики-чан и stackoverflow с вами не согласны.
                                                                                                              wiki
                                                                                                              In computer programming, an anonymous function (function literal, lambda abstraction, or lambda expression) is a function definition that is not bound to an identifier. — условия о замыкании нет.

                                                                                                              SO
                                                                                                              A lambda is just an anonymous function — a function defined with no name. — аналогично.

                                                                                                                0

                                                                                                                Я перед каментом почитал википедию: "Применяется как правило для объявления анонимных функций по месту их использования, и обычно допускает замыкание на лексический контекст, в котором это выражение использовано." Это определение совпадает с тем, как я себе понимал отличия собственно лямбда-функций от просто функций, как объектов первого класса. Я, конечно, могу ошибаться, но и в достоверности камента на stackoverflow тоже позволю себе усомниться.

                                                                                                                  0
                                                                                                                  Замыкание контекста собственно допускают замыкания, которые могут быть как анонимными функциями (лямбдами) так и неанонимными. Это не неотъемлимое свойство лямбды. Насколько помню всю эту мутную теорию лямбда исчисления (неплохо разбиралось в подкасте «Мысли и методы», пусть поверхностно, но мне глубже и не надо) — там вообще не описывается прикладная реализация, но параметры в записи лямбды там указываются вроде явно, как параметры анонимной функции это все выглядит. Плюс те же анонимные функции в java вполне себе считаются лямбдами хотя не могут захыватывать изменяемые переменные, например.
                                                                                                                    0

                                                                                                                    Окей, тогда я поясню мысль: функции первого порядка в 1С нужны. Замыкания — не уверен.

                                                                                                                      0
                                                                                                                      Анонимные функции нужны тоже. Иначе будет скоуп замусориваться функциями нужными только в одном месте.
                                                                                                                        0

                                                                                                                        Да, нужны. Но нужна ли им возможность захвата внешнего контекста?

                                                                                                                          0
                                                                                                                          В 1с под вопросом. Все таки в массе квалификация разработчиков около нуля и они не факт что осилят. А вообще нужна, имхо)
                                                                                                                            0
                                                                                                                            Зачем это осиливать? Это как раз естественное поведение, которое разработчик ждет. Если он упоминает внешнюю переменную, то ждет, что именно она и будет в лямбда-функции.
                                                                                                                              0
                                                                                                                              Если он упоминает внешнюю переменную а лямбда в языке не поддерживает замыкание на изменяемых переменных — должна падать ошибка компиляции. Поверьте, встречал разных программистов, и мнения у них даже насчет банальных вещей нередко не сходятся.
                                                                                                                                0

                                                                                                                                Вам нагуглить классический пример с лямбдой и циклом for по замыкаемой переменной?

                                                                                                                              0
                                                                                                                              ОбработкаОповещения + ДополнительныеПараметры.
                                                                                                                              В php решено конструкцией use, в js — доступностью всего контекста. Или как это правильно написать?
                                                                                                                                +1

                                                                                                                                толсто. слишком толсто и больно. ушел плакать

                                                                                                                0
                                                                                                                Да ну, в 1с (как и в общем случае в обычной бизнес-логике) половина кода — это унылое перекладывание данных в коллекциях в циклах. Лямбды и мапы типа laravel collections сделали бы это занятие гораздо приятнее и веселее.
                                                                                                                Вторая половина — это запросы, и аналог linq to sql тоже очень бы пригодился. Причем 1с вроде бы тоже так думает и даже что-то сделала, но настолько неудобное, что этим никто не пользуется.
                                                                                                            0
                                                                                                            Друзья и коллеги, в последнее время на Хабре участились статьи с хейтом в адрес 1С, как платформы для разработки, и выступлениями ее защитников. Эти статьи обозначили одну серьезную проблему


                                                                                                            Эти статьи обозначили известность, распространенность и популярность продукта 1С: Предприятие.

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

                                                                                                            Ну банально: сколько я соберу комментов/лайков под статьёй про какую-нибудь MyCRM (название выдумано)? 1-2-5?
                                                                                                            А стоит написать про 1С, да обкакать покрасивше — так я только для начала заполучу сходу десятки комментариев от тех, кто 1С действительно знает и способен объективно мне возражать. Так и тех, кто не в теме и просто пришёл поесть попкорна понаблюдать за срачем. Гарантировано.
                                                                                                              +1
                                                                                                              Если человек хорошо представляет о чем говорит, то почему бы ему про это не написать? Грамотная и годная техническая статья.
                                                                                                              Я вообще за большее количество статей от людей с большим опытом, а не от "двадцатитрехлетних синьеров" пишухих очередную CMS/убийцу_гугла/фрейворк.
                                                                                                                –1
                                                                                                                Если человек хорошо представляет о чем говорит, то почему бы ему про это не написать? Грамотная и годная техническая статья.


                                                                                                                Да, конкретно этот человек — представляет то, о чем он пишет.

                                                                                                                Я про другие статьи.
                                                                                                                Например:

                                                                                                                О сравнении специализированного решения 1С с языками программирования общего назначения.

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

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

                                                                                                                  Можно конкретный пример, со ссылкой на статью?
                                                                                                                    0
                                                                                                                    Я про другие статьи.

                                                                                                                    В других возможно. Но тут то мы обсуждаем именно эту статью.
                                                                                                                  0
                                                                                                                  А вы действительно думаете что microsoft не за что ругать что тогда что сейчас? Вы их продукцией не пользуетесь?
                                                                                                                    +3
                                                                                                                    А вы действительно думаете что microsoft не за что ругать что тогда что сейчас? Вы их продукцией не пользуетесь?


                                                                                                                    Бездумная ура-риторика типа «MS говно делает, даешь Linux, он заведомо хорош просто потому что бесплатен и открыт и наплевать на корявый графический интерфейс Linux»? Я про такое.

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

                                                                                                                    Только крайне узкоспециализированные, ограниченные решения (типа голой командной строки Linux, без GUI) не конкурируют с Windows по количеству косяков.

                                                                                                                      0
                                                                                                                      Я люблю десятку винду (хотя пишу это сообщение из под manjaro). Но то что кто то по каким то причинам является лидером рынка не повод его не ругать. Линукс выигрывает в одних аспектах, мак в других. Винда что то среднее со своими плюсами и минусами, но ругать ее можно очень много за что и нужно. Как и линкусы с маками. По крайней мере я регулярно все три системы поливаю.
                                                                                                                        +1
                                                                                                                        Но то что кто то по каким то причинам является лидером рынка не повод его не ругать.


                                                                                                                        Вопрос как ругать.
                                                                                                                        Вот статья автора вполне себе объективна.

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

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

                                                                                                                  Запросто это делается.

                                                                                                                  И еще — если к вам пришел наниматься 1С-ник, то 1С-ника можно смело ставить на должность лида аналитиков.

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

                                                                                                                  Кроме того, вы ка кто элегантно обошли тот факт, что 1с использует СУБД как тупую хранилку.
                                                                                                                  Забыли упомянуть про фантастический оверхед выборок.
                                                                                                                  А как весело 1с обращается с тем же pg, это просто нечто: когда я увидел lock на information_schema да еще с таймаутом в 5 минут, мне хотелось убивать.

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

                                                                                                                    Если учесть контекст "(и потом «ой, а почему у нас дырки»)", то задача
                                                                                                                    сквозной нумератор сущностей, с разрезом уникальности по некоторому набору ключей, префиксацией, так чтобы это не блокировало базу при параллельном вводе данных.

                                                                                                                    становиться сложнее.
                                                                                                                      0
                                                                                                                      Берете общий sequence и вперед, как первый вариант.
                                                                                                                        0

                                                                                                                        Окей. Отмасштабируйте решение на 4 движка СУБД и добавьте периодичность нумерации по ключам "Год/месяц/день", "Вид сущности" и возможность указания произвольного префикса в начале генерируемого номера.

                                                                                                                          0
                                                                                                                          Про движки ответ у меня простой: любой каприз за ваши деньги. Oracle/MSSQL/PostgreSQL имеют схожий функционал, я думаю разобраться можно.

                                                                                                                          create table my_precious_docs(
                                                                                                                             id serial,
                                                                                                                             doc_number varchar not null,
                                                                                                                             doc_year char(4) not null default to_char(current_date, 'YYYY'),
                                                                                                                             doc_sum decimal(18,2) not null default 0,
                                                                                                                             primary key(id),
                                                                                                                             unique(doc_year,doc_number)
                                                                                                                          );
                                                                                                                          
                                                                                                                          create or replace function id_for_year() returns trigger
                                                                                                                             language plpgsql AS
                                                                                                                          $$
                                                                                                                          declare
                                                                                                                             seqname text := 'seq_' || new.doc_year;
                                                                                                                             prefix char(1) := 'Н'; -- можно и в справочник
                                                                                                                          begin
                                                                                                                             if seqname is not null then
                                                                                                                                execute 'create sequence if not exists ' || seqname;
                                                                                                                                execute 'select $1||nextval($2)' into new.doc_number using prefix,seqname::regclass;
                                                                                                                             end if;
                                                                                                                          
                                                                                                                             return new;
                                                                                                                          end;$$;
                                                                                                                          
                                                                                                                          
                                                                                                                          create trigger id_for_year before insert on my_precious_docs for each row
                                                                                                                             execute procedure id_for_year();
                                                                                                                          


                                                                                                                          Как видите, ВСЕ ваши требования сейчас реализованы. Хотя вроде «Вид сущности» пропустил, но тут надо описание сути, понимаете же, мне ничего не стоит еще конкатенацию добавить.
                                                                                                                            0
                                                                                                                            В соединение1 выполнили insert. Выполнился инкремент sequence. В соединении2 происходил такой же процесс. Они выполнялись транзакционно (допустим на уровне serializable). Соединение1 долго тупило и в итоге получили rollback. Вопросы:
                                                                                                                            1) возникла ли при этом блокировка?
                                                                                                                            2) возникла ли при это дыра в сквозной нумерации?
                                                                                                                              0
                                                                                                                              1. нет
                                                                                                                              2. да

                                                                                                                              По дырки я ответил ниже.

                                                                                                                              Зы serializable не сильно сурово?
                                                                                                                                0
                                                                                                                                не сильно сурово?

                                                                                                                                В денежных вопросах не сильно.
                                                                                                                            –1
                                                                                                                            >Отмасштабируйте решение на 4 движка СУБД и добавьте периодичность нумерации

                                                                                                                            ANSI SQL вам в помощъ.

                                                                                                                            Но зачем такое в трезвом уме и памяти?
                                                                                                                            Это такое извращенное видение мира одноэсника?
                                                                                                                            Делает так, потому что может?
                                                                                                                            0
                                                                                                                            Он не решает задачу «без дырок» в условиях конкурентного доступа и минимизации блокирования.
                                                                                                                              0
                                                                                                                              Тогда в примере выше ставим default для doc number а тригер переделываем под after insert
                                                                                                                                0
                                                                                                                                Т.е. когда произошел commit, так?
                                                                                                                                  0
                                                                                                                                  Нуда
                                                                                                                                  0

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

                                                                                                                                    0

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

                                                                                                                                      0

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

                                                                                                                                        0
                                                                                                                                        Не усложнили ниразу, тригер пишется один, в него заворачиваем все ваши условия скопом, по справочникам и забываем.
                                                                                                                                          0

                                                                                                                                          Имя, сестра, имя даешь статью "как правильно сделать энумератор с заданными условиями". И посмотрим.

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

                                                                                                                                            Если выдадите списочком условия то вполне можно подумать, даже с плюсами и минусами подходов.
                                                                                                                                              0

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

                                                                                                                                                0
                                                                                                                                                Обычная рядовая задача. С моей точки зрения я ее решил 8 коментариев назад.

                                                                                                                                                Зы вы кстати этой «отпиской» уклонились от ответа на сотальные доводы)
                                                                                                                                                  0

                                                                                                                                                  Наверное решили, я не проверял под нагрузкой. Осталось портировать на синтаксис 3-х других СУБД и вы молодец. А задача автоматически становится не такой уж простой.

                                                                                                                                                    0
                                                                                                                                                    Под нагрузкой не измениться вообще ничего.

                                                                                                                                                    Портировал:

                                                                                                                                                    Oracle: Sequence, Trigger
                                                                                                                                                    T-SQL: Sequence, Trigger
                                                                                                                                                      0

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

                                                                                                                                                      0

                                                                                                                                                      Нет, не решил:


                                                                                                                                                      • after insert — это не тоже самое, что before commit. Между after insert и commit есть промежуток времени, в который может прилететь rollback.
                                                                                                                                                      • если используете честный before commit, то не можете в одной транзакции вставить связанные документы. Не знаю, правда, нужно ли это в контексте 1С и подобных систем.
                                                                                                                                          0
                                                                                                                                          Сиквенс вы можете использовать в разных таблицах.
                                                                                                                                          Второй вариант:

                                                                                                                                          create table documents(
                                                                                                                                          document_id serial not null
                                                                                                                                          )
                                                                                                                                          
                                                                                                                                          create table orders(
                                                                                                                                          order_specific field varchar
                                                                                                                                          )
                                                                                                                                          inherits documents