Отсутствует отображение для типа 'РеквизитФормы'
Была поставлена задача сделать так, чтоб в таблице на форме по нажатию кнопки могло появляется N необходимых колонок, где N равно количеству строк в табличной части выбранного элемента справочника, при этом колонки должны заполниться из указной эксель таблицы.
Опустив все не нужные детали проблема свелась к тому, что мне нужно как-то не зная количество колонок записывать новые строки.
В голову не пришло ни чего лучше кроме как передать реквизит создаваемой колонки на клиент через структуру. И передавать массив со списком колонок, собственно по нему и проходиться и через него соединять данные эксельки с полями таблицы на форме. Но при отладке вылезла ошибка "Отсутствует отображение для типа 'РеквизитФормы'" и что сделать чтоб исправить ее я не очень понимаю.
Если мое решение слишком заумное и есть вариант проще, буду рад услышать.
Опустив все не нужные детали проблема свелась к тому, что мне нужно как-то не зная количество колонок записывать новые строки.
В голову не пришло ни чего лучше кроме как передать реквизит создаваемой колонки на клиент через структуру. И передавать массив со списком колонок, собственно по нему и проходиться и через него соединять данные эксельки с полями таблицы на форме. Но при отладке вылезла ошибка "Отсутствует отображение для типа 'РеквизитФормы'" и что сделать чтоб исправить ее я не очень понимаю.
Если мое решение слишком заумное и есть вариант проще, буду рад услышать.
&НаСервере
Функция ОткрытьФайлExcelНаСервере()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Шаблон", ЭтотОбъект.Партнер.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| MM_ШаблоныПрайсовПартнеровЦены.Ссылка.НачалоСтрокНоменклатруы КАК НачалоСтрокНоменклатуры,
| MM_ШаблоныПрайсовПартнеровЦены.Ссылка.КолонкаНаименования КАК КолонкаНаименования,
| MM_ШаблоныПрайсовПартнеровЦены.Ссылка.КолонкаКодаАртикула КАК КолонкаКодаАртикула,
| MM_ШаблоныПрайсовПартнеровЦены.НазваниеЦены КАК НазваниеЦены,
| MM_ШаблоныПрайсовПартнеровЦены.КолонкаЦены КАК КолонкаЦены
|ИЗ
| Справочник.MM_ШаблоныПрайсовПартнеров.Цены КАК MM_ШаблоныПрайсовПартнеровЦены
|ГДЕ
| MM_ШаблоныПрайсовПартнеровЦены.Ссылка = &Шаблон";
ТЗ = Запрос.Выполнить().Выгрузить();
ТипыРеквизита = Новый Массив;
ТипыРеквизита.Добавить(Тип("Строка"));
ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизита);
ДобавляемыеРеквизиты = Новый Массив;
Результат = Новый Структура;
Для каждого Цена из ТЗ Цикл
НовыйРеквизит = Новый РеквизитФормы("Цена" + Цена.НазваниеЦены, ОписаниеТиповДляРеквизита, "Таблица", Цена.НазваниеЦены, Истина);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
Результат.Вставить(Цена.НазваниеЦены,НовыйРеквизит);
КонецЦикла;
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Для каждого Цена из ТЗ Цикл
НовыйЭлемент = Элементы.Добавить(Цена.НазваниеЦены, Тип("ПолеФормы"), Элементы.Таблица);
НовыйЭлемент.ПутьКДанным = "Таблица.Цена" + Цена.НазваниеЦены;
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.КнопкаОчистки = Истина;
КонецЦикла;
Результат.Вставить("НачалоСтрокНоменклатуры",ТЗ[0].НачалоСтрокНоменклатуры);
Результат.Вставить("КолонкаНаименования",ТЗ[0].КолонкаНаименования);
Результат.Вставить("КолонкаКодаАртикула",ТЗ[0].КолонкаКодаАртикула);
МассивЦен = ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТЗ);
Результат.Вставить("МассивЦен",МассивЦен);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ОткрытьФайлExcel(Команда)
//Чтоб не кидать лишнего, убрал отсюда создание COMОбъекта и подсчет КоличествоСтрок эксельки
ПараметрыКолонок = ОткрытьФайлExcelНаСервере();
Для НомерСтроки = ПараметрыКолонок.НачалоСтрокНоменклатуры По КоличествоСтрок Цикл
НоваяНом = Таблица.Добавить();
НоваяНом.НаименованиеФайл = Excel.Cells(НомерСтроки, ПараметрыКолонок.КолонкаНаименования).Text;
НоваяНом.АртикулКодФайл = Excel.Cells(НомерСтроки, ПараметрыКолонок.КолонкаКодаАртикула).Text;
//Здесь должен быть код заполнения цен НоваяНом или заполнения всей колонки, но то как я не могу передать
//все необходимые данные я еще до этого не дошел
КонецЦикла;
Excel.DisplayAlerts = 0;
Excel.Quit();
Excel.DisplayAlerts = 1;
КонецПроцедуры
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
РеквизитФормы существует только на сервере. Его нельзя передавать на клиент.
Ошибка про это.
Результат = Новый Структура;
...
НовыйРеквизит = Новый РеквизитФормы("Цена" + Цена.НазваниеЦены, ОписаниеТиповДляРеквизита, "Таблица", Цена.НазваниеЦены, Истина);
...
Результат.Вставить(Цена.НазваниеЦены,НовыйРеквизит);
... Возврат Результат;
...
НовыйРеквизит = Новый РеквизитФормы("Цена" + Цена.НазваниеЦены, ОписаниеТиповДляРеквизита, "Таблица", Цена.НазваниеЦены, Истина);
...
Результат.Вставить(Цена.НазваниеЦены,НовыйРеквизит);
... Возврат Результат;
РеквизитФормы существует только на сервере. Его нельзя передавать на клиент.
Ошибка про это.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот