Как программно изменить статус "В резерве" Заказ клиента через день на статус "На согласовании"? УТ11.3 1С8.3

1. Shurik_M 2 20.02.19 16:10 Сейчас в теме
Подскажите пожалуйста, если в статусе документа Заказ клиента стоит "В резерве", как правильно написать код в модуле, чтобы через день программно поменялись те документы, которые статусы равно "В резерве" на статус "На согласовании".
+
Найденные решения
7. Shurik_M 2 21.02.19 14:32 Сейчас в теме
Все разобрался, спасибо всем! Вот такой код получился, если разность дат больше 3х, то меняем статус, проверил, вроде работает.
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |	ЗаказКлиента.Ссылка КАК Ссылка
                   |ИЗ
                   |	Документ.ЗаказКлиента КАК ЗаказКлиента
                   |ГДЕ
                   |	ЗаказКлиента.Статус = &КОбеспечению
                   |	И РАЗНОСТЬДАТ(ЗаказКлиента.Дата, &ТекущаяДата, ДЕНЬ) > 3";
    
    Запрос.УстановитьПараметр("КОбеспечению", Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
	Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
	ТЗ = Запрос.Выполнить().Выгрузить();
Показать
Teut_Vlad; acanta; +2
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Teut_Vlad 182 20.02.19 16:27 Сейчас в теме
И так, у нас новое регламентное задание "_ИзменениеСтатусов", раз в сутки (или выбрать существующие выполняющие раз в сутки)

Новая процедура в общем модуле с видом Экспорт
Процедура выполняет запрос
Заказы клиентов в статусе "В резерве" ГДЕ &ТекущаяДата - ДатаСтатуса > &Сутки
Результ = Запрос.Выполнить().Вабрать();
Пока Результ .Следующий() цикл
//меняем статус
Конеццикла;
УТ под рукой нет. Посмотрел бы где хранятся статусы и написал бы запрос)
+
4. Shurik_M 2 21.02.19 13:29 Сейчас в теме
(2) Спасибо за подсказку, с запросом разобрался, осталось проблема с условием сравнение даты.
&ТекущаяДата - ДатаСтатуса > &Сутки
Как правильно написать эту строку в запросе или при выполнение запроса? В моем случае ДатаСтатуса = ЗаказКлиента.Дата а
&Сутки
...?
+
5. antz 21.02.19 13:44 Сейчас в теме
(4) Функция в запросе называется РазностьДат.

Функция предназначена для получения разницы между двумя датами.

Первый параметр — вычитаемая дата, выражение типа ДАТА;

Второй параметр — исходная дата, выражение типа ДАТА;

Третий параметр – тип разности, одно из: СЕКУНДА, МИНУТа, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД.

Примеры:
ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), ДЕНЬ)

Результат:

Поле1

2
+
6. Teut_Vlad 182 21.02.19 14:21 Сейчас в теме
(4) Вроде даты считаются в секундах
60*60*24
+
3. muskul 21.02.19 10:06 Сейчас в теме
Там не все так "просто" нужно перезаполнить статус как реквизит, потом еще выполнить кучу вспомогательных процедур, и даже после этого еще могут остаться движения в заказе.
УТ к слову как нарочно сделала заказы такие ущербными (один отчет заказы только по одной позиции чего стоит) на откуп разработчикам
+
7. Shurik_M 2 21.02.19 14:32 Сейчас в теме
Все разобрался, спасибо всем! Вот такой код получился, если разность дат больше 3х, то меняем статус, проверил, вроде работает.
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |	ЗаказКлиента.Ссылка КАК Ссылка
                   |ИЗ
                   |	Документ.ЗаказКлиента КАК ЗаказКлиента
                   |ГДЕ
                   |	ЗаказКлиента.Статус = &КОбеспечению
                   |	И РАЗНОСТЬДАТ(ЗаказКлиента.Дата, &ТекущаяДата, ДЕНЬ) > 3";
    
    Запрос.УстановитьПараметр("КОбеспечению", Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
	Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
	ТЗ = Запрос.Выполнить().Выгрузить();
Показать
Teut_Vlad; acanta; +2
8. muskul 22.02.19 03:41 Сейчас в теме
(7)движения проверь на всякий случай
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот