для каких целей необходимо программирование написание программного кода в 1с предприятие 8
1С программирование 8.3 для начинающих
Умение программировать в среде 1С дает возможность не волноваться из-за каких-то кризисов, так как эта программа установлена в большинстве Российских компаний, а вот знающих ее специалистов крайне мало. В итоге, если будет возможность и время, выучите этот перспективный встроенный язык и изучите среду.
Что такое 1С программирование
1С Предприятие – программная платформа для настройки и поддержки конфигураций, которые базируются на ней. Все эти «Бухгалтерии», «Кадры» и «Склады» – всего лишь дополнительные модули для платформы, пользующиеся ее API интерфейсом и настраивающие свои интерфейсы через встроенный Конфигуратор. Базовая платформа также поддерживает внутренний язык и отладчик для него.
Люди, которые устанавливают 1С на компьютере, – фирмы-франчайзи, то есть дистрибьюторы, и таким может стать любой человек. По-хорошему, дистрибьюторы должны иметь полные знания о системе, чтобы детально заниматься настройкой и кодировать всякие дополнения и исправления с учетом местных налоговых требований, но часто бывает так, что они являются лишь «продавцами запечатанных коробок».
К сожалению, огромная цена пакета не дает возможность повсеместному изучению продукта, поэтому возникло целое направление специалистов, которые называются 1С-программистами, и фактически они являются переходным звеном между программистами и бухгалтерами (иногда все вместе). Интересно то, что они часто не умеют писать обычные программы, но от них это и не требуется.
Их задача – следить за тем, чтобы 1С нормально функционировала, выдавала ожидаемые данные по запросам к базам данных, чтобы отчеты соответствовали требованиям налоговых инспекций, чтобы конфигурации модулей работали оптимально. Достичь этого «философскими» методами сложно, поэтому большую часть времени нужно тратить на изучение платформы и языка, а также различных взаимозависимостей между ними, порой неочевидных.
В 1С используется интерпретатор языка, который внешне похож на Кобол и Бейсик. Его можно настроить так, чтобы он отображал команды языка на английском, но эта возможность часто игнорируется, и еще неизвестно, как бы было лучше, – дело в том, что в языке принято писать команды сверхдлинными словами вроде СхемаКомпоновкиДанных=ПолучитьМакет(«ФактЗатрат») – кто бы прочитал, как это будет на английском?
Язык программирования 1С очень хорошо подходит для работы с календарем, для обработки текстовых данных, но имеет слабые математические функции, а также невнятную обработку времени. Версия платформы 1C 8.3 немного поправила ситуацию, но в большинстве контор до сих пор установлена довольно обкатанная версия 7.7. Ее особенность – странный язык запросов к базе данных, не соответствующий классическому SQL.
Чтобы изучить основы программирования 1С, читайте более 100 наших статей.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Программирование 1С для начинающих: как научиться программировать в 1 С — основы разработки программы с нуля, самоучитель
1С-программирование (или 1S) с нуля для начинающих интересует многих. Однако, пытаясь заняться данным направлением, подавляющее большинство даже не понимает, какого рода задачи придется решать, что конкретно входит в обязанности. Кроме того, к настоящему моменту успело сформироваться немало мифов и легенд вокруг этой профессии. Кто-то убежден, что ее представители зарабатывают баснословные деньги, практически ничего не делая. Кто-то, наоборот, не разделяет столь инфантильных иллюзий, полагая, что деятельность сопряжена с колоссальной ответственностью. Постараемся ответить, какая точка зрения верна, досконально изучив специфику должности и разобрав ключевые особенности.
Что это такое
Под 1С-программированием обычно понимают создание и доработку разнообразных продуктов, выпущенных под одноименной маркой. Дело в том, что каждое предприятие характеризуется определенным набором нужд и потребностей, которые должны реализовываться на высокоуровневом программном языке.
Какие конкретно задачи требуется решать в рамках данного направления:
Довольно часто данное компьютерное решение подвергается критике, а негатив переносится на программистов. Это не самый здравый и рациональный подход. Чтобы исключить возможные ошибки и сбои, вы должны понимать специфику всех рабочих процессов и нюансов. О них и поговорим далее.
Кто такой 1С-программист
Компетентный высококвалифицированный специалист – это человек, который может похвастаться высокой конкурентной заработной платой. Он относительно свободен в рамках выполняемых обязанностей, имеет широкую зону ответственности. Условно все решаемые им задачи можно разделить на две категории:
Кроме того, сотрудник обязан понимать логику формирования скидок, чтобы всегда быть готовым предложить наиболее эффективный вариант автоматизации. Как правило, он занимается доработкой типовых конфигураций, обслуживает ПО на постоянной основе, разбирается с возникающими техническими сбоями и неполадками. Ключевая особенность работы – необходимость постоянно поддерживать контакты с людьми.
Встроенный язык
Встроенный язык является важной частью технологической платформы «1С:Предприятия 8», поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
Событийная ориентированность встроенного языка
Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования — создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью:
Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм, который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т. е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.
Универсальные коллекции значений
Встроенный язык поддерживает работу с большим количеством разнообразных объектов. Безусловно, основную группу объектов составляют прикладные объекты, позволяющие описывать алгоритмы функционирования бизнес-логики.
Однако не менее важной группой являются объекты, предназначенные для хранения временных наборов данных в течение сеанса работы пользователя. Как правило, они служат для вспомогательного сбора, группировки, анализа и обработки информации:
Перечислим кратко их возможности:
Массив
Представляет собой пронумерованную коллекцию значений произвольного типа. К элементу массива можно обращаться по его индексу. В качестве элементов массива могут выступать, в частности, другие массивы. Это позволяет создавать многомерные массивы.
Структура
Представляет собой поименованную коллекцию, состоящую из пар ключ — значение. Ключ может быть только строковым, значение — произвольного типа. К элементу структуры можно обращаться по значению его ключа, т. е. по имени. Обычно используется для хранения небольшого количества значений, каждое из которых имеет некоторое уникальное имя.
Соответствие
Также как и структура, представляет собой коллекцию пар ключ — значение. Однако, в отличие от структуры, ключ может быть практически любого типа.
Список значений
Используется, как правило, для решения интерфейсных задач. Позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может содержать значения любого типа, кроме того, в одном списке типы хранимых значений могут быть разными.
Например, список значений может использоваться для выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Таблица значений
Таблица значений позволяет строить динамические наборы значений и манипулировать ими. Она может быть наполнена значениями любого типа, и в одной таблице типы хранимых значений могут быть разными.
Одним из примеров использования таблицы значений может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Дерево значений
Дерево значений представляет собой динамически формируемый набор значений любого типа, похожий на таблицу значений. В отличие от таблицы значений, строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк, каждая из подчиненных строк, в свою очередь, также может иметь набор подчиненных строк и так далее. При этом поиск значений, сортировка, получение итогов могут осуществляться либо по текущему уровню иерархии, либо включая все подчиненные.
COMSafeArray
Представляет собой объектную оболочку над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами.
Фиксированный массив
Неизменяемый массив. Массив заполняется системой при инициализации объектов данного типа или разработчиком, с помощью конструктора.
Редактор текстов и модулей
Для создания и изменения текстов на встроенном языке разработчик может использовать редактор текста и модуля, обладающий удобными средствами создания, редактирования и синтаксической проверки модулей. Подробнее…
Обучение программированию на 1С
Краткий обзор языка 1С
Язык 1С считается самым простым в изучении. Одно из его конкурентных преимуществ – возможность написания кода на русском, что значительно упрощает процесс его освоения. Хотя имеются и англоязычные варианты языка, предназначенные для внедрения на зарубежных предприятиях.
Программирование на 1С – создание алгоритма или программного кода, который позволяет пользователю без проблем работать в программном интерфейсе. Основной инструмент языка – команды (слова), которые в определённой последовательности создают общую функциональную оболочку программы. Команды бывают следующих видов:
3. Функции и процедуры;
Давайте разберём все их более детально.
Переменные
Допустим, имеется число 15. Это есть значение. Изначально оно нигде не сохраняется. Чтобы поместить её в информационную базу (ИБ) программы, необходимо выполнить сохранение в переменной, которая может именоваться хоть как, скажем, результат.
Переменная, которая относится к объекту 1С (поле справочника, допустим) и сохраняется в информационную базу – это реквизит. К любой переменной допускается присвоение разных типов данных: можно сначала присвоить тип «число», а затем – тип «строка». Но для реквизитов язык 1С предусматривает только один тип данных. Если указать в нём другое значение, допустим, вместо цифры – строку, то программа сначала попробует выполнить преобразование в цифровой формат. Если она не сможет это сделать, значение будет пустым.
Строка в стандартной переменной не ограничена по длине, в реквизите – чётко определена (но если требуется выставить неограниченную длину – устанавливается значение длины 0). Выполнять обращение к отдельным буквам в слове нельзя, но можно искать целые части (Лев(), Прав(), Сред()).
Сложные переменные
Давайте разберём пример, когда переменной присвоено несколько значений.
По виду массив аналогичен колонке в Excel. Каждая ячейка – переменная, которая имеет только одно название. Чтобы перейти к определённой ячейке, нужно ввести её номер.
Ячейки в 1С нумеруются с 0, а не с 1.
Аналогичные ячейки, но с возможностью добавления комментария.
Здесь программирование таблиц значений на 1С аналогично Excel – страничке со множеством строк и колонок.
Древовидная таблица, самый простой пример – окно конфигурации.
Строки программы
В конце любой строчки стоит «;», а комментарий добавляется после знака «//». Значение пишется в кавычках, например «14». Если требуется ввести кавычку в значении, её пишут два раза: «14 ««o»»!».
Значение может быть разделено на две строки, для этого язык 1С имеет знак «|»:
Для указания специфических символов используется объект: «Символы.»:
Операторы
Это средства, встроенные в язык 1С. Используются для создания простейшей последовательности.
Те или иные строки выполняются при наличии необходимых условий.
Строчки выполняются установленное количество раз или пока выполняется определённое условие.
Для прерывания цикла язык 1С имеет команду «Прервать». Для прерывания только одной итерации – «Продолжить».
Объекты
Любой объект в 1С полноценен, то есть ему могут присваиваться уникальные от остальных методы и данные.
Для создания объекта используется параметр «Новый».
Для создания объектов применяются менеджеры. Их называют в соответствии с ветками конфигурации: Документы, Справочники и т.д. Методы в менеджере можно расширять:
Собственные объекты конфигурации 1С неизменяемы.
Ошибки в 1С
Программирование на 1С отличается тем, что при написании программы не всегда понятно, появится ли ошибка при выполнении той или иной строчки. Так, если во внешней обработке ввести:
и открыть её в базе, где указанного справочника нет – возникнет ошибка.
Чтобы она не выскочила, можно применять такой алгоритм:
Если при выполнении кода между «Попытка» и «Исключение» будет ошибка, то выполнение остановится и программа перейдёт к строчке между «Исключение» и «КонецПопытки». Если ошибка не появится, строчки выполняться не будут.
Функция ОписаниеОшибки() запускается только между «Исключение» и «КонецПопытки» и выдаёт сведения о содержании возникшей ошибки.
Функции и Процедуры
Данные методы предназначены для одноимённого наименования сразу нескольких строчек. Затем, при написании этого названия в тексте кода, будет активирована соответствующая функция. Функции и процедуры – это стандартные методы и обработчики в языке 1С:
Отличие функции от процедуры в том, что последняя не может вернуть значение, которое было посчитано при выполнении данных строк:
Как программировать?
Программирование на 1С подразумевает использование модулей. Найдя подходящий модуль, можно приступать к написанию своего кода.
Пример для написания кода во внешней обработке:
О программировании на 1С Предприятие 8
Если пишешь ты на СИ
Будь хоть трижды ламер
Про такого говорят:
«Он — крутой программер!»
(Фидошные песни — «Что Такое Suxxx и Что Такое Rulezzz»)
Предисловие
Поводом к написанию данной статьи послужило негативное отношение профессионального сообщества к указанной платформе и программистам.
Как программист, выбравший 1С, считаю данное мнение необоснованным. Платформа 1С — далеко не идеал, но, на мой взгляд, — это лучший, а главное — отечественный продукт!
И уж тем более — неадекватно судить о способностях программиста по тому языку, на котором он пишет.
О чем речь?
Файловая и серверная базы данных
Платформа состоит из нескольких частей и может работать в файловом или серверном варианте.
В файловом варианте вся база данных содержится в одном файле (с расширением «1cd») — платформа устанавливается на каждом компьютере и напрямую читает/пишет в базу данных.
Плюсы файлового варианта — низкая цена и простота развёртывания.
Минусы — структура файла «1cd» закрыта, нет единой системы, взаимодействующей с БД. В результате — сложно использовать при большом числе пользователей (пробовали на 20+ пользователей — работать можно). Кроме того, при размере базы данных примерно 15 ГБ (и более) возникают сбои при проведении динамического обновления. Решать такие сбои — задача сложная, а утилита для починки базы — не всегда эффективно чинит, а иногда и калечит базу.
Решение есть — это, прежде всего, настройка ежедневного резервного копирования базы данных. Кроме того, народные умельцы не только публикуют формат файла 1cd, но и разработали утилиты для работы с такими файлами и ряд методов по решению подобных проблем.
В серверном варианте, платформа для хранения базы данных использует SQL-сервер (обычно, это MS SQL, но начиная с 8.2.14 — можно использовать и некоторые другие например, Firebird PostgreSQL, IBM DB2, Oracle Database), а сама платформа работает использует трехзвенную архитектуру:
Часть кода выполняется на клиенте, часть на сервере. При этом с базой данных взаимодействует только сервер. При этом, начиная с версии 8.2, помимо стандартного режима работы, который обозвали режимом «толстый клиент», появилось два новых режима работы — «тонкий клиент» и «web-клиент»; также появились «управляемые формы», внешний вид которых строится в виде абстрактного дерева элементов. Программировать под управляемые формы и трехзвенную архитектуру сложнее, но это позволяет перенести почти всю нагрузку на сервер (т.е. можно купить один мощный сервер и сотню самых дешевых офисных компьютеров).
Плюсы платформы: «трёхзвенка» — распределение нагрузки, открытость базы данных (официально фирма 1С отказывается от ответственности за любую порчу данных, если в базу SQL вносились изменения кроме как средствами ихней платформы или сервера, но это мало кого останавливает), отсутствие ограничений.
Минусы — цена: покупать придется отдельно клиентские лицензии на каждый клиентский компьютер, отдельно — одну лицензию на сервер 1С, отдельно лицензию на сервер SQL, если не использовать бесплатный. Также иногда возникают сложности в работе базы данных. Они решаются гораздо быстрее за счет доступности данных и наличия внешних инструментов работы с БД. Кроме того, и в этом случае следует делать бекап базы данных.
Общим плюсом является универсальность кода конфигураций: за некоторыми исключениями, конфигурация разработанная для файловой базы данных будет работать на серверной, и наоборот. Пример исключения — передача мутабельного значения на сервер или с сервера на клиент (в файловом варианте это не вызовет исключений, а в клиент-серверном варианте запрещено).
Ещё один плюс: платформа устанавливается очень просто, примерно так: «Далее-Далее-Далее-Ок», не требуется тонкая настройка и установка каких-либо компонент.
Для серверного варианта несколько больше настроек, но всё делается в диалоге установки и не требует прописывать что-либо в отдельных файлах. Некоторую сложность может представлять установка SQL-сервера, т.к. в этом случае настроек намного больше (и чтобы тонко настроить — требуется изучение дополнительных инструкций). Но это не относится к проблемам платформы 1С. Более того, если установить, например сервер MS SQL со всеми настройками по-умолчанию, то 1С вполне сможет с ним работать.
Это больше, чем бухгалтерия
Когда речь заходит о платформе 1С, то она представляется, прежде всего, как программа для бухгалтерского учета. Действительно, это — самая популярная область использования платформы 1С. Но не бухгалтерией единой живет 1С!
Те, кто знаком с платформой, говорят, что это система учета (автоматизации учета). Это ближе к истине — существует множество конфигураций, как от фирмы 1С, так и от сторонних разработчиков. Некоторые лишь косвенно связаны с бухучетом, некоторые вообще никак не связаны.
Вообще, правильнее представлять платформу 1С как оболочку для объектного моделирования базы данных, интерфейса и программирования на языке 1С. Единственное ограничение — для каждой конфигурации создается своя база данных, и только одна (однако, есть возможность дополнительно в составе конфигурации подключать внешние источники данных, т.е. другие базы).
Экосистема для программистов
Рассмотрим теперь язык 1С и платформу с точки зрения разработчика:
Объектная модель базы данных. Во-первых, напрямую с базами данных мы не работаем. Это не нужно. Для нашего удобства — все данные представлены в виде взаимосвязанных объектов (справочники, документы, регистры сведений, регистры накопления, …), а «вытаскивание» этих данных из базы выполняет платформа автоматически.
Например, при условии, что в переменной «ЭлементНоменклатуры» содержится ссылка на элемент справочника «Номенклатура», у справочника «Номенклатура» есть реквизит «ОсновнойПоставщик», типа «Справочник.Контрагенты», а у справочника «Контрагенты» есть реквизит «ПолноеНаименование», тогда код:
… приведет к тому, что платформа 1С, используя внутренние механизмы, найдет запись в таблице, соответствующей справочнику «Контрагенты» по идентификатору из поля «ОсновнойПоставщик» элемента номенклатуры и вернёт значения поля, соответствующего полю «ПолноеНаименование» в объектной модели справочника «Контрагенты».
Подобных разыменовываний может быть много — система справится. Единственный нюанс — система не умеет оптимизировать разыменовывания, поэтому следует стремиться выносить их наружу из всевозможных из циклов.
Помимо объектов, описывающих данные, существует огромное число системных объектов — для самых разных функций. Выделю некоторые из них:
Хранилища значений
Массив — объект, хранящий набор данных, в отличие от классического представления о массивах. Это могут быть данные различного типа (число, строка, ссылка, другой объект). Имеет минимальный функционал и используется, в основном, как временный контейнер для передачи значений между другими хранилищами.
СписокЗначений — объект, преимущественно, для работы с интерфейсом пользователя. Помимо данных также для каждого элемента может содержать представление, признак флажка и картинку (пиктограмму). Также имеет методы «ВыбратьЭлемент()» и «ОтметитьЭлементы()» — при вызове которых пользователю показывается интерфейсный диалог (что удобно — не нужно данный диалог создавать в конфигурации).
Структура и Соответствие — хранилища парных значений «КлючИЗначение». В структуре «Ключ» — это строка, подчиняющаяся правилам наименования переменных в 1С (без пробелов, начинаться не с цифры, состоит только из букв, цифр и знака подчеркивания). В соответствии — «Ключ» — это любое значение. Самый шустрый поиск объектов — в соответствии (быстрее, чем в массиве и индексированной таблице значений).
ТаблицаЗначений — очень удобный, и довольно быстрый, объект для хранения и обработки данных. Колонки в таблице значений можно добавлять и удалять, независимо от количества записей. При этом данные в строках не теряются (или удаляются только данные из ячеек, соответствующих удаляемым колонкам). Также, имеет метод «ВыбратьСтроку()», вызывающий диалог выбора строки. Имеются индексы.
ДеревоЗначений — объект, представляющий иерархические данные. Содержит колонки, набор колонок одинаковый для всех записей на всех уровнях. Удаление/Добавление колонок в дереве значений точно так же легко, как и в таблице значений. Также, имеет метод «ВыбратьСтроку()».
Интерфейсные объекты и объекты для работы с различными данными ТекстовыйДокумент, ТабличныйДокумент, Web-браузер, ЧтениеФайла, ЗаписьФайла, ЧтениеZIPФайла, ЗаписьZIPФайла, ЧтениеXML, ЗаписьXML, HTTPЗапрос и ещё много объектов, и по все в конфигураторе есть встроенная справка. Назначение перечисленных объектов видно из их названий и всё это сразу есть в платформе.
Отдельно следует отметить, что имеется объект «Метаданные» — с помощью которого на языке программирования можно изучить структуру данных, а также у каждой ссылки или объекта для справочника, документа, плана счетов, и т.п. есть метод «Метаданные()» — предоставляющий описание данного справочника/документа/плана счетов/ и т.п. в базе данных (какие реквизиты, табличные части имеются, длина кода/номера и т.п.). Часто бывает очень удобно.
И еще отдельно следует упомянуть про объекты: «Запрос», «КонструкторЗапроса», «ПостроительЗапроса», «ПостроительОтчета», «СхемаКомпоновкиДанных». Это семейство реализует набор объектов для работы с мощным языком запросов 1С.
Язык запросов. Запросы в 1С используются только для получения выборки данных с удобным отбором, сортировкой, группировками. В первом приближении это переведенный на русский язык оператор «SELECT» из SQL, однако, в языке запросов 1С имеется и функционал, который отсутствует в SQL, а именно:
Язык программирования
По синтаксису язык 1С похож на «русский Паскаль», однако от «Pascal» отличается меньшей строгостью и отсутствием некоторых конструкций:
Общее впечатление
Язык 1С сочетает в себе ясность текстов языка «Pascal» с фривольностью работы с переменными языка «BASIC». В нем отсутствует ряд возможностей, присущих современным языкам программирования, но без них вполне можно обойтись. Кроме того, в платформе 1С есть мощный сборщик мусора, т.е. не требуется, например, очищать таблицы после использования или удалять их.
Интерфейс 1С Предприятие 8.2
Фирма 1С уделила особенное внимание интерфейсу своей программы. Прежде всего — это цветовая палитра. Она шикарна! Окна программы узнаваемы даже издалека, при этом за многие годы работы — не вызывают неприязненных ощущений, наоборот — хочется, чтобы все программы были были такими-же классными.
При этом стиль платформы весьма строгий, без рюшечек и прочих излишеств. При этом есть весьма полезные функции, например, запоминание размеров окон (размеры запоминаются только при их изменении пользователем, и, при этом, всегда можно сбросить настройки пользователя — до размеров и позиции по-умолчанию, нажав Alt+Shift+R).
Интерфейс Web-клиента 8.2 вызывает ряд нареканий, но, вроде бы, платформа 8.3 несёт с собой новый переработанный интерфейс — «Такси».
Цены, спрос и предложение, франчайзинг
Самым «вкусным» плюсом платформы 1С является её цена. Особенно, это актуально сейчас, во время кризиса. Ведь 1С — это полностью наш, отечественный продукт. И продаётся она за наши деревянные. Подобные решения от иностранного производителя будут стоить огромных денег. А лицензии на 1С стоят вполне приемлемо.
Кроме того, у 1С интересная политика лицензирования. Сами лицензии и конфигурации покупаются один раз. При этом, лицензии покупаются на рабочее место и на сервер, но не на базы данных, и даже не на подключения, т.е. по одной лицензии один и тот же пользователь может запускать неограниченное количество сеансов 1С, работая с любым числом баз данных. То же самое касается конфигураций: приобретя одну лицензию на конфигурацию организация может использовать её для создания любого количества баз данных, более того официально разрешается использовать части кода и объекты данной конфигурации при разработке собственных конфигураций (при этом собственные конфигурации можно продавать/передавать — оговаривая, что для их использования нужно купить конфигурацию от 1С).
После этой единовременной покупки нужно только подписаться на обновления и раз в год оплачивать продление подписки, т.н. ИТС. К слову, подписка стоит весьма недорого, примерно как две клиентские лицензии.
В целом, всё это выглядит очень выгодно.
Вторым «вкусным», но уже с ложкой дёгтя, плюсом, является наличие довольно универсальных конфигураций от самой 1С и от партнеров.
Третьим плюсом (и тоже с ложкой «дёгтя») является сеть франчайзи и центров обучения, как для пользователей, так и для начинающих программистов и администраторов. Хорошая идея, но весьма посредственное качество её реализации. Тем не менее, распространённость и агрессивный маркетинг — одна из причин повсеместной популярности 1С в нашей стране (и это-же причина негатива, зависти и ненависти).
Ложка дёгтя
Расписав во всех красках 1С было бы несправедливо не сказать и о её недостатках, а уж они-то есть:
Нестабильные релизы — как в платформе, так и в конфигурациях, присутствует огромное количество ошибок и глюков. И это в официальных релизах. Перед тем, как выпустить официальную версию, выпускается «Версия для ознакомления». Есть также обратная связь для отправки описаний ошибок, чтобы их приняли к исправлению. Однако, то-ли версии для ознакомления не особо популярны, то-ли сама фирма 1С не успевает к сроку релиза обработать все письма, но факт. Каждый раз обновляя платформу или конфигурацию можно наткнуться на самые неожиданные «сюрпризы». К фирме 1С уже неоднократно обращались с призывом более тщательно тестировать свои разработки.
Франчайзи (далее — франчи). В идеале, по задумке, это должны были быть фирмы с квалифицированными специалистами, знающими основные принципы работы конфигураций и платформы. Эти самые фирмы должны были бы продавать платформу, конфигурацию и поддержку, слегка «допиливать» универсальные конфигурации под требования клиента (а временами — корректировать эти требования), стараясь минимально модифицировать стандартную конфигурацию. Так, чтобы не сильно усложнять будущие обновления. А в реальности всё наоборот.
При продаже новых лицензий клиенту франчи получают 50% от их стоимости (за минусом подоходного налога 13% от этих 50%). При этом самим производить ничего не надо, надо только передать ключи от 1С покупателю.
При оказании же услуг франчи не платят фирме 1С ничего (за исключением членских взносов), но зато им нужно платить зарплату сотруднику. Также приходится тратиться на налоги государству — ПФР и подоходный налог.
Выходит, что и 1С, и франчам выгодно продавать лицензии и невыгодно осуществлять дальнейшую поддержку. При этом, чтобы клиент купил программу, нужно её изначально подогнать под его требования. А работу оплачивать надо. И тут с целью экономии привлекаются студенты, ученики, неспециалисты, которым можно заплатить немного, а иногда — и не платить вовсе, их можно даже в штат не оформлять (поработают неофициально, благо есть с чего оплатить). Результат — огромное число продаж при очень низком качестве. Доработки, как правило, затрагивают важные механизмы и усложняют будущее обновление. Но на этапе продажи это ни 1С, ни франчайзи не интересует.
Замечу, что это не столько вина бизнесменов из франчей, сколько фирмы 1С. Ориентируясь на продажи она совершенно не позаботилась о поддержке (я не о школах сейчас, а о том, что осуществлять поддержку должно быть выгодно и самой фирме-франчайзи, и 1С).
Техподдержка. В понимании фирмы 1С, техподдержка — это предоставление доступа к разделу «обновление» для платформы и конфигураций, а также к информационным разделам, содержащим описание некоторых механизмов и особенностей работы 1С. Кроме того, при подписке предоставляется диск с указанными материалами. Также имеется форум (весьма скудный в сравнении с народными). Ещё имеется возможность отправить электронное письмо в фирму 1С — но даже не надеясь, что на него ответят (или ответит робот «Письмо передано в отдел разработки». В плане разработки гораздо большую поддержку оказывает Яндекс.Поиск и встроенная в конфигуратор справка.