1С-разработчик за 5 дней

Интенсивный курс погружения в основы программирования и конфигурирования на платформе 1С:Предприятие 8. За 5 дней вы пройдете путь от установки платформы до создания полноценного учетного приложения с отчетами.

1. Архитектура 1С, установка платформы и проектирование справочников

Архитектура 1С, установка платформы и проектирование справочников

Добро пожаловать на курс «1С-разработчик за 5 дней»! Если вы читаете эту статью, значит, вы решили освоить одну из самых востребованных профессий в сфере IT на русскоязычном пространстве.

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

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

Что такое 1С: Предприятие?

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

Аналогия с игровой приставкой

Представьте, что у вас есть игровая приставка (например, PlayStation или Xbox). Сама по себе она — просто «железо» и операционная система. Чтобы играть, вам нужны диски с играми: «FIFA», «Mortal Kombat» или «Ведьмак».

В мире 1С всё устроено точно так же:

  • Платформа «1С:Предприятие» — это наша «приставка». Это среда запуска, движок, который умеет исполнять код, работать с базой данных и рисовать интерфейс. Сама по себе Платформа пуста, в ней нет бизнес-логики.
  • Конфигурация — это «диск с игрой». Это набор справочников, документов и алгоритмов, написанных программистом. Примеры конфигураций: «1С:Бухгалтерия», «1С:Управление торговлей» или та программа, которую мы напишем с вами.
  • !Схема взаимодействия Платформы и Конфигурации, показывающая их различие и взаимосвязь

    Режимы работы

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

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

    Установка учебной версии

    Для обучения нам не нужно покупать дорогую лицензию. Фирма «1С» предоставляет бесплатную Учебную версию платформы. Она обладает полным функционалом для разработки, но имеет ограничения на объем данных (что для нас не критично).

    Пошаговый алгоритм установки

  • Перейдите на официальный портал разработчиков 1С (online.1c.ru) в раздел «1С:Предприятие 8. Версия для обучения».
  • Скачайте дистрибутив (обычно это архив).
  • Распакуйте архив и запустите файл setup.exe.
  • В процессе установки нажимайте «Далее», оставляя настройки по умолчанию. Компоненты, которые нам понадобятся (Тонкий клиент, Толстый клиент, Сервер), будут выбраны автоматически.
  • После установки на вашем рабочем столе появится ярлык 1С Предприятие.

    Создание первой информационной базы

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

  • Нажмите кнопку Добавить.
  • Выберите пункт Создание новой информационной базы.
  • Выберите Создание информационной базы без конфигурации (мы ведь хотим написать всё с нуля, верно?).
  • Придумайте имя базы, например: Магазин_За_5_Дней.
  • Укажите папку на диске, где будет храниться база.
  • Нажмите Готово.
  • Теперь в вашем списке появилась база. Выделите её и нажмите кнопку Конфигуратор. Перед вами откроется среда разработки.

    Знакомство с деревом метаданных

    Главное окно Конфигуратора содержит меню и панели инструментов, но самое важное для нас — это окно Конфигурация (обычно слева). Если оно закрыто, откройте его через меню Конфигурация -> Открыть конфигурацию.

    Вы увидите «Дерево метаданных». Это скелет нашей программы. Оно состоит из ветвей (классов объектов):

    * Справочники * Документы * Отчеты * Регистры сведений * и многие другие.

    В 1С мы не создаем таблицы в базе данных вручную (как в SQL). Мы создаем Объекты метаданных в этом дереве, а Платформа сама создает нужные таблицы в базе данных. Это называется объектно-ориентированным подходом в стиле 1С.

    !Дерево метаданных в режиме Конфигуратора — основной инструмент навигации разработчика

    Проектирование Справочников

    Сегодня мы сосредоточимся на Справочниках.

    Что такое Справочник?

    Справочник — это список объектов, которые имеют условно-постоянный характер. Это «существительные» нашей системы.

    Примеры справочников: * Сотрудники (Иванов, Петров, Сидоров) * Номенклатура (Товары, услуги) * Контрагенты (Клиенты, поставщики) * Склады (Основной, Розничный) * Валюты (Рубль, Доллар)

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

    Стандартные реквизиты

    Любой справочник в 1С сразу после создания уже имеет два обязательных поля (в 1С поля называются реквизитами):

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

    Наша цель на курсе — автоматизировать магазин. Главное в магазине — это товары. В терминах 1С товары обычно называют «Номенклатура».

  • В дереве метаданных найдите ветвь Справочники.
  • Нажмите на неё правой кнопкой мыши и выберите Добавить.
  • Откроется окно редактирования объекта.
  • В поле Имя напишите: Номенклатура.
  • Важно:* Имя — это идентификатор для программиста. Оно пишется слитно, без пробелов (обычно CamelCase). * Поле Синоним заполнится автоматически. Синоним — это то, что увидит пользователь. Там пробелы допустимы.

    Теперь у нас есть справочник. Но простого названия товару мало. Нам нужно знать, например, артикул товара и его вид (товар это или услуга).

    Добавление реквизитов

    Перейдите на вкладку Данные в окне редактирования справочника.

    Здесь мы создаем новые поля. Добавим реквизит «Артикул»:

  • Нажмите кнопку добавления (зеленый плюс).
  • Имя: Артикул.
  • Тип: Строка.
  • Длина: 20 (артикулы бывают длинными).
  • Теперь добавим реквизит, который будет описывать описание товара:

  • Добавить новый реквизит.
  • Имя: ПолноеОписание.
  • Тип: Строка.
  • Длина: 0 (в 1С длина 0 означает «неограниченная длина», можно писать целые поэмы).
  • Типы данных

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

    * Строка: любой текст. Число: количество, сумма, коэффициент. Имеет настройки Длина (общее кол-во цифр) и Точность* (кол-во знаков после запятой). * Дата: дата и время (с точностью до секунды). * Булево: Да/Нет (Истина/Ложь).

    Иерархия

    В магазине тысячи товаров. Если они будут лежать одним списком, кладовщик сойдет с ума. Товары нужно раскладывать по папкам (группам): «Бытовая техника», «Продукты», «Мебель».

    В 1С это называется Иерархия.

  • Перейдите на вкладку Иерархия в окне справочника Номенклатура.
  • Поставьте галочку Иерархический справочник.
  • Оставьте вид иерархии: Иерархия групп и элементов.
  • Теперь мы сможем создавать желтые папки внутри справочника.

    !Иерархическая структура справочника: группы (папки) содержат элементы (товары)

    Практика: Справочник «Склады»

    Магазин не может существовать без склада. Давайте создадим второй справочник.

  • Правая кнопка на ветвь Справочники -> Добавить.
  • Имя: Склады.
  • Переходим на вкладку Данные.
  • Нам не нужны особые характеристики склада, кроме названия, поэтому дополнительные реквизиты пока создавать не будем.
  • Запуск и проверка (Отладка)

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

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

  • Найдите в меню раздел «Справочники» (или «Номенклатура», интерфейс может отличаться в зависимости от настроек, обычно все новые справочники попадают в главное меню).
  • Зайдите в Номенклатуру.
  • Нажмите кнопку Создать.
  • Заполните Наименование: «Стол дубовый».
  • Заполните Артикул: «А-100».
  • Нажмите Записать и закрыть.
  • Поздравляю! Вы только что создали свою первую запись в базе данных, которую сами же и спроектировали.

    Попробуйте создать группу (папку) «Мебель» и перетащить туда «Стол дубовый». Работает? Отлично!

    Итоги первого дня

    Сегодня мы сделали огромный шаг:

  • Разобрались, чем Платформа отличается от Конфигурации.
  • Установили среду разработки.
  • Узнали, что такое Дерево метаданных.
  • Изучили объект Справочник и типы данных.
  • Создали справочники Номенклатура и Склады.
  • В следующем уроке мы оживим нашу систему. Мы научимся фиксировать события хозяйственной жизни — поступления товаров и продажи — с помощью Документов.

    Готовьтесь, завтра мы начнем настоящий учет!

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

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

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

    Сегодня мы оживим систему. Мы научимся отражать события реального мира (покупки и продажи) и мгновенно получать информацию об остатках. Для этого нам понадобятся два кита архитектуры 1С: Документы и Регистры накопления.

    Документы: фиксация событий во времени

    Если Справочники — это «существительные» (кто? что?), то Документы — это «глаголы» (что произошло?).

    Документ в 1С — это электронный аналог бумажной накладной, чека, акта или приказа. Он всегда привязан к оси времени. У него обязательно есть Дата и Номер.

    Структура документа

    Любой документ состоит из двух логических частей:

  • Шапка — общие реквизиты для всего документа (кто продал, с какого склада, дата, номер).
  • Табличная часть — список того, что именно мы продаем или покупаем (товары, количество, цены).
  • !Структура документа 1С: шапка содержит общие данные, табличная часть — список номенклатуры.

    Практика: Создаем «Приходную накладную»

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

  • Откройте Конфигуратор.
  • Найдите ветвь Документы, нажмите правой кнопкой мыши Добавить.
  • Имя: ПриходнаяНакладная.
  • Перейдите на вкладку Данные.
  • Создаем реквизиты шапки: Нам нужно знать, на какой склад приехал товар. Добавьте новый реквизит: * Имя: Склад. * Тип: СправочникСсылка.Склады (выбираем из списка типов, нажав на кнопку с тремя точками).

    Создаем табличную часть:

  • Найдите раздел Табличные части, нажмите кнопку добавления.
  • Имя: СписокТоваров.
  • Теперь внутри этой табличной части создаем реквизиты (колонки):
  • * Номенклатура (Тип: СправочникСсылка.Номенклатура) * Количество (Тип: Число, длина 15, точность 3) * Цена (Тип: Число, длина 15, точность 2) * Сумма (Тип: Число, длина 15, точность 2)

    Теперь у нас есть форма для ввода данных о поступлении товара.

    Практика: Создаем «Расходную накладную»

    Повторите действия выше, но для документа продажи:

  • Имя: РасходнаяНакладная.
  • Реквизит шапки: Склад.
  • Табличная часть СписокТоваров с теми же колонками (Номенклатура, Количество, Цена, Сумма).
  • Проблема чистого документа

    Представьте, что вы создали 100 приходных накладных и 50 расходных. К вам приходит директор и спрашивает: «Сколько столов сейчас на основном складе?».

    Если бы мы использовали только документы, системе пришлось бы:

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

    Регистры накопления: сердце учета

    Регистр накопления — это специальная таблица, которая хранит итоговые цифры. Это «бассейн», в который документы «наливают» воду или «выливают» её.

    Когда директор спрашивает про остаток, система не перебирает документы. Она просто смотрит в регистр и видит готовую цифру.

    Измерения и Ресурсы

    У регистра накопления есть два ключевых понятия:

  • Измерения (В разрезе чего мы храним данные?). Это наши координаты. Например: Товар, Склад.
  • Ресурсы (Что мы храним?). Это числа, которые можно складывать. Например: Количество, Сумма.
  • Практика: Создаем регистр «ОстаткиТоваров»

  • В дереве метаданных найдите Регистры накопления Добавить.
  • Имя: ОстаткиТоваров.
  • Вид регистра: Оставьте Остатки (это важно, так как мы храним именно остатки, а не просто обороты).
  • Перейдите на вкладку Данные.
  • Добавляем Измерения (разрезы учета): * Номенклатура (Тип: СправочникСсылка.Номенклатура) * Склад (Тип: СправочникСсылка.Склады)

    Добавляем Ресурсы (числовые значения): * Количество (Тип: Число, 15, 3)

    Теперь у нас есть место для хранения итогов.

    Проведение документа: связь Документа и Регистра

    Сами по себе Документ и Регистр не связаны. Документ — это просто бумажка. Чтобы данные попали в регистр, документ нужно Провести.

    Проведение — это процесс, когда на основании данных документа создаются записи в регистрах. В 1С это называется «Движения».

    Использование Конструктора движений

    Мы не будем писать код вручную (пока что). Мы воспользуемся магией платформы.

  • Найдите в дереве ваш документ ПриходнаяНакладная.
  • Нажмите на него правой кнопкой мыши и выберите Открыть модуль объекта. (Если откроется пустое окно с текстом — закройте его, нам нужен другой путь для новичков).
  • Лучший способ: Нажмите правой кнопкой на документ ПриходнаяНакладная Конструктор движений.
  • Платформа спросит: «Конструктор замещает модуль...». Нажмите Да.
  • Настройка в конструкторе:

  • В списке «Таблицы регистров» (справа) поставьте галочку напротив ОстаткиТоваров.
  • Тип движения регистра: Приход (так как это поступление товара, мы увеличиваем остаток).
  • В поле «Табличная часть» выберите СписокТоваров.
  • Нажмите кнопку Заполнить выражения (она находится в центре).
  • Платформа сама сопоставит поля: * Номенклатура из документа в Номенклатура регистра. * Склад из шапки документа в Склад регистра. * Количество из документа в Количество регистра.

  • Нажмите ОК. В модуле документа появится программный код. Поздравляю, вы сгенерировали свой первый скрипт на языке 1С!
  • Настройка Расходной накладной

    Сделайте то же самое для документа РасходнаяНакладная, но с одним отличием:

  • Запустите Конструктор движений.
  • Выберите регистр ОстаткиТоваров.
  • ВАЖНО: Тип движения регистра смените на Расход (мы списываем товар).
  • Выберите табличную часть, нажмите Заполнить выражения.
  • Нажмите ОК.
  • Математика учета

    В процессе работы система выполняет простую арифметику. Когда мы проводим документы, регистр обновляет свои значения.

    Формула конечного остатка выглядит так:

    где — конечный остаток на складе, — начальный остаток, — количество из приходных накладных (движение Приход), — количество из расходных накладных (движение Расход).

    Благодаря регистрам, системе не нужно считать эту формулу с нуля. Она хранит текущее значение и просто меняет его при проведении нового документа.

    Проверка работы в режиме Предприятия

    Настало время проверить нашу систему.

  • Запустите отладку (F5).
  • Зайдите в Приходную накладную.
  • Создайте документ: Склад «Основной», Товар «Стол», Количество 10.
  • Нажмите Провести и закрыть.
  • Теперь зайдите в Расходную накладную.
  • Создайте документ: Склад «Основной», Товар «Стол», Количество 3.
  • Нажмите Провести и закрыть.
  • Где увидеть результат? Чтобы увидеть содержимое регистра (техническим взглядом):

  • В режиме Предприятия нажмите на «Сервис и настройки» (иконка в правом верхнем углу) Функции для технического специалиста (если этот пункт недоступен, его нужно включить в настройках параметров).
  • Найдите там Регистр накопления ОстаткиТоваров.
  • Вы увидите записи: +10 столов и -3 стола. Итоговый остаток система «знает» — это 7.
  • Итоги второго дня

    Сегодня мы реализовали схему оперативного учета:

  • Создали Документы для ввода первичной информации.
  • Создали Регистр накопления для хранения итогов.
  • Связали их через механизм Проведения и Конструктор движений.
  • Теперь наша система умеет считать товары. Но как пользователю увидеть эти цифры в красивом виде, а не через техническое меню? Об этом мы поговорим завтра, когда будем создавать Отчеты.

    3. Язык запросов 1С: выборка данных и работа с консолью запросов

    Язык запросов 1С: выборка данных и работа с консолью запросов

    Добро пожаловать в третий день курса «1С-разработчик за 5 дней»!

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

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

    Что такое запрос?

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

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

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

    !Схема работы запроса: от текста инструкции к готовой выборке данных

    Основы синтаксиса

    Язык запросов 1С очень похож на классический SQL (Structured Query Language), который используется во всем мире, но с одной ключевой особенностью: он на русском языке (хотя английский синтаксис тоже поддерживается).

    Любой запрос начинается с главных слов. Давайте рассмотрим простейший пример. Мы хотим получить список всех наших товаров.

    Разберем по словам:

  • ВЫБРАТЬ (SELECT) — команда, говорящая «покажи мне следующие поля». После неё мы перечисляем через запятую, что именно хотим видеть.
  • ИЗ (FROM) — команда, указывающая источник. Откуда брать данные? В нашем случае из таблицы справочника «Номенклатура».
  • КАК (AS) — это псевдоним. Мы даем источнику короткое имя, чтобы удобнее обращаться к нему в тексте запроса.
  • Фильтрация данных (ГДЕ)

    Нам редко нужны все товары. Обычно нам нужно что-то конкретное. Например, только услуги. Для этого используется конструкция ГДЕ.

    Разыменование полей (Точка)

    Это одна из самых мощных фишек 1С. В обычных SQL-запросах, чтобы узнать название страны поставщика товара, нужно писать сложные соединения таблиц (JOIN).

    В 1С мы используем точку.

    Представьте, что у нас в справочнике «Номенклатура» есть поле «Поставщик», а у «Поставщика» есть поле «Город». Чтобы получить город в запросе, мы просто пишем:

    Номенклатура.Поставщик.Город

    Платформа сама построит все связи за вас.

    Конструктор запроса

    Хорошая новость: вам не обязательно учить наизусть все команды прямо сейчас. В Платформу встроен мощнейший инструмент — Конструктор запроса.

    Это визуальный редактор, который позволяет «накликивать» запрос мышкой.

    Практика: Работа с конструктором

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

  • Откройте Конфигуратор.
  • Создайте новую внешнюю обработку (Файл -> Новый -> Внешняя обработка) или используйте любую существующую процедуру.
  • В любом модуле нажмите правую кнопку мыши и выберите Конструктор запроса с обработкой результата.
  • Система предложит создать новый запрос. Соглашайтесь.
  • Перед вами откроется окно с несколькими вкладками:

    * Таблицы (слева): здесь всё наше дерево метаданных. Найдите Документ.ПриходнаяНакладная.СписокТоваров. Перетащите его в центр. * Поля (центр): выберите, что хотите видеть. Например: Ссылка.Дата, Ссылка.Номер, Номенклатура, Количество. * Условия (отдельная вкладка): здесь можно задать отбор (аналог ГДЕ).

    Нажмите ОК, и 1С сама напишет за вас программный код!

    !Интерфейс Конструктора запроса: визуальное создание сложных выборок без написания кода вручную

    Виртуальные таблицы: Секрет скорости

    Вчера мы создали регистр накопления ОстаткиТоваров. В базе данных он хранится как огромная таблица со всеми движениями (+10, -3, +5, -2...).

    Если мы хотим узнать текущий остаток, мы могли бы сложить все плюсы и минусы. Но это долго.

    Для этого в языке запросов существуют Виртуальные таблицы. Это специальные конструкции, которые Платформа рассчитывает на лету максимально быстро.

    Для регистров накопления есть виртуальная таблица Остатки.

    Пример запроса остатков:

    Обратите внимание: мы обращаемся не просто к РегистрНакопления.ОстаткиТоваров, а добавляем через точку .Остатки. Это приказ системе: «Дай мне сразу готовые цифры на текущий момент».

    Параметры запроса

    Запрос не должен быть «гвоздями прибит» к конкретным значениям. Мы не пишем в коде «Найти стол». Мы пишем «Найти то, что выберет пользователь».

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

    Пример: ГДЕ Номенклатура = &ВыбТовар

    В коде мы устанавливаем значение этого параметра: Запрос.УстановитьПараметр("ВыбТовар", СсылкаНаСтол);

    Выполнение запроса в коде

    Теперь соберем всё вместе. Как выглядит полный цикл работы с запросом в программном коде 1С? Он состоит из 4 шагов:

  • Создание объекта: Запрос = Новый Запрос;
  • Текст: Пишем текст запроса (или вставляем конструктором).
  • Параметры: Передаем внешние данные.
  • Выполнение и Выборка: Получаем результат и обходим его циклом.
  • Практический пример

    Допустим, мы хотим вывести пользователю сообщение о том, сколько у нас осталось конкретного товара.

    Консоль запросов

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

    Для отладки используется инструмент Консоль запросов. Это внешняя обработка (или встроенная в современные конфигурации), которая позволяет:

  • Написать запрос.
  • Нажать кнопку «Выполнить».
  • Сразу увидеть таблицу с результатами.
  • На курсе мы рекомендуем сначала отлаживать сложные запросы в Консоли (или Конструкторе), и только когда вы убедитесь, что цифры верные, копировать текст запроса в модуль.

    Итоги третьего дня

    Сегодня мы освоили язык общения с базой данных.

  • Мы узнали, что данные извлекаются с помощью конструкции ВЫБРАТЬ ... ИЗ ....
  • Познакомились с Конструктором запроса — главным помощником программиста.
  • Поняли важность Виртуальных таблиц для получения остатков.
  • Научились передавать Параметры через символ &.
  • Теперь мы умеем сохранять данные (Документы), считать их (Регистры) и получать обратно (Запросы).

    Завтра, в четвертый день, мы соединим эти знания, чтобы создать красивые пользовательские Отчеты и настроить систему компоновки данных (СКД).

    4. Система компоновки данных (СКД) и создание аналитических отчетов

    Система компоновки данных (СКД) и создание аналитических отчетов

    Добро пожаловать в четвертый день курса «1С-разработчик за 5 дней»! Мы уже прошли большой путь: научились проектировать базу данных (Справочники), вести учет операций (Документы и Регистры) и извлекать сырые данные (Запросы).

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

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

    Сегодня мы научимся превращать данные в полезную информацию.

    Что такое СКД?

    Система Компоновки Данных — это конструктор, встроенный в Платформу. Он берет данные из базы, обрабатывает их по заданным правилам и выводит пользователю в красивом виде.

    Весь процесс работы СКД можно представить как конвейер на заводе:

  • Источники данных (Data Sets) — мы говорим системе, откуда брать сырье (обычно это Запрос).
  • Ресурсы — мы указываем, какие поля являются числами, которые нужно складывать (Сумма, Количество).
  • Настройки — мы определяем внешний вид: какие колонки показать, как группировать строки, какие фильтры применить.
  • !Визуализация процесса превращения сырых данных в готовый отчет через механизмы СКД

    Создание первого отчета «Остатки товаров»

    Наша цель — создать отчет, который покажет, сколько товаров лежит на каждом складе. Мы не напишем ни строчки кода на языке 1С, всё сделаем визуально.

    Шаг 1. Создание объекта Отчет

  • Откройте Конфигуратор.
  • В дереве метаданных найдите ветвь Отчеты.
  • Нажмите правой кнопкой мыши Добавить.
  • Имя: ОстаткиТоваров.
  • Нажмите кнопку Открыть схему компоновки данных (большая кнопка в окне редактирования).
  • Примите имя по умолчанию (ОсновнаяСхемаКомпоновкиДанных) и нажмите Готово.
  • Перед вами открылось окно конструктора СКД. Оно выглядит пугающе из-за обилия вкладок, но нам понадобятся всего три из них.

    Шаг 2. Набор данных (Запрос)

    Нам нужно получить данные. Мы будем использовать тот же запрос, что и вчера, но теперь внутри СКД.

  • Убедитесь, что вы на вкладке Наборы данных.
  • Нажмите на Зеленый плюс (Добавить) Набор данных - запрос.
  • В поле Запрос (нижняя часть экрана) можно написать текст вручную, но лучше нажать кнопку Конструктор запроса (в верхнем правом углу поля ввода).
  • В конструкторе запроса:

  • Выберите таблицу РегистрНакопления.ОстаткиТоваров.Остатки (наша виртуальная таблица).
  • Перетащите поля: Склад, Номенклатура, КоличествоОстаток.
  • Нажмите ОК.
  • Текст запроса автоматически вставится в поле. Обратите внимание, что СКД сама заполнила список полей в средней части экрана.

    Шаг 3. Ресурсы

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

    В математике операция агрегации (суммирования) описывается формулой:

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

    В СКД мы должны явно указать, какие поля являются ресурсами ().

  • Перейдите на вкладку Ресурсы.
  • В списке «Доступные поля» (слева) найдите КоличествоОстаток.
  • Перетащите его в правую таблицу (или нажмите стрелочку >).
  • В колонке «Выражение» автоматически появится Сумма(КоличествоОстаток).
  • Теперь система знает: если мы свернем детальные записи до уровня Склада, количества товаров нужно сложить.

    Шаг 4. Настройки отчета

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

  • Перейдите на вкладку Настройки.
  • В левой части (дерево настроек) пока пусто. Нам нужно создать структуру отчета.
  • Создаем группировки: Мы хотим видеть иерархию: Сначала Склад, а внутри него — Товары.

  • Нажмите правой кнопкой мыши на слово Отчет (в левом окне) Новая группировка.
  • В поле «Поле» выберите Склад. Нажмите ОК.
  • Теперь нажмите правой кнопкой мыши на только что созданную группировку Склад Новая группировка.
  • В поле «Поле» выберите Номенклатура. Нажмите ОК.
  • У вас должна получиться «лесенка»: * Отчет * Склад * Номенклатура

    Выбираем поля для показа:

  • Перейдите на вкладку Выбранные поля (внизу, в центре).
  • Перетащите туда КоличествоОстаток.
  • Поля группировок (Склад и Номенклатура) добавлять не обязательно, они выведутся автоматически, так как являются заголовками групп.
  • !Пример настройки иерархической структуры отчета в конструкторе СКД

    Параметры и Отборы

    Часто нам нужно посмотреть остатки не на текущий момент, а на прошлую дату. Или только по одному складу.

    Параметры данных

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

    Чтобы пользователь мог менять дату:

  • Найдите колонку Включать в доступные поля (или «Ограничение доступности» в старых версиях, галочку нужно снять).
  • Установите галочку Включать в пользовательские настройки (справа в свойствах параметра). Это выведет поле даты прямо в шапку отчета.
  • Отборы (Фильтры)

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

  • Добавьте новый элемент отбора.
  • Левое значение: КоличествоОстаток.
  • Вид сравнения: Больше.
  • Правое значение: 0.
  • Запуск и проверка

    Настало время магии. Мы не писали код интерфейса, не создавали кнопки «Сформировать». Платформа сделает это сама.

  • Запустите режим 1С:Предприятие (F5).
  • Найдите в меню ваш отчет ОстаткиТоваров.
  • Нажмите кнопку Сформировать.
  • Вы увидите красивую таблицу. Склады будут выделены жирным шрифтом. Напротив каждого склада будет сумма всех товаров в нем. Если развернуть плюсик у склада, вы увидите конкретные товары.

    Расширенные возможности: Диаграммы

    СКД умеет рисовать графики. Давайте добавим круговую диаграмму, показывающую долю каждого склада в общих запасах.

  • Вернитесь в Конфигуратор на вкладку Настройки.
  • Нажмите правой кнопкой на корень Отчет Новая диаграмма.
  • В структуре (слева) появится слово «Диаграмма».
  • У диаграммы есть три важные зоны (точки, серии и значения): * Серии (то, что различается цветом): Добавьте сюда поле Склад. * Точки (подписи): Можно оставить пустым для круговой диаграммы. * Значения (размер секторов): Перейдите на вкладку «Выбранные поля» (для диаграммы) и добавьте КоличествоОстаток.

    Запустите отчет снова. Теперь под таблицей вы увидите красочную диаграмму.

    Почему СКД — это стандарт?

    В современной разработке на 1С отчеты создаются только на СКД. Ручное программирование вывода в макет (как это делали в Excel-стиле 15 лет назад) считается дурным тоном и устаревшей практикой.

    Преимущества СКД:

  • Скорость разработки: Отчет создается за 5 минут.
  • Гибкость для пользователя: Пользователь может сам в режиме Предприятия нажать «Изменить вариант» и поменять группировки местами (например, сначала Товар, потом Склад), добавить свои фильтры или раскрасить строки цветом. И вам не нужно для этого переписывать программу.
  • Производительность: СКД умеет оптимизировать запросы к базе данных.
  • Итоги четвертого дня

    Сегодня мы замкнули цикл обработки данных:

  • Мы узнали, что такое Схема Компоновки Данных.
  • Научились определять Ресурсы для расчета итогов.
  • Настроили Группировки и Отборы.
  • Создали полноценный аналитический отчет с диаграммой без единой строчки кода.
  • Теперь наша система умеет не только хранить данные, но и помогать принимать управленческие решения.

    Завтра, в финальный пятый день, мы займемся «наведением лоска». Мы спроектируем удобный Рабочий стол для пользователя, разберемся с Подсистемами и правами доступа, чтобы превратить наши наработки в законченный программный продукт.

    5. Основы встроенного языка, отладка кода и клиент-серверная архитектура

    Основы встроенного языка, отладка кода и клиент-серверная архитектура

    Поздравляю! Вы добрались до финала. Сегодня пятый, завершающий день курса «1С-разработчик за 5 дней».

    За прошедшие четыре дня мы проделали огромную работу: спроектировали базу данных, настроили учет товаров, научились писать запросы и создавать красивые отчеты. У вас уже есть работающая программа. Но чтобы стать настоящим профессионалом, нужно заглянуть «под капот».

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

    Клиент-серверная архитектура

    Начинающие разработчики часто сталкиваются с ошибкой: пишут код, а Платформа ругается: «Переменная не определена» или «Метод недоступен». Хотя в другой части программы этот же код работал. Почему так происходит?

    Все дело в Клиент-серверной архитектуре.

    Аналогия с рестораном

    Представьте, что 1С — это большой ресторан.

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

    Директивы компиляции

    В программном коде мы обязаны указывать системе, где именно должна выполняться конкретная процедура — в «зале» или на «кухне». Для этого используются инструкции, начинающиеся с амперсанда &.

    * &НаКлиенте (&AtClient) — код выполняется на компьютере пользователя. Здесь мы можем: показать сообщение, открыть форму, задать вопрос, произвести простые вычисления. Здесь нельзя: обращаться к Справочникам, Документам и Запросам. * &НаСервере (&AtServer) — код выполняется на сервере. Здесь доступна вся мощь 1С: чтение и запись базы данных, сложные расчеты. Здесь нельзя: выводить диалоговые окна и взаимодействовать с интерфейсом напрямую.

    Пример правильного вызова

    Допустим, мы хотим по нажатию кнопки найти цену товара. Кнопка нажимается на Клиенте, но цена лежит в Базе (на Сервере).

    Если вы попытаетесь написать АктуальныйТовар.Цена внутри процедуры &НаКлиенте, система выдаст ошибку, так как объектная модель базы данных недоступна на клиенте (чтобы не гонять гигабайты данных по сети).

    Стоимость вызова сервера

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

    Формула общего времени выполнения операции выглядит так:

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

    Правило: Старайтесь минимизировать . Лучше сходить на сервер один раз и принести все данные сразу, чем бегать в цикле.

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

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

    Переменные и Типизация

    1С — язык с динамической типизацией. Это значит, что нам не нужно заранее объявлять, что переменная А — это число. Она может быть числом сейчас, а через строчку стать строкой.

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

    Циклы

    В 1С есть несколько видов циклов, но самый популярный — Для Каждого (For Each). Он идеально подходит для обхода таблиц, массивов и выборок.

    Процедуры и Функции

    В чем разница? Функция всегда что-то возвращает (командой Возврат). Она отвечает на вопрос. Пример: «Сколько времени?» -> «12:00»*. Процедура просто выполняет действие и ничего не возвращает. Пример: «Закрой дверь»* -> (Дверь закрыта).

    Отладка кода: охота на ошибки

    Даже опытные программисты делают ошибки. Это нормально. Умение исправлять их — главный навык разработчика.

    В 1С встроен мощный Отладчик.

    Точка останова (Breakpoint)

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

  • Откройте модуль с кодом.
  • Дважды щелкните на серой полосе слева от нужной строки (или нажмите F9). Появится красная точка.
  • Запустите режим Предприятия в режиме отладки (F5).
  • Выполните действие (нажмите кнопку). Программа «зависнет», а вас перебросит в Конфигуратор.
  • Теперь вы внутри «Матрицы». Вы можете навести курсор на любую переменную и увидеть её текущее значение.

    Табло и пошаговое выполнение

    Внизу экрана есть окно Табло. Вы можете перетащить туда любую переменную или даже написать выражение (например, Товар.Цена * 2), и система покажет результат.

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

    !Интерфейс отладчика 1С: точки останова и просмотр значений переменных

    Подсистемы: наводим порядок

    Сейчас все наши справочники и документы свалены в кучу. Пользователю неудобно. Давайте создадим красивое меню.

    В 1С за интерфейс отвечают Подсистемы.

  • В дереве метаданных найдите ветвь Общие -> Подсистемы.
  • Добавьте новую: Закупки.
  • На вкладке Состав отметьте галочками: Документ ПриходнаяНакладная, Справочник Номенклатура, Отчет ОстаткиТоваров.
  • Добавьте вторую подсистему: Продажи.
  • Включите в неё: Документ РасходнаяНакладная, Справочник Контрагенты.
  • Запустите Предприятие. Вы увидите, что вместо общего списка у вас появился красивый интерфейс «Такси» с желтыми панелями разделов слева или сверху.

    Финал курса

    Поздравляю! За 5 дней вы прошли путь от установки пустой платформы до создания рабочей учетной системы.

    Чему вы научились:

  • Понимать архитектуру 1С (Платформа vs Конфигурация).
  • Проектировать данные (Справочники, Документы).
  • Вести учет (Регистры накопления).
  • Получать данные (Запросы и СКД).
  • Писать и отлаживать код (Встроенный язык).
  • Это только начало. Мир 1С огромен: интеграции с сайтами, мобильные приложения, сложные налоговые расчеты. Но фундамент у вас уже есть. Практикуйтесь, читайте документацию и не бойтесь экспериментировать!

    Удачи в разработке!