Есть такая задача: необходимо заполнить табличную часть "Товары" документа ПоступленияТоваровУслуг, через обработку ЧтениеЭксель, где в табличной части "Данные" заполнены определенные реквизиты которые могут отличаться от порядка реквизитов в табличной части "Товары".
Вопрос: Как в обработке получить данные о документе, который вызвал обработку, и как заполнить подходящие поля из таблицы "Данные" в таблицу "Товары" документа, при условии что документ может быть еще не проведен или же записан.
Код обработчика, который есть пока что.
&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Объект.Файл = "";
//Диалог выбора файла
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
//ДиалогВыбора.Заголовок = “Выберите файл”;
Если ДиалогВыбора.Выбрать() Тогда
Объект.Файл = ДиалогВыбора.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Прочитать(Команда)
Объект.Данные.Очистить();
//подключаемся к эксель
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(Объект.Файл);
Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
//Открываем необходимый лист
Попытка
Excel.Sheets(1).Select(); // лист 1, по умолчанию
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить("Файл "+Строка(Объект.Файл)+" не соответствует необходимому формату! Первый лист не найден!");
Excel.ОтменитьТранзакцию();
Возврат;
КонецПопытки;
НС = 2;
Пока НС <= Объект.КоличествоСтрок Цикл
Состояние("Файл "+Строка(Объект.Файл)+": Обрабатывается первый лист "+Строка(Формат(?(Объект.КоличествоСтрок=0,0,((100*НС)/Объект.КоличествоСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
НоваяСтрока = Объект.Данные.Добавить();
//заполнение списока значениями
НоваяСтрока.Наименование = Excel.Cells(НС, 1).Text;
НоваяСтрока.Цена = Excel.Cells(НС, 2).Text;
НоваяСтрока.Валюта = Excel.Cells(НС, 3).Text;
НоваяСтрока.Код = Excel.Cells(НС, 4).Text;
НоваяСтрока.НаименованиеДляПечати = Excel.Cells(НС, 5).Text;
НоваяСтрока.Артикул = Excel.Cells(НС, 6).Text;
НоваяСтрока.Количество = Excel.Cells(НС, 7).Text;
НС = НС +1;
КонецЦикла;
//Объект.Файл.Вставить(0,ИмяФайла,ИмяФайла);
//Закрытие Эксель после выполнения процедуры
Excel.DisplayAlerts = 0;
Excel.Quit();
Excel.DisplayAlerts = 1;
КонецПроцедуры
// Здесь начинается вопрос темы.
&НаКлиенте
Процедура ЗаполнитьДокумент(Команда)
ЗаполнитьДокументНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДокументНаСервере()
//
КонецПроцедуры
Код для открытия формы обработчика в документе ПриобретениеТоваровУслуг
&НаКлиенте
Процедура ЗаполнитьИзФайла(Команда)
ПолучитьФорму("Обработка.ЧтениеЭксель.Форма.Форма").Открыть();
КонецПроцедуры
Как я понял при помощи кода ниже, можно получить открытый документ, но на него нельзя воздействовать на прямую.
Форма=Документы.ПриобретениеТоваровУслуг.ПолучитьФорму();
P.s: Изучаю 1С - пожалуйста сильно не бейте.