Ошибка загрузки данных из файла

1. nadyusha22 12.09.23 11:56 Сейчас в теме
Здравствуйте, подскажите пожалуйста, где моя ошибка, Спасибо.
&НаСервере
Процедура Команда1НаСервере()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ТЧ_Норматив.Товары КАК Товары,
		|	ТЧ_Норматив.НормативДень КАК НормативДень
		|ПОМЕСТИТЬ ВТ_ТЧ_НормативДень
		|ИЗ
		|	&ТЧ КАК ТЧ_Норматив
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТ_ТЧ_НормативДень.Товары КАК Товары,
		|	ВТ_ТЧ_НормативДень.НормативДень КАК НормативДень
		|ИЗ
		|	ВТ_ТЧ_НормативДень КАК ВТ_ТЧ_НормативДень";
	
	Запрос.УстановитьПараметр("ТЧ", Реквизит1.Выгрузить());
	
	Реквизит1.Загрузить(Запрос.Выполнить().Выгрузить());
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ТЗ=Реквизит1.Добавить();
		
		ТЗ.Товары=Выборка.Товары;
		
		ТЗ.Норматив=Выборка.НормативДень;

	КонецЦикла;

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

Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
11. Denis_CFO 49 12.09.23 13:41 Сейчас в теме
(10)
Вот это я и не знаю как поправить


Для начала научиться правильно вопросы задавать.

Первое - читаете выбранный файл в таблицу.
Что-то типа этого (проверяйте под свой код):
(у вас может не взлететь, если в Эксель файле Колонки имеют другое имя, чем Товары И НормативДень)
ТабДок = Новый ТабличныйДокумент(Файл.ПолноеИмя);
		
    ОбластиТаб = ТабДок.Область(СтрокаЗаголовка, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы);
		
	Построитель = Новый ПостроительЗапроса;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластиТаб);  
	Построитель.Выполнить();
		
	ТЗ = Построитель.Результат.Выгрузить();
Показать


Второе - заполняете. Код у Вас уже есть.
nadyusha22; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Denis_CFO 49 12.09.23 12:39 Сейчас в теме
(1) Судя по этому:
ТЗ=Реквизит1.Добавить();

это таблица на форме.
Если она пустая, тогда
Запрос.УстановитьПараметр("ТЧ", Реквизит1.Выгрузить());

вот здесь тоже будет пусто.
Соответственно, и здесь:
Пока Выборка.Следующий() Цикл


ПЫСЫ. Присваивайте объектам понятные, в том числе, и для других людей имена.
3. nadyusha22 12.09.23 12:48 Сейчас в теме
(2)
Реквизит1.Выгрузить())


Сделали как Вы написали:

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ТЧ_Норматив.Товары КАК Товары,
		|	ТЧ_Норматив.НормативДень КАК НормативДень
		|ПОМЕСТИТЬ ВТ_ТЧ_НормативДень
		|ИЗ
		|	&ТЧ КАК ТЧ_Норматив
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТ_ТЧ_НормативДень.Товары КАК Товары,
		|	ВТ_ТЧ_НормативДень.НормативДень КАК НормативДень
		|ИЗ
		|	ВТ_ТЧ_НормативДень КАК ВТ_ТЧ_НормативДень"; 
	
	ТЗ  = ТаблицаЗначений.Выгрузить();
	
	Запрос.УстановитьПараметр("ТЧ",ТЗ);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ТЗ=ТаблицаЗначений.Добавить();
		
		ТЗ.Товары=Выборка.Товары;
		
		ТЗ.НормативДень=Выборка.НормативДень;

	КонецЦикла;

	
КонецПроцедуры
Показать
4. Denis_CFO 49 12.09.23 12:54 Сейчас в теме
(3) это хорошо. А первоначальную таблицу заполнили?

Сделали как Вы написали

у Вас там групповое обучение программированию? :)
5. nadyusha22 12.09.23 13:04 Сейчас в теме
(4)
Сделали как Вы написали

1.Да
2.Мы с другом учимся.
6. nadyusha22 12.09.23 13:05 Сейчас в теме
&НаСервере
Процедура СформироватьНаСервере()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ТЧ_Норматив.Товары КАК Товары,
		|	ТЧ_Норматив.НормативДень КАК НормативДень
		|ПОМЕСТИТЬ ВТ_ТЧ_НормативДень
		|ИЗ
		|	&ТЧ КАК ТЧ_Норматив
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТ_ТЧ_НормативДень.Товары КАК Товары,
		|	ВТ_ТЧ_НормативДень.НормативДень КАК НормативДень
		|ИЗ
		|	ВТ_ТЧ_НормативДень КАК ВТ_ТЧ_НормативДень"; 
	
	ТЗ  = ТаблицаЗначений.Выгрузить();
	
	Запрос.УстановитьПараметр("ТЧ",ТЗ);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ТЗ=ТаблицаЗначений.Добавить();
		
		ТЗ.Товары=Выборка.Товары;
		
		ТЗ.Норматив=Выборка.НормативДень;

	КонецЦикла;

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

