Обратиться к объекту обработки, которая находится в конфигурации

1. Lllypuk 08.04.22 15:47 Сейчас в теме
Всем привет! Подскажите, как можно обратиться к объекту или форме обработки на сервере. Обработка находиться в конфигурации (не внешняя). Пробую так :
Обработка      = Обработки.ЗагрузкаКоэффициентТранспорта; 
ФормаОбработки = Обработка.ПолучитьФорму("Форма"); 

Но даёт ошибку "интерактивные операции недоступны". Управляемые формы. За ранее спасибо за ответы
По теме из базы знаний
Найденные решения
5. spacecraft 08.04.22 16:19 Сейчас в теме
(4) по команде вызываете серверную функцию. В ней выгружаете табличную часть в ТЗ. Сворачиваете и помещаете во временное хранилище. Адрес хранилища возвращаете на клиент и открываете форму обработки через ОткрытьФорму, с передачей параметром адреса временного хранилища.
В обработке получаете ТЗ из временного хранилища и загружаете.
7. spacecraft 08.04.22 17:14 Сейчас в теме
(6)
&НаСервере
Функция РассчетПослеНаСервере()

ТЗ = Объект.Товары.Выгрузить();
    ТЗ.Свернуть("Поставщик"); 
    
    АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ, ЭтаФорма.УникальныйИдентификатор);
    
    Возврат АдресХранилища;
КонецФункции


&НаКлиенте
Процедура РассчетПосле(Команда)
АдресХранилища  = РассчетПослеНаСервере();

ОткрытьФорму("Обработка.ЗагрузкаКоэффициентТранспорта.Форма",Новый Структура("АдресХранилища",АдресХранилища) ,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

Показать

А получать из временного хранилища нужно в обработке, в обработчике ПриСозданииНаСервере.
Переданный адрес будет в Параметры.АдресХранилища
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Перем АдресХранилища;
   
    Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
        ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
        // далее загрузить полученную ТЗ.
    КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. EVKash 16 08.04.22 16:05 Сейчас в теме
(1) Что дальше-то с формой делать собираетесь?
Обработка      = Обработки.ЗагрузкаКоэффициентТранспорта;
Это будет модуль менеджера обработки.
И в целом ПолучитьФорму - это модальное открытие. Лучше его не использовать в УФ.
Почитайте лучше тут - https://infostart.ru/1c/articles/236382/
4. Lllypuk 08.04.22 16:14 Сейчас в теме
(2) У меня в обработке форма с табличной частью "Товары" а кнопка вызова этой обработки в документе находиться. По нажатию этой кнопки должна свернуться табличная часть из документа и перенестись в обработку.
5. spacecraft 08.04.22 16:19 Сейчас в теме
(4) по команде вызываете серверную функцию. В ней выгружаете табличную часть в ТЗ. Сворачиваете и помещаете во временное хранилище. Адрес хранилища возвращаете на клиент и открываете форму обработки через ОткрытьФорму, с передачей параметром адреса временного хранилища.
В обработке получаете ТЗ из временного хранилища и загружаете.
6. Lllypuk 08.04.22 16:49 Сейчас в теме
(5) Делаю так:
&НаСервере
Функция РассчетПослеНаСервере()

ТЗ = Объект.Товары.Выгрузить();
	ТЗ.Свернуть("Поставщик"); 
	
	АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ, ЭтаФорма.УникальныйИдентификатор);
	ПротоколПереноса = ПолучитьИзВременногоХранилища(АдресХранилища);
	
	Возврат ПротоколПереноса;
КонецФункции

&НаКлиенте
Процедура РассчетПосле(Команда)
СвернутаяТаблица = РассчетПослеНаСервере();

ОткрытьОбработку = ОткрытьФорму("Обработка.ЗагрузкаКоэффициентТранспорта.Форма.Форма",СвернутаяТаблица,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
Показать

Но даёт ошибку: Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
{Документ.КоммерческоеПредложениеКлиенту.Форма.ФормаДокумента.Форма(761)}:СвернутаяТаблица = РассчетПослеНаСервере();

по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
7. spacecraft 08.04.22 17:14 Сейчас в теме
(6)
&НаСервере
Функция РассчетПослеНаСервере()

ТЗ = Объект.Товары.Выгрузить();
    ТЗ.Свернуть("Поставщик"); 
    
    АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ, ЭтаФорма.УникальныйИдентификатор);
    
    Возврат АдресХранилища;
КонецФункции


&НаКлиенте
Процедура РассчетПосле(Команда)
АдресХранилища  = РассчетПослеНаСервере();

ОткрытьФорму("Обработка.ЗагрузкаКоэффициентТранспорта.Форма",Новый Структура("АдресХранилища",АдресХранилища) ,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

Показать

А получать из временного хранилища нужно в обработке, в обработчике ПриСозданииНаСервере.
Переданный адрес будет в Параметры.АдресХранилища
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Перем АдресХранилища;
   
    Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
        ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
        // далее загрузить полученную ТЗ.
    КонецЕсли;
КонецПроцедуры
Показать
8. Lllypuk 08.04.22 21:26 Сейчас в теме
(7) Подскажи пожалуйста, делал так сознаюсь:
Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
        ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
        // далее загрузить полученную ТЗ.
Объект.Товары.Загрузить(ТЗ); 
УдалитьИзВременногоХранилища(АдресХранилища);
    КонецЕсли;

Строчки создает, а поля пустые не заполнены. Я так понял реквизиты в ТЧ документа и в ТЧ обработки должны называться одинаково ?

Потом попробовал так:
    Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
        ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
        // далее загрузить полученную ТЗ.  
		Для Каждого СтрокаТЗ Из ТЗ Цикл      
			 СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
			  ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.Поставщик); ; 		
		КонецЦикла;        
		УдалитьИзВременногоХранилища(АдресХранилища);
	    КонецЕсли;
Показать

Все равно создал 2 строки как и должно быть но они пустые. Где я ошибся ?
9. spacecraft 08.04.22 21:40 Сейчас в теме
(8)
Я так понял реквизиты в ТЧ документа и в ТЧ обработки должны называться одинаково ?

Да. И наименования и типы должны совпадать.
10. spacecraft 08.04.22 21:46 Сейчас в теме
(8)
Для Каждого СтрокаТЗ Из ТЗ Цикл
СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.Поставщик); ;
КонецЦикла;

Если типы совпадают, но разные имена реквизитов ТЧ, то можно так:
Для Каждого СтрокаТЗ Из ТЗ Цикл      
             СтрокаОБ = Объект.Товары.Добавить();
              СтрокаОБ.Поставщик = СтрокаТЗ.Поставщик;         
        КонецЦикла;
3. user1278383 5 08.04.22 16:07 Сейчас в теме
ПолучитьФорму на сервере? Интересно
EVKash; user1619761; +2 Ответить
11. Lllypuk 08.04.22 21:58 Сейчас в теме
(10) да так и сделал) Спасибо огромное за помощь!!!
Для Каждого СтрокаТЗ Из ТЗ Цикл      
			 СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
			 СтрокаОБ.Поставщик = СтрокаТЗ.лПоставщик;
			 СтрокаОБ.СуммаОтПоставщика = СтрокаТЗ.Сумма; 
			 //ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.этлПоставщик); 		
		КонецЦикла;   


Подскажи пожалуйста еще, в дальнейшем в этой форме обработки хотят вычислять некоторые числа и затем записывать их в табличную часть документа по кнопке. Потом с сервера обработки реально будет передать значения на клиент в тч документа?
12. spacecraft 09.04.22 09:23 Сейчас в теме
(11) обратно можно таким же способом (через временное хранилище). Только таблица в обработке будет свернута. Следовательно можно только полной заменой данных ТЧ документа.
13. Lllypuk 09.04.22 10:12 Сейчас в теме
Оставьте свое сообщение

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