Программное заполнение табличной части документа Установка цен номенклатуры из эксель (КА)

1. user1934472 26.01.24 12:50 Сейчас в теме
Всем доброго дня.
Столкнулся с проблемой заполнения тч документа установка цен номенклатуры.
Создал внешнюю обработку с командой заполнения , по отладке прохожу значения в табличной части появляются но на форме ничего не происходит, может какие то надо типовые процедуры тянуть в обработку.

Мой код:

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


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

	ОбъектДокумента = ВладелецФормы.Объект; 
	
	ЗаполнитьДокументНаСервере(ОбъектДокумента);
	                                                                             
	КопироватьДанныеФормы(ОбъектДокумента, ВладелецФормы.Объект); 
		                              
КонецПроцедуры

&НаСервере
Процедура ПрочитатьExcel_НаСервере(АдресДанных)
	
	ТабДок = Новый ТабличныйДокумент; 
	
	Данные = ПолучитьИзВременногоХранилища(АдресДанных);
	ПутьКФайлуНаСервере = ПолучитьИмяВременногоФайла("xlsx");
	Данные.Записать(ПутьКФайлуНаСервере);
	
	Попытка
		ТабДок.Прочитать(ПутьКФайлуНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Значение);
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось прочитать файл по причине: " + ОписаниеОшибки();
		Сообщение.Сообщить();                                                        
		Возврат;
	КонецПопытки;
	
	КоличествоСтрок = ТабДок.ВысотаТаблицы;
	КоличествоКолонок = ТабДок.ШиринаТаблицы;  
	
	
	
	ДанныеФайла = Новый ТаблицаЗначений; 
	ДанныеФайла.Колонки.Добавить("Номенклатура");
	ДанныеФайла.Колонки.Добавить("ЦенаБезНДС");
	ДанныеФайла.Колонки.Добавить("ЦенаПрайсЛист");
	
	
	Для НомерСтроки = 1 По КоличествоСтрок Цикл
		
		Если НомерСтроки = 1 Тогда
			Продолжить;			
		КонецЕсли;
		
		СтрокаТаблицы = ДанныеФайла.Добавить();
		СтрокаТаблицы.Номенклатура	= ТабДок.Область(НомерСтроки, 1).Текст;
		СтрокаТаблицы.ЦенаБезНДС		= ТабДок.Область(НомерСтроки, 2).Текст;
		СтрокаТаблицы.ЦенаПрайсЛист		= ТабДок.Область(НомерСтроки, 3).Текст;
	
	КонецЦикла;  
	
	ТаблицаТоваров.Загрузить(ДанныеФайла);
	
	
	
КонецПроцедуры // ПрочитатьExcel_ТабличныйДокумент()   

&НаКлиенте
Процедура ПрочитатьExcel(ВыбранныйФайл)
	
	ДанныеФайла = Новый ДвоичныеДанные(ВыбранныйФайл);
	АдресДанных = ПоместитьВоВременноеХранилище(ДанныеФайла);
	
	ПрочитатьExcel_НаСервере(АдресДанных);
	
КонецПроцедуры	



&НаСервере
Процедура ЗаполнитьДокументНаСервере(ОбъектДокумента)
	
	ОбъектДокумента.Товары.Очистить();	
	
	
	Для каждого ТекСтрока из ТаблицаТоваров Цикл
		
		
		НовСтрТЧДокумента = ОбъектДокумента.Товары.Добавить();
		НовСтрТЧДокумента.Номенклатура = НайтиНоменклатуруПоНаименованию(ТекСтрока.Номенклатура);  
		НовСтрТЧДокумента.ВидЦены =  Справочники.ВидыЦен.НайтиПоНаименованию("Прайс без НДС"); 
		НовСтрТЧДокумента.Цена = 10245; 
		
	КонецЦикла; 
	 
	
КонецПроцедуры        

 Функция НайтиНоменклатуруПоНаименованию(НоменклатураНаименование)
		
	Если ЗначениеЗаполнено(НоменклатураНаименование) Тогда
	
		НоменклатураДляДокумента = Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураНаименование);
	
		Если Не НоменклатураДляДокумента.Пустая() Тогда
		
			Возврат НоменклатураДляДокумента;
		
		Иначе
		
			Возврат Неопределено;
		
		КонецЕсли; 
		
		Возврат Неопределено;
		
	КонецЕсли;	
	
КонецФункции

Показать
Прикрепленные файлы:
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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