0. bugtester 205 11.09.18 09:09 Сейчас в теме

Заполнение дополнительных реквизитов при программном открытии формы из другой формы.

Дополнительные реквизиты в типовых конфигурациях хранятся у объектов в табличной части ДополнительныеРеквизиты.
Но на форме ее нет. Так что же заполнять при программном заполнении формы для открытия?
И откуда берется нечто вида "ДополнительныйРеквизитЗначение_ 2C506AEDx453Ax11E8x8130x0050569C309C_ 03D89E6Fx64A2x11E8xBDFBx0022642B037A"?

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. ducks01 11.09.18 11:00 Сейчас в теме
(0) это работает примерно так:
ОписаниеОбъекта = Форма.Объект;

ОписаниеСвойств = УправлениеСвойствамиСлужебный.ЗначенияСвойств(
ОписаниеОбъекта.ДополнительныеРеквизиты.Выгрузить(),
Форма.Свойства_НаборыДополнительныхРеквизитовОбъекта,
Ложь,
ОписаниеОбъекта);  

Для каждого ОписаниеСвойства Из ОписаниеСвойств Цикл
	
	ИмяРеквизитаЗначение = "ДополнительныйРеквизитЗначение_" 
	+ СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Набор.УникальныйИдентификатор())), "-", "x")
	+ "_"
	+ СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Свойство.УникальныйИдентификатор())), "-", "x");
	
	Форма[ИмяРеквизитаЗначение] = "тут значение вам необходимое";		
					
КонецЦикла;
Показать
2. bugtester 205 11.09.18 13:20 Сейчас в теме
(1) Все хорошо, только не пойдет, когда вам нужно из одной формы (некоей обработки)
заполнить доп.реквизит в другой полученной форме (форме документа отпуска, не меняя модуль формы этого документа),
например, как здесь https://infostart.ru/public/901823/
Вы находитесь в форме документа, а я нахожусь в форме обработки,
и там в процедуре ЗагрузитьДокумент25() заполняю полученную форму документа Отпуск

И исполнение вашего кода на клиенте? Этот код весь отрабатывает на клиенте?
3. bugtester 205 12.09.18 04:41 Сейчас в теме
(1) Смотрите, что получается, если ваш код на клиенте (а он на клиенте, т.к. на сервере он может быть только, когда находится в модуле формы объекта и эта форма создается на сервере, иначе управляемую форму на сервер не получится передать):

Переменная не определена (УправлениеСвойствамиСлужебный)
ОписаниеСвойств = <<?>>УправлениеСвойствамиСлужебный.ЗначенияСвойств( (Проверка: Тонкий клиент)
4. ducks01 12.09.18 06:48 Сейчас в теме
(3) на клиенте, я делал это в расширении 1с. по вашей ошибке понятно что у вас нет этого Типового модуля, ищите аналог и используйте.
5. bugtester 205 12.09.18 07:12 Сейчас в теме
(4) Неверные у вас выводы. Этот общий модуль с процедурой есть в конфигурации, используется типовая ЗУП 3.1.
И в моей статье в частности тоже используется УправлениеСвойствамиСлужебный.ЗначенияСвойств()
(у общего модуля УправлениеСвойствамиСлужебный галочки "сервер", "внешнее соединение"),
только УправлениеСвойствамиСлужебный.ЗначенияСвойств() у меня вызывается из серверной процедуры модуля формы обработки. Код моей статьи работает.
С клиента модуля формы обработки процедура этого общего модуля не может вызываться, см. ошибку выше - ваш код не работает.
Ваш код почти по пути получения данных для заполнения и есть мой, только мой с разбивкой что может делаться на сервере, что на клиенте.
И реквизит формы заполняется не тут же, а при возврате на клиент.
Данные, полученные на сервере, заворачиваются в список значений, где строки структуры (по сути все вместе это таблица значений, только ее в параметрах нельзя было передать обратно) и передаются на клиент для заполнения формы.
8. ducks01 12.09.18 07:43 Сейчас в теме
(5) вы спросили откуда берется "нечто вида" я вам ответил, использовал из типового метода. Рабочий код для вашего случая я вам не гарантировал. раз вы его тоже использовали то зачем вопросы задаете.
11. bugtester 205 12.09.18 08:27 Сейчас в теме
(8) Рука-лицо. А то что этот вопрос был в анонсе статьи, как затравка для дальнейшего раскрытия, вас не смутило?)
13. ducks01 12.09.18 08:53 Сейчас в теме
(11) не заметил, на форуме они идут в одном списке только иконки отличаются. Можете очистить ветку если такая возможность есть. А я не пойму что это вы так агрессивно доказываете ) удачи вам!
14. bugtester 205 12.09.18 08:58 Сейчас в теме
12. bugtester 205 12.09.18 08:41 Сейчас в теме
(8) Проблема, решаемая в статье (помимо попутного рассказа что и где заполнять у доп.реквизитов на форме), как раз в том, что управляемую форму, причем полученную программно в другом месте, не передашь на сервер в готовую типовую процедуру.
Это пример рабочего кода, как процедуру УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(УправляемаяФорма) можно модифицировать, если передавать в параметры не форму, а объект формы.

PS У Павла Чистова есть хороший текст про существование формы на клиенте и на сервере http://goo.gl/oMYBcM
6. bugtester 205 12.09.18 07:14 Сейчас в теме
(4) в каком месте расширения 1С вы использовали этот код?
9. ducks01 12.09.18 07:44 Сейчас в теме
(6) ввел в заблуждение, использовал в новом серверном общем модуле
10. bugtester 205 12.09.18 08:21 Сейчас в теме
(9) А форма как попадает в процедуру на серверном общем модуле?
Из ПриСозданииНаСервере же в модуле той формы?

В том то и проблема была, что нельзя для готовой типовой процедуры на серверном общем модуле передать управляемую форму как параметр, если она была получена где-то программно. В статье написано, как сделать то же самое по сути, что и в типовой конфигурации, но через передачу Объекта формы в качестве параметра.

у Павла Чистова есть хороший текст про существование формы на сервере и на клиенте http://goo.gl/oMYBcM
7. bugtester 205 12.09.18 07:34 Сейчас в теме
(4) у серверного общего модуля УправлениеСвойствамиСлужебный нет галочки "вызов сервера",
поэтому очень интересно как у вас эта процедура с клиента вызывается

https://infostart.ru/public/86838/

со стороны клиента можно вызывать

1) клиентские процедуры данного модуля, с директивой &НаКлиенте;
2) серверные процедуры данного модуля, с директивой &НаСервере;
3) клиентские процедуры общего модуля, с директивой &НаКлиенте(при условии наличия в свойствах доступности в нескольких контекстах, «Клиент» обязателен и др.);
4) все процедуры клиентского общего модуля , в свойствах общего модуля должно быть только свойство «Клиент(управляемое приложение)». Директиву &НаКлиенте в общем модуле в этом случае не пишут;
5) процедуры серверного общего модуля, но с дополнительным свойством «Вызов сервера», причем важно чтобы общий модуль имел только свойство компиляции на сервере.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

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

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

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день