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

Изменение статуса документа при проведении другого

Автор Дарьч, 24 дек 2022, 21:50

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

Дарьч

Здравствуйте, подскажите, пожалуйста. Как можно реализовать изменение статуса документа Заказы, при проведении документа ЗакрытьЗаказ. Думала, в документе Заказы сделать реквизит СтатусыДокумента и при проведении документа Заказы изменять значение. Но не получается записать другое значение

alexandr_ll

Дарьч, Привести фрагмент кода по изменению другого документа

Дарьч

Получилось изменять значение реквизита в другом документе, но этот код изменяет значения во всех документах, а не в выбранном. В документе Закрыть у меня есть реквизит ДокументЗаказа, им я хочу выбирать, в каком документе изменить реквизит. Но еще почему-то изменения не видно сразу. Только если запускаю заново конфигурацию.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗакрытьЗаказ.ДокументЗаказ КАК ДокументЗаказ,
| Заказ.СтатусДоговора КАК СтатусДоговора,
| Заказ.Ссылка КАК Ссылка,
| Заказ.Номер КАК Номер
|ИЗ
| Документ.ЗакрытьЗаказ КАК ЗакрытьЗаказ
| ПОЛНОЕ СОЕДИНЕНИЕ Документ.Заказ КАК Заказ
| ПО ЗакрытьЗаказ.ДокументЗаказ = Заказ.Ссылка";

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
Док=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Док.СтатусДоговора=Перечисления.СтатусыДоговора.Закрыт;
Док.Записать();
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры

NaumovAlexey

1. вариант, как надо статус изменить, получил ДокументОбъект и установил статус (если статус - реквизит)
2. оповещение.

Дарьч

NaumovAlexey, как можно изменить вариант кода, что я привела. Это совсем не в ту степь? Не совсем понимаю. И как изменять именно в том документе, который указываю в качестве реквизита?

LexaK

Дарьч, попробуйте такой код

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Если ДокументЗаказ <> Неопределено и Не ДокументЗаказ.ПустаяСсылка() Тогда
//задан Заказ, проверяем его статус
Если ДокументЗаказ.СтатусДоговора <> Перечисления.СтатусыДоговора.Закрыт Тогда
//еще не закрыт, закрываем
            лкДок = ДокументЗаказ.ПолучитьОбъект();
            лкДок.СтатусДоговора = Перечисления.СтатусыДоговора.Закрыт;
            лкДок.Записать();   
КонецЕсли;
КонецЕсли;

КонецПроцедуры
если помогло нажмите: Спасибо!

Максим75

Дарьч, Так в запросе выбираются вообще все документы, поэтому и будут изменены все документы, что есть в базе. Надо отсечь по нужному, т.е. по ссылке на текущий документ.

Теги:

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

Рейтинг@Mail.ru

Поиск