Как из формы открыть, форму элемента

1. user1979322 15.11.23 12:34 Сейчас в теме
Всем привет, на просторах интернета нашел такую процедуру

Ключ=Новый Структура;
Ключ.Вставить("Ключ",Оборудование_Ссылка);
ОткрытьФорму("Справочник.ЗаводскоеОборудование.Форма.ФормаЭлемента",Ключ);

Но ошибка в том, что “Процедура или функция с указанным именем не определена (ОткрытьФорму)” Что за фигня эта процедура доступна на тонком клиенте
Решил может эту процедуру нужно вызывать НаКлиенте, но опять ошибка “Процедура или функция с указанным именем не определена”
Вот Пример кода

&НаСервере
Процедура ДобавитьКЗаводскомуОборудованиюНаСервере(ДанныеНовогоОборудования)
	ГодВыпуска=ДанныеНовогоОборудования.ГодВыпуска;    //
	ДатаПринятияКУчету=ДанныеНовогоОборудования.ДатаПринятияКУчету; //
	Изготовитель=ДанныеНовогоОборудования.Изготовитель;   //
	Инвентарный=ДанныеНовогоОборудования.Инвентарный;    //
	Наименование=ДанныеНовогоОборудования.Наименование;  //
	
	НомерПаспорта=ДанныеНовогоОборудования.НомерПаспорта;
	ЗаводскойНомер=ДанныеНовогоОборудования.ЗаводскойНомер;
	
	// Записываю данные в справочник оборудования
	СтрокаСправочника=Справочники.ЗаводскоеОборудование.СоздатьЭлемент();
	СтрокаСправочника["Наименование"] = Наименование;
	СтрокаСправочника["Инвен_N"] = СокрЛП(Инвентарный);
	СтрокаСправочника["Производство"] = Изготовитель;
	СтрокаСправочника["Г_ввода"] = ДатаПринятияКУчету;
	СтрокаСправочника["Г_выпу"] = ГодВыпуска;     //
	СтрокаСправочника.Записать();
	
	// Вытаскиваю Ссылку
	Оборудование_Ссылка=Справочники.ЗаводскоеОборудование.НайтиПоРеквизиту("Инвен_N",Инвентарный);
	
	Сообщить("Оборудование сохранилось, для заполнения данных перейди по ссылке");
	Сообщить(Оборудование_Ссылка);
	
	Ключ=Новый Структура;
	Ключ.Вставить("Ключ",Оборудование_Ссылка);
	//ОткрытьФорму("Справочник.ЗаводскоеОборудование.Форма.ФормаЭлемента",Ключ);
	ПрОткрытиеФормы(Ключ);
КонецПроцедуры


&НаКлиенте
Процедура ПрОткрытиеФормы(Ключ) 
	ОткрытьФорму("Справочник.ЗаводскоеОборудование.Форма.ФормаЭлемента",Ключ);
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Pavel Rodinchenko 15.11.23 12:47 Сейчас в теме
(1)а как вы с сервера клиент хотите вызвать?
обычно все наоборот делается.

На сервере делаете функцию, которая вам ссылку вернет, а на клиенте открываете форму
4. user1979322 15.11.23 12:53 Сейчас в теме
(3)Я так и пытался, в итоге ошибка. Может подскажите, что не так
2. starjevschik 15.11.23 12:46 Сейчас в теме
да, клиент-сервер это такая штука... с сервера вызвать клиентскую процедуру никак не получится. Надо менять последовательность вызовов...
5. soft_wind 15.11.23 13:08 Сейчас в теме
самое простое, НаКлиенте такую команду выполните

ПоказатьЗначение( , Оборудование_Ссылка);

(откроется форма элемента)
6. user1979322 15.11.23 13:16 Сейчас в теме
(5) Ошибка появляется
Прикрепленные файлы:
7. soft_wind 15.11.23 13:22 Сейчас в теме
а что же вы названия процедур с ошибками пишите?
(не надо свои опечатки сюда выкладывать! смысл?)
8. user1979322 15.11.23 13:24 Сейчас в теме
(7) Подскажите, а где опечатка, я все перепроверил и опечаток не нашел
9. soft_wind 15.11.23 13:35 Сейчас в теме
так вам же комп пишет
>>ПрОткрытии...

что за ПрОткрытии...
10. user1979322 15.11.23 13:39 Сейчас в теме
(9)это моя процедура, название процедуры могу назвать хоть одной буквой и это не связано с ошибкой
11. Pavel Rodinchenko 15.11.23 13:48 Сейчас в теме
(4)
&НаКлиенте
Процедура ВашаПроцедура()
// Вариант 1
ОписаниеКлюча = Новый Структура;
ОписаниеКлюча.Вставить("Ключ", ПолучитьКлючНаСервере());
ОткрытьФорму("тут название формы", ОписаниеКлюча);
// Вариант 2
ПоказатьЗначение(, ПоулчитьКлючНаСервере());
КонецПроцедуры

&НаСервере
Функция ПолучитьКлючНаСервере(ДанныеНовогоОборудования)

ГодВыпуска=ДанныеНовогоОборудования.ГодВыпуска; //
ДатаПринятияКУчету=ДанныеНовогоОборудования.ДатаПринятияКУчету; //
Изготовитель=ДанныеНовогоОборудования.Изготовитель; //
Инвентарный=ДанныеНовогоОборудования.Инвентарный; //
Наименование=ДанныеНовогоОборудования.Наименование; //

НомерПаспорта=ДанныеНовогоОборудования.НомерПаспорта;
ЗаводскойНомер=ДанныеНовогоОборудования.ЗаводскойНомер;

// Записываю данные в справочник оборудования
НовыйЭлемент=Справочники.ЗаводскоеОборудование.СоздатьЭлемент();
НовыйЭлемент["Наименование"] = Наименование;
НовыйЭлемент["Инвен_N"] = СокрЛП(Инвентарный);
НовыйЭлемент["Производство"] = Изготовитель;
НовыйЭлемент["Г_ввода"] = ДатаПринятияКУчету;
НовыйЭлемент["Г_выпу"] = ГодВыпуска; //
НовыйЭлемент.Записать();

Сообщить("Оборудование сохранилось, для заполнения данных перейди по ссылке");
Сообщить(НовыйЭлемент.Ссылка);

// Вариант 3
Возврат НовыйЭлемент.Ссылка;

// Вариант 4
// в этом варианте пользователю достаточно дважды нажать на сообщение и форма сама откроется.
ТекстСообщения = СтрШаблон("Оборудование сохранилось, для заполнения данных перейди по ссылке: %1", НовыйЭлемент.Ссылка);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, НовыйЭлемент.Ссылка);

// Вариант 5
// См. реализацию навигационной ссылки

КонецФункции
Показать
12. soft_wind 15.11.23 13:54 Сейчас в теме
(10) да, сразу не рассмотрел...

небольшой нюансик

процедуру с НаКлиенте нельзя вызывать из контекста НаСервере!
(вот такие ограничения...)
Оставьте свое сообщение

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