Программирование на платформе 1С:Предприятие 8.3: От основ до практических задач

Практический курс по разработке в среде 1С:Предприятие 8.3, охватывающий встроенный язык, создание справочников, документов и регистров. Включает множество реальных задач для закрепления навыков программирования и работы с универсальными коллекциями, опираясь на лучшие практики [its.1c.ru](https://its.1c.ru/db/pubdevguide83) и [helpme1s.ru](https://helpme1s.ru/uprazhneniya-po-vnutrennemu-yazyku-programmirovaniya-1s-8-3).

1. Основы платформы 1С:Предприятие 8.3 и создание первой программы

Основы платформы 1С:Предприятие 8.3 и создание первой программы

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

Архитектура системы: Платформа и Конфигурация

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

Платформа 1С:Предприятие — это фундамент, «движок» системы. Она написана разработчиками самой фирмы «1С» на языке C++ и представляет собой исполняемый файл (программу), который устанавливается на компьютер. Платформа умеет работать с базами данных, отрисовывать интерфейс, обрабатывать программный код, но сама по себе она не знает, как вести бухгалтерский учет или рассчитывать зарплату.

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

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

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

!Схема архитектуры 1С:Предприятие

Режимы работы информационной базы

Когда платформа и конфигурация объединяются с пользовательскими данными (справочниками клиентов, документами продаж), образуется Информационная база (ИБ). Запустить информационную базу можно в двух принципиально разных режимах.

| Характеристика | Режим «Конфигуратор» | Режим «1С:Предприятие» | |---|---|---| | Кто использует | Программисты, системные администраторы | Бухгалтеры, менеджеры, руководители | | Основная цель | Изменение структуры базы, написание программного кода | Ввод данных, проведение документов, формирование отчетов | | Доступ к коду | Полный доступ к редактированию | Код скрыт, доступен только пользовательский интерфейс |

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

Варианты хранения данных

Информационная база должна где-то хранить свои данные. Платформа 8.3 поддерживает два варианта работы:

  • Файловый вариант. Все данные, структура конфигурации и пользовательские настройки хранятся в одном единственном файле с расширением 1Cv8.1CD. Этот вариант прост в установке и не требует дополнительного программного обеспечения.
  • Клиент-серверный вариант. Данные хранятся в полноценной Системе Управления Базами Данных (СУБД), такой как PostgreSQL или Microsoft SQL Server. Взаимодействие происходит через специальный кластер серверов 1С.
  • Файловый режим работы базы данных рекомендуется использовать в небольших компаниях или для обучения, когда количество одновременно работающих пользователей . Если же , то для обеспечения стабильности, безопасности и скорости работы необходимо переходить на клиент-серверную архитектуру.

    Подготовка рабочего окружения

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

    Чтобы начать работу, необходимо создать пустую информационную базу:

  • Запустите платформу 1С и нажмите кнопку «Добавить».
  • Выберите пункт «Создание новой информационной базы».
  • Укажите «Создание информационной базы без конфигурации...» — это создаст абсолютно пустой каркас.
  • Задайте имя базы (например, «Моя первая программа») и укажите папку на жестком диске, где будет храниться файл базы.
  • После завершения в списке появится новая строка. Выделите ее и нажмите кнопку «Конфигуратор».

    !Интерфейс среды разработки Конфигуратор

    Дерево метаданных: Строительные блоки программы

    Открыв Конфигуратор, вы увидите слева окно «Конфигурация». Если оно закрыто, его можно открыть через меню Конфигурация -> Открыть конфигурацию. Это окно содержит Дерево метаданных — иерархический список всех объектов, из которых состоит программа.

    В 1С программист не создает таблицы баз данных вручную с помощью SQL-запросов. Он оперирует готовыми высокоуровневыми объектами:

    * Справочники — используются для хранения условно-постоянной информации (список сотрудников, номенклатура товаров, контрагенты). * Документы — фиксируют события, происходящие во времени (приходная накладная, приказ о приеме на работу, счет на оплату). * Регистры — механизмы для накопления данных и получения итогов (остатки товаров на складе, взаиморасчеты с клиентами).

    Базовые правила синтаксиса встроенного языка

    Прежде чем написать первый код, важно усвоить несколько правил синтаксиса встроенного языка 1С:

    * Русскоязычный синтаксис. Исторически сложилось, что код в 1С пишется на русском языке. Платформа поддерживает и английский синтаксис (например, If... Then вместо Если... Тогда), но в профессиональной среде это считается дурным тоном. Весь типовой код написан на русском. Регистронезависимость. Язык не различает большие и маленькие буквы. Команды Сообщить, СООБЩИТЬ и сообщить будут восприняты платформой абсолютно одинаково. Однако для читаемости принято использовать CamelCase* (каждое новое слово с заглавной буквы без пробелов). * Точка с запятой. Каждая исполняемая инструкция должна заканчиваться символом ;. * Комментарии. Текст, который не должен выполняться программой, выделяется двумя слешами //.

    Создание первой программы: Hello, World!

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

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

    Вставьте следующий код:

    Разберем этот код: * Процедура ... КонецПроцедуры — это блок кода, который выполняет определенное действие. * ПриНачалеРаботыСистемы() — это стандартный обработчик события. Платформа автоматически найдет эту процедуру и выполнит код внутри нее в тот момент, когда пользователь запустит программу. * Сообщить() — встроенная функция платформы, которая выводит текст в специальное окно сообщений внизу экрана.

    Чтобы проверить работу программы, нажмите клавишу F5 (или кнопку «Начать отладку» в виде кнопки Play на панели инструментов). Платформа предложит сохранить изменения — соглашайтесь. Запустится режим «1С:Предприятие», и в нижней части экрана вы увидите ваше сообщение.

    Практический пример: Базовые вычисления

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

    Измените код в модуле управляемого приложения следующим образом:

    В этом примере мы создали три переменные. Переменным БазовыйОклад и ПроцентПремии мы присвоили числовые значения. Затем мы использовали стандартные математические операторы умножения * и деления / для вычисления результата.

    При запуске программы (клавиша F5) платформа произведет расчет: 50000 умножит на 15 и разделит на 100. В результате на экран будет выведено сообщение: Ваша расчетная премия составит: 7500 руб.

    Обратите внимание на оператор + в функции Сообщить. В данном случае он выполняет операцию конкатенации (склеивания) строк. Платформа 1С достаточно умна, чтобы автоматически преобразовать число 7500 в строку и соединить его с остальным текстом.

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

    2. Встроенный язык 1С: типы данных, коллекции значений и управляющие конструкции

    Встроенный язык 1С: типы данных, коллекции значений и управляющие конструкции

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

    Примитивные типы данных

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

    Во встроенном языке выделяют четыре основных примитивных типа:

    * Число — используется для хранения целых и дробных значений. Поддерживает стандартные математические операции. * Строка — текст, заключенный в двойные кавычки. * Дата — хранит одновременно дату и время с точностью до секунды. Одинарные кавычки используются для явного задания даты в формате 'ГГГГММДДччммсс'. * Булево — логический тип, принимающий только два значения: Истина или Ложь.

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

    Рассмотрим пример инициализации переменных разных типов:

    Управляющие конструкции: ветвления

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

    Основной инструмент ветвления — оператор Если ... Тогда ... ИначеЕсли ... Иначе ... КонецЕсли. Он проверяет логическое условие и выполняет соответствующий блок кода.

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

    Управляющие конструкции: циклы

    Когда нужно выполнить одно и то же действие несколько раз, применяются циклы. В 1С существует три вида циклов:

  • Цикл с предусловием (Пока ... Цикл). Выполняется до тех пор, пока условие истинно.
  • Цикл со счетчиком (Для ... По ... Цикл). Используется, когда заранее известно точное количество итераций.
  • Цикл по коллекции (Для Каждого ... Из ... Цикл). Применяется для перебора элементов сложных структур данных.
  • | Вид цикла | Синтаксис | Когда использовать | |---|---|---| | Со счетчиком | Для Индекс = 1 По 10 Цикл | Нужно выполнить код ровно раз | | С предусловием | Пока Баланс > 0 Цикл | Количество шагов неизвестно, зависит от условия | | По коллекции | Для Каждого Элемент Из Массив Цикл | Нужно обработать все элементы списка или таблицы |

    Пример использования цикла со счетчиком для расчета факториала числа :

    Универсальные коллекции значений

    В реальных бизнес-задачах редко приходится работать с одиночными переменными. Обычно данные сгруппированы: список сотрудников, строки накладной, настройки пользователя. Для работы с такими наборами данных применяются универсальные коллекции значений.

    !Схема универсальных коллекций значений в 1С

    Массив

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

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

    Структура

    Структура — это коллекция, хранящая данные в формате «Ключ и Значение». Ключ всегда является строкой и должен соответствовать правилам именования переменных (не начинаться с цифры, не содержать пробелов). Значением может быть любой тип данных.

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

    Таблица значений

    Таблица значений — это мощный инструмент, представляющий собой виртуальную таблицу в оперативной памяти компьютера. Она состоит из колонок (полей) и строк. По сути, это аналог таблицы в базе данных или листа в Excel, но существующий только во время выполнения программы.

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

    Рассмотрим пример создания таблицы значений для хранения корзины товаров:

    Практический пример: Расчет итоговой суммы

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

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

    В этом коде переменная СтрокаКорзины на каждой итерации цикла автоматически принимает значение следующей строки из таблицы Корзина. Мы обращаемся к колонкам через точку (СтрокаКорзины.Цена), производим математические вычисления и накапливаем результат в переменной ИтоговаяСумма.

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