Где пишется код при проведении документа в 1С?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Написание кода при проведении документа
Проведение документа — это критический процесс в 1С, где происходит регистрация информации в информационной базе и выполнение учётных операций. Код, выполняемый при проведении, должен быть размещён в определённых местах.
Основные места размещения кода
1. Модуль объекта документа (серверный код)
Это основное место для реализации логики проведения. Здесь размещаются процедуры обработки.
// В модуле объекта документа
Процедура ПриПроведении(Отмена, РежимПроведения)
// Основная логика проведения
// Заполнение движений
// Проверка корректности
// РежимПроведения может быть РежимПроведенияДокумента.Оперативный
КонецПроцедуры
2. Процедура ОбработкаПроведения
Это служебная процедура, которая автоматически вызывается платформой при проведении:
Процедура ОбработкаПроведения(Отмена)
// Этот код выполняется в момент проведения
// Можно добавлять движения документа
// Выполнять проверки
Движения.Товары.Запись();
Движения.Касса.Запись();
КонецПроцедуры
Процедуры с событиями проведения
ПериодПроведения — определяет, за какой период происходит проведение:
Процедура ПериодПроведения(ПериодУчёта) Экспорт
// Возвращает, за какой период проводится документ
ПериодУчёта = КонецМесяца(Дата);
КонецПроцедуры
НумераторПроведения — для установки последовательности проведения:
Процедура НумераторПроведения(ПоследовательностьПроведения) Экспорт
// Если требуется особый порядок
ПоследовательностьПроведения = 1;
КонецПроцедуры
Работа с движениями документа
Важный аспект кода проведения — регистрация движений:
Процедура ОбработкаПроведения(Отмена)
// Очистка старых движений
Движения.Товары.Очистить();
// Добавление новых движений
Для Каждого СтрокаТовара Из Товары Цикл
ДвижениеТовара = Движения.Товары.Добавить();
ДвижениеТовара.Период = Дата;
ДвижениеТовара.Товар = СтрокаТовара.Товар;
ДвижениеТовара.Количество = СтрокаТовара.Количество;
КонецЦикла;
Движения.Товары.Запись();
КонецПроцедуры
Проверка и откат
УстановкаУслРазбора — функция для проверки корректности:
Процедура ПроверкаПроведения(Отмена, АдресСоответствия)
// Проверка наличия всех необходимых данных
Если Товары.Количество() = 0 Тогда
Отмена = Истина;
ВызватьИсключение "Документ пуст";
КонецЕсли;
КонецПроцедуры
ОтменаПроведения — код для отката операций:
Процедура ОтменаПроведения(Отмена)
// Код выполняется при отмене проведения
// Движения автоматически откатываются
КонецПроцедуры
Режимы проведения
// Оперативное проведение (на толстом клиенте)
РежимПроведения = РежимПроведенияДокумента.Оперативный;
// Регламентное проведение (в фоновом задании)
РежимПроведения = РежимПроведенияДокумента.Регламентный;
Лучшие практики
Разделение ответственности:
- Логика проведения → модуль объекта документа
- Сложные расчёты → отдельные функции
- Проверки → процедура ПроверкаПроведения
Производительность:
- Минимизировать количество движений
- Использовать пакетную запись движений
- Избегать циклов в циклах
- Оптимизировать запросы к базе
Код проведения документа — критически важная часть конфигурации, так как именно здесь фиксируется хозяйственная информация и изменяется состояние данных в системе.