Как программировать в «1С:Предприятии»: стартовый гайд для начинающих
Расскажем о системе «1С:Предприятие», её встроенном языке, визуальном конструировании и вообще о том, как проходит разработка в «1С».

Иллюстрация: Оля Ежак для Skillbox Media

Марина Демидова
Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.
Программы «1С» позволяют быстро и недорого решать экономические задачи: считать зарплату и налоги, вести бухгалтерский учёт и документооборот, контролировать расчёты с клиентами и подрядчиками, формировать отчётность и многое другое.
Но «1С» — это не просто набор готовых программ. Это ещё и среда разработки, которая позволяет гибко настраивать конфигурации под задачи разных компаний. В этой статье расскажем об основных нюансах разработки под «1С», создадим первую конфигурацию и напишем код на встроенном языке.
Что такое «1С» и из чего она состоит
«1С:Предприятие» — это система для автоматизации деятельности предприятий. С её помощью можно рассчитать бизнес-процессы в компаниях любого масштаба и направления: в небольших фирмах и огромных холдингах, на оптовых складах и в интернет-магазинах, на сельхозпредприятиях и так далее.
Система состоит из двух основных частей — технологической платформы и конфигураций.
Платформа. Это одновременно и среда разработки, и среда выполнения. Она содержит собственный язык программирования, IDE для разработчика, приложение для администрирования и многое другое. Разработкой платформы занимается сама компания «1С» — она регулярно выпускает новые версии. На сегодняшний день самая актуальная версия платформы — 8.3.
Конфигурации. Прикладные решения, которые не могут работать сами по себе, без платформы. Они предназначены для решения учётных задач: ведения бухгалтерии, расчёта зарплаты, учёта на складах и многих других. Компания «1С» создаёт и поддерживает конфигурации, которые называются типовыми.
Вот примеры некоторых популярных конфигураций:
- «1С:Бухгалтерия предприятия» — предназначена для ведения бухгалтерского и налогового учёта.
- «1С:Зарплата и управление персоналом» — для расчёта зарплаты и кадрового учёта.
- «1С:Управление торговлей» — для учёта на складах и в магазинах, «1С:Розница» — для автоматизации розничных торговых точек.
Помимо стандартных конфигураций есть множество отраслевых решений, например «1С:Общепит», «1С:Салон красоты», «1С:Хлебозавод» и другие. Большинство продуктов «1С» поставляются с открытым исходным кодом, поэтому их можно редактировать, дополнять новыми функциями, изменять алгоритмы. Таким образом можно создавать продукты, точно учитывающие бизнес-процессы в каждой компании.
Конфигурации «1С» можно разрабатывать с нуля, а можно взять готовую и настроить под свои задачи.
Но сами по себе конфигурации не содержат данных — это лишь описания объектов и алгоритмов их взаимодействия. Для того чтобы пользователи могли работать, платформа создаёт информационную базу, то есть по описанию формирует таблицы и связи между ними.
Информационная база содержит конфигурацию и данные, которые добавляют пользователи. Она работает под управлением платформы, причём на одной платформе может быть установлено несколько информационных баз, созданных на основе разных конфигураций.
«1С» поддерживает различные СУБД, в том числе Microsoft SQL Server, PostgreSQL, IBM Db2 и Oracle Database. Их выбирают при установке программы, а программист при написании кода об этом не думает.
Решения «1С» — мультиплатформенные, то есть их можно запускать на разных операционных системах: Windows, macOS, Linux, а также в браузере. Можно интегрировать их с внешними базами, веб-сервисами и мессенджерами. Можно писать приложения под Android и iOS.
В «1С» есть много разных возможностей: видеозвонки, встроенные чаты, демонстрация экрана, инструменты построения многоязычного интерфейса для тиражирования своего продукта и многое другое. Всё это можно использовать в своих приложениях.
Для разработчиков на 1С есть большое количество обучающих материалов: статей, видео, телеграм-каналов, а также готового кода. Так, на официальном ресурсе «1С:ИТС» есть подробные материалы по работе с 1С.
1С: что это за язык программирования
Язык программирования 1С — встроенный язык платформы «1С:Предприятие». Он предметно-ориентированный, то есть на нём нельзя писать сайты и игры, но можно быстро и экономично автоматизировать бухгалтерский и налоговый учёт, учёт на складах, разработать CRM-систему и делать многое другое.
Встроенный язык поддерживает механизм ООП, но в довольно урезанном виде: есть строгий набор классов с заданными свойствами и методами, например Справочники, Документы, Регистры, Отчёты, Обработки. Новые классы создавать нельзя, но для разработки достаточно и тех, что есть.
По синтаксису язык 1С напоминает Pascal и BASIC в сочетании с языком запросов T-SQL, хотя его нельзя назвать их аналогом. Писать код в «1С» можно на двух языках — русском и английском. Программисты, как правило, предпочитают русский. На него быстро переходят и те, кто раньше программировал на английском, — так понятнее.
Русскоязычный синтаксис стал стандартом в системе «1С». На нём написаны все конфигурации, а также множество дополнительных отчётов и обработок.
При разработке программисты не только пишут код, но и используют визуальное конструирование — это ускоряет разработку. С помощью визуальных редакторов создают новые объекты, настраивают их свойства, разрабатывают формы представления в интерфейсе и связи с другими объектами. А 1С выступает как скриптовый язык, на котором пишутся и дорабатываются методы объектов и обработки событий.
Создаём первую конфигурацию
С терминами вроде разобрались — настало время перейти к практике. Чтобы лучше разобраться в нюансах платформы, создадим небольшую конфигурацию — назовём её «Учёт товаров на складе». Для этого скачаем бесплатный дистрибутив для обучения с официального сайта «1С» и установим его на компьютер — есть версии для Linux, macOS и Windows.
А теперь запустим программу. Сразу видим, что программа установки создала две учебные базы. Но так как мы хотим создать конфигурацию с нуля, нажимаем на кнопку Добавить.

В открывшемся окне выбираем Создание новой информационной базы и нажимаем кнопку Далее.

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

Вводим название информационной базы: Учёт товаров на складе. Нажимаем Далее.

Выбираем каталог, в котором будет находиться наша информационная база, и нажимаем Далее.

Оставляем параметры по умолчанию и нажимаем кнопку Готово.

Открылось окно запуска «1С:Предприятия».

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

Открывается дерево конфигурации. Здесь находятся все классы, на основании которых можно создавать объекты, — например, документы, отчёты, справочники, обработки и так далее.

Теперь давайте дадим имя нашей конфигурации. Для этого дважды кликаем по корневому элементу с надписью Конфигурация. После этого откроется палитра свойств, где можно добавить новое имя и его синоним.
Синонимы отображаются в формах, отчётах и других элементах интерфейса, поэтому они должны осмысленно и кратко описывать объекты конфигурации. Имя объекта обычно строят на основе синонима: пробелы и другие недопустимые символы удаляют, а первые буквы слов делают прописными.

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

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

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

Открылись два окна: редактор справочника и палитра свойств. Здесь мы можем редактировать свойства, события и методы — для удобства они сгруппированы по тематике.

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

И второй реквизит — Дата регистрации, который имеет тип Дата. Здесь будет храниться дата регистрации организации.

В системе «1С» есть примитивные типы данных: Строка, Число, Дата, Булево и другие. Они определены на уровне платформы.
Создадим ещё один справочник под названием Склады. Он будет подчинён справочнику Организации — то есть у каждого элемента справочника Склад будет владелец — элемент справочника Организации.
Вот как выглядит настройка в редакторе:

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

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

Теперь откроем справочник Организации. Создадим и запишем элемент — ООО «Дом техники».

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

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

Элемент подчинённого справочника нельзя записать, если не определён владелец. Программа выдаст сообщение об ошибке.

Для учёта на складе нам понадобится ещё один справочник — Товары. Сделаем его иерархическим, чтобы можно было группировать товары по категориям. Для этого поставим флажок на вкладке Иерархия в редакторе справочника.

Сохраняем изменения и запускаем «1С:Предприятие». Далее открываем справочник Товары и создаём в нём группы — скажем, «Бытовая техника» и «Смартфоны». Внутри этих групп можно добавлять любые элементы, какие захотите. Чтобы не запутаться, выбираем иерархический режим просмотра справочника.

Документы
Помимо справочников для учёта на складе нам понадобятся документы. Это объекты, которые хранят информацию о хозяйственных операциях или других событиях на предприятии с привязкой ко времени.
В типовой конфигурации «1С:Управление торговлей» есть много документов для учёта товаров: приходные и расходные накладные, акты о перемещении, списании и других операциях с товарами. В нашей небольшой конфигурации мы будем использовать два документа: «Поступление товаров» и «Продажа товаров».
У каждого документа есть обязательные реквизиты: номер, дата и время. В «1С» есть режим автоматической нумерации, при котором система сама генерирует номера для новых документов и следит, чтобы они не повторялись.
Создадим документ ПоступлениеТоваров, который отражает операцию поступления товаров на склад.
Добавим в документ реквизит Склад (тип СправочникСсылка.Склады).

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

Также добавим табличную часть Товары. Чтобы это сделать, нужно раскрыть иерархию документа, кликнуть правой кнопки мыши на пункт Табличные части и нажать Добавить. Следом задаём нашей табличке реквизиты Количество, Цена и Сумма с типом неотрицательное число, длина 10, точность 2.
Вуаля! Теперь у нас есть таблица со всеми поступающими и убывающими товарами на складе. В конфигураторе документ будет выглядеть так:

Теперь запустим пользовательский режим «1С:Предприятия» с помощью всё той же клавиши F5. Создадим документ «Поступление товаров» и заполним реквизиты.

В нашей табличке появилась первая запись. Но есть один нюанс: при вводе количества и цены Сумма не считается автоматически, а нас это не устраивает. Чтобы это исправить, надо будет запустить конструктор формы документа и написать код — о том, как это сделать, расскажем в следующем разделе.
Конструктор формы
Конструктор формы объекта (например, документа) позволяет создавать формы, которые будут работать в интерфейсе пользователя для отображения этого объекта. Конструктор запускается автоматически при создании новой формы.
Настроим в конфигураторе форму нашего документа ПоступлениеТоваров. Для этого выделим в меню документа элемент Форма и нажмём клавишу Добавить. Запустится окно конструктора формы.

Нажмем кнопку Далее.
В окне конструктора выбираем элементы, которые будут располагаться в интерфейсе формы.

После того как мы нажмём Готово, откроется окно редактора форм. Видим, что он автоматически создал форму объекта документа ПоступлениеТоваров и расположил на ней поля для ввода значений реквизитов.

Теперь нам нужно написать скрипт, который будет автоматически пересчитывать Сумму при изменении значений элементов Количество или Цена. Для этого дважды кликнем по полю Количество и войдём в палитру свойств объекта. Выберем обработчик события ПриИзменении.

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

Открывается модуль формы с автоматически созданной процедурой.

Проделаем то же самое с элементом формы Цена и получим ещё одну автоматически созданную процедуру.

Добавим в обе процедуры одинаковый код — формулу расчёта стоимости товара:

Далее нам понадобится ещё один документ для учёта — ПродажаТоваров. Структура и процедуры в модуле формы у него будут те же самые, что и у документа ПоступлениеТоваров — попробуйте создать его самостоятельно по аналогии, чтобы отточить полученные знания.

Общие модули
Теперь в документах ПоступлениеТоваров и ПродажаТоваров появились две одинаковые процедуры: РассчитатьСумму (). Но, как мы помним, согласно принципу DRY, дублирование кода — это совсем не здорово. Поэтому, чтобы не повторяться, вынесем процедуру в общий модуль.
Общие модули — это объекты конфигурации, в которых можно хранить процедуры, вызываемые в нескольких местах программы.
Перейдём в ветку Общие дерева конфигурации и создадим общий модуль под названием ОбщиеМодулиДокументов.

Добавим в него процедуру РассчитатьСумму () и немного изменим её.

Теперь настроим движения документов по регистрам.
Регистры
Регистры — это объекты конфигурации, выполненные в виде таблиц с колонками и строками, наподобие таблиц Excel. В них записываются все процессы, которые происходят с документом, и на основе этих записей потом формируются отчёты. Этот процесс в «1С» называется движением по регистрам. Запускается он прямо из документа с помощью кнопки Провести.
Зачем нужны регистры
Дело в том, что брать данные напрямую из документов неэффективно. Каждый раз при формировании отчёта программе понадобилось бы перебирать все документы, извлекать и обрабатывать данные, что занимает много времени. Использование регистров в «1С» позволяет хранить и систематизировать полученную информацию, а в случае необходимости быстро извлекать её и выводить в отчёт.
В «1С» версии 8.3 есть четыре вида регистров:
- Регистры сведений — самые простые. В отличие от других регистров, данные в них можно записывать без документа-регистратора.
- Регистры бухгалтерии предназначены для хранения данных о бухгалтерских проводках в конфигурациях, связанных с бухучётом.
- Регистры расчёта используются для сложных периодических расчётов, например расчёта заработной платы и других выплат сотрудникам.
- Регистры накопления состоят из двух таблиц Остатки и Обороты. Первая используется для получения информации о данных на текущий момент, а вторая — о данных за период.
В регистрах накопления можно «накапливать» данные в разрезе нескольких измерений. Рассмотрим это на примере. Создадим регистр накопления.

Назовём его ОстаткиТоваров.

- Склад (тип — СправочникСсылка.Склады);
- Товар (тип — СправочникСсылка.Товары).

- Количество (тип — неотрицательное число, длина 10, точность 2). Здесь будет накапливаться количество товаров.
- Сумма (тип — неотрицательное число, длина 10, точность 2). Здесь будет накапливаться стоимость товаров.
Чтобы сформировать движения регистра, перейдём в документ ПоступлениеТоваров. Кликнем правой кнопкой мыши по наименованию и выберем конструктор движений.

Настроим его так:

Теперь откроем модуль документа ПоступлениеТоваров»:

Мы видим, что программа автоматически создала процедуру проведения документа:

В модуле документа программа автоматически создаст код:

В этом примере движения документа «Поступление товаров» обозначаются зелёным знаком +, а «Продажа товаров» — красным знаком –.
Отчёты
Сформируем отчётность по складам, чтобы можно было узнать, сколько товара поступило и было продано за определённый промежуток времени.
Здесь мы будем использовать один из важнейших механизмов платформы «1С» — схему компоновки данных. Она предназначена для построения отчётов со сложной структурой (настройками, детализацией и свёрткой, группировкой и отборами) на основе их декларативного описания.
Благодаря этой системе разработчику не нужно писать программный код — он задаёт желаемый результат с помощью настроек в конструкторе, а система автоматически генерирует выходную форму. А пользователь, в свою очередь, может гибко настроить отчёт под свои нужды.
Создадим объект Отчёт.

Назовем его ОтчётПоТоварам.
Нажимаем на кнопку Открыть схему компоновки данных.


Нажимаем на кнопку Готово и переходим в конструктор макета.

Создаём набор данных Запрос.

Нажимаем на кнопку Конструктор запроса.

В качестве источника данных для отчёта выбираем виртуальную таблицу ОстаткиТоваров.ОстаткиИОбороты и переносим в окно Поля реквизиты, которые нужны для нашего отчёта. Нажимаем ОК.

Мы видим, что программа автоматически сгенерировала текст запроса. Теперь переключаемся на вкладку Настройки.

Выбираем нужные поля и создаём группировку Склад.

Мы можем также настроить отбор по полям Склад и Товар.

И сортировку по тем же полям.

Перейдём на вкладку Другие настройки и создадим заголовок отчёта.

Сохраним изменения и запустим информационную базу в пользовательском режиме программы «1С:Предприятие».
Работа с отчётом в интерфейсе пользователя
Вызовем отчёт Остатки товаров. Выберем даты начала и окончания периода отслеживания. Нажмём кнопку Сформировать.

Также мы можем перейти в настройки отчёта и сделать, например, отбор по какому-то отдельному складу.

В результате получим отчёт только по «Складу1»:

Что в итоге
Эта статья — стартовый гайд по основным нюансам разработки в «1С». Мы создали с нуля небольшую конфигурацию и на её примере показали, как можно визуально конструировать основные объекты «1С». Написали несколько процедур на встроенном языке и создали отчёт с использованием схемы компоновки данных.
Этого набора знаний хватит, чтобы создавать простые решения с нехитрой бизнес-логикой. Если подумываете заняться «1С» профессионально, советуем чуть глубже изучить официальную документацию к платформе. А если хотите освоить разработку быстро, на реальных кейсах, да ещё и с сертификатом от «1С» на выходе — приходите на курс «Профессия 1С-разработчик».
Читайте также:
- Кто такой программист на 1С, чем он занимается и сколько получает
- Ветеринар, продавец, каменщик и, наконец, 1C-программист. История Айрата
- Разработка сайтов на «1С-Битрикс» для начинающих
Язык 1C
Язык программирования 1C — язык для создания кодов и алгоритмов внутри программного обеспечения «1C:Предприятие» и оптимизированный для работы на платформе. Он не имеет собственного названия и обозначается как «встроенный язык программирования».

Освойте профессию
«1С-программист»
Где используется 1C
Язык 1C — предметно-ориентированный: коды на нем пишутся только на платформе «1С:Предприятие». Целевая аудитория программы — крупные организации и предприятия. Они используют платформу для систематизации бизнеса и полной автоматизации таких процессов, как составление отчетов, ведение бухгалтерии и документооборот.
Особенности 1C
1C считается языком высокого уровня. Он схож с такими языками, как JavaScript, Pascal и BASIC, что значительно облегчает его изучение. В то же время у 1С есть ряд характерных особенностей, отличающих его от других языков программирования.
- Простота. У этого языка низкий порог вхождения. Обычно разработчики изменяют готовые типовые конфигурации, что делает программирование на 1C понятным для начинающих.
- Доступность. Все коды пишутся на русском, что значительно экономит время, затрачиваемое на перевод. Но 1C — двуязычная программа: по желанию вы можете свободно программировать и на английском языке.
- Предварительная компиляция. Модули, написанные на языке 1C, перед началом исполнения компилируются во внутренний байт-код.
- Сохранение скомпилированных модулей. Все они остаются в кэше.
- Мягкая типизация. Типы переменных определяются их значением.
- Наличие синтаксис-помощника. Это справочник-подсказка, содержащий всю информацию о синтаксисе 1C и правилах работы.
9,5 месяцев
1С-программист
Легкий вход в 1C с нуля — не нужно технического образования

Из чего состоит «1C:Предприятие»
Программа 1C состоит из двух частей: платформы и конфигурации.
Платформа — это база, на основе которой разрабатываются конфигурации: без нее создание и изменение конфигураций невозможно. Конфигурация или прикладное решение — написанная на языке 1C программа, которую используют пользователи. Одна платформа может содержать сразу несколько конфигураций. По методу разработки конфигурации делятся на типовые — созданные самой компанией — и нетиповые. К последним относят разработанные с нуля или видоизмененные типовые конфигурации.
Что такое переменные
Переменные — место размещения данных, необходимое для их временного хранения в процессе обработки. Это значит, что все ваши переменные исчезают после того как программа завершается. В переменной можно хранить только одно значение.
У каждой переменной есть свое имя, которое образуется по следующим правилам:
- Каждое имя начинается с русской или английской буквы. Также допустимо начало со знака «_».
- Имя может содержать числа, но не может с них начинаться.
- Длина имени не ограничена.
- Нельзя использовать букву «ё».
- Имя не должно содержать пробелов.
Создать переменную проще простого. Для этого достаточно просто придумать имя и записать его перед знаком равенства. Например:
Переменные объявляются в явном и неявном виде, при этом назначение типа переменной всегда будет неявным. Объявлять переменную в явном виде совсем не обязательно.
Модули и методы
Программный код 1C расположен в конфигурации. Сама конфигурация состоит из объектов, а объекты — из модулей. Именно здесь хранится код.
Модуль — это текстовый файл с прописанным программным кодом.
Но что программа делает с готовыми модулями?
Чтобы выполнить какое-то действие с объектом и изменить конфигурацию, программа использует методы — различные способы, запускающие процесс обработки данных. Определенный набор методов уже заранее создан разработчиками программы, но вы также можете создать собственные методы, написав их на 1C.

1С-программист — самая востребованная IT-профессия в России. Она подойдет всем, независимо от опыта и образования
События
У программы 1C есть свой жизненный цикл: запуск, действия пользователя, выключение. Команды, которые задаются пользователем, выполняются программой и вносят определенные изменения, называются событиями.
События — набор действий, которые используются в конкретных ситуациях. Это значит, что исполнение модулей происходит только тогда, когда возникает нужное событие. Благодаря системе событий встроенный язык также называют событийно-зависимым.
Важно: все возможные события заданы платформой и известны заранее, поэтому придумать что-то новое и неизвестное программе нельзя.
Значения и их коллекции
Значение — то, с чем работает программа. Это данные, записанные с диска или введенные программистом вручную. Программа использует их, обрабатывает и показывает результат. Простые значения бывают разных типов, где каждый задает определенную функцию:
- Null. Используется, чтобы обозначить отсутствие значения.
- Число. Задает число, с которым можно выполнять простые арифметические действия — сложение, вычитание, умножение или деление.
- Дата. Используется для указания даты и времени. Обратите внимание на особенность программирования на 1C — дата и время всегда прописываются полностью, с точностью до секунд.
- Строка. Прописывается в кавычках и задает символьную строку.
- Булево. Получается в результате логических операций и обозначает «правду» или «ложь». Чтобы было понятнее, возьмем в качестве примера операцию Равно: если вы сравните два одинаковых числа, то получите правду, если два разных — ложь.
- Неопределенно. Применяется для значений, не относящихся ни к одному из вышеперечисленных типов.
Совокупность примитивных значений образует объекты встроенного языка. Примером такого объекта являются универсальные коллекции значений — временные хранилища данных, существующие в оперативной памяти компьютера на протяжении одного рабочего сеанса.
Рассмотрим самые значимые коллекции:
- Таблица значений. Объект, служащий для хранения и обработки значений любого типа. Выглядит как обычная таблица, созданная в Excel.
- Дерево значений. То же, что и таблица значений. Отличительная особенность дерева — иерархический способ записи данных. Это значит, что у каждой строки есть подчиненная строка, у которой также могут быть свои подчиненные. Только одна строка, самая первая, считается родительской и не имеет своего родителя.
- Список значений. Временное хранилище данных, позволяет управлять значениями, редактировать их или удалять. Используется для работы с интерфейсом.
- Массив. Служит для сбора и хранения произвольных значений. Массив — пронумерованная коллекция: это значит, что у каждого элемента есть порядковый номер, который называется индексом и начинается с нуля. Массив также может быть многомерным, то есть созданным из других массивов.
- Структура и соответствие. Служат для хранения данных и состоят из двух парных элементов «ключ-значение». Каждое значение здесь имеет собственное уникальное имя, т. е. ключ. В структуре ключ — строго строкового типа, а значение — произвольного. В соответствии ключ также становится произвольным.
Как программировать на 1C
Весь процесс программирования происходит в уже знакомом нам модуле. Давайте рассмотрим его поэтапно на примере самой простой программы «Привет, мир!».
- Запустите программу «1C:Предприятие».
- Откройте пустую базу в режиме конфигуратора.
- На панели управления нажмите на «Открыть конфигурацию».
- В открывшемся меню правой кнопкой мыши нажмите на пункт «Конфигурация» и откройте модуль приложения.
- Перед вами открывается пустая программа — текстовый документ, в котором можно писать.
- Наберите команду: Сообщить («Привет, мир!»);.
- Запускаем программу «1C:Предприятие» с помощью кнопки «Начать отладку».
- В приложении появится готовое сообщение.
1С-программист
Вход в профессию простой: весь код на русском языке, не нужно уметь программировать и иметь техническое образование. При этом вакансий на рынке около 10 000 — можно найти работу удаленно или в вашем регионе.
Язык 1С: система типов, библиотеки, IDE, красота кода и «настоящесть» разработчиков
Подкаст «Люди и код», выпуск №50: Дмитрий Задвинский.


Иллюстрация: Polina Vari / Skillbox Media

Тимур Тукаев
Фанат Free Software Foundation, использует Linux и недолюбливает Windows. Пишет истории про кодинг и программы на Python. Влюблён в Lisp, но пока что не умеет на нём программировать.

Дмитрий Задвинский
Старший разработчик на 1C.
Содержание выпуска
- Что такое язык программирования 1С.
- Из каких компонентов состоит язык 1С.
- Для чего используется язык, что в принципе на нём можно написать.
- Есть ли примеры необычного применения языка 1С для разработки каких-то независимых от экосистемы «1С» решений.
- Что есть в стандартной библиотеке 1С.
- Какие библиотеки и фреймворки существуют в мире 1С, кто их разрабатывает.
- Русская и английская версии языка 1С — какая чаще используется и почему. Зачем нужно две версии. Чем они различаются.
- Какие средства разработки используются в экосистеме 1С. Официальные IDE.
- Как отлавливаются исключения и ошибки в 1С.
- Система типов в 1С.
- Как развивается язык 1С, кто над ним работает, что меняется от версии к версии и как часто выходят обновления.
- Легко ли перейти с 1С на другой стек.
- Есть ли в мире 1С такое понятие, как красота кода, и какие-то особенные паттерны проектирования.
- Что должны знать джун, мидл, сеньор в 1С.
- Что классно в языке 1С и чего не хватает.
- Есть ли попытки перевести экосистему 1С на другие языки программирования.
- Какие перспективы существуют в работе на 1С.
- Насколько 1С-разработчик — это разработчик.
- Как вкатиться в 1С, как изучить язык, на кого подписаться.
- Сертификация в 1С.
Полезные ссылки
- Стандарт 1С
- Библиотеки для 1С
- YouTube-канал «Инфостарт»
- YouTube-канал «Жёлтый клуб»
Предложить тему, стать гостем подкаста, похвалить или поругать выпуск: code.media@skillbox.ru
Какой язык программирования используется в 1с
Встроенный язык является важной частью технологической платформы «1С:Предприятия 8», поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
- предварительная компиляция — перед исполнением модули, содержащие текст на встроенном языке, преобразуются во внутренний код;
- кэширование скомпилированных модулей в памяти;
- мягкая типизация — тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы;
- отсутствие программного описания объектов конфигурации — разработчик может использовать либо встроенные в платформу объекты, либо объекты, созданные системой в результате визуального конструирования прикладного решения.
Событийная ориентированность встроенного языка
Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования — создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью:

Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм, который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т. е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.
Универсальные коллекции значений
Встроенный язык поддерживает работу с большим количеством разнообразных объектов. Безусловно, основную группу объектов составляют прикладные объекты, позволяющие описывать алгоритмы функционирования бизнес-логики.
Однако не менее важной группой являются объекты, предназначенные для хранения временных наборов данных в течение сеанса работы пользователя. Как правило, они служат для вспомогательного сбора, группировки, анализа и обработки информации:

Перечислим кратко их возможности:
Массив
Представляет собой пронумерованную коллекцию значений произвольного типа. К элементу массива можно обращаться по его индексу. В качестве элементов массива могут выступать, в частности, другие массивы. Это позволяет создавать многомерные массивы.
Структура
Представляет собой поименованную коллекцию, состоящую из пар ключ — значение. Ключ может быть только строковым, значение — произвольного типа. К элементу структуры можно обращаться по значению его ключа, т. е. по имени. Обычно используется для хранения небольшого количества значений, каждое из которых имеет некоторое уникальное имя.
Соответствие
Также как и структура, представляет собой коллекцию пар ключ — значение. Однако, в отличие от структуры, ключ может быть практически любого типа.
Список значений
Используется, как правило, для решения интерфейсных задач. Позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может содержать значения любого типа, кроме того, в одном списке типы хранимых значений могут быть разными.
Например, список значений может использоваться для выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Таблица значений
Таблица значений позволяет строить динамические наборы значений и манипулировать ими. Она может быть наполнена значениями любого типа, и в одной таблице типы хранимых значений могут быть разными.
Одним из примеров использования таблицы значений может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Дерево значений
Дерево значений представляет собой динамически формируемый набор значений любого типа, похожий на таблицу значений. В отличие от таблицы значений, строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк, каждая из подчиненных строк, в свою очередь, также может иметь набор подчиненных строк и так далее. При этом поиск значений, сортировка, получение итогов могут осуществляться либо по текущему уровню иерархии, либо включая все подчиненные.
COMSafeArray
Представляет собой объектную оболочку над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами.
Фиксированный массив
Неизменяемый массив. Массив заполняется системой при инициализации объектов данного типа или разработчиком, с помощью конструктора.
Редактор текстов и модулей
Для создания и изменения текстов на встроенном языке разработчик может использовать редактор текста и модуля, обладающий удобными средствами создания, редактирования и синтаксической проверки модулей. Подробнее…
На чем написана 1С?
Зашел разговор про 1с и я услышал следующее мнение — что 1с написана на ЯП Русского разлива, т.е. даже буквы в этом ЯП Русские, так же этот гражданин приложил скрин (в конце поста). Проясните ситуацию, на чем написана 1с, и если она все такие написана на C++, то каким боком относиться к ней ЯП на Русский манер?
Вообще любая инфа на этот счет будет интересна.

На скриншоте язык не на котором написана платформа 1С, а язык на котором пишутся её конфигурации. Сама 1С написана на C++.
На самом деле, 1С написана на языке С++ в среде разработки MS Visual C++.
Это сведения разработчиков 1С:
Платформа 1С: Предприятия 8 написана на MS Visual C++.
При создании платформы использована собственная компонентная архитектура. Сервер 1С: Предприятия создан с использованием технологии COM+. Механизмы платформы содержат большое количество собственных технологических решений.
На скриншоте язык написания конфигураций 1С, как писали выше платформа базируется на C++ технологиях, английский синтаксис в данном примере появился из за того, что язык написания конфигураций поддерживает помимо русского ещё много вариаций (в т.ч. английский) поэтому можно написать даже в рамках одной функции строку на эстонском, название функции на румынском и т.д. (хотя смысла в этом абсолютно нет)
Платформа 1C:Предприятие — это система с открытым прикладным исходным кодом, написанным на проприетарном языке, официально его называют «Встроенный язык программирования 1С:Предприятие», неофициально и коротко – «язык 1С». Сама платформа 1С:Предприятие 8 — это большое (более 10 миллионов строк кода) приложение на C++ (клиент, сервер и т.д.), JavaScript (веб-клиент), и, с недавних пор еще и Java.
О программировании на 1С Предприятие 8
Поводом к написанию данной статьи послужило негативное отношение профессионального сообщества к указанной платформе и программистам.
Как программист, выбравший 1С, считаю данное мнение необоснованным. Платформа 1С — далеко не идеал, но, на мой взгляд, — это лучший, а главное — отечественный продукт!
И уж тем более — неадекватно судить о способностях программиста по тому языку, на котором он пишет.
- Прямого отношения к фирме 1С я не имею;
- Данная статья не является заказной, и написана исключительно на добровольной основе;
- В некоторых случаях высказано личное мнение, которое может не совпадать…;
- Вся статья, за исключением пролога — авторская, любые совпадения — случайность;
- Речь пойдет о платформе 1С Предприятие 8.2 (в настоящее время — актуальна версия 8.3, но я её ещё не изучал — очень много работы на 1С 8.2). Однако, большая часть сказанного применима как к платформе 8.3, так и к более ранним версиям, а часть — и к версии 7.7.
О чем речь?
- Работает в двух вариантах — файловый и серверный (трёхзвенка) — у каждого свои достоинства и недостатки;
- Независимая система учета, которая легко устанавливается и настраивается;
- Мощная экосистема для программистов со всеми необходимыми объектами и инструментами;
- Приятный эргономичный интерфейс;
- Сравнительно недорогое решение для бизнеса;
- Сеть франчайзи, начальное обучение;
- Мощная база наработок и знаний, накопленная годами;
- Временами проблемная платформа для системных администраторов;
- Не самое быстрое выполнение алгоритмов (хотя и не самое медленное) — это дань информативности (при ошибках указан номер строки и её содержимое);
- В языке программирования нет классов (наследования, инкапсуляции, полиморфизма), нет анонимных функций и прочих современных фич. Но для решения большинства задач — это и не нужно!
Файловая и серверная базы данных
Платформа состоит из нескольких частей и может работать в файловом или серверном варианте.
В файловом варианте вся база данных содержится в одном файле (с расширением «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С, вместо таблиц SQL;
- Работа со ссылками, вместо полей-идентификаторов SQL;
- Поддержка разыменовывания, аналогично тому, как это делается в коде;
- Выборка по вхождению в группу (для справочников);
- Иерархические итоги;
- Временные таблицы и вложенные запросы (SELECT * FROM (SELECT … )));
- Конструктор запросов — удобный, объектный, автоматически оптимизирующий текст запроса для быстрого чтения, который умеет разбирать текст запроса (парсить текст запроса и строить из него объектную модель);
- Построитель отчёта — надстройка над механизмом запросов, в которой добавлен функционал автоматического оформления результатов, а также гибкой настройки самого запроса в режиме «Предприятие» (т.е. пользователем). В результате в стандартных платформах 1С появился универсальный отчёт, в котором пользователь может настроить какие данные и в каком порядке он хочет видеть, что в строках, что в колонках, и отчет сам генерирует выходную таблицу;
- СКД (Система компоновки данных) — следующая модель, вобравшая в себя функционал универсального отчета и дополнившая его некоторыми функциями обработки результатов.
Язык программирования
По синтаксису язык 1С похож на «русский Паскаль», однако от «Pascal» отличается меньшей строгостью и отсутствием некоторых конструкций:
- Нет необходимости объявлять переменные — можно инициализировать прямо в тексте модуля;
- Нет жёсткой типизации переменных. В системе есть типы значений, но для переменных нет строгих правил по типизации. Переменная, хранившая ссылку, может через пару строчек кода уже хранить число или строку;
- Можно складывать переменные со значениями разных типов, при этом, тип результата будет таким, каким был тип у первой переменной, например:
- Переменные со значениями разных типов можно сравнить на равенство или неравенство (но не на больше-меньше, это вызовет исключение) — естественно, такие переменные не равны;
- Имеются функции и процедуры, допустимо использовать рекурсию (с ограничением по глубине рекурсии);
- При указании функции или процедуры без параметров — всё-равно, обязательно указывать пустые скобки в конце: вот_так();
- Имеются модули: у каждого справочника и документа их несколько, кроме того, модули есть у регистров, отчетов и обработок и у каждой формы, а также в составе конфигурации имеется возможность создавать общие модули;
- Нет классов, наследования, инкапсуляции, полиморфизма;
- Функцию нельзя передать как ссылку, нет анонимных функций;
- Нет обратного цикла (for i:=5 downto 1 do), а он реально нужен при удалении записей. Обходимся чуть более длинной записью через цикл «Пока».
- В платформе 1С есть возможность выгружать-загружать конфигурацию, сравнивать конфигурацию с другой конфигурацией и частично загружать изменения;
- Есть возможность выгружать тексты модулей для их пакетной обработки и загружать обратно в конфигурацию;
- Если конфигурация находится на поддержке (все конфигурации от 1С изначально на поддержке), то всегда можно выполнить сравнение и посмотреть, что изменялось сторонними разработчиками или местными специалистами;
- Также есть возможность выгружать / загружать базу данных целиком (вместе с данными);
- Для коллективной работы над одной конфигурацией используется хранилище конфигурации;
- Также существует ряд правил внесения изменений в стандартные конфигурации, есть даже документ от 1С, описывающий методики и стандарты изменения типовых конфигураций (да и любых других).
Общее впечатление
Язык 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С — но даже не надеясь, что на него ответят (или ответит робот «Письмо передано в отдел разработки». В плане разработки гораздо большую поддержку оказывает Яндекс.Поиск и встроенная в конфигуратор справка.
Похожие публикации:
- Какого способа выравнивания нет в текстовом редакторе
- Какое масло лить в мазду сх5
- Какой антифриз заливать в honda shadow 750
- Какой из компонентов защиты отсутствует в подписке dr web премиум для ос windows
