На следующей схеме изображено взаимодействие объектов встроенного языка для работы с документами.
// 1. Глобальный контекст
// Документы
// Пример: вывести все типы ссылок на элементы документов, существующие в конфигурации.
Массив = Документы.ТипВсеСсылки().Типы();
Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип);
КонецЦикла;
// 2. объект ДокументМенедежер
// .<имя документа>
// [<имя документа>]
// Для Каждого ... Из ... Цикл ... КонецЦикла;
// Пример: получить макет для печати документа "Оказание услуги".
Макет = Документы["ОказаниеУслуги"].ПолучитьМакет("Печать");
// Пример: получить ссылку на каждый из документов, существующих в конфигурации.
Для Каждого ОчереднойДокумент Из Документы Цикл
Ссылка = ОчереднойДокумент.ПолучитьСсылку();
...
КонецЦикла;
// 3. объект ДокументМенеджер.<Имя документа>
// НайтиПоНомеру()
// НайтиПоРеквизиту()
// ПустаяСсылка()
// Пример: проверить, проведен ли документ ПриходнаяНакладная с номером 3.
Если Документы.ПриходнаяНакладная.НайтиПоНомеру(3).Проведен Тогда
Сообщить("Документ с номером 3 проведен");
КонецЕсли;
// Пример: проверить, что во всех документах ПриходнаяНакладная заполнен реквизит Склад.
ПустаяСсылкаСклада = Справочники.Склады.ПустаяСсылка();
Если Не Документы.ПриходнаяНакладная.НайтиПоРеквизиту("Склад", ПустаяСсылкаСклада).Пустая() Тогда
Сообщить("Есть документы, у которых не заполнен реквизит Склад");
КонецЕсли;
// 4. объект ДокументыМенедежер.<Имя документа>
// Выбрать()
// Пример: выбрать все документы ПриходнаяНакладная за текущий месяц.
Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
Пока Выборка.Следующий() Цикл
Сообщить(Выборка);
КонецЦикла;
// 5. объект ДокументМенеджер.<Имя документа>
// СоздатьДокумент()
// Пример: создать новый документ ПриходнаяНакладная.
НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Склад = Справочники.Склады.Основной;
// заполнить табличную часть Материалы
НоваяСтрокаТабличнойЧасти = НовыйДокумент.Материалы.Добавить();
НоваяСтрокаТабличнойЧасти.Материал = Справочники.Номенклатура.НайтиПоКоду(6);
НоваяСтрокаТабличнойЧасти.Количество = 10;
НоваяСтрокаТабличнойЧасти.Цена = 22.5;
НоваяСтрокаТабличнойЧасти.Сумма = 225;
НовыйДокумент.Записать();
// 6. объект ДокументОбъект.<Имя документа>, объект ДокументСсылка.<Имя документа>
// Ссылка
// Пример: в модуле объекта вызвать процедуру проверки заполнения реквизитов документа.
Если Не ПроверитьЗаполнениеРеквизитов(ЭтотОбъект.Ссылка) Тогда
Сообщить("Реквизиты документа не заполнены!");
КонецЕсли;
// 7. объект ДокументСсылка.<Имя документа>, объект ДокументОбъект.<Имя документа>
// ПолучитьОбъект()
// Скопировать()
// Пример: пометить документ на удаление.
НенужныйДокумент = Документы.ОказаниеУслуги.НайтиПоНомеру(13).ПолучитьОбъект();
НенужныйДокумент.УстановитьПометкуУдаления(Истина);
// 8. объект ДокументВыборка.<Имя документа>
// Ссылка
// Пример: сформировать список документов ПриходнаяНакладная за текущий месяц.
СписокНакладных = Новый СписокЗначений;
Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
Пока Выборка.Следующий() Цикл
СписокНакладных.Добавить(Выборка.Ссылка);
КонецЦикла;
// 9. объект ДокументВыборка.<Имя документа>
// ПолучитьОбъект()
// Пример: удалить все документы ПриходнаяНакладная.
Выборка = Документы.ПриходнаяНакладная.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().Удалить();
КонецЦикла;
// Документы
// Пример: вывести все типы ссылок на элементы документов, существующие в конфигурации.
Массив = Документы.ТипВсеСсылки().Типы();
Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип);
КонецЦикла;
// 2. объект ДокументМенедежер
// .<имя документа>
// [<имя документа>]
// Для Каждого ... Из ... Цикл ... КонецЦикла;
// Пример: получить макет для печати документа "Оказание услуги".
Макет = Документы["ОказаниеУслуги"].ПолучитьМакет("Печать");
// Пример: получить ссылку на каждый из документов, существующих в конфигурации.
Для Каждого ОчереднойДокумент Из Документы Цикл
Ссылка = ОчереднойДокумент.ПолучитьСсылку();
...
КонецЦикла;
// 3. объект ДокументМенеджер.<Имя документа>
// НайтиПоНомеру()
// НайтиПоРеквизиту()
// ПустаяСсылка()
// Пример: проверить, проведен ли документ ПриходнаяНакладная с номером 3.
Если Документы.ПриходнаяНакладная.НайтиПоНомеру(3).Проведен Тогда
Сообщить("Документ с номером 3 проведен");
КонецЕсли;
// Пример: проверить, что во всех документах ПриходнаяНакладная заполнен реквизит Склад.
ПустаяСсылкаСклада = Справочники.Склады.ПустаяСсылка();
Если Не Документы.ПриходнаяНакладная.НайтиПоРеквизиту("Склад", ПустаяСсылкаСклада).Пустая() Тогда
Сообщить("Есть документы, у которых не заполнен реквизит Склад");
КонецЕсли;
// 4. объект ДокументыМенедежер.<Имя документа>
// Выбрать()
// Пример: выбрать все документы ПриходнаяНакладная за текущий месяц.
Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
Пока Выборка.Следующий() Цикл
Сообщить(Выборка);
КонецЦикла;
// 5. объект ДокументМенеджер.<Имя документа>
// СоздатьДокумент()
// Пример: создать новый документ ПриходнаяНакладная.
НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Склад = Справочники.Склады.Основной;
// заполнить табличную часть Материалы
НоваяСтрокаТабличнойЧасти = НовыйДокумент.Материалы.Добавить();
НоваяСтрокаТабличнойЧасти.Материал = Справочники.Номенклатура.НайтиПоКоду(6);
НоваяСтрокаТабличнойЧасти.Количество = 10;
НоваяСтрокаТабличнойЧасти.Цена = 22.5;
НоваяСтрокаТабличнойЧасти.Сумма = 225;
НовыйДокумент.Записать();
// 6. объект ДокументОбъект.<Имя документа>, объект ДокументСсылка.<Имя документа>
// Ссылка
// Пример: в модуле объекта вызвать процедуру проверки заполнения реквизитов документа.
Если Не ПроверитьЗаполнениеРеквизитов(ЭтотОбъект.Ссылка) Тогда
Сообщить("Реквизиты документа не заполнены!");
КонецЕсли;
// 7. объект ДокументСсылка.<Имя документа>, объект ДокументОбъект.<Имя документа>
// ПолучитьОбъект()
// Скопировать()
// Пример: пометить документ на удаление.
НенужныйДокумент = Документы.ОказаниеУслуги.НайтиПоНомеру(13).ПолучитьОбъект();
НенужныйДокумент.УстановитьПометкуУдаления(Истина);
// 8. объект ДокументВыборка.<Имя документа>
// Ссылка
// Пример: сформировать список документов ПриходнаяНакладная за текущий месяц.
СписокНакладных = Новый СписокЗначений;
Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
Пока Выборка.Следующий() Цикл
СписокНакладных.Добавить(Выборка.Ссылка);
КонецЦикла;
// 9. объект ДокументВыборка.<Имя документа>
// ПолучитьОбъект()
// Пример: удалить все документы ПриходнаяНакладная.
Выборка = Документы.ПриходнаяНакладная.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().Удалить();
КонецЦикла;
ПРИМЕЧАНИЕ. Заливкой выделены события, выполняющиеся в транзакции записи.
Комментариев нет :
Отправить комментарий