Регламентное задание по закрытию заказов клиента
Всем привет. Подскажите в чем ошибка, выполняю код в регламентном задании, выполняется успешно без ошибок, но заказы не закрывает. 1С:Комплексная автоматизация 2 (2.4.13.136)
Процедура ЗакрытиеЗаказовКлиентовИПоставщиков() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| СостоянияЗаказовКлиентов.Заказ КАК Заказ,
| СостоянияЗаказовКлиентов.Состояние КАК Состояние,
| ЗаказКлиента.Статус КАК Статус,
| СтатусыЗаказовКлиентов.Ссылка КАК СтатусПеречисление
|ИЗ
| РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
| ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.СтатусыЗаказовКлиентов КАК СтатусыЗаказовКлиентов
| ПО ЗаказКлиента.Статус = СтатусыЗаказовКлиентов.Ссылка
| ПО СостоянияЗаказовКлиентов.Заказ = ЗаказКлиента.Ссылка";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Состояние = Перечисления.СостоянияЗаказовКлиентов.ГотовКЗакрытию Тогда
Статус = ВыборкаДетальныеЗаписи.СтатусПеречисление;
Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Закрытие заказов покупателей УТ 11.1 11.2-11.4 ERP 2.2-2.4
- Снятие резервов, закрытие заказов для Комплексной автоматизации 2.4 (УТ 11.4) через регламентное задание
- Закрытие просроченных заказов клиентов. УТ 11.4
- Снятие просроченных резервов (закрытие заказов). Подсистема для типовых конфигураций (расширение) с возможностью сохранять настройки закрытия: по менеджеру, подразделению, складу, номенклатуре. Запуск вручную, регламентным заданием (ERP 2, УТ 11, КА 2)
- Закрытие заказов по расписанию
Найденные решения
Код ужасен, конечно.
Но какой есть.
Ошибка здесь:
Но какой есть.
Ошибка здесь:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Состояние = Перечисления.СостоянияЗаказовКлиентов.ГотовКЗакрытию Тогда
Статус = ВыборкаДетальныеЗаписи.СтатусПеречисление;
//Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ДокументОбъект.Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЦикла;
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Код ужасен, конечно.
Но какой есть.
Ошибка здесь:
Но какой есть.
Ошибка здесь:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Состояние = Перечисления.СостоянияЗаказовКлиентов.ГотовКЗакрытию Тогда
Статус = ВыборкаДетальныеЗаписи.СтатусПеречисление;
//Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ДокументОбъект.Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЦикла;
Показать
(5)
У меня нет конфигурации, но навскидку - в запросе надо проверять, что у документа статус не такой, какой вам нужен, и отбор делать не в коде, а в самом запросе. Иначе вы получаете лишние записи и переаписываете документы.
Что-то типа того.
У меня нет конфигурации, но навскидку - в запросе надо проверять, что у документа статус не такой, какой вам нужен, и отбор делать не в коде, а в самом запросе. Иначе вы получаете лишние записи и переаписываете документы.
Что-то типа того.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СостоянияЗаказовКлиентов.Заказ КАК Заказ,
| СостоянияЗаказовКлиентов.Состояние КАК Состояние,
| ЗаказКлиента.Статус КАК Статус
|ИЗ
| РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
| ПО СостоянияЗаказовКлиентов.Заказ = ЗаказКлиента.Ссылка
| И СостоянияЗаказовКлиентов.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКЗакрытию)
| И ЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДокументОбъект = Выборка.Заказ.ПолучитьОбъект();
ДокументОбъект.Статус = ПредопределенноеЗначение("Перечисления.СтатусыЗаказовКлиентов.Закрыт");
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
Показать