Показать


Вот окончательный код
7. Denis_CFO 49 12.09.23 13:16 Сейчас в теме
(6)
подскажите пожалуйста, где моя ошибка


Вот Ваша ошибка:
ТЗ  = ТаблицаЗначений.Выгрузить();
    
    Запрос.УстановитьПараметр("ТЧ",ТЗ);


Вы берёте ПУСТУЮ!!! таблицу и запросом к ней выбираете значения.

Либо не показываете процедуру, которая её заполняет.

Третий раз Вам уже об этом говорю.
8. nadyusha22 12.09.23 13:24 Сейчас в теме
(7), Вот весь код:

&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Проводник = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	
	Проводник.Заголовок="Файлни танланг:";
	
	Если ФайлФормати="XLSX" Тогда
		
		Фильтр="Файл Excel (*.xlsx)| *.xlsx";
		
	Иначе
		
		Возврат;
		
	КонецЕсли;
	
	Проводник.Фильтр=Фильтр;
	
	Оповещение = Новый ОписаниеОповещения ("ПослеВыбораФайла", ЭтотОбъект);
	
	Проводник.Показать(Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Если ВыбранныеФайлы = Неопределено  Тогда
		
		Возврат;
		
	КонецЕсли;
	
	Файл=ВыбранныеФайлы[0];

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

&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
	
		
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ТЧ_Норматив.Товары КАК Товары,
		|	ТЧ_Норматив.НормативДень КАК НормативДень
		|ПОМЕСТИТЬ ВТ_ТЧ_НормативДень
		|ИЗ
		|	&ТЧ КАК ТЧ_Норматив
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТ_ТЧ_НормативДень.Товары КАК Товары,
		|	ВТ_ТЧ_НормативДень.НормативДень КАК НормативДень
		|ИЗ
		|	ВТ_ТЧ_НормативДень КАК ВТ_ТЧ_НормативДень"; 
	
	ТЗ  = ТаблицаЗначений.Выгрузить();
	
	Запрос.УстановитьПараметр("ТЧ",ТЗ);
	
	//Запрос.УстановитьПараметр("ТЧ", Реквизит1.Выгрузить());
	
	ТаблицаЗначений.Загрузить(Запрос.Выполнить().Выгрузить());
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ТЗ=ТаблицаЗначений.Добавить();
		
		ТЗ.Товары=Выборка.Товары;
		
		ТЗ.НормативДень=Выборка.НормативДень;

	КонецЦикла;

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




Показать
9. Denis_CFO 49 12.09.23 13:28 Сейчас в теме
(8) Вы уже 256 дней года отмечать что-ли начали?

Последний раз, для понимания:

Вы передаете в запрос пустую (ни чем не заполненную) таблицу и затем хотите увидеть какой-то результат запроса.

Если у Вас в таблице НОЛЬ строк, сколько будет строк в результате запроса к этой таблице?
10. nadyusha22 12.09.23 13:31 Сейчас в теме
(7) "Вы передаете в запрос пустую (ни чем не заполненную) таблицу и затем хотите увидеть какой-то результат запроса.

Если у Вас в таблице НОЛЬ строк, сколько будет строк в результате запроса к этой таблице?"

Вот это я и не знаю как поправить.
11. Denis_CFO 49 12.09.23 13:41 Сейчас в теме
(10)
Вот это я и не знаю как поправить


Для начала научиться правильно вопросы задавать.

Первое - читаете выбранный файл в таблицу.
Что-то типа этого (проверяйте под свой код):
(у вас может не взлететь, если в Эксель файле Колонки имеют другое имя, чем Товары И НормативДень)
ТабДок = Новый ТабличныйДокумент(Файл.ПолноеИмя);
		
    ОбластиТаб = ТабДок.Область(СтрокаЗаголовка, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы);
		
	Построитель = Новый ПостроительЗапроса;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластиТаб);  
	Построитель.Выполнить();
		
	ТЗ = Построитель.Результат.Выгрузить();
Показать


Второе - заполняете. Код у Вас уже есть.
nadyusha22; +1 Ответить
12. nadyusha22 12.09.23 13:50 Сейчас в теме
Оставьте свое сообщение

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