Поле объекта недоступно для записи

1. blandinko 11.12.18 14:40 Сейчас в теме
Всем привет,
знаю, что тема уже избита, но не могу разобраться сама, прошу помощи

Хочу сделать обработку в комплексном процессе, которая бы выполняла программное "подписание" документа в случае, если автором документа является тот, кто должен его подписывать.

ЭтотДокумент = Процесс.Предметы[0].Предмет;

АвторДокумента = ЭтотДокумент.Подписал;

ЭтотДокумент.РезультатПодписания = Перечисления.РезультатыПодписания.Подписан;
ЭтотДокумент.Подписал = АвторДокумента;
ЭтотДокумент.ДатаПодписания = ТекущаяДата();
ЭтотДокумент.КомментарийПодписи = "Документ был подписан автоматически (автор документа является его подписантом)";
ЭтотДокумент.УстановилПодпись = АвторДокумента;
ЭтотДокумент.ДатаУстановкиПодписи = ТекущаяДата();

Делопроизводство.ЗаписатьСостояниеДокумента(
	ЭтотДокумент, 
	ТекущаяДата(), 
	Перечисления.СостоянияДокументов.Подписан,
	АвторДокумента);
Показать


При запуске ошибка
Во время старта этого процесса произошла ошибка:
{ОбщийМодуль.СтартПроцессовСервер.Модуль(179)}: Ошибка при вызове метода контекста (Старт)
БизнесПроцесс.Старт();
по причине:
Ошибка при выполнении обработчика - 'ВыполнитьПроцессБезДействийОбработка'
по причине:
{(5)}: Поле объекта недоступно для записи (РезультатПодписания)
ЭтотДокумент.РезультатПодписания = Перечисления.РезультатыПодписания.Подписан;
Попробуйте стартовать процесс еще раз.


Я так понимаю, что неправильно обращаюсь к объекту ЭтотДокумент и его реквизитам
Пробовала ПолучитьОбъект() из него, успехом не увенчалось
Я новичок и с этими объектами у меня пока полная каша в голове)))
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
9. oleg-x 26 11.12.18 15:19 Сейчас в теме
(7)
1) Не совсем видно, но видимо там может быть разные типы, не только документ: Тема, контрагент и т.д.
2) На клиенте может выполнятся не эта процедура Делопроизводство.ЗаписатьСостояниеДокумента(), а весь модуль, где пишется данный код. Но если Получитьобъект() отрабатывал, то значит все ок, выполняется на сервере.
3) Сообщение работает так, при выполнение, выдает в служебные сообщения текст, то есть нужно запустить процесс и выдаст сообщение, конечно, если только запускается не регламентным заданием. Тогда сообщение некому выдавать.

Возможно в процедуре Делопроизводство.ЗаписатьСостояниеДокумента() не записываются сделанные изменения.
После присвоения реквизитов добавьте такую строчку: ЭтотДокументОбъект.Записать()
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. oleg-x 26 11.12.18 14:50 Сейчас в теме
(1) Воз эта строчка:
ЭтотДокумент = Процесс.Предметы[0].Предмет;
Тут много вопросов:
1) Какой тип документа возвращает: Процесс.Предметы[0].Предмет
2) Всегда ли там есть документ?
Если там всегда есть документ, то правильно будет так:
ЭтотДокумент = Процесс.Предметы[0].Предмет.ПолучитьОбъект();
Но что бы быть уверенным, можно написать так:
Сообщить(ТипЗнч(Процесс.Предметы[0].Предмет)); И все станет ясно
blandinko; +1 Ответить
7. blandinko 11.12.18 15:06 Сейчас в теме
(4)
1) не уверена, должен быть объект, как мне казалось)))
это обработка в комплексных процессах, там с помощью Сообщить() не понимаю как посмотреть тип))) (посмотрите скрин, пожалуйста)
2) документ есть всегда
через ПолучитьОбъект пробовала, процесс отрабатывает, ошибки нет, но реквизиты не заполняются (кроме состояния документа)
Прикрепленные файлы:
9. oleg-x 26 11.12.18 15:19 Сейчас в теме
(7)
1) Не совсем видно, но видимо там может быть разные типы, не только документ: Тема, контрагент и т.д.
2) На клиенте может выполнятся не эта процедура Делопроизводство.ЗаписатьСостояниеДокумента(), а весь модуль, где пишется данный код. Но если Получитьобъект() отрабатывал, то значит все ок, выполняется на сервере.
3) Сообщение работает так, при выполнение, выдает в служебные сообщения текст, то есть нужно запустить процесс и выдаст сообщение, конечно, если только запускается не регламентным заданием. Тогда сообщение некому выдавать.

Возможно в процедуре Делопроизводство.ЗаписатьСостояниеДокумента() не записываются сделанные изменения.
После присвоения реквизитов добавьте такую строчку: ЭтотДокументОбъект.Записать()
12. blandinko 11.12.18 15:33 Сейчас в теме
(9)
1) да, там целый список (сделала скрин)
3) да, обработка запускается регламентным заданием


УРРАААА!!!! Спасибо огромное!!!! метод Записать() - это то, чего не хватало!!!
Прикрепленные файлы:
13. oleg-x 26 11.12.18 15:43 Сейчас в теме
(12) Добавьте условие на проверку, что бы не сломалось неожиданно
Если ТипЗнч(Документ) = тип("НужныйТипдокумента") Тогда
//Выполняем прописанны код
КонецЕсли;
Это что бы неожиданное, не сломалось на чем нить.
blandinko; +1 Ответить
14. blandinko 11.12.18 15:51 Сейчас в теме
(9)
А подскажите, пожалуйста, еще, в модуле Делопроизводство есть процедура ЗаписатьДанныеДокумента(Документ, Реквизит, Значение), я так поняла как раз хотела использовать ее для записи значений реквизитов документа

То есть обработка выглядит например так:

Делопроизводство.ЗаписатьДанныеДокумента(ЭтотДокумент, "Комментарий", "12345");

Делопроизводство.ЗаписатьСостояниеДокумента(
	ЭтотДокумент, 
	ТекущаяДата(), 
	Перечисления.СостоянияДокументов.Подписан,
	АвторДокумента);


Так вот обработка отрабатывает без ошибок, состояние документа меняется, а комментарий нет...

P.s. если у вас стоит Документооборот и вы можете посмотреть, конечно....
15. oleg-x 26 11.12.18 15:56 Сейчас в теме
(14) Название еще ни о чем не говорит. Надо перейти к данной процедуре и посмотреть описание, если в описание нет ничего, по коду посмотреть, что она записывает.
Может она изменяет только определенные реквизиты или только по определенным условиям.
blandinko; +1 Ответить
16. blandinko 11.12.18 16:04 Сейчас в теме
(15) да, извините, начала разбираться и поняла, что это процедура для записи данных документа в регистры сведений ))
2. bad_wag 48 11.12.18 14:48 Сейчас в теме
А какой тип у Процесс.Предметы[0].Предмет ?
3. YannikAlx 43 11.12.18 14:49 Сейчас в теме
Пробовала ПолучитьОбъект() из него, успехом не увенчалось

Было Абсолютно правильной идеей!!!
И потому ройте почему у вас там это не увенчалось...
Получать объекты можно только на сервере, и потому 90% вероятности могу утверждать , что вы пытались на клиенте...
blandinko; +1 Ответить
5. oleg-x 26 11.12.18 14:51 Сейчас в теме
А также, возможно данный модуль выполняется на клиенте и все это бессмысленно :-)
6. blandinko 11.12.18 14:57 Сейчас в теме
(5)
Процедура
 Делопроизводство.ЗаписатьСостояниеДокумента()
выполняется, получается, что не на клиенте все-таки?
Если пытаюсь ПолучитьОбъект из Предмета, то процесс выполняется без ошибок, процедура ЗаписатьСостояние... отрабатывает, но реквизиты документа,связанные с подписью, не заполняются...
8. YannikAlx 43 11.12.18 15:17 Сейчас в теме
Если вы работает с файловой версией, то это конечно не важно - клиент или сервер...
Ибо рельные ошибки будут только в клиент-серверном варианте!
То есть в конфигураторе синтаксический анализ даже может выдать , что ПолучитьОбъект() невозможно на клиенте, но он прекрасно получится при файловом варианте и откажется работать при серверном...
Поэтому нужно четко понимать ЧТО и ДЛЯ чего вы делаете глобально...
10. oleg-x 26 11.12.18 15:22 Сейчас в теме
(8) Может я ошибаюсь, но в файловом варианте клиент запускается в толстом режиме, а получитьобъект() доступно в толстом клиенте.
То есть, если запустить клиент-серверный вариант в толстом клиенте, то все также отработается.
Поправьте, если я ошибаюсь.
17. YannikAlx 43 11.12.18 16:35 Сейчас в теме
(10) Вы правы, только толстый клиент имеет ТУЧУ минусов, не даром же сделали тонкий... ;-)
18. oleg-x 26 11.12.18 16:49 Сейчас в теме
(17) Ну если не брать во внимание производительность, то я о минусах не в курсе. Главное что бы клиентская машина была шустрой.
19. YannikAlx 43 11.12.18 17:09 Сейчас в теме
(18) Ага а еще канал оптоволоконный ...
А так нормально работает ERP на толстом клиенте...
20. oleg-x 26 11.12.18 17:19 Сейчас в теме
(19) Не говори мне о ERP, не работал с ней и хорошо. Решил как то открыть просто конфигурацию посмотреть, вообщем пока на комп не докупил до 12Гб (хватило бы и 8, но не то) оперативы, открыть было не реально. Это тот еще монстр :-)
21. YannikAlx 43 11.12.18 17:21 Сейчас в теме
(20) Сейчас все практически новые конфигурации становятся монстрами и потому Толстый клиент запускать просто невозможно порой.
11. blandinko 11.12.18 15:26 Сейчас в теме
(8) у нас клиент-серверный вариант
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день