Как програмно провести документы?
Пустая платформа 8.2
Добавлены справочник и документ
Нужно чтобы по команде все записи документа проводились как это можно сделать?
Полагаю нужно проходить по записям каким то циклом
но т.к еще только начинаю в этом разбираться естественно дело встало
Подскажите пожалуйста как это можно сделать? или ссылки на полезную в этом вопросе информацию.
(1) Rayrat7, вообще у документов есть кнопка «Провести». В модуле документа можно добавить процедуру «ОбработкаПроведения», где и будут выполняться все операции по проведению документа. А вообще под проведением понимают операцию создания записей регистров на основе введенных данных. Начни с Радченко «1С:Предприятие 8.2. Практическое пособие разработчика»
Выборка = Документы.ЗаказПокупателя.Выбрать(); Пока Выборка.Следующий() Цикл ДокументОбъект = Выборка.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); КонецЦикла;
ДокументОбъект. (DocumentObject.) Записать (Write) Синтаксис: Записать(, ) Параметры: (необязательный) Тип: РежимЗаписиДокумента. Позволяет выбрать один из возможных режимов записи. Значение по умолчанию: Запись (необязательный) Тип: РежимПроведенияДокумента. Позволяет выбрать один из возможных режимов проведения. Значение по умолчанию: Неоперативный Описание: Записывает документ в базу данных. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Для документов с поддержкой уникальности номеров в процессе записи, если нужно, проверяется уникальность номера.
Запись, проведение и отмена проведения документа 1С
Программная запись/проведение/отмена проведения документа осуществляется при помощи методаЗаписать(, ) ДокументаОбъекта.
В параметр РежимЗаписи передается одно из значений системного перечисления РежимЗаписиДокумента :
Переданное значение и определяет какое действие производить с выбранным документом. Также при помощи параметра РежимПроведения можно указать оперативное или неоперативное проведение мы используем.
Пример №1. Программная запись документа
СсылкаНаДокумент = Документы.АвансовыйОтчет.НайтиПоНомеру("00000000001"); Если НЕ СсылкаНаДокумент = Неопределено Тогда ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект(); ДокументОбъект.Дата = ТекущаяДата(); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); КонецЕсли;
Пример №2 Программное проведение документа
Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата())); Запрос.УстановитьПараметр("КонецПериода" , КонецМесяца(ТекущаяДата())); Запрос.Текст = "ВЫБРАТЬ | ВозвратТоваровОтПокупателя.Ссылка |ИЗ | Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя |ГДЕ | ВозвратТоваровОтПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода"; Результат = Запрос.Выполнить().Выгрузить(); Для Каждого ЭлементРезультата из Результат Цикл ДокументОбъект = ЭлементРезультата.Ссылка.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла;
Пример №3 Программная отмена проведения документа
Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата())); Запрос.УстановитьПараметр("КонецПериода" , КонецМесяца(ТекущаяДата())); Запрос.УстановитьПараметр("Счет90" , ПланыСчетов.Хозрасчетный.НайтиПоКоду("90")); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ХозрасчетныйОбороты.Регистратор |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В ИЕРАРХИИ (&Счет90), , , , ) КАК ХозрасчетныйОбороты"; Результат = Запрос.Выполнить().Выгрузить(); Для Каждого ЭлементРезультата из Результат Цикл ДокументОбъект = ЭлементРезультата.Регистратор.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЦикла;