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