Обратиться к объекту обработки, которая находится в конфигурации
Всем привет! Подскажите, как можно обратиться к объекту или форме обработки на сервере. Обработка находиться в конфигурации (не внешняя). Пробую так :
Но даёт ошибку "интерактивные операции недоступны". Управляемые формы. За ранее спасибо за ответы
Обработка = Обработки.ЗагрузкаКоэффициентТранспорта;
ФормаОбработки = Обработка.ПолучитьФорму("Форма");
Но даёт ошибку "интерактивные операции недоступны". Управляемые формы. За ранее спасибо за ответы
По теме из базы знаний
- Автоматизированная проверка конфигураций… и пара слов о стандартах разработки
- Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов
- Правила и приемы доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления
- Исправляем проблемы производительности в конфигурации ERP - 7 примеров
- Промышленное тестирование конфигураций в 1С
Найденные решения
(4) по команде вызываете серверную функцию. В ней выгружаете табличную часть в ТЗ. Сворачиваете и помещаете во временное хранилище. Адрес хранилища возвращаете на клиент и открываете форму обработки через ОткрытьФорму, с передачей параметром адреса временного хранилища.
В обработке получаете ТЗ из временного хранилища и загружаете.
В обработке получаете ТЗ из временного хранилища и загружаете.
(6)
А получать из временного хранилища нужно в обработке, в обработчике ПриСозданииНаСервере.
Переданный адрес будет в Параметры.АдресХранилища
&НаСервере
Функция РассчетПослеНаСервере()
ТЗ = Объект.Товары.Выгрузить();
ТЗ.Свернуть("Поставщик");
АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ, ЭтаФорма.УникальныйИдентификатор);
Возврат АдресХранилища;
КонецФункции
&НаКлиенте
Процедура РассчетПосле(Команда)
АдресХранилища = РассчетПослеНаСервере();
ОткрытьФорму("Обработка.ЗагрузкаКоэффициентТранспорта.Форма",Новый Структура("АдресХранилища",АдресХранилища) ,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
ПоказатьА получать из временного хранилища нужно в обработке, в обработчике ПриСозданииНаСервере.
Переданный адрес будет в Параметры.АдресХранилища
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Перем АдресХранилища;
Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
// далее загрузить полученную ТЗ.
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Что дальше-то с формой делать собираетесь?
Это будет модуль менеджера обработки.
И в целом ПолучитьФорму - это модальное открытие. Лучше его не использовать в УФ.
Почитайте лучше тут -https://infostart.ru/1c/articles/236382/
Обработка = Обработки.ЗагрузкаКоэффициентТранспорта;
И в целом ПолучитьФорму - это модальное открытие. Лучше его не использовать в УФ.
Почитайте лучше тут -
(4) по команде вызываете серверную функцию. В ней выгружаете табличную часть в ТЗ. Сворачиваете и помещаете во временное хранилище. Адрес хранилища возвращаете на клиент и открываете форму обработки через ОткрытьФорму, с передачей параметром адреса временного хранилища.
В обработке получаете ТЗ из временного хранилища и загружаете.
В обработке получаете ТЗ из временного хранилища и загружаете.
(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'
&НаСервере
Функция РассчетПослеНаСервере()
ТЗ = Объект.Товары.Выгрузить();
ТЗ.Свернуть("Поставщик");
АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ, ЭтаФорма.УникальныйИдентификатор);
ПротоколПереноса = ПолучитьИзВременногоХранилища(АдресХранилища);
Возврат ПротоколПереноса;
КонецФункции
&НаКлиенте
Процедура РассчетПосле(Команда)
СвернутаяТаблица = РассчетПослеНаСервере();
ОткрытьОбработку = ОткрытьФорму("Обработка.ЗагрузкаКоэффициентТранспорта.Форма.Форма",СвернутаяТаблица,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
ПоказатьНо даёт ошибку: Ошибка отображения типов:
Отсутствует отображение для типа '{
{Документ.КоммерческоеПредложениеКлиенту.Форма.ФормаДокумента.Форма(761)}:СвернутаяТаблица = РассчетПослеНаСервере();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{
(6)
А получать из временного хранилища нужно в обработке, в обработчике ПриСозданииНаСервере.
Переданный адрес будет в Параметры.АдресХранилища
&НаСервере
Функция РассчетПослеНаСервере()
ТЗ = Объект.Товары.Выгрузить();
ТЗ.Свернуть("Поставщик");
АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ, ЭтаФорма.УникальныйИдентификатор);
Возврат АдресХранилища;
КонецФункции
&НаКлиенте
Процедура РассчетПосле(Команда)
АдресХранилища = РассчетПослеНаСервере();
ОткрытьФорму("Обработка.ЗагрузкаКоэффициентТранспорта.Форма",Новый Структура("АдресХранилища",АдресХранилища) ,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
ПоказатьА получать из временного хранилища нужно в обработке, в обработчике ПриСозданииНаСервере.
Переданный адрес будет в Параметры.АдресХранилища
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Перем АдресХранилища;
Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
// далее загрузить полученную ТЗ.
КонецЕсли;
КонецПроцедуры
Показать
(7) Подскажи пожалуйста, делал так сознаюсь:
Строчки создает, а поля пустые не заполнены. Я так понял реквизиты в ТЧ документа и в ТЧ обработки должны называться одинаково ?
Потом попробовал так:
Все равно создал 2 строки как и должно быть но они пустые. Где я ошибся ?
Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
// далее загрузить полученную ТЗ.
Объект.Товары.Загрузить(ТЗ);
УдалитьИзВременногоХранилища(АдресХранилища);
КонецЕсли;
Строчки создает, а поля пустые не заполнены. Я так понял реквизиты в ТЧ документа и в ТЧ обработки должны называться одинаково ?
Потом попробовал так:
Если Параметры.Свойство("АдресХранилища",АдресХранилища) И ЭтоАдресВременногоХранилища(АдресХранилища) Тогда
ТЗ = ПолучитьИзВременногоХранилища(АдресХранилища);
// далее загрузить полученную ТЗ.
Для Каждого СтрокаТЗ Из ТЗ Цикл
СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.Поставщик); ;
КонецЦикла;
УдалитьИзВременногоХранилища(АдресХранилища);
КонецЕсли;
ПоказатьВсе равно создал 2 строки как и должно быть но они пустые. Где я ошибся ?
(8)
Если типы совпадают, но разные имена реквизитов ТЧ, то можно так:
Для Каждого СтрокаТЗ Из ТЗ Цикл
СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.Поставщик); ;
КонецЦикла;
СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.Поставщик); ;
КонецЦикла;
Если типы совпадают, но разные имена реквизитов ТЧ, то можно так:
Для Каждого СтрокаТЗ Из ТЗ Цикл
СтрокаОБ = Объект.Товары.Добавить();
СтрокаОБ.Поставщик = СтрокаТЗ.Поставщик;
КонецЦикла;
(10) да так и сделал) Спасибо огромное за помощь!!!
Подскажи пожалуйста еще, в дальнейшем в этой форме обработки хотят вычислять некоторые числа и затем записывать их в табличную часть документа по кнопке. Потом с сервера обработки реально будет передать значения на клиент в тч документа?
Для Каждого СтрокаТЗ Из ТЗ Цикл
СтрокаОБ = ЭтаФорма.Объект.Товары.Добавить();
СтрокаОБ.Поставщик = СтрокаТЗ.лПоставщик;
СтрокаОБ.СуммаОтПоставщика = СтрокаТЗ.Сумма;
//ЗаполнитьЗначенияСвойств(СтрокаОБ.Поставщик, СтрокаТЗ.этлПоставщик);
КонецЦикла;
Подскажи пожалуйста еще, в дальнейшем в этой форме обработки хотят вычислять некоторые числа и затем записывать их в табличную часть документа по кнопке. Потом с сервера обработки реально будет передать значения на клиент в тч документа?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот