👨💼 Освойте программирование в 1С за 60 минут: самоучитель для начинающих
Попробуйте себя в роли автоматизатора бизнес-процессов предприятия. На простом примере всего за час вы освоите базовые концепции программирования в 1С и поймете, что именно отличает «1С: Предприятие» от других систем разработки.
В 1С подход иной. Сначала вы приобретаете платформу 1С: Предприятие у фирмы “1С” или ее партнера. Затем покупаете одно из прикладных решений – конфигурацию. Ее вы можете использовать “как есть”, вносить свои доработки, чтобы адаптировать под специфику бизнеса, либо разработать собственную конфигурацию с нуля. Это похоже на прослушивание пластинок с помощью проигрывателя. Достаточно иметь одну платформу (проигрыватель) “1С: Предприятие”, – и можно разрабатывать или использовать любые конфигурации (пластинки), будь то “1С: Бухгалтерия предприятия”, “1С: Управление торговлей” или собственное решение. И также, как пластинка без проигрывателя – всего лишь кусок пластика, так и конфигурацией вы никак не сможете воспользоваться, не имея платформы 1С.
Разработка начинается с конфигуратора
В этой статье я исхожу из того, что у вас уже есть 1С-ка и вы используете для работы конфигурацию “Бухгалтерия предприятия”. После запуска 1С: Предприятия всегда сначала открывается Окно запуска 1С.
Кнопка “Конфигуратор” перенесет вас в среду разработки – главное окно конфигуратора. И первое, что необходимо сделать, – это открыть конфигурацию. Зайдите в меню “Конфигурация – Открыть конфигурацию” или нажмите соответствующую кнопку в панели инструментов, и дождитесь открытия окна дерева метаданных.
Итак, мы находимся в главном окне конфигуратора – рабочей среде программиста 1С. Давайте осмотримся на местности.
Верхняя часть окна – меню и панели инструментов – достаточно типичная и останавливаться на них не будем. О предназначении отдельных команд будем говорить по мере необходимости в их использовании.
Главный инструмент разработчика – это окно Конфигурация, открытое слева. Еще его называют дерево метаданных. Это описание всей структуры вашей базы, с указанием структуры каждого отдельного объекта, правил взаимодействий объектов между собой, настройками интерфейсов, прав доступа и много другого. Каждый элемент дерева имеет свою специфику использования и набор инструментов для работы с ним. Так, если дважды щелкнуть по любому справочнику или документу, то откроется окно редактирования объекта (рис. 3), а если выбрать в контекстном меню пункт Свойства, справа появится панель свойств текущего объекта. Это второй основной инструмент разработчика, с которым он взаимодействует чаще всего. На рисунке 4 представлен пример рабочей среды с открытой панелью свойств.
Задача на разработку: создание реестра счетов-фактур
У вас уже есть платформа 1С: Предприятие и установленная на ней конфигурация “1С: Бухгалтерия предприятия”. И теперь руководитель ставит перед вами задачу выполнить разработку нового функционала. В реальной жизни происходит примерно то же самое: на предприятии установлено некое типовое решение, но со временем появляется потребность адаптировать функционал конфигурации под специфику учета конкретного предприятия. Этим и займемся.
Ваша задача – разработать реестр счетов-фактур – вывести список документов, отобранный и отсортированный по определенным правилам.
Такая задача перед вами вряд ли встанет в процессе профессиональной деятельности, но в рамках настоящего самоучителя поможет сориентироваться в базовых подходах и познакомиться с основными приемами разработки на 1С.
Создание внешнего отчета
Существует три фундаментальных подхода к внесению доработок в 1С:
- Внешние отчеты и обработки. Используются, как правило, для реализации разовых сервисных задач. Отчет/обработка – это отдельный внешний файл, который можно открыть в режиме использования 1С через меню Файл – Открыть и выполнить заложенную в него функцию. При этом сама конфигурация остается нетронутой;
- Внесение изменений непосредственно в конфигурацию. Наиболее часто используемый подход при адаптации типовых решений. Конфигурация снимается с полной поддержки поставщика, и разработчик может вносить доработки непосредственно в объекты самой конфигурации. При этом появляется дополнительная необходимость в поддержке конфигурации при ее обновлении на новые версии поставщиком;
- Разработка расширений. Это возможность расширить функционал конфигурации, не снимая ее с поддержки, с помощью дополнительно устанавливаемых “плагинов”, или “патчей”. Относительно молодая технология, которая стремительно набирает обороты и с каждой новой версией платформы предоставляет все больше возможностей.
Воспользуемся самым простым вариантом и создадим внешний отчет “Реестр счетов-фактур”. Для этого в меню “Файл” выбираем пункт “Новый” и создаем новый внешний отчет (рисунок 5).
В графе “Имя” напишите РеестрСчетовФактур, синоним будет присвоен автоматически, исправьте его на “Реестр счетов-фактур”. В поле “Форма отчета” нажмите кнопку открытия (с изображение лупы), откроется конструктор новой формы. Нажмите кнопку Готово, новая форма будет создана и открыта для редактирования.
Редактор формы
Обзор редактора формы
Открывшийся редактор формы – это комплексный инструмент для разработки и программирования поведения формы. Состоит он из двух основных разделов: собственно редактора формы и модуля формы, где находится код на языке программирования 1С, отвечающий за поведение формы и взаимодействие с пользователем. Переключение между этими режимами осуществляется с помощью вкладок внизу окна редактора.
Визуальный редактор формы состоит из нескольких областей:
- Область управления контентной частью формы (вверху справа). Отсюда начинается разработка формы – перечисляются реквизиты и команды, необходимые для размещения и управления информацией;
- Область структуры элементов (вверху слева). Здесь находится перечень всех элементов формы и их структура размещения в виде дерева. Эта часть отвечает за то, как форма будет выглядеть, и за какие “ниточки” нужно потянуть, чтобы получить от нее желаемое поведение;
- Область визуального представления (внизу). Представление того, какой эту форму будет видеть пользователь.
Для формирования реестра нам понадобится:
- Выбор периода, за который формируется реестр;
- Отбор по организации;
- Кнопка формирования отчета;
- Область вывода отчета.
Реквизиты формы
- На вкладке “Реквизиты” создайте новый элемент, дайте ему имя ПериодОтчета и задайте тип СтандартныйПериод.
- Теперь с помощью мыши перетащите новый реквизит в левую область, на вкладку Элементы. При этом период отобразится на форме в нижней части редактора.
- Двойным щелчком по элементу откройте его свойства, и для свойства АвтоОтметкаНезаполненного укажите значение “Да”. Период на форме будет подчеркнут красным пунктиром, который появляется в случае, когда период не заполнен. Это – сигнал пользователю о том, что реквизит является обязательным, и без его заполнения отчет не сформируется.
- Добавьте второй реквизит с именем Организация и типом СправочникСсылка.Организации. По аналогии разместите его на форме, только вместо свойства АвтоОтметкаНезаполненного установите свойство КнопкаОчистки в значение “Да”. У элемента Организация появится кнопка очистки в виде крестика. То есть, отчет можно будет сформировать как с отбором по определенной, выбранной, организации, так и с пустым значением этого поля. или по всем организациям базы данных.
- И наконец добавьте третий реквизит формы ПолеОтчета с типом ТабличныйДокумент, разместите его на форме и установите свойство ПоложениеЗаголовка в значение “Нет”. В это поле мы и будем выводить наш отчет.
- Чтобы проверить, как форма будет выглядеть для пользователя, нажмите кнопку Проверка в командной панели области элементов. Форма должна иметь вид, представленный на рисунке 10.
Основная компоновка формы завершена, но остался еще один важный элемент – кнопка, по нажатию на которую должно все произойти. Исправим этот недостаток.
Команды формы
Откройте вкладку Команды и создайте новый элемент. Задайте новой команде имя Сформировать, присвойте картинку СформироватьОтчет из библиотеки стандартных картинок, а свойству Отображение задайте значение “Картинка и текст”.
Чтобы разместить кнопку на форме, перетащите ее на элемент “Командная панель” во вкладке Элементы и включите для созданного элемента “Кнопка” свойство КнопкаПоУмолчанию. Отображение кнопки на форме вы сразу не увидите, это связано с тем, что по умолчанию главная командная панель формы отключена. Зайдите в панель свойств самой формы (корневой элемент “Форма” во вкладке Элементы), и для свойства ОтображениеКоманднойПанели установите значение “Авто”.
В завершение конструирования формы создадим обработчик для нашей команды. Обработчик связывает элемент формы – или какое-либо действие над элементом – с кодом программы.
Откройте панель свойств команды и рядом со свойством Действие нажмите кнопку открытия. Среди предложенных вариантов обработчиков выберите “Создать на клиенте и процедуру на сервере” и нажмите ОК. После этого активируется редактор модуля формы, где уже заготовлена процедура для реализации алгоритма действия команды.
Проверка формы в режиме “1С: Предприятие”
Преимущество разработки внешних отчетов – это возможность быстро посмотреть результат работы в “боевом” режиме. Для этого достаточно только сохранить новые изменения в файле, без необходимости обновлять и перезапусткать информационную базу.
Сохраните результаты своей работы (меню Файл – Сохранить). Файл внешнего отчета 1С имеет расширение .erf.
Запустите “Бухгалтерию предприятия” в пользовательском режиме, если она еще не запущена. Сделать это можно прямо из конфигуратора, через меню Сервис – 1С: Предприятие. В открывшемся окне информационной базы зайдите в главное меню, выберите пункт Файл – Открыть… и откройте ваш внешний отчет. Сейчас можно проверить, как работает выбор периода и организации.
Окно пользовательского режима можно оставить открытым до конца разработки. Для последующего тестирования отчета достаточно будет записать изменения и в окне информационной базы закрыть и снова открыть внешний отчет.
Ваш первый код: собираем данные для отчета
Приступим к написанию кода на языке программирования 1С. Язык этот не сложный, в нем нет строгой типизации и он полностью русифицирован.
Редактирование кода формы происходит в модуле формы, которая находится на вкладке Модуль окна редактора формы. Здесь уже создана основа обработчика для кнопки “Сформировать”.
Клиент-серверное программирование логики
Как видно на рисунке 13, для разделения контекста выполнения процедуры используются директивы компиляции перед объявлением метода, начинающиеся с символа "&". Обработчики событий элементов формы активируются на стороне клиента. В нашем случае это процедура Сформировать(), в которой мы опишем проверку заполнения реквизитов формы и выдачу предупреждения пользователю. Здесь же вызывается серверная процедура СформироватьНаСервере(), в которой уже будем работать с данными таблиц базы, поскольку эти данные с клиента недоступны. Именно с этой целью на этапе создания обработчика мы выбрали вариант создания на клиенте с процедурой на сервере.
Первый код процедур
Напишите код клиентской процедуры Сформировать(), как показано ниже:
Если коротко, то здесь выполняется проверка на заполнение периода отчета на форме, и, если период не заполнен, то выводится предупреждение, и дальнейшее выполнение команды прекращается.
Теперь немного по конструкциям языка:
- Каждая команда языка заканчивается точкой с запятой;
- В одной строке может быть более одной команды, разделенных точкой с запятой;
- Одна команда может располагаться на нескольких строках, отдельные части можно разделять произвольным числом пробелов, табуляций и переносов строк.
Проверка условий в 1С выполняется с использованием ключевых слов Если… Тогда… КонецЕсли
. В общем случае синтаксис условия такой:
- Булева логика условий строится с использованием ключевых слов И,ИЛИ, НЕ.
- Обращение к реквизиту формы (ПериодОтчетав нашем примере) выполняется простым указанием имени реквизита.
- Специализированный тип данных СтандартныйПериод – это конструкция со свойствами ДатаНачала и ДатаОкончания, обращение к которым производится через точку.
- Проверку на заполнение значения переменной выполняем с помощью универсальной функции глобального контекста ЗначениеЗаполнено().
- Еще одна функция языка ПоказатьПредупреждение() отвечает за интерактивную выдачу предупреждения пользователю.
- Ключевое слово Возврат выполняет безусловный выход из процедуры, прекращая выполнение всего последующего кода этой процедуры.
- В серверной процедуре СформироватьНаСервере() будем выполнять обход всех документов вида “Счет-фактура выданный” за указанный период. Для обращения к коллекции документов платформы используется ключевое слово Документы, и через точку указывается вид документа так, как он задан в дереве метаданных. Кстати, перенести любой идентификатор из дерева метаданных в код модуля можно простым перетаскиванием мышью.
Код нашей серверной процедуры будет выглядеть следующим образом:
Думаю, назначение отдельных конструкций и команд понятно из комментариев.
Синтакс-помощник – путеводитель по языку программирования
Сам язык программирования 1С довольно простой, да мы по сути и разобрали его основной синтаксис. Гораздо больше в себе таит многообразие прикладных и специализированных конструкций, сориентироваться в которых на первых порах может быть непросто.
К счастью. в платформе 1С есть палочка-выручалочка программиста – синтакс-помощник, который открывается из меню Справка – Синтакс-помощник. А если интересует справка по конкретному методу, то встаньте на него в коде модуля и нажмите сочетание клавиш Ctrl+F1. Синтакс-помощник откроется на статье с описанием этого метода.
А как отчет будет выглядеть? Знакомимся с макетом
Для формирования визуального представления отчета в 1С используется специальный объект Макет, который содержит шаблоны отдельных составляющих будущего отчета. Из этих шаблонов, или областей макета, посредством программного кода, отчет собирается с помощью специализированного объекта языка программирования ТабличныйДокумент.
- Из основного окна внешнего отчета, на ветке структуры Макеты вызовите команду “Добавить” контекстного меню. Откроется Конструктор макета, в котором укажите имя “Реестр” и оставьте тип “Табличный документ”. После нажатия кнопки “Готово” откроется пустой макет, похожий на таблицу MS Excel.
- Работа с ячейками таблицы макета не должна вызвать затруднений, все настройки параметров и свойств выполняются все в той же Панели свойств.
- В первой ячейке первой строки напишите заголовок отчета “Реестр счетов-фактур”. Увеличьте шрифт и задайте полужирное начертание.
- В третьей строке дайте заголовки таблицы реестра в каждой отдельной ячейке столбца, в порядке: Дата, Номер, Контрагент, Сумма. Установите полужирное начертание и обведите контуры ячеек сплошной линией (рис. 18). Если выделить диапазон ячеек, то свойства можно менять для всех ячеек сразу.
- Теперь выделим оформленную шапку реестра в отдельную область, чтобы можно было к ней обращаться из кода программы. Для этого выделите строки шапки и нажмите кнопку Назначить имя в панели инструментов редактора макета. Задайте для области имя Шапка.
- Аналогично, четвертую строку выделите в отдельную область “Строка”, заполните ячейки строки теми же именами: Дата, Номер, Контрагент, Сумма. Установите свойство Заполнение этих ячеек в значение “Параметр”. Тем самым мы определили для области макета собственные параметры-ячейки, которые становятся доступны для заполнения из программного кода.
Внешний вид ячеек строки настройте на свое усмотрение. Для указания правил отображения даты и суммы используйте свойство Формат.
Выводим данные в табличный документ
Как я уже упоминал выше, для программного формирования отчета мы будем использовать специализированный объект языка программирования 1С ТабличныйДокумент. Объявим его создание в начале нашей процедуры и сохраним в отдельную переменную:
Для чтения данных из макета “Реестр” необходимо сначала получить программный объект этого макета:
Теперь в переменной Макет находится объект макета, через который можно обращаться к отдельным областям и параметрам. Получение и вывод шапки в отчет выполняют следующие команды:
Далее, в цикле выводим данные документа в строку, предварительно заполнив параметры через свойство области Параметры:
После завершения алгоритма переменная ТабДок содержит сформированную печатную форму, которую теперь можно представить пользователю. С этой целью мы создали на форме элемент ПолеОтчета. Присвоим полученный табличный документ реквизиту формы:
Полный текст процедуры:
Сохраните изменения во внешнем отчете и проверьте его работу в пользовательском режиме.
Итоги
Поздравляю! Ваш первый отчет на 1С готов. За этот час вы освоили довольно много материала:
- Познакомились с конфигуратором 1С: Предприятия;
- Создали новый внешний отчет;
- Освоили работу в редакторе формы;
- Разработали макет печатной формы;
- Научились получать данные документов, обрабатывать действия пользователя, работать с макетом и табличным документом с помощью языка программирования 1С.
И если вам интересно погрузитья в тонкости разработки, то вас ждет захватывающее путешествие в мир 1С. До новых встреч!
Если вы только собираетесь освоить платформу и хотите заниматься с практикующими профессионалами по систематизированной программе, обратите внимание на Факультет 1С-разработки от GeekBrains. Курс подойдет как начинающим программистам, так и пользователям системы 1С.
Онлайн-платформа гарантирует ваше трудоустройство после получения сертификата и сдачи экзамена.