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

11.09.18

Разработка - Универсальные функции

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

Дополнительные реквизиты в типовых конфигурациях хранятся у объектов в табличной части ДополнительныеРеквизиты.

Например, есть документ Отпуск. У него есть дополнительный реквизит "Не по графику", тип булево.

Если мы попробуем заполнить программно табличную часть ДополнительныеРеквизиты на форме, т.е. ДанныеФормыКоллекция ДополнительныеРеквизиты Объекта полученной формы ФормаСозданияДокумента (где значение РеквизитыДокумента25.НеПоГрафику = Истина):

&НаСервере
Функция ПолучитьРеквизитыОтпуск25(ИмяДокумента, УИД) Экспорт
  ...
  РеквизитыДокумента25 = Новый Структура;
  РеквизитыДокумента25.Вставить("НеПоГрафику", ТекДокументТам.ФлагОтпускНеПоГрафику);
  РеквизитыДокумента25.Вставить("НеПоГрафикуСвойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Не по графику"));

.....
&НаКлиенте
Процедура ЗагрузитьДокумент25(Команда = Неопределено)
  ...
  РеквизитыДокумента25 = ПолучитьРеквизитыОтпуск25(ТекДокумент.ТипДокументаТам, ТекДокумент.УИД);
  ...

  Если РеквизитыДокумента25 <> Неопределено Тогда
				
    Если РеквизитыДокумента25.НеПоГрафику Тогда
      ПараметрыОтбораСтрок = Новый Структура;
      ПараметрыОтбораСтрок.Вставить("Свойство", РеквизитыДокумента25.НеПоГрафикуСвойство);
      ОтобранныеСтроки = ФормаСозданияДокумента.Объект.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбораСтрок);
      Если ОтобранныеСтроки.Количество() > 0 Тогда
        Для каждого Стр Из ОтобранныеСтроки Цикл
          Стр.Значение = РеквизитыДокумента25.НеПоГрафику;
        КонецЦикла;
      Иначе
        Стр = ФормаСозданияДокумента.Объект.ДополнительныеРеквизиты.Добавить();
        Стр.Свойство = РеквизитыДокумента25.НеПоГрафикуСвойство;
        Стр.Значение = РеквизитыДокумента25.НеПоГрафику;
      КонецЕсли;
    КонецЕсли;
  ...
  КонецЕсли;

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

При изучении состава формы в отладчике находим таинственный реквизит формы ДополнительныйРеквизитЗначение_2C506AEDx453Ax11E8x8130x0050569C309C_03D89E6Fx64A2x11E8xBDFBx0022642B037A.

Начинаем копать код ПриСозданииНаСервере формы и узнаем, что в этот момент, при серверном создании формы, такие синтетические имена и образуются. Есть такая серверная процедура общего модуля УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(УправляемаяФорма) для этих целей.

Но повторно в нее не залезешь, форма уже получена :-( С клиента на сервер уже управляемую форму не передашь.

Остается переписать ее в свою процедуру (ФормаОбъект - Объект формы передаем по значению, чтобы не выдавались ругательные сообщения о попытке поменять этот Объект):

&НаСервере
Функция ПолучитьСписокДопРеквизитовДляФормы(Знач ФормаОбъект, Свойства_НаборыДополнительныхРеквизитовОбъекта) //из УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(УправляемаяФорма)
	
  СписокДопРеквизитов = Новый СписокЗначений;
  ТаблицаДопРеквизитов = ФормаОбъект.ДополнительныеРеквизиты.Выгрузить();
	
  ОписаниеСвойств = УправлениеСвойствамиСлужебный.ЗначенияСвойств(
		ТаблицаДопРеквизитов,
		Свойства_НаборыДополнительныхРеквизитовОбъекта,
		Ложь);
		
  Для каждого ОписаниеСвойства Из ОписаниеСвойств Цикл
		
    СтруктураДопРеквизитов = Новый Структура;
		
    ИмяУникальнаяЧасть = СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Набор.УникальныйИдентификатор())), "-", "x") + "_" + СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Свойство.УникальныйИдентификатор())), "-", "x");
		
    СтруктураДопРеквизитов.Вставить("ДопРеквизитНаименование", ОписаниеСвойства.Наименование);
    СтруктураДопРеквизитов.Вставить("ДопРеквизитИмяВФорме", "ДополнительныйРеквизитЗначение_" + ИмяУникальнаяЧасть);
    СтруктураДопРеквизитов.Вставить("ДопРеквизитЗначение", ОписаниеСвойства.Значение);
		
    СписокДопРеквизитов.Добавить(СтруктураДопРеквизитов, ОписаниеСвойства.Наименование);
		
  КонецЦикла;
	
  Возврат СписокДопРеквизитов;

КонецФункции

Попутно узнаем о еще одном интересном реквизите формы - Свойства_НаборыДополнительныхРеквизитовОбъекта.
И организовываем, например, такой вызов нашей новой процедуры:

&НаКлиенте
Процедура ЗагрузитьДокумент25(Команда = Неопределено)
  ...
  ФормаСозданияДокумента = ПолучитьФорму("Документ." + ТекДокумент.ТипДокумента + ".Форма.ФормаДокумента", ПараметрыСозданияНовогоДокумента, ЭтотОбъект);
  ...
  РеквизитыДокумента25 = ПолучитьРеквизитыОтпуск25(ТекДокумент.ТипДокументаТам, ТекДокумент.УИД);
  ...

  Если РеквизитыДокумента25 <> Неопределено Тогда
    ...
    //СписокДопРеквизитов - состав: в значении: СтруктураДопРеквизитов, в представлении: имя доп.свойства как в Предприятии
    //СтруктураДопРеквизитов: 
    //ДопРеквизитНаименование - имя доп.свойства как в Предприятии
    //ДопРеквизитИмяВФорме - имя на форме, типа ДополнительныйРеквизитЗначение_2C506AEDx453Ax11E8x8130x0050569C309C_03D89E6Fx64A2x11E8xBDFBx0022642B037A
    //ДопРеквизитЗначение - Булево значение
			
    Свойства_НаборыДополнительныхРеквизитовОбъекта = ФормаСозданияДокумента.Свойства_НаборыДополнительныхРеквизитовОбъекта;
    СписокДопРеквизитов = ПолучитьСписокДопРеквизитовДляФормы(ФормаСозданияДокумента.Объект, Свойства_НаборыДополнительныхРеквизитовОбъекта);
				
    Для каждого СтрДопРекв Из СписокДопРеквизитов Цикл
      СтруктураДопРеквизитов = СтрДопРекв.Значение;
      Если СтрДопРекв.Представление = "Не по графику" Тогда
        ФормаСозданияДокумента[СтруктураДопРеквизитов.ДопРеквизитИмяВФорме] = СтруктураДопРеквизитов.ДопРеквизитЗначение; //РеквизитыДокумента25.НеПоГрафику;
      КонецЕсли; 
    КонецЦикла;
    ...
  КонецЕсли; 

 

И для полноты статьи, текст используемой типовой функции ЗначенияСвойств() общего модуля УправлениеСвойствамиСлужебный (галочки "сервер","внешнее соединение"; галочки "вызов сервера" нет, поэтому ее вызвать с клиента нельзя):

 

// Возвращает заполненную таблицу значений свойств объекта.
Функция ЗначенияСвойств(ДополнительныеСвойстваОбъекта, Наборы, ЭтоДополнительноеСведение) Экспорт
	
	Если ДополнительныеСвойстваОбъекта.Количество() = 0 Тогда
		// Предварительная быстрая проверка использования дополнительных свойств.
		СвойстваНеНайдены = ДополнительныеРеквизитыИСведенияНеНайдены(Наборы, ЭтоДополнительноеСведение);
		
		Если СвойстваНеНайдены Тогда
			ОписаниеСвойств = Новый ТаблицаЗначений;
			ОписаниеСвойств.Колонки.Добавить("Набор");
			ОписаниеСвойств.Колонки.Добавить("Свойство");
			ОписаниеСвойств.Колонки.Добавить("ВладелецДополнительныхЗначений");
			ОписаниеСвойств.Колонки.Добавить("ЗаполнятьОбязательно");
			ОписаниеСвойств.Колонки.Добавить("Наименование");
			ОписаниеСвойств.Колонки.Добавить("ТипЗначения");
			ОписаниеСвойств.Колонки.Добавить("ФорматСвойства");
			ОписаниеСвойств.Колонки.Добавить("МногострочноеПолеВвода");
			ОписаниеСвойств.Колонки.Добавить("Удалено");
			ОписаниеСвойств.Колонки.Добавить("Значение");
			Возврат ОписаниеСвойств;
		КонецЕсли;
	КонецЕсли;
	
	Свойства = ДополнительныеСвойстваОбъекта.ВыгрузитьКолонку("Свойство");
	
	НаборыСвойств = Новый ТаблицаЗначений;
	
	НаборыСвойств.Колонки.Добавить(
		"Набор", Новый ОписаниеТипов("СправочникСсылка.НаборыДополнительныхРеквизитовИСведений"));
	
	НаборыСвойств.Колонки.Добавить(
		"ПорядокНабора", Новый ОписаниеТипов("Число"));
	
	Для каждого ЭлементСписка Из Наборы Цикл
		НоваяСтрока = НаборыСвойств.Добавить();
		НоваяСтрока.Набор         = ЭлементСписка.Значение;
		НоваяСтрока.ПорядокНабора = Наборы.Индекс(ЭлементСписка);
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Свойства",      Свойства);
	Запрос.УстановитьПараметр("НаборыСвойств", НаборыСвойств);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	НаборыСвойств.Набор,
	|	НаборыСвойств.ПорядокНабора
	|ПОМЕСТИТЬ НаборыСвойств
	|ИЗ
	|	&НаборыСвойств КАК НаборыСвойств
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	НаборыСвойств.Набор,
	|	НаборыСвойств.ПорядокНабора,
	|	СвойстваНаборов.Свойство,
	|	СвойстваНаборов.ПометкаУдаления,
	|	СвойстваНаборов.НомерСтроки КАК ПорядокСвойства
	|ПОМЕСТИТЬ СвойстваНаборов
	|ИЗ
	|	НаборыСвойств КАК НаборыСвойств
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов
	|		ПО (СвойстваНаборов.Ссылка = НаборыСвойств.Набор)
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства
	|		ПО (СвойстваНаборов.Свойство = Свойства.Ссылка)
	|ГДЕ
	|	НЕ СвойстваНаборов.ПометкаУдаления
	|	И НЕ Свойства.ПометкаУдаления
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Свойства.Ссылка КАК Свойство
	|ПОМЕСТИТЬ ЗаполненныеСвойства
	|ИЗ
	|	ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства
	|ГДЕ
	|	Свойства.Ссылка В(&Свойства)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СвойстваНаборов.Набор,
	|	СвойстваНаборов.ПорядокНабора,
	|	СвойстваНаборов.Свойство,
	|	СвойстваНаборов.ПорядокСвойства,
	|	СвойстваНаборов.ПометкаУдаления КАК Удалено
	|ПОМЕСТИТЬ ВсеСвойства
	|ИЗ
	|	СвойстваНаборов КАК СвойстваНаборов
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка),
	|	0,
	|	ЗаполненныеСвойства.Свойство,
	|	0,
	|	ИСТИНА
	|ИЗ
	|	ЗаполненныеСвойства КАК ЗаполненныеСвойства
	|		ЛЕВОЕ СОЕДИНЕНИЕ СвойстваНаборов КАК СвойстваНаборов
	|		ПО ЗаполненныеСвойства.Свойство = СвойстваНаборов.Свойство
	|ГДЕ
	|	СвойстваНаборов.Свойство ЕСТЬ NULL 
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВсеСвойства.Набор,
	|	ВсеСвойства.Свойство,
	|	ДополнительныеРеквизитыИСведения.ВладелецДополнительныхЗначений,
	|	ДополнительныеРеквизитыИСведения.ЗаполнятьОбязательно,
	|	ДополнительныеРеквизитыИСведения.Заголовок КАК Наименование,
	|	ДополнительныеРеквизитыИСведения.ТипЗначения,
	|	ДополнительныеРеквизитыИСведения.ФорматСвойства,
	|	ДополнительныеРеквизитыИСведения.МногострочноеПолеВвода,
	|	ВсеСвойства.Удалено КАК Удалено,
	|	ДополнительныеРеквизитыИСведения.Доступен,
	|	ДополнительныеРеквизитыИСведения.Виден,
	|	ДополнительныеРеквизитыИСведения.Подсказка,
	|	ДополнительныеРеквизитыИСведения.ВыводитьВВидеГиперссылки,
	|	ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов.(
	|		ЗависимоеСвойство,
	|		Реквизит,
	|		Условие,
	|		Значение
	|	)
	|ИЗ
	|	ВсеСвойства КАК ВсеСвойства
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
	|		ПО ВсеСвойства.Свойство = ДополнительныеРеквизитыИСведения.Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	Удалено,
	|	ВсеСвойства.ПорядокНабора,
	|	ВсеСвойства.ПорядокСвойства";
	
	Если ЭтоДополнительноеСведение Тогда
		Запрос.Текст = СтрЗаменить(
			Запрос.Текст,
			"Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты",
			"Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения");
	КонецЕсли;
	
	ОписаниеСвойств = Запрос.Выполнить().Выгрузить();
	ОписаниеСвойств.Индексы.Добавить("Свойство");
	ОписаниеСвойств.Колонки.Добавить("Значение");
	
	// Удаление дублей свойств в нижестоящих наборах свойств.
	Если Наборы.Количество() > 1 Тогда
		Индекс = ОписаниеСвойств.Количество()-1;
		
		Пока Индекс >= 0 Цикл
			Строка = ОписаниеСвойств[Индекс];
			НайденнаяСтрока = ОписаниеСвойств.Найти(Строка.Свойство, "Свойство");
			
			Если НайденнаяСтрока <> Неопределено
			   И НайденнаяСтрока <> Строка Тогда
				
				ОписаниеСвойств.Удалить(Индекс);
			КонецЕсли;
			
			Индекс = Индекс-1;
		КонецЦикла;
	КонецЕсли;
	
	// Заполнение значений свойств.
	Для Каждого Строка Из ДополнительныеСвойстваОбъекта Цикл
		ОписаниеСвойства = ОписаниеСвойств.Найти(Строка.Свойство, "Свойство");
		Если ОписаниеСвойства <> Неопределено Тогда
			// Поддержка строк неограниченной длины.
			Если НЕ ЭтоДополнительноеСведение
				И (ИспользоватьНеограниченнуюСтроку(
						ОписаниеСвойства.ТипЗначения,
						ОписаниеСвойства.МногострочноеПолеВвода)
					Или ИспользоватьСтрокуВВидеСсылки(
						ОписаниеСвойства.ТипЗначения,
						ОписаниеСвойства.ВыводитьВВидеГиперссылки,
						ОписаниеСвойства.МногострочноеПолеВвода))
				И НЕ ПустаяСтрока(Строка.ТекстоваяСтрока) Тогда
				
				ОписаниеСвойства.Значение = Строка.ТекстоваяСтрока;
			Иначе
				ОписаниеСвойства.Значение = Строка.Значение;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат ОписаниеСвойств;
	
КонецФункции

 

Вступайте в нашу телеграмм-группу Инфостарт

Дополнительные реквизиты Программное заполнение формы Программное открытие формы Свойства_НаборыДополнительныхРеквизитовОбъекта ДополнительныйРеквизитЗначение Типовые конфигурации ЗУП БП УП УПП ERP 1с 8

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    5477    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    46553    dimanich70    83    

165

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6885    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57688    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8656    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    22858    YA_418728146    8    

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

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

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

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

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

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

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

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

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

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

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

https://forum.infostart.ru/forum9/topic196163/#message2803251
Для отправки сообщения требуется регистрация/авторизация