- •Документы
- •6.1. Документы и журналы документов
- •6.2. Структура документа
- •6.3. Экранные формы документа
- •6.4. Макеты документа
- •6.5. Проведение документов
- •Оперативная отметка времени
- •6.6. Модуль документа
- •Обращение к менеджеру документа
- •Выборка документов
- •6.7. Приемы программирования
- •Создание и проведение документа
- •Поиск документа
- •Удаление документа
- •Открытие форм документа
- •Работа с табличным частями
- •Движения документа
- •6.8. Нумерация документов
- •Нумераторы
- •Префиксы номеров
- •6.9. Журналы документов
- •Графы журнала
- •6.10. Последовательности
Создание и проведение документа
В 1С:Предприятии 8 можно программно создать, записать и провести документ. Для создания нового документа применяется метод СоздатьДокумент, который возвращает объект для записи типа ДокументОбъект. Через другие объекты и механизмы нельзя создать, изменить или удалить документ.
Следующий пример демонстрирует создание документа, его запись без проведения и запись с неоперативным проведением:
НовыйДок = Документы.Счет.СоздатьДокумент();
НовыйДок.Дата = Дата,
…
НовыйДок.Записать(); //обычная запись документа
//запись документа с неоперативным проведением
НовыйДок.Записать(РежимЗаписиДокумента.Проведение,
РежимПроведенияДокумента.Неоперативный);
Замечание. Программное проведение документа выполняется с помощью метода Записать с параметрами РежимЗаписиДокумента и РежимПроведенияДокумента.
Ниже приведены возможные значения параметров метода Записать:
Параметр «РежимЗаписиДокумента»:
• Запись (по умолчанию), /
• ОтменаПроведения,
• Проведение (в этом случае имеет смысл указывать второй параметр).
Параметр «РежимПроведенияДокумента»:
• Неоперативный (по умолчанию),
• Оперативный.
Поиск документа
Поиск документа по номеру производится методом НайтиПоНомеру. Этот метод возвращает ссылку на найденный документ или пустую ссылку, если документ не найден. Проверка на пустую ссылку производится методом Пустая():
ДокСсылка = Документы.Счет.НайтиПоНомеру("Сч1001");
Если ДокСсылка.Пустая() Тогда
Сообщить("Документ с данным номером не найден!");
КонецЕсли;
Если требуется отобрать множество документов с определенным значением реквизита, то можно применить метод Выбрать с указанием структуры отбора и затем обойти полученную выборку. Не забудьте, что у реквизита, по которому производится отбор, должен быть установлен в Конфигураторе флажок «Индексировать» (для даты документа можно считать, что он уже установлен).
Для выборки документов из базы данных по комбинированному условию, например, по нескольким полям, рекомендуется применять запросы (см. главу «Запросы»).
Удаление документа
Удаление документа производится с помощью объекта ДокументОбъект и только так. Другим способом удалить документ нельзя.
ДокСсылка = Документы.Счет.НайтиПоНомеру("Сч1001");
Если Не ДокСсылка.Пустая() Тогда
ДокОбъект = ДокСсылка.ПолучитьОбъект();
//1-й вариант пометки на удаление
//если документ был проведен, то он остается проведенным (!)
//движения документа по регистрам сохраняются (!)
ДокОбъект.ПометкаУдаления = Истина;
ДокОбъект.Записать();
//2-й вариант пометки на удаление
//если документ был проведен, то он делается непроведенным
//движения документа, по регистрам удаляются
ДокОбъект.УстановитьПометкуУдаления(Истина);
//непосредственное удаление объекта
//если документ был проведен, то движения по регистрам удаляются
ДокОбъект.Удалить();
КонецЕсли;
Замечание. При пометке на удаление методом
УстановитьПометкуУдаления проведенный документ делается непроведенным и движения документа по регистрам удаляются (если не установлено свойство документа «Удалять движения автоматически»). А при присвоении свойству ПометкаУдаления значения Истина для проведенного документа возникает ошибка «Проведенный документ не может быть помечен на удаление».
При непосредственном удалении документа контроль за удалением движений документа возлагается на разработчика.
