Изменение реквизита документа-основания

1. Ivan_Abc 14.01.19 09:50 Сейчас в теме
Есть документ Заказ, который является документом-основанием для ЗаявкаНаОтгрузку. Необходимо изменить значение реквизита документа Заказ (реквизит на форме, перечисление), при проведении Заявки. Кое-что намудрил в модуле формы Заявки, но оно не работает, подскажите, что сделать, чтоб заработало?

&НаСервере
Процедура ОбработкаПроведения()
	Если ЭтаФорма.Элементы._ДоставкаОсуществлена = Ложь Тогда
		Заказ = ТекущийОбъект.ИсточникИнформации.ПолучитьОбъект();
		Объект._СтадияЗаказа = ПредопределенноеЗначение ("Перечисление._СтадияЗаказа._ОжиданиеОтгрузки");
		Объект.Записать();
	ИначеЕсли ЭтаФорма.Элементы._ДоставкаОсуществлена = Истина Тогда
		Заказ = ТекущийОбъект.ИсточникИнформации.ПолучитьОбъект();
		Объект._СтадияЗаказа = ПредопределенноеЗначение ("Перечисление._СтадияЗаказа._СделкаЗавершена");
		Объект.Записать();
	КонецЕсли;
КонецПроцедуры
Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Неопределено 90 14.01.19 09:54 Сейчас в теме
Для чего нужны строки
Заказ = ТекущийОбъект.ИсточникИнформации.ПолучитьОбъект();
если с переменной Заказ ничего не происходит?
Вангую, что ты хотел сделать так:
&НаСервере
Процедура ОбработкаПроведения()
    Заказ = ТекущийОбъект.ИсточникИнформации.ПолучитьОбъект();
    Если Не ЭтаФорма.Элементы._ДоставкаОсуществлена Тогда
        Заказ._СтадияЗаказа = ПредопределенноеЗначение("Перечисление._СтадияЗаказа._ОжиданиеОтгрузки");
    ИначеЕсли ЭтаФорма.Элементы._ДоставкаОсуществлена Тогда
        Заказ._СтадияЗаказа = ПредопределенноеЗначение("Перечисление._СтадияЗаказа._СделкаЗавершена");
    КонецЕсли;
    Заказ.Записать();
КонецПроцедуры
Показать


Можно короче:
&НаСервере
Процедура ОбработкаПроведения()
    Заказ = ТекущийОбъект.ИсточникИнформации.ПолучитьОбъект();
    Заказ._СтадияЗаказа = ?(ЭтаФорма.Элементы._ДоставкаОсуществлена, ПредопределенноеЗначение("Перечисление._СтадияЗаказа._СделкаЗавершена"), ПредопределенноеЗначение("Перечисление._СтадияЗаказа._ОжиданиеОтгрузки"));
    Заказ.Записать();
КонецПроцедуры
гаврюша; acanta; +2
3. Ivan_Abc 14.01.19 09:55 Сейчас в теме
(2) чтоб получить документ-основание
+
5. YannikAlx 43 14.01.19 10:03 Сейчас в теме
(3) Нуууу ...
мыслить начали...
Получили основание - а ЧТО пытаетесь изменить?
+
8. Ivan_Abc 14.01.19 10:09 Сейчас в теме
(5) ситуация такая, при проведении документа _ЗаявкаНаОтгрузку, если реквизит булево _ДоставкаОсуществлена = Истина, тогда в документе-основание должен меняться реквизит _СтадияЗаказа на _СделкаЗавершена, иначе _СтадияЗаказа = _ОжиданиеОтгрузки
+
4. YannikAlx 43 14.01.19 10:03 Сейчас в теме
(2) Человечек просто перепутал - получает один объект , а изменять пытается другой!
+
6. Неопределено 90 14.01.19 10:05 Сейчас в теме
(4) Я написал то же самое, только сделал это в таком виде чтобы к конечной мысли человек пришёл самостоятельно.
+
7. YannikAlx 43 14.01.19 10:08 Сейчас в теме
(6) Но ему то не дошло .... ;-))
+
9. Неопределено 90 14.01.19 10:09 Сейчас в теме
(7) Я вангую только в прошлое.
+
10. Ivan_Abc 14.01.19 10:26 Сейчас в теме
(9) честно, пока не догоняю... Новичок ещё в этом деле. Работаю в 1с 8.3.9.2033, попробовал Ваш код таким образом, ерроры не вываливаются, но и изменений никаких. В _Заявке имеется реквизит _ДокументОснование, может есть возможность дёрнуть документ-основание через этот реквизит? Если да, то как? И запись кода производится в модуле формы (не путаю)?

&НаСервере
Процедура ОбработкаПроведения()
	Заказ = Объект.ИсточникИнформации.ПолучитьОбъект();
	Если Не ЭтаФорма.Элементы._ДоставкаОсуществлена = Ложь Тогда
		Заказ._СтадияЗаказа = ПредопределенноеЗначение("Перечисление._СтадияЗаказа._ОжиданиеОтгрузки");
	ИначеЕсли ЭтаФорма.Элементы._ДоставкаОсуществлена = Истина Тогда
		Заказ._СтадияЗаказа = ПредопределенноеЗначение("Перечисление._СтадияЗаказа._СделкаЗавершена");
	КонецЕсли;
	Заказ.Записать();
КонецПроцедуры
Показать
+
11. Неопределено 90 14.01.19 10:30 Сейчас в теме
(10) А если
Заказ = Объект.ИсточникИнформации.ПолучитьОбъект();
Поменять на
Заказ = Объект.ДокументОснование.ПолучитьОбъект();
?
+
12. Ivan_Abc 14.01.19 10:39 Сейчас в теме
(11) К сожалению не сработало. Попробовал ПолучитьФорму, оказалось эта функция работает онли &НаКлиенте, короче тоже не заработало
+
13. Неопределено 90 14.01.19 10:42 Сейчас в теме
(12) Может
Заказ = Объект._ДокументОснование.ПолучитьОбъект();
?
+
14. Ivan_Abc 14.01.19 10:44 Сейчас в теме
(13) это тоже не работает, сразу попробовал
+
15. Неопределено 90 14.01.19 10:45 Сейчас в теме
(14) А отладчик что говорит? Чему равна переменная Заказ?
+
16. Ivan_Abc 14.01.19 10:50 Сейчас в теме
(15) пока что я догнал, что не там код писал, надо было в модуле объекта, а я писал в модуле формы документа
+
17. YannikAlx 43 14.01.19 12:21 Сейчас в теме
(15)
(16) Вот и результат - научили человека хоть чему-то...
+
18. lefthander 14.01.19 12:24 Сейчас в теме
(17)Попробую сванговать в будущее -он теперь весь код будет писать в модуле объекта, и даже код для модуля формы.
Типа шутка такая, не обижайтесь. ;)))
+
Оставьте свое сообщение

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