Как программно изменить статус "В резерве" Заказ клиента через день на статус "На согласовании"? УТ11.3 1С8.3
Найденные решения
Все разобрался, спасибо всем! Вот такой код получился, если разность дат больше 3х, то меняем статус, проверил, вроде работает.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Статус = &КОбеспечению
| И РАЗНОСТЬДАТ(ЗаказКлиента.Дата, &ТекущаяДата, ДЕНЬ) > 3";
Запрос.УстановитьПараметр("КОбеспечению", Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
ТЗ = Запрос.Выполнить().Выгрузить();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
И так, у нас новое регламентное задание "_ИзменениеСтатусов", раз в сутки (или выбрать существующие выполняющие раз в сутки)
Новая процедура в общем модуле с видом Экспорт
Процедура выполняет запрос
Заказы клиентов в статусе "В резерве" ГДЕ &ТекущаяДата - ДатаСтатуса > &Сутки
Результ = Запрос.Выполнить().Вабрать();
Пока Результ .Следующий() цикл
//меняем статус
Конеццикла;
УТ под рукой нет. Посмотрел бы где хранятся статусы и написал бы запрос)
Новая процедура в общем модуле с видом Экспорт
Процедура выполняет запрос
Заказы клиентов в статусе "В резерве" ГДЕ &ТекущаяДата - ДатаСтатуса > &Сутки
Результ = Запрос.Выполнить().Вабрать();
Пока Результ .Следующий() цикл
//меняем статус
Конеццикла;
УТ под рукой нет. Посмотрел бы где хранятся статусы и написал бы запрос)
(2) Спасибо за подсказку, с запросом разобрался, осталось проблема с условием сравнение даты.
&ТекущаяДата - ДатаСтатуса > &Сутки
Как правильно написать эту строку в запросе или при выполнение запроса? В моем случае ДатаСтатуса = ЗаказКлиента.Дата а &Сутки
...?
(4) Функция в запросе называется РазностьДат.
Функция предназначена для получения разницы между двумя датами.
Первый параметр — вычитаемая дата, выражение типа ДАТА;
Второй параметр — исходная дата, выражение типа ДАТА;
Третий параметр – тип разности, одно из: СЕКУНДА, МИНУТа, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД.
Примеры:
ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), ДЕНЬ)
Результат:
Поле1
2
Функция предназначена для получения разницы между двумя датами.
Первый параметр — вычитаемая дата, выражение типа ДАТА;
Второй параметр — исходная дата, выражение типа ДАТА;
Третий параметр – тип разности, одно из: СЕКУНДА, МИНУТа, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД.
Примеры:
ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), ДЕНЬ)
Результат:
Поле1
2
Там не все так "просто" нужно перезаполнить статус как реквизит, потом еще выполнить кучу вспомогательных процедур, и даже после этого еще могут остаться движения в заказе.
УТ к слову как нарочно сделала заказы такие ущербными (один отчет заказы только по одной позиции чего стоит) на откуп разработчикам
УТ к слову как нарочно сделала заказы такие ущербными (один отчет заказы только по одной позиции чего стоит) на откуп разработчикам
Все разобрался, спасибо всем! Вот такой код получился, если разность дат больше 3х, то меняем статус, проверил, вроде работает.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Статус = &КОбеспечению
| И РАЗНОСТЬДАТ(ЗаказКлиента.Дата, &ТекущаяДата, ДЕНЬ) > 3";
Запрос.УстановитьПараметр("КОбеспечению", Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
ТЗ = Запрос.Выполнить().Выгрузить();
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот