Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 19:03

[Проблема]Конвертация табличного документа в таблицу значений и последующий вывод на форму-

Автор Jah Cloud, 24 сен 2018, 15:43

0 Пользователей и 1 гость просматривают эту тему.

Jah Cloud

Доброе время суток, столкнулся с такой задачей: начальство выдвинуло задачу доработать внешнюю обработку, добавить на форму табличный документ заполняемый пользователем (Копипаст из ексель тк. на сервере из-за неизвестных мне проблем, в создание COM объекта или использование ADO для чтения невозможно). Данные из которого по нажатию кнопки должны быть перенесены в таблицу значений и отражены в связанной с ней таблицой данных.
Нагуглил обработку конвертирующую ТД в ТЗ:

&НаКлиенте
Процедура ПреобразоватьВТЗ(Команда)
ПреобразоватьВТЗНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПреобразоватьВТЗНаСервере()

ТабЗначений = ПреобразоватьТабличныйДокументВТаблицуЗначений(ЭтаФорма.РеквизитТЧ);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПреобразоватьТабличныйДокументВТаблицуЗначений(ТабДокумент)

ПоследняяСтрока = ТабДокумент.ВысотаТаблицы;
ПоследняяКолонка = ТабДокумент.ШиринаТаблицы;
ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);

// Создаем описание источника данных на основании области ячеек табличного документа.
ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);

// Создаем объект для интеллектуального построения отчетов,
// указываем источник данных и выполняем построение отчета.
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
ПостроительОтчета.Выполнить();

// Результат выгружаем в таблицу значений.
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();

Возврат ТабЗначений

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


Исполнение данной обработки отдельно не вызвало никаких ошибок, однако при попытке внедрить данный код в требуемую обработку выдает ошибку:

{ВнешняяОбработка.РасчетПотребностиСырья.Форма.Форма.Форма(1237)}: Ошибка при получении значения атрибута контекста (Результат)
      тзЗнач = ПостроительОтчета.Результат.Выгрузить();
по причине:
{(1, 1)}: Ожидается выражение "ВЫБРАТЬ"

Вот внедренный код, изменил только название переменной и функции, но и в случае точной копии получаю ту же ошибку
&НаСервере
Процедура ПреобразоватьВТЗНаСервере()

ТаблицаНоменклатуры =  ТДвТЗ(ЭтаФорма.ТабДокумент);
//ТаблицаНоменклатуры.СоздатьКолонки();
//ЭтаФорма.ТаблицаНоменклатуры12.Показать();

КонецПроцедуры


&НаСервереБезКонтекста
Функция ТДвТЗ(ТабДокумент)
ПоследняяСтрока = ТабДокумент.ВысотаТаблицы;
ПоследняяКолонка = ТабДокумент.ШиринаТаблицы;
ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
// Создаем описание источника данных на основании области ячеек табличного документа.
ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек); 
// Создаем объект для интеллектуального построения отчетов,
// указываем источник данных и выполняем построение отчета.
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
//ПостроительОтчета.ЗаполнитьНастройки();
ПостроительОтчета.Выполнить();
// Результат выгружаем в таблицу значений.
тзЗнач = ПостроительОтчета.Результат.Выгрузить();
Возврат тзЗнач
КонецФункции

&НаКлиенте
Процедура ВнестиДанныеВТЧ(Команда)
ПреобразоватьВТЗНаСервере();
КонецПроцедуры

ephes

Вы знаете, у меня этот код выдает ошибку только в том случае, когда таблица пустая, т.е. ТабДокумент.ВысотаТаблицы = 0 и ТабДокумент.ШиринаТаблицы = 0. В остальных случаях, все работает. Если поставить проверку на эти условия или, лучше,
Попытка
тзЗнач = ПостроительОтчета.Результат.Выгрузить()
Исключение
КонецПопытки;

А в обработке результата
ТабЗначений = ПреобразоватьТабличныйДокументВТаблицуЗначений(ЭтаФорма.ТД);
Если ТипЗнч(ТабЗначений) = Тип("Неопределено") Тогда
//
КонецЕсли;

Может быть, у вас какие-то особые условия при "копипасте" возникают? :dfbsdfbsdf:

Jah Cloud

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

На нашем предприятии используется конфигурация 1c:ERP +CRM редакция 2.0 (2.0.8/2.0.10) значительно переписанная в ходе отказа от обновлений, если эт опоможет я могу приложить саму обработку
Добавлено: 26 сен 2018, 09:34


Добавил в исключение попытки сообщение, действительно  она проходит неудачно. Только вот причина мне неизвестна - вроде данные я ввел
Добавлено: 26 сен 2018, 14:10



И в правду ни высота ни ширина таблицы не определяются, из-за чего может возникать подобная проблема?

Похожие темы (5)

Рейтинг@Mail.ru

Поиск