Новый документ в 1С 8.3: от строки в дереве метаданных до первого проведения

· 9 мин

Содержание

Чтобы создать документ в конфигураторе 1С, откройте конфигурацию (Конфигурация → Открыть конфигурацию), в дереве метаданных щёлкните правой кнопкой по ветке «Документы» и выберите «Добавить». Откроется окно редактирования объекта: в нём задают имя, реквизиты, табличные части, нумерацию, регистры для движений и формы. Затем пишут процедуру проведения в модуле объекта, выдают права в ролях и обновляют конфигурацию базы данных клавишей F7.

Порядок общий для платформы 8.3 и не зависит от конфигурации: так же документ создаётся и в пустой учебной базе, и в доработанной Бухгалтерии. Разница только в том, где вы его создаёте. В типовой конфигурации на поддержке новый объект лучше добавлять в расширение, а не в основную конфигурацию.

Подготовка: где создавать документ и что продумать заранее

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

  • 🗂 Где хранить доработку. В своей конфигурации — прямо в основной. В типовой (БП 3.0, ЗУП 3.1, УТ 11) — в расширении: собственные документы в расширениях поддерживают актуальные версии платформы, и обновления типовой не затрут вашу работу. Добавление в основную конфигурацию требует включить возможность изменения и усложняет каждое обновление.
  • 📐 Что документ фиксирует. Шапка — то, что одно на весь документ (организация, контрагент, склад). Табличная часть — то, что повторяется строками (товары, сотрудники, услуги).
  • 📊 Какие регистры он двигает. Документ без движений — просто карточка с номером и датой. Если нужны остатки или обороты, регистр накопления лучше создать до документа: тогда его можно сразу отметить на закладке «Движения».

Перед изменением рабочей базы сделайте выгрузку (Администрирование → Выгрузить информационную базу, файл .dt) или копию каталога файловой базы. Обновление структуры базы данных необратимо без резервной копии.

Шаг 1. Добавляем документ в дерево метаданных

  1. Запустите базу в режиме «Конфигуратор» и откройте конфигурацию через Конфигурация → Открыть конфигурацию. Для расширения — Конфигурация → Расширения конфигурации, выберите нужное и откройте его.
  2. Найдите в дереве ветку «Документы», щёлкните правой кнопкой → «Добавить». То же делает клавиша Insert при выделенной ветке.
  3. В открывшемся окне на закладке «Основные» заполните имя, синоним и комментарий.

Имя — идентификатор для кода, без пробелов и с заглавными буквами внутри: ПоступлениеМатериалов. Синоним — то, что видит пользователь: «Поступление материалов». Платформа сама подставляет синоним из имени, разбивая его по заглавным буквам, но проверьте результат.

Для понятного интерфейса заполните ещё два поля на этой же закладке:

ПолеПримерГде видно пользователю
Представление объектаПоступление материаловЗаголовок формы документа
Представление спискаПоступления материаловЗаголовок формы списка и команда в разделе

Если документ создаётся в расширении, платформа добавит к имени префикс расширения (например, Расш1_). Префикс задают в свойствах расширения один раз — поменяйте его на осмысленный до того, как создадите первые объекты.

Шаг 2. Основные свойства документа: подсистемы, нумерация, проведение

Подсистемы

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

Нумерация

Закладка «Нумерация» определяет, как документу присваивается номер.

  • 🔢 Тип номера — Строка или Число. Строковый номер позволяет добавлять префикс организации или узла обмена, поэтому типовые конфигурации используют именно его.
  • 📏 Длина номера — сколько символов отводится под номер вместе с префиксом. Короткая длина быстро кончается: при длине 5 и префиксе из двух символов остаётся три цифры, то есть 999 документов.
  • 📅 Периодичность — в пределах чего номер уникален: непериодический, в пределах года, квартала, месяца или дня. Для первичных документов чаще всего выбирают «В пределах года».
  • ✅ Контроль уникальности и Автонумерация — оставьте включёнными, если нет особой причины.

Если несколько видов документов должны идти в одной сквозной нумерации, создайте в ветке «Общие» объект «Нумератор» и укажите его в поле «Нумератор».

Проведение

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

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

В этом же списке отметьте регистры, по которым документ будет делать записи. Отмеченный регистр получает документ в качестве регистратора, а у документа появляется коллекция Движения.<ИмяРегистра>.

Шаг 3. Реквизиты и табличные части документа

Перейдите на закладку «Данные». Стандартные реквизиты — Номер, Дата, Проведен, ПометкаУдаления, Ссылка — создавать не нужно, они есть у любого документа.

Реквизиты шапки

Добавьте реквизиты кнопкой «Добавить» над списком «Реквизиты». Для каждого в палитре свойств (Alt+Enter) задайте:

  • 🏷 Тип — ссылка на справочник (СправочникСсылка.Контрагенты), число с длиной и точностью, строка, дата, булево. Если реквизит может хранить значения разных типов, отметьте «Составной тип данных».
  • ⚠️ Проверка заполнения — «Выдавать ошибку», если без значения документ записывать нельзя. Платформа сама проверит поле и выведет сообщение.
  • 🔗 Связи параметров выбора — например, договор выбирается только по указанному контрагенту.

Табличная часть

Кнопка «Добавить табличную часть», затем внутри неё — реквизиты строк. Для поступления материалов типовой набор такой:

РеквизитТипКомментарий
НоменклатураСправочникСсылка.НоменклатураПроверка заполнения: выдавать ошибку
КоличествоЧисло (15, 3)Три знака после запятой — для кг и метров
ЦенаЧисло (15, 2)
СуммаЧисло (15, 2)Пересчитывается в форме или в модуле

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

Длину числовых реквизитов задавайте с запасом сразу. Увеличить её потом можно, но это перестроение таблицы при обновлении структуры, а на большой базе оно идёт долго.

Шаг 4. Формы документа: основная, списка и выбора

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

  1. Откройте закладку «Формы» и нажмите кнопку с лупой (или «Добавить») рядом со строкой «Документа».
  2. В конструкторе формы выберите тип «Форма документа» и отметьте, какие реквизиты и табличные части вывести.
  3. Нажмите «Готово». Форма появится в ветке документа и станет основной.

Таким же образом создаются форма списка и форма выбора. Форма списка позволяет добавить колонки «Контрагент» и «Сумма», которых нет в автоматическом списке.

В открытой форме основной реквизит называется Объект — это данные документа. Чтобы пересчитывать сумму в строке, выделите в элементах формы поле «Количество» табличной части, в палитре свойств найдите событие «ПриИзменении» и создайте обработчик:

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
	ТекСтрока = Элементы.Товары.ТекущиеДанные;
	ТекСтрока.Сумма = ТекСтрока.Количество * ТекСтрока.Цена;
КонецПроцедуры

Тот же обработчик назначьте и полю «Цена». Директива &НаКлиенте здесь уместна: расчёт простой и не требует обращения к базе.

Шаг 5. Модуль документа: проведение, заполнение, проверки

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

Обработка проведения

Самый быстрый путь — кнопка «Конструктор движений» на закладке «Движения». Он сопоставит поля регистра и документа и сгенерирует процедуру. Вот как выглядит результат для регистра остатков с измерением «Номенклатура» и ресурсом «Количество»:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

	Движения.ОстаткиМатериалов.Записывать = Истина;

	Для Каждого ТекСтрока Из Товары Цикл
		Движение = Движения.ОстаткиМатериалов.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период = Дата;
		Движение.Склад = Склад;
		Движение.Номенклатура = ТекСтрока.Номенклатура;
		Движение.Количество = ТекСтрока.Количество;
	КонецЦикла;

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

Флаг Записывать = Истина говорит платформе записать набор движений после завершения процедуры. Явно вызывать Записать() не нужно, если в свойствах документа выбран режим записи движений «Записывать выбранные».

Другие частые обработчики

ОбработчикКогда срабатываетДля чего
ОбработкаЗаполненияНовый документ, ввод на основанииПодставить склад, организацию, строки из документа-основания
ОбработкаПроверкиЗаполненияПеред записью при проверкеСвои проверки сверх флага «Выдавать ошибку»
ПередЗаписьюПеред каждой записьюПересчитать итоговую сумму документа
ПриКопированииКопирование документаОчистить поля, которые не должны переноситься

Пример итоговой суммы в ПередЗаписью:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры

Здесь СуммаДокумента — реквизит шапки типа Число (15, 2), который нужно заранее создать на закладке «Данные».

Для отказа от проведения при нехватке остатков установите Отказ = Истина и выведите сообщение через Сообщить() или объект СообщениеПользователю. Проведение откатится целиком, частично записанных движений не останется.

Шаг 6. Права, обновление базы и отладка нового документа

Права в ролях

Новый документ по умолчанию не виден никому, кроме ролей с флагом «Устанавливать права для новых объектов». Откройте нужную роль в ветке Общие → Роли, найдите документ и отметьте права: чтение, добавление, изменение, проведение, отмена проведения, интерактивные действия. Есть второй путь — закладка «Права» в окне самого документа: там видно все роли сразу.

Обновление конфигурации базы данных

Нажмите F7 или выберите Конфигурация → Обновить конфигурацию базы данных. Платформа покажет список изменений структуры — проверьте, что в нём нет ничего лишнего, и примите. Если в базе работают пользователи, обновление может потребовать монопольного доступа или динамического обновления; лучше делать это в нерабочее время.

Отладка

Перед запуском проверьте код: Ctrl+F7 выполняет синтаксический контроль открытого модуля, а Конфигурация → Проверка конфигурации ищет ошибки во всей конфигурации. Затем:

  1. Поставьте точку останова на строке Для Каждого ТекСтрока Из Товары Цикл клавишей F9.
  2. Нажмите F5 (Отладка → Начать отладку) — откроется 1С:Предприятие в режиме отладки.
  3. Создайте документ, заполните строки и нажмите «Провести».
  4. Выполнение остановится в конфигураторе. Шагайте F10 (без захода в процедуры) или F11 (с заходом), а значения переменных смотрите в табло или наведением курсора.

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

Документ готов к передаче пользователям
Выполнено: 0 / 6

Частые ошибки и как их избежать

Диагностика: выберите симптом

Частые вопросы

Можно ли создать документ без программирования?
Да. Документ с реквизитами, табличной частью и автоматическими формами создаётся без строчки кода. Код нужен, только если документ проводится по регистрам, но и его генерирует конструктор движений.
Чем документ отличается от справочника?
У документа есть дата и номер, он привязан ко времени и может проводиться, то есть менять остатки и обороты. Справочник хранит постоянные сведения: товары, контрагентов, сотрудников.
Как переименовать документ, если в базе уже есть данные?
Измените имя в свойствах и обновите конфигурацию базы данных: данные сохранятся. Но все обращения к старому имени в коде, запросах и других объектах придётся исправить, иначе проверка конфигурации выдаст ошибки.
Можно ли добавить документ в типовую конфигурацию без снятия с поддержки?
Да, через расширение конфигурации. Документ в расширении хранит свои данные и переживает обновления типовой.
Как сделать ввод нового документа на основании другого?
На закладке «Ввод на основании» укажите документы-основания, затем в модуле объекта заполните процедуру ОбработкаЗаполнения: параметр ДанныеЗаполнения содержит ссылку на основание.