Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 июн 2024, 02:08

Менять статус заказа по истечению даты

Автор Анюта17, 23 мая 2018, 09:22

0 Пользователей и 1 гость просматривают эту тему.

Анюта17

У меня есть документ ОтгрузкаТовара, в нем реквизиты КонецРейса(Тип Дата) и Статус(Перечисление), Мне надо чтоб когда сегодняшняя дата больше даты КонецРейса статус менялся. Подскажите где это надо прописывать? в каком модуле?

alex0402

Цитата: Анюта17 от 23 мая 2018, 09:22статус менялся

сам по себе или после каких-то действий пользователя. Если первое, то нужно регламентное задание, которое будет проверять документы и менять статусы.
Спасибо за Сказать спасибо

Анюта17

Цитата: alex0402 от 23 мая 2018, 09:26
Цитата: Анюта17 от 23 мая 2018, 09:22статус менялся

сам по себе или после каких-то действий пользователя. Если первое, то нужно регламентное задание, которое будет проверять документы и менять статусы.

как вариант, при открытии конфигурации, чтоб проверялись даты, и там где меньше текущей менялся статус

buketov.av

можно создать регламентное задание "РегламентноеЗаданиеИзмененияСтатусаМоегоДокумента" и пусть оно выполняется так часто как Вам надо и меняет статусы документов

Анюта17

Цитата: buketov.av от 23 мая 2018, 10:05
можно создать регламентное задание "РегламентноеЗаданиеИзмененияСтатусаМоегоДокумента" и пусть оно выполняется так часто как Вам надо и меняет статусы документов

А как мне из общего модуля обратить к реквизитам документы ОтгрузкаТовара?

buketov.av


Анюта17

Цитата: buketov.av от 23 мая 2018, 10:50
запросом

Я запуталась, как мне теперь изменить статус у тех документов где дата меньше текущей

Процедура ИзмененияСтатуса()
Список = Новый СписокЗначений;
   Список.ЗагрузитьЗначения(ПолучитьДокумент());

   Для каждого Элемент Из Список Цикл
   
   КонецЦикла;

КонецПроцедуры

&НаСервере
Функция ПолучитьДокумент()
// Вставить содержимое обработчика.
ТекДата = ТекущаяДата()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтгрузкаТовара.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтгрузкаТовара КАК ОтгрузкаТовара
|ГДЕ
| ОтгрузкаТовара.КонецРейса < &ТекущаяДата";
Запрос.УстановитьПараметр("ТекущаяДата", ТекДата);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат  0;
Иначе
рез = РезультатЗапроса.Выгрузить()[0].Ссылка;
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(рез);
Возврат  Список;
КонецЕсли;
КонецФункции

buketov.av

в запросе бы еще отбирать документы, у которых статус не равен тому. который будете устанавливать
перебирайте отобранные документы в цикле и устанавливайте нужный статус

Анюта17

Цитата: buketov.av от 23 мая 2018, 11:17
в запросе бы еще отбирать документы, у которых статус не равен тому. который будете устанавливать
перебирайте отобранные документы в цикле и устанавливайте нужный статус

Процедура ИзмененияСтатуса()
Список = Новый СписокЗначений;
   Список.ЗагрузитьЗначения(ПолучитьДокумент());
   Выборка = Документы.ОтгрузкаТовара.Выбрать();
   
   СтатусПеречисление = неопределено;
Стат = Выборка.Статус;

   Для каждого Элемент Из Выборка Цикл
   Для каждого Элем Из Список Цикл
   Если Выборка.Ссылка = Элем.Значение Тогда
   СтатусПеречисление = Перечисления.Статус.Выполнено;
   КонецЕсли;
   
   КонецЦикла;
   
Выборка.Статус = СтатусПеречисление;   
   КонецЦикла;

КонецПроцедуры

&НаСервере
Функция ПолучитьДокумент()
// Вставить содержимое обработчика.
ТекДата = ТекущаяДата();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтгрузкаТовара.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтгрузкаТовара КАК ОтгрузкаТовара
|ГДЕ
| ОтгрузкаТовара.КонецРейса < &ТекущаяДата
| И ОтгрузкаТовара.Статус <> &Невыполнено";
Запрос.УстановитьПараметр("ТекущаяДата", ТекДата);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат  0;
Иначе
рез = РезультатЗапроса.Выгрузить()[0].Ссылка;
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(рез);
Возврат  Список;
КонецЕсли;
КонецФункции



Так? И как это проверить отладчиком? работает это вообще или нет

alex0402

нет. Зачем получать, возвращать?

   Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ОтгрузкаТовара.Ссылка КАК Ссылка
|ИЗ
|    Документ.ОтгрузкаТовара КАК ОтгрузкаТовара
|ГДЕ
|    ОтгрузкаТовара.КонецРейса < &ТекущаяДата
|    И ОтгрузкаТовара.Статус <> &Невыполнено";
Запрос.УстановитьПараметр("ТекущаяДата", ТекДата);
РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

Объект = Выбора.ПолучитьОбъект();
Объект.Статус = НужныйСтатус;
Объект.Записать();

КонецЦикла;

Спасибо за Сказать спасибо

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск