Нельзя изменять поле, содержащее объект данных формы #704203


#0 by MrGray
Внешняя обработка. Хочется: выбрать документ и выполнить команду. Команда состоит (в самом упрощенном варианте): изменение реквизита ТЧ "Товары". Платформа 8.3 Вот код который нихрена не работает. Кто подскажет, где рыть.. &НаКлиенте &НаСервере что не так?
#1 by H A D G E H O G s
Взять и переписать нормально
#2 by MrGray
Пример можно?
#3 by H A D G E H O G s
завтра
#4 by DirecTwiX
&НаСервере
#5 by MrGray
Было б так просто, если б не было так никак ) Собственно с такого кода и начал. Ошибка та же. Может на 8.2 это еще прокатывает, но на 83 - нет. при возврате на клиента вываливается с ошибкой выше. моск чуть не сломал, казалось бы, что указанный код должен по логике работать, но при вызове именно из внешней не работает. получилось вернуть через копию ДФК на клиента и впнуть измененный вариант (КопироватьДанныеФормы) в форму. Не пришлось даже прикладной объект создавать лишний. Фух. спать. Вопрос снят.
#6 by DirecTwiX
Всё работает. Наверняка ты писал А в Объект уже лежат данные формы
#7 by MrGray
Да, лежат, только при возврате в клиент, хоть ужом свернись - данные формы вызванной из внешней обработки выдают сабж. Я перепробовал все варианты, и, кстати, если оченить код последней УТ на 8.3, они даже не пытаются создавать прикладной объект, например: "заполнить по выбранному типу цен". там тупо передаётся ТЧ на сервер в форме, далее в общий модуль и просто "для каждого" переписывается ТЧ... НО!! не работает данный выверт с вызовом неизвестной вн.обработкой! ну не знаю почему - факт! могу скинуть это счастья для проверки (может в 8.2) работает (в тест обработке у меня ВСЕ выше описанные функции и процедуры)
#8 by MrGray
кстати, если оченить *оценить
#9 by DirecTwiX
Скорее всего, у тебя у команды стоит галка "Изменяет данные") И форма автоматом перечитывает данные после возвращения на клиент. Если нет, то кидай)
#10 by MrGray
А смысл в галке?? я могу поставить Знач.. только это никак не решает вопроса при возврате на клиент! Сброшу конечно) может есть мысли.. Вопрос чисто, в данном случае, теоритический, поскольку далее всё будет происходить объектами БД. В течении получаса - сброшу, вдорогетелефоном пока -/
#11 by DirecTwiX
У общей команды есть свойство "Изменяет данные" (сам вчера только узнал)). Хотя навряд ли тут шла речь про общую команду. ИзменяетДанные (ModifiesData) Использование: Только чтение. Описание: Тип: Булево. Если выполняется команда, у которой свойство установлено в Истина, то после ее выполнения форма перечитывает данные. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
#12 by MrGray
Тут и оно, что команда на форме вн.обработки. возможно и я не полностью докурил эту тему, но ща сброшу код (в идеале проверить бы на 82 ут, но можно и на др. виде конфы)
#13 by H A D G E H O G s
Бред какой-то. Давайте cf шник, все покажу как надо
#14 by DirecTwiX
На форму внешней обработки можно общую команду повесить) Сам вчера проверял)
#15 by MrGray
Можно!! но вопрос в том, что конфига не меняется. и как любому разрабу - мне не хочется потом маятся с обновлениями! код ниже .. .
#16 by MrGray
&НаКлиенте
#17 by MrGray
И не важно, весь ДФС или ДФК - в конце ЖПА...
#18 by MrGray
Если есть - то проверяй на УТ
#19 by DirecTwiX
Что тут проверять?) Ты же как раз пытаешься изменять поле, содержащее объект данных формы)
#20 by H A D G E H O G s
Ты мне обработку пришли, у тебя ересь тут
#21 by MrGray
Так.. давай мою ошибку ( На 8.2 сейчас проверил - вообще ругань! как вернуть изменение после обработки реквизита обратно в форму выбранного документа?
#22 by H A D G E H O G s
Вот это что за кусок херни?
#23 by H A D G E H O G s
Обработку пришли
#24 by H A D G E H O G s
буду минут через 40
#25 by MrGray
Этот кусок херни получает ссылку на выбранный документ во внешей обработке
#26 by MrGray
Всего однин доп. реквизит бла-бла документ
#27 by H A D G E H O G s
У тебя Толстый Клиент штоле?
#28 by H A D G E H O G s
ДокОбъектФормаТовары - мутабельное значение, его нельзя на сервер отправлять.
#29 by H A D G E H O G s
пришли обработку, не сношай мозг ни себе, не людям.
#30 by MrGray
Да не важно! хоть тонкий, хоть web суть-то в чем? "а суть-то в нашем подъезде!" выбираю документ (ссылка), выбираю форму этого объекта - далее МЕНЯТЬ её хочу... во внешней обработке, я понимаю, что в теле вн.объекта сделать это на "птьфу", а вот при выборе объекта из все - шляпа.. с перьями и, - конечно я меняю объект, но что-то получилось только в первом варианте.
#31 by DirecTwiX
При чём тут форма?) Если у тебя есть форма, то передавай объект. Если у тебя нет формы, то тема ни о чём)
#32 by MrGray
"пришли обработку, не сношай мозг ни себе, не людям." кто снашает-то? вопрос я закрыл. остался вопрос по передачи изменёного объекта на форму. Читай выше - форма и её ДФК я могу передать и получить изменения. - вернуть сервер НЕ может ))
#33 by MrGray
ДокОбъектФормаТовары = ДФК его можно передавать как хочется
#34 by zladenuw
на какой возвращать объект на клиент. его нужно засунуть в форму и форму перечетать и все!
#35 by zladenuw
я бы посоветовал почитать книгу о УФ. а не писать такой код
#36 by MrGray
Именно! в первом варианте копия ДФК копируется на форму) второй вариант - прямая тождесственность ТЧ объекта -- затыкается при выходе из серверной процедуры
#37 by MrGray
Книгу? ) ты код-то проверь или выложи вариант.
#38 by zladenuw
вообще что ты хочешь сделать, у тебя подход не верный. тебе об этом платформа и говорить. что ты делаешь не так
#39 by Новиков
О майн гот. Чел, а ю крейзи. Какие передачи ТЧ с клиента на сервер и обратно? 0_0?
#40 by MrGray
Еще РАЗ ПОДЧЕРКИВАЮ!!! - вызов формы объекта по ссылке ИЗ ВНЕШНЕЙ обработки! вы хоть проверьте, или пишите код. я - проверил за ночь все возможные варианты. и, главное, мой пост выше, про УТ 83 - не надо получать прикладной объект - он на не нужен в 83
#41 by zladenuw
ВыполнитьИзменениеТЧ2(ДокОбъектФорма);     не верно в корень. что ты этим хотел сделать ? если тебе нужно получить реквизит свой на сервере то надо просто написать РеквизитФормыВЗначение(Док,Тип("ДокументОбъект.ЗаказКлиента"))
#42 by MrGray
? что смущает? или пятница?
#43 by MrGray
еще раз с поста выше &НаКлиенте
#44 by MrGray
Можно и реквизит. ветку дочитай - возвращает сабж
#45 by zladenuw
во первых. ты написал что у тебя реквизит формы это ССЫЛКА. а ты лупишь объект. по этому тебе платформу посылает накуй. а во вторых можно было написать просто вот так &НаКлиенте не вижу смысл получать форму. это вообще ересь.
#46 by MrGray
Мне не нужен объект, если не понятно. Мне - нужна форма, которую юзер потом посмотрит и отредактирует! мне нужен объект ФОРМЫ, которую я/ты/они изменят и увилят результат на форме перед записью объекта БД! на кой куй мне объект БД?? это, есессно можно сделать невзачай.. Кому не интересен сабж - ну не трольте пжлста
#47 by MrGray
И, опять же - вопрос решен!!! интерес в том, что не работают некоторые варианты 82
#48 by MrGray
Смысл в холиваре "кто круче знает платформу", - пример в "студию" по ИЗМЕНЕНИЮ реквизита формы вызванной из внешней обработки
#49 by zladenuw
ну так изменить можно. без открытие формы. платформа тебе и сообщает. что ты открыл форму объекта для пользователя. а это значит. что блокируется объект
#50 by Новиков
А ничего, что вообще то то что ты написал, это совершенно не тот тип, о котором я упомянул? Пятница, не? или уже читаем а, а видим - б?
#51 by Feunoir
Если по чесноку, то в треде полна каша, да и в голове у тебя тоже, только не обижайся. Мне в своё время очень сильно помог видеокурс по управляемым формам от spec8.ru. Я только не помню есть он в бесплатном доступе или нет. Там за пару часов всё раскладывается по полочкам и больше вопросы такого типа просто не возникают. Правда надо к моменту просмотра иметь представление об идеологии клиент-сервер. Теперь по теме. Объект.Док это ссылка на какой-то документ. Ты хочешь внести какие-то изменения в табличную часть документа, а потом показать форму этого документа пользователю не записывая. Правильно?
#52 by MrGray
Я писал именно про тот тип пост
#53 by MrGray
Ну, свежая, адекватная, понимающая мысль! Именно в это был затык с ковертацией в объект - от обратно не возвращался. В коде выше я решение нашел, причем, кардинально упращаяющее данное задание. Вопрос только в том, почему ОбъектФорма, который я меняю на сервере не уходит на Клиент! всё.
#54 by MrGray
*прошу прощения за очепятки. ток пришел.
#55 by MrGray
"Ты хочешь внести какие-то изменения в табличную часть документа, а потом показать форму этого документа пользователю не записывая" именно! Для этого и есть ДФС
#56 by MrGray
Всё-равно, всем спасибо за интерес, решение - пост .
#57 by Feunoir
Ок. Тогда, если ты говоришь про код из , получается вот что: после этого в ДокОбъектФорма не ДанныеФормыСтруктура, а Форма или УправляемаяФорма. Ты эту форму открываешь, а потомы передаёшь на сервер. Вот тут-то мне совсем не понятно как платформа тебе это позволяет сделать. По хорошему ты должен был получить ошибку о неправильном параметре 1 - неверный тип ну и дальше подробности. А вот если ты из ДокОбъектФорма заберёшь Объект, вот это уже будет ДФС. Ну а дельше можно попытаться воспользоваться ДанныеФормыВЗначение. Но если у тебя работает, то ладно.
#58 by MrGray
/////===== Где я передаю мутабельное или не сереализуемое значение?
#59 by MrGray
"А вот если ты из ДокОбъектФорма заберёшь Объект, вот это уже будет ДФС"
#60 by MrGray
Для всех: постами выше - готовый вариант с двумя решениями, одно работает, второе вы навязываете, но даже не проверили! ЕЩЕ РАЗ: речь о 83
#61 by Feunoir
Если ВыполнитьИзменениеТЧ1(ТоварыКоллекция) передаётся по значению, то скорее всего нигде. Только этот код первый раз в треде фигурирует. Поэтому ничего подробнее сказать не могу.
#62 by MrGray
ВыполнитьИзменениеТЧ1(ТоварыКоллекция) Приходит на сервер как ДФК
#63 by Feunoir
Ещё раз. Ты действуешь методом "научного тыка". А можно понимать что делаешь. 8.2 от 8.3 не сильно отличаются. А вот толстый клиент от тонкого и, тем более, обычных форм - сильно. У меня стойкий рефлекс - ни ДФС, ни ДФК напрямую в параметрах процедуры/функции между клиентом и сервером не передавать.
#64 by MrGray
Проверь сам, если передавать коллекцию формы, вызванноый из внеш.обработки, вернуть измененный объект формы не получится. можно вернуть коллекцию, но... она естесствеенно уже не тождественна начальной (проверить можно отладчиком), поэтому, единственный вариант, что я нашел: передача изменений в тот же реквизит формы.
#65 by MrGray
Как так? это единственный вариант передать SRV-CLNT-SRV структуру данных без зависимости к объекту БД
#66 by MrGray
Тыка? это единственный момент, что меня заинтриговал, потому и обратился на мисту.. Данный вопрос, я направлял и в 1с. .. - думают.
#67 by MrGray
И главное - городить огородами, все умеют - туда сюда по клиент-серверу, однако ни кто не предоставил рабочий вариант данной задачи. Хотя казалось - ну ваабще тривиально.. ДанныеФормыВЗначение/РеквизитФормыВЗначение и обратно не работают должно в данном варианте. (точнее, получается сабж)
#68 by Feunoir
Короче. Вот твой вариант.
#69 by MrGray
Аллилуйя! ) я об этом варианте написал Именно так, только речь в о новом объекте! ))
#70 by MrGray
Поэтому приходится делать копию ДФК
#71 by H A D G E H O G s
#72 by Feunoir
Это не важно, что для нового. Получить форму для существующего объекта ничуть не сложнее.
#73 by MrGray
Это к тому, что я должен сразу открыть новую форму с моей ссылкой? В этом вопроса нет)
#74 by MrGray
Feunoir, ты меня услышал и внял вопросу. Спасибо. Я уже не просил решения, но ты показал всем, где можно его взять))
#75 by H A D G E H O G s
А в чем есть вопрос?
#76 by MrGray
Как тему закрыть? полный вагон песка, когда нужен один камень.
#77 by MrGray
Вопрос в окрытии ссылки на объект, открыть форму объекта, передать на сервер, обработать и "залить" обратно в форму. Реквизит не важен, будь то, ТЧ или поле... Важен (был) вопрос, чтобы это шляпа работала из неизвестной внешней обработки.
#78 by MrGray
Это к вопросу "косяков" 8.3 Запрос.Текст("* ИЗ Константы КАК Константы")
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С