Первый шаг в 1С — абсолютно бесплатно.

📋 Урок 6.1

Печатные формы: чтобы документ можно было подписать

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

Что такое печатная форма

Печатная форма — это макет, по которому 1С строит документ для печати. Макет — это таблица, где расставлены области: заголовок, шапка, строки, подвал.

Печатные формы могут быть:

Внешние — живут в отдельном файле, как обработки.

Встроенные — внутри конфигурации, привязаны к документу.

Мы сделаем встроенную.

Шаг 1. Создаём макет

В дереве конфигурации разверните документ «ПоступлениеТоваров».

Найдите ветку «Макеты» → «Добавить».

Имя: Накладная.

Тип макета: «Табличный документ».

Нажимаем «Готово».

 

Откроется редактор табличного документа — что-то вроде Excel, только для 1С.

Шаг 2. Рисуем макет

В левой части редактора — панель областей. Нужно создать несколько:

Заголовок — название документа.

Шапка — дата, номер, контрагент.

ШапкаТаблицы — заголовки колонок.

Строка — одна строка с товаром.

Подвал — итог.

 

Как создать область: выделите нужные ячейки → меню «Таблица» → «Имена» → «Назначить имя» → введите имя.

 

Что рисовать:

Заголовок «Накладная № [Номер] от [Дата]»

Шапка «Контрагент: [Контрагент]»

ШапкаТаблицы «№», «Товар», «Количество», «Цена», «Сумма»

Строка «[НомерСтроки]», «[Товар]», «[Количество]», «[Цена]», «[Сумма]»

Подвал «Итого: [Итого]»

 

В квадратных скобках — параметры, которые 1С заменит на реальные данные.

Шаг 3. Пишем код печати

У документа есть модуль объекта, где мы уже писали проведение. Добавим туда процедуру печати:

Процедура Печать(ТабДок, Ссылка) Экспорт

Макет = Документы.ПоступлениеТоваров.ПолучитьМакет("Накладная");

// Заголовок

Область = Макет.ПолучитьОбласть("Заголовок");

Область.Параметры.Номер = Ссылка.Номер;

Область.Параметры.Дата = Ссылка.Дата;

ТабДок.Вывести(Область);

// Шапка

Область = Макет.ПолучитьОбласть("Шапка");

Область.Параметры.Контрагент = Ссылка.Контрагент;

ТабДок.Вывести(Область);

// Шапка таблицы

Область = Макет.ПолучитьОбласть("ШапкаТаблицы");

ТабДок.Вывести(Область);

// Строки

НомерСтроки = 0;

Итого = 0;

Для Каждого Строка Из Ссылка.СписокТоваров Цикл

НомерСтроки = НомерСтроки + 1;

Область = Макет.ПолучитьОбласть("Строка");

Область.Параметры.НомерСтроки = НомерСтроки;

Область.Параметры.Товар = Строка.Товар;

Область.Параметры.Количество = Строка.Количество;

Область.Параметры.Цена = Строка.Цена;

Область.Параметры.Сумма = Строка.Сумма;

ТабДок.Вывести(Область);

Итого = Итого + Строка.Сумма;

КонецЦикла;

// Подвал

Область = Макет.ПолучитьОбласть("Подвал");

Область.Параметры.Итого = Итого;

ТабДок.Вывести(Область);

КонецПроцедуры

Шаг 4. Добавляем команду печати

Чтобы пользователь мог нажать кнопку «Печать»:

В дереве документа найдите ветку «Команды» → «Добавить».

Имя: Печать.

Заголовок: Накладная.

В свойствах команды укажите «Действие» → создайте обработчик:

&НаКлиенте

Процедура Печать(Команда)

ТабДок = Новый ТабличныйДокумент;

ПечатьНаСервере(ТабДок);

ТабДок.Показать("Накладная");

КонецПроцедуры

&НаСервере

Процедура ПечатьНаСервере(ТабДок)

Печать(ТабДок, Ссылка);

КонецПроцедуры

Что происходит:

На клиенте создаём табличный документ.

На сервере вызываем нашу процедуру Печать, которая заполняет его.

Показываем пользователю.

Шаг 5. Проверяем

Сохраняем, обновляем базу (F7), запускаем (F5).

Открываем любой проведённый документ «Поступление товаров».

Жмём кнопку «Накладная» — открывается печатная форма. 🎉

Если что-то не так — чаще всего проблема в макете: неправильно названы области или параметры. Проверьте, что имена в коде и в макете совпадают.

Мини-итог

Сегодня вы:

Узнали, что такое печатная форма и макет.

Создали табличный макет с областями.

Написали код печати с перебором строк.

Добавили команду в документ и разделили её на клиент и сервер.

Получили работающую накладную.

📋 Урок 6.2

Регламентные задания: пусть работает само

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

 

Что такое регламентное задание

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

В 1С за это отвечает объект конфигурации «Регламентные задания» и «Общие модули» — код, доступный из любого места.

Шаг 1. Создаём общий модуль

В дереве найдите «Общие модули» → «Добавить».

Имя: РегламентныеОперации.

В свойствах модуля поставьте галочку «Сервер» (код будет выполняться на сервере).

Откройте модуль и напишите:

Процедура ОбновитьЦены() Экспорт

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Товары.Ссылка

|ИЗ

| Справочник.Товары КАК Товары

|ГДЕ

| Товары.ВНаличии = ИСТИНА";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Товар = Выборка.Ссылка.ПолучитьОбъект();

Товар.Цена = Товар.Цена * 1.01; // Инфляция, однако 😄

Товар.Записать();

КонецЦикла;

ЗаписьЖурналаРегистрации(

"РегламентныеОперации",

УровеньЖурналаРегистрации.Информация,

,

,

"Цены обновлены: " + ТекущаяДата()

);

КонецПроцедуры

Шаг 2. Создаём регламентное задание

В дереве найдите «Регламентные задания» → «Добавить».

Имя: ОбновлениеЦен.

В свойствах:

Метод: РегламентныеОперации.ОбновитьЦены.

Использование: Использовать.

Шаг 3. Настраиваем расписание

В свойствах задания нажмите на «Расписание».

Выберите периодичность: например, «Дни» → «Каждый день».

Время: 06:00:00.

Сохраняем.

Шаг 4. Запускаем в пользовательском режиме

* Обновляем базу (F7), запускаем (F5).

* «Все функции» → «Регламентные задания».

* Находим наше задание, жмём «Выполнить сейчас» — чтобы проверить, что оно работает.

 

Если всё хорошо — цены обновятся, а в журнале регистрации появится запись.

 

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

Мини-итог

Сегодня вы:

Узнали, что такое регламентное задание.

Создали общий модуль с серверной процедурой.

Настроили расписание выполнения.

Запустили задание вручную и проверили результат.

Познакомились с журналом регистрации — важным инструментом отладки.

Итог всего блока

За эти четыре урока вы освоили:

Запросы — язык общения с базой.

Обработки — инструменты для разовых задач.

Печатные формы — вывод документов на бумагу.

Регламентные задания — автоматизацию по расписанию.

 

Теперь вы умеете практически всё, что делает 1С-разработчик в ежедневной работе. Осталось наработать скорость и глубину. А это — только практика.