Первый шаг в 1С — абсолютно бесплатно.
Печатные формы: чтобы документ можно было подписать Документы в 1С — это записи в базе. Но в реальной жизни документ нужно распечатать и подписать. Сегодня сделаем первую печатную форму — накладную для нашего «Поступления товаров». Что такое печатная форма Печатная форма — это макет, по которому 1С строит документ для печати. Макет — это таблица, где расставлены области: заголовок, шапка, строки, подвал. Печатные формы могут быть: Внешние — живут в отдельном файле, как обработки. Встроенные — внутри конфигурации, привязаны к документу. Мы сделаем встроенную. |
Шаг 1. Создаём макет В дереве конфигурации разверните документ «ПоступлениеТоваров». Найдите ветку «Макеты» → «Добавить». Имя: Накладная. Тип макета: «Табличный документ». Нажимаем «Готово».
Откроется редактор табличного документа — что-то вроде Excel, только для 1С. |
Шаг 2. Рисуем макет В левой части редактора — панель областей. Нужно создать несколько: Заголовок — название документа. Шапка — дата, номер, контрагент. ШапкаТаблицы — заголовки колонок. Строка — одна строка с товаром. Подвал — итог.
Как создать область: выделите нужные ячейки → меню «Таблица» → «Имена» → «Назначить имя» → введите имя.
Что рисовать: Заголовок «Накладная № [Номер] от [Дата]» Шапка «Контрагент: [Контрагент]» ШапкаТаблицы «№», «Товар», «Количество», «Цена», «Сумма» Строка «[НомерСтроки]», «[Товар]», «[Количество]», «[Цена]», «[Сумма]» Подвал «Итого: [Итого]»
В квадратных скобках — параметры, которые 1С заменит на реальные данные. |
Шаг 3. Пишем код печати У документа есть модуль объекта, где мы уже писали проведение. Добавим туда процедуру печати: Процедура Печать(ТабДок, Ссылка) Экспорт
Макет = Документы.ПоступлениеТоваров.ПолучитьМакет("Накладная");
// Заголовок Область = Макет.ПолучитьОбласть("Заголовок"); Область.Параметры.Номер = Ссылка.Номер; Область.Параметры.Дата = Ссылка.Дата; ТабДок.Вывести(Область);
// Шапка Область = Макет.ПолучитьОбласть("Шапка"); Область.Параметры.Контрагент = Ссылка.Контрагент; ТабДок.Вывести(Область);
// Шапка таблицы Область = Макет.ПолучитьОбласть("ШапкаТаблицы"); ТабДок.Вывести(Область);
// Строки НомерСтроки = 0; Итого = 0; Для Каждого Строка Из Ссылка.СписокТоваров Цикл НомерСтроки = НомерСтроки + 1; Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.НомерСтроки = НомерСтроки; Область.Параметры.Товар = Строка.Товар; Область.Параметры.Количество = Строка.Количество; Область.Параметры.Цена = Строка.Цена; Область.Параметры.Сумма = Строка.Сумма; ТабДок.Вывести(Область); Итого = Итого + Строка.Сумма; КонецЦикла;
// Подвал Область = Макет.ПолучитьОбласть("Подвал"); Область.Параметры.Итого = Итого; ТабДок.Вывести(Область);
КонецПроцедуры |
Шаг 4. Добавляем команду печати Чтобы пользователь мог нажать кнопку «Печать»: В дереве документа найдите ветку «Команды» → «Добавить». Имя: Печать. Заголовок: Накладная. В свойствах команды укажите «Действие» → создайте обработчик: &НаКлиенте Процедура Печать(Команда) ТабДок = Новый ТабличныйДокумент; ПечатьНаСервере(ТабДок); ТабДок.Показать("Накладная"); КонецПроцедуры &НаСервере Процедура ПечатьНаСервере(ТабДок) Печать(ТабДок, Ссылка); КонецПроцедуры Что происходит: На клиенте создаём табличный документ. На сервере вызываем нашу процедуру Печать, которая заполняет его. Показываем пользователю. |
Шаг 5. Проверяем Сохраняем, обновляем базу (F7), запускаем (F5). Открываем любой проведённый документ «Поступление товаров». Жмём кнопку «Накладная» — открывается печатная форма. 🎉 Если что-то не так — чаще всего проблема в макете: неправильно названы области или параметры. Проверьте, что имена в коде и в макете совпадают. |
Мини-итог Сегодня вы: Узнали, что такое печатная форма и макет. Создали табличный макет с областями. Написали код печати с перебором строк. Добавили команду в документ и разделили её на клиент и сервер. Получили работающую накладную. |
Регламентные задания: пусть работает само Последний урок этого блока — про автоматизацию по расписанию. В реальной работе многое должно происходить без участия человека: обновление курсов валют, рассылка отчётов, пересчёт статусов. Для этого в 1С есть регламентные задания.
Что такое регламентное задание Регламентное задание — это код, который выполняется по расписанию. Например: каждый день в 6 утра, каждый час, каждую пятницу в 18:00. В 1С за это отвечает объект конфигурации «Регламентные задания» и «Общие модули» — код, доступный из любого места. |
Шаг 1. Создаём общий модуль В дереве найдите «Общие модули» → «Добавить». Имя: РегламентныеОперации. В свойствах модуля поставьте галочку «Сервер» (код будет выполняться на сервере). Откройте модуль и напишите: Процедура ОбновитьЦены() Экспорт
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Товары.Ссылка |ИЗ | Справочник.Товары КАК Товары |ГДЕ | Товары.ВНаличии = ИСТИНА";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Товар = Выборка.Ссылка.ПолучитьОбъект(); Товар.Цена = Товар.Цена * 1.01; // Инфляция, однако 😄 Товар.Записать(); КонецЦикла;
ЗаписьЖурналаРегистрации( "РегламентныеОперации", УровеньЖурналаРегистрации.Информация, , , "Цены обновлены: " + ТекущаяДата() );
КонецПроцедуры |
Шаг 2. Создаём регламентное задание В дереве найдите «Регламентные задания» → «Добавить». Имя: ОбновлениеЦен. В свойствах: Метод: РегламентныеОперации.ОбновитьЦены. Использование: Использовать. |
Шаг 3. Настраиваем расписание В свойствах задания нажмите на «Расписание». Выберите периодичность: например, «Дни» → «Каждый день». Время: 06:00:00. Сохраняем. |
Шаг 4. Запускаем в пользовательском режиме * Обновляем базу (F7), запускаем (F5). * «Все функции» → «Регламентные задания». * Находим наше задание, жмём «Выполнить сейчас» — чтобы проверить, что оно работает.
Если всё хорошо — цены обновятся, а в журнале регистрации появится запись.
Важное замечание: для работы регламентных заданий нужен сервер 1С или хотя бы сеанс, который «висит» в фоне. В файловой версии (той, с которой мы работаем) это ограничение есть. Так что для полноценной работы — только серверная версия. Но создать и проверить задание можно и у нас. |
Мини-итог Сегодня вы: Узнали, что такое регламентное задание. Создали общий модуль с серверной процедурой. Настроили расписание выполнения. Запустили задание вручную и проверили результат. Познакомились с журналом регистрации — важным инструментом отладки. |
Итог всего блока За эти четыре урока вы освоили: Запросы — язык общения с базой. Обработки — инструменты для разовых задач. Печатные формы — вывод документов на бумагу. Регламентные задания — автоматизацию по расписанию.
Теперь вы умеете практически всё, что делает 1С-разработчик в ежедневной работе. Осталось наработать скорость и глубину. А это — только практика. |