Регламентное задание на ПКО через расширение
1С:Бухгалтерия 3.0
Бухгалтерский учет
Государственные, бюджетные структуры
Россия
1С
Инфостарт
Бухгалтерский учет
Программист
Расширение (cfe)
БП Корп 8.3.25.1374/3.0.161.19
Задача: реализовать групповое проведение документов ПКО через регламентное задание в расширении.
Реализовывал по Радченко М. Г., Хрусталева Е. Ю. 1С:Предприятие 8.P. Практическое пособие разработчика.20 занятие
Конфигуратор > Конфигурация > Общие модули / ПроведениеДокументовБП - ПКМ Добавить в расширение / вставил код
, куда добавил:
Конфигуратор > ДоработкаКорп > Общие > Регламентрые задания > ПерепроведениеПКО / имя метода: ПроведениеДокументовБП.ДК1_ПодготовитьПараметрыПроведения
Предопределенное
Запускаю на отладке:
1С:Предприятие > Администрование > Регламентные операции > Регламентные и фоновые задания > ДК1 перепроведение ПКО > Выполнить сейчас - при выполнении пишет: "Недостаточно фактических параметров для метода фонового задания". При том, что в расширение отладчик даже не заходит.
Задача: реализовать групповое проведение документов ПКО через регламентное задание в расширении.
Реализовывал по Радченко М. Г., Хрусталева Е. Ю. 1С:Предприятие 8.P. Практическое пособие разработчика.
Конфигуратор > Конфигурация > Общие модули / ПроведениеДокументовБП - ПКМ Добавить в расширение / вставил код
Процедура ДК1_ОбработкаПроведенияФормированиеЗаписейРаздела7ДекларацииНДС(Документ, Движения, Отказ) Экспорт
Функция ДК1_ПодготовитьПараметрыПроведения(ДокументСсылка, Отказ) Экспорт
ВыборкаПКОДокументы = Документы.ПриходныйКассовыйОрдер.Выбрать(); // Создаём выборку документов ПКО, которые нужно перепровести - сюда вписывать?
Пока ВыборкаПКОДокументы.Следующий() Цикл
Попытка //Попробуем перепровести документ. Обработка Ошибок: Попытка - Исключение
Документ = ВыборкаПКОДокументы.ПолучитьОбъект();
Документ.Перепровести(); //Метод Перепровести()
Сообщить("Документ ПКО " + Документ.Номер + " успешно перепроведен.", СтатусСообщения.Информация)
Исключение
Сообщить("Ошибка перепроведения документа ПКО " + ВыборкаПКОДокументы.Номер + ": " + ОписаниеОшибки(), СтатусСообщения.Ошибка);
КонецПопытки;
КонецЦикла;
ПоказатьКонфигуратор > ДоработкаКорп > Общие > Регламентрые задания > ПерепроведениеПКО / имя метода: ПроведениеДокументовБП.ДК1_ПодготовитьПараметрыПроведения
Предопределенное
Запускаю на отладке:
1С:Предприятие > Администрование > Регламентные операции > Регламентные и фоновые задания > ДК1 перепроведение ПКО > Выполнить сейчас - при выполнении пишет: "Недостаточно фактических параметров для метода фонового задания". При том, что в расширение отладчик даже не заходит.
Прикрепленные файлы:
По теме из базы знаний
- Обмен данными онлайн через Веб-сервис с использованием обработки "Универсальный обмен данными XML"
- САПП - система слежения за заказами, долгами, резервами, остатками, оборотами и многим другим с возможностью оповещения ответственных в ЛЮБЫХ базах 1С, работающих на платформе 8.3.4+ (Конфигурация, Расширение)
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- "Обновление через копию" - как это использовать?
- Интеграция Честный Знак и 1C: обмен и синхронизация для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
Найденные решения
Всё получилось. Вот рабочий код расширения Общий модуль ПроведениеДокументовБП: Модуль
Процедура ВыполнитьКоманду() Экспорт
ИмяСобытия = НСтр("ru = 'ДК1_ПерепроведениеПКО'", ОбщегоНазначения.КодОсновногоЯзыка());
Комментарий = НСтр("ru = 'Задание выполнено!'", ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Примечание, , , Комментарий);
// Получить ссылки на проведенные документы в требуемом интервале
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Дата = &ТекущаяДата И
| ПриходныйКассовыйОрдер.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Перепровести каждый документ неоперативно
Документ = Выборка.Ссылка.ПолучитьОбъект();
Документ.Дата = ТекущаяДата();
Попытка
Документ.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ ПКО " + Документ.Номер + " успешно перепроведен.", СтатусСообщения.Информация)
Исключение
Сообщить("Ошибка перепроведения документа ПКО " + Документ.Номер + ": " + ОписаниеОшибки(), СтатусСообщения.Ошибка);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Фоновые задания проходят, но Задание завершено с ошибками
В скопированном с конфигурации в расширение Общие модули / ПроведениеДокументовБП переопределены две процедуры:
&Вместо("ОбработкаПроведенияФормированиеЗаписейРаздела7ДекларацииНДС ")
&Вместо("ВПодготовитьПараметрыПроведения") со вставкой кода на автоматическое перепроведение документов ПКО
Отладчик до этих процедур не доходит.
В скопированном с конфигурации в расширение Общие модули / ПроведениеДокументовБП переопределены две процедуры:
&Вместо("ОбработкаПроведенияФормированиеЗаписейРаздела7ДекларацииНДС
ДК1_ОбработкаПроведенияФормированиеЗаписейРаздела7Декларации |
---|
Процедура ДК1_ОбработкаПроведенияФормированиеЗаписейРаздела7Декларации //ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(Документ); ПараметрыПроведения = ДК1_ПодготовитьПараметрыПроведения(Документ.Ссылка, Отказ); Если Документ.РучнаяКорректировка Тогда Возврат; КонецЕсли; Если Отказ Тогда Возврат; КонецЕсли; // ФОРМИРОВАНИЕ ДВИЖЕНИЙ СформироватьДвиженияРаздела7ДекларацииНДС( ПараметрыПроведения.ТаблицаЗаписиРаздела7, Движения, Отказ); СформироватьДвиженияСписаниеНеоблагаемыхНДСОпераций( ПараметрыПроведения.ТаблицаНеоблагаемыеОперации, Движения, Отказ); РегистрыСведений.ВыполнениеРегламентныхОперацийНДС.СформироватьДвиженияФактВыполненияРегламентнойОперации( ПараметрыПроведения.ДанныеРегламентнойОперации, Отказ); ПроведениеСервер.УстановитьЗаписьОчищаемыхНаборовЗаписей(Документ); КонецПроцедуры |
&Вместо("ВПодготовитьПараметрыПроведения") со вставкой кода на автоматическое перепроведение документов ПКО
ДК1_ПодготовитьПараметрыПроведения |
---|
Функция ДК1_ПодготовитьПараметрыПроведения(ДокументСсылка, Отказ) Экспорт
ПараметрыПроведения = Новый Структура; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Запрос.Текст = ТекстЗапросаРеквизитыДокумента(); Результат = Запрос.Выполнить(); ПараметрыПроведения.Вставить("Реквизиты", Результат.Выгрузить()); Реквизиты = ПараметрыПроведения.Реквизиты[0]; Если НЕ УчетнаяПолитика.Существует(Реквизиты.Организация, Реквизиты.Период, Истина, ДокументСсылка) Тогда Отказ = Истина; Возврат ПараметрыПроведения; КонецЕсли; Запрос.УстановитьПараметр("Организация", Реквизиты.Организация); Запрос.УстановитьПараметр("ДатаДокумента", Реквизиты.Период); Запрос.УстановитьПараметр("ДатаГраница", Новый Граница(КонецДня(Реквизиты.Период), ВидГраницы.Включая)); Запрос.УстановитьПараметр("КодыРеализацийНеНаТерриторииРФ", Справочники.КодыОперацийРаздела7ДекларацииПоНДС.КодыРеализацииНеНаТерриторииРФ()); Запрос.УстановитьПараметр("ПравилаЗаполненияДекларацииС4кв2020", УчетНДС.ПравилаЗаполненияДекларацииС4кв2020(Реквизиты.Период)); НомераТаблиц = Новый Структура; Запрос.Текст = ТекстЗапросаЗаписиРаздела7(НомераТаблиц) + ТекстЗапросаНеоблагаемыеНДСОперации(НомераТаблиц) + ТекстЗапросаПоФормированиюРегламентнойОперации(НомераТаблиц); Результат = Запрос.ВыполнитьПакет(); Для каждого НомерТаблицы Из НомераТаблиц Цикл ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить()); КонецЦикла; Возврат ПараметрыПроведения; //вставка Начало 29.09.2024 ВыборкаПКОДокументы = Документы.ПриходныйКассовыйОрдер.Выбрать(); // Создаём выборку документов ПКО, которве нужно перепровести Пока ВыборкаПКОДокументы.Следующий() Цикл Попытка //Попробуем перепровести документ. Обработка Ошибок: Попытка - Исключение Документ = ВыборкаПКОДокументы.ПолучитьОбъект(); Документ.Перепровести(); //Метод Перепровести() Сообщить("Документ ПКО " + Документ.Номер + " успешно перепроведен.", СтатусСообщения.Информация) Исключение Сообщить("Ошибка перепроведения документа ПКО " + ВыборкаПКОДокументы.Номер + ": " + ОписаниеОшибки(), СтатусСообщения.Ошибка); КонецПопытки; КонецЦикла; //вставка П.В. Конец КонецФункции |
Отладчик до этих процедур не доходит.
Прикрепленные файлы:
Попробовал реализовать групповое проведение документов ПКО через регламентное задание не через расширение, а через созданную обработку РегламетноеЗадание.epf с тем же кодом в функциональной части, что и в расширении.
И опять при запуске ДК1 перепроведение ПКО отладчик в обработку не заходит, как так?
И опять при запуске ДК1 перепроведение ПКО отладчик в обработку не заходит, как так?
UPD:
https://dzen.ru/a/Y492fsOVOURrzdzA - п.2, ещё, как вариант, пытался переопределить регламентное задание конфигурации ЗагрузкаКурсовВалют, тоже не срабатывает
Прикрепленные файлы:
РегламетноеЗадание.epf
Всё получилось. Вот рабочий код расширения Общий модуль ПроведениеДокументовБП: Модуль
Процедура ВыполнитьКоманду() Экспорт
ИмяСобытия = НСтр("ru = 'ДК1_ПерепроведениеПКО'", ОбщегоНазначения.КодОсновногоЯзыка());
Комментарий = НСтр("ru = 'Задание выполнено!'", ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Примечание, , , Комментарий);
// Получить ссылки на проведенные документы в требуемом интервале
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Дата = &ТекущаяДата И
| ПриходныйКассовыйОрдер.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Перепровести каждый документ неоперативно
Документ = Выборка.Ссылка.ПолучитьОбъект();
Документ.Дата = ТекущаяДата();
Попытка
Документ.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ ПКО " + Документ.Номер + " успешно перепроведен.", СтатусСообщения.Информация)
Исключение
Сообщить("Ошибка перепроведения документа ПКО " + Документ.Номер + ": " + ОписаниеОшибки(), СтатусСообщения.Ошибка);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот