Возникла необходимость загрузить с Excel некий каталог договоров в УТ 10. Вроде ничего необычного, но есть одна колонка, где в каждую ячейку вставлен объект PDF. И этот объект нужно загрузить в базу. Трудность в том, что не получается к нему добраться. Подскажите в какую сторону копать?
---
```1c
    EXCELApplication = Новый COMОбъект("EXCEL.Application");
    EXCELApplication.Visible = Ложь;
    EXCELApplication.DisplayAlerts = Ложь;
    ...
    Book = EXCELApplication.WorkBooks.Open(ПутьКФайлу);
    ЛистЭксель = Book.WorkSheets(1);
    ../
    ЗначениеЯчейки = ПрочитатьКартинку_MSEXCEL(EXCELApplication, ЛистЭксель, 2, Ц, ИмяФайлаEXCEL, 1, "УИД");
    ВыбранноеИзображение = Новый Картинка(ЗначениеЯчейки , Ложь);

    Функция ПрочитатьКартинку_MSEXCEL(Знач EXCELApplication, Знач Sheet, Знач НомерКолонки, Знач НомерСтроки, Знач ИмяФайлаEXCEL, Знач НомерЛиста, Знач ПравилоИмяФайлаКартинки = "УИД")
    Перем GraphicObject, Chart;
    Перем ПолноеИмяФК, ФайлКартинки;

    Если Sheet.Shapes.Count() = 0 Тогда
    Возврат Неопределено;
    КонецЕсли;

    Для Каждого GraphicObject ИЗ Sheet.Shapes Цикл
    Если GraphicObject.Type = 13 И GraphicObject.TopLeftCell.Column = НомерКолонки И GraphicObject.TopLeftCell.Row = НомерСтроки Тогда

    // GraphicObject.Name.
    Если ПравилоИмяФайлаКартинки = "УИД" Тогда
    ПолноеИмяФК = КаталогВременныхФайлов() + Новый УникальныйИдентификатор() + ".jpg";
    Иначе
    ПолноеИмяФК = КаталогВременныхФайлов() + ИмяФайлаEXCEL + "Л" + НомерЛиста + "С" + НомерСтроки + "К" + НомерКолонки + ".jpg";
    КонецЕсли;

    Попытка
    GraphicObject.ScaleHeight(1,1); // Истинный размер по высоте.
    GraphicObject.ScaleWidth(1,1); // Истинный размер по ширине.
    GraphicObject.Copy();

    Chart = EXCELApplication.ActiveSheet.ChartObjects().Add(0, 0, GraphicObject.Width, GraphicObject.Height).Chart();
    Chart.Paste();
    Chart.Export(ПолноеИмяФК);

    Chart = Неопределено;

    ФайлКартинки = Новый Файл(ПолноеИмяФК);
    Если ФайлКартинки.Существует() Тогда
    Возврат ПолноеИмяФК;
    Иначе
    Сообщить("Не удалось экспортировать картинку из строки " + НомерСтроки + " колонки " + НомерКолонки + " в " + ПолноеИмяФК);
    Возврат Неопределено;
    КонецЕсли;
    Исключение
    Сообщить(ОписаниеОшибки());
    Сообщить("Не удалось экспортировать картинку из строки " + НомерСтроки + " колонки " + НомерКолонки + " в " + ПолноеИмяФК);
    Возврат Неопределено;
    КонецПопытки;

    КонецЕсли;
    КонецЦикла;

    Возврат Неопределено;
    КонецФункции
```
---
```1c
    EXCELApplication = Новый COMОбъект("EXCEL.Application");
    EXCELApplication.Visible = Ложь;
    EXCELApplication.DisplayAlerts = Ложь;
    ...
    Book = EXCELApplication.WorkBooks.Open(ПутьКФайлу);
    ЛистЭксель = Book.WorkSheets(1);
    ../
    ЗначениеЯчейки = ПрочитатьКартинку_MSEXCEL(EXCELApplication, ЛистЭксель, 2, Ц, ИмяФайлаEXCEL, 1, "УИД");
    ВыбранноеИзображение = Новый Картинка(ЗначениеЯчейки , Ложь);

    Функция ПрочитатьКартинку_MSEXCEL(Знач EXCELApplication, Знач Sheet, Знач НомерКолонки, Знач НомерСтроки, Знач ИмяФайлаEXCEL, Знач НомерЛиста, Знач ПравилоИмяФайлаКартинки = "УИД")
    Перем GraphicObject, Chart;
    Перем ПолноеИмяФК, ФайлКартинки;

    Если Sheet.Shapes.Count() = 0 Тогда
    Возврат Неопределено;
    КонецЕсли;

    Для Каждого GraphicObject ИЗ Sheet.Shapes Цикл
    Если GraphicObject.Type = 13 И GraphicObject.TopLeftCell.Column = НомерКолонки И GraphicObject.TopLeftCell.Row = НомерСтроки Тогда

    // GraphicObject.Name.
    Если ПравилоИмяФайлаКартинки = "УИД" Тогда
    ПолноеИмяФК = КаталогВременныхФайлов() + Новый УникальныйИдентификатор() + ".jpg";
    Иначе
    ПолноеИмяФК = КаталогВременныхФайлов() + ИмяФайлаEXCEL + "Л" + НомерЛиста + "С" + НомерСтроки + "К" + НомерКолонки + ".jpg";
    КонецЕсли;

    Попытка
    GraphicObject.ScaleHeight(1,1); // Истинный размер по высоте.
    GraphicObject.ScaleWidth(1,1); // Истинный размер по ширине.
    GraphicObject.Copy();

    Chart = EXCELApplication.ActiveSheet.ChartObjects().Add(0, 0, GraphicObject.Width, GraphicObject.Height).Chart();
    Chart.Paste();
    Chart.Export(ПолноеИмяФК);

    Chart = Неопределено;

    ФайлКартинки = Новый Файл(ПолноеИмяФК);
    Если ФайлКартинки.Существует() Тогда
    Возврат ПолноеИмяФК;
    Иначе
    Сообщить("Не удалось экспортировать картинку из строки " + НомерСтроки + " колонки " + НомерКолонки + " в " + ПолноеИмяФК);
    Возврат Неопределено;
    КонецЕсли;
    Исключение
    Сообщить(ОписаниеОшибки());
    Сообщить("Не удалось экспортировать картинку из строки " + НомерСтроки + " колонки " + НомерКолонки + " в " + ПолноеИмяФК);
    Возврат Неопределено;
    КонецПопытки;

    КонецЕсли;
    КонецЦикла;

    Возврат Неопределено;
    КонецФункции
```
---
Это что-то похоже. Объекты видит. Для PDF GraphicObject.Type = 10. Правда дальше продвинуться пока не удалось. Путь файла не удалось раздобыть. В любом случае спасибо. Может это ниточка к правильному выходу
---
Есть возможность получить строкой полный путь файла?
---
В том то и дело что не понял как это сделать. В самой ячейке пусто все. Список объектов не вижу
---
То есть в ячейке, если смотреть в отладке в 1с пусто? Тогда добавьте в экселе еще одну колонку и в ее формуле пропишите, что она должна из колонки с файлом брать только путь (функцией "ЗАМЕНИТЬ" уберите лишнее из ячейки, оставив только путь к файлу). И далее работайте уже с ним в 1с
---
Если смотреть в отладке 1с, то в ячейке пусто. И есть на саму ячейку установить курсор, то тоже пусто. Адрес показывает если установить курсор на сам объект (рисунок, PDF или что-то еще). И вот как раз этот адрес нужен, но как его достать без понятия
---
А при переводе из экселя в 1с как добавляете значение в ячейку, таким образом:

```1c
    Ячейка = Лист.Cells(счСтрок, счКолонок).Value;
```

?
---
Если да, то из него можно получать сам файл:

```1c
    ИмяФайла = "C:\Test\readme.txt";
    ВыбФайл = Новый Файл(ИмяФайла);
    Если ВыбФайл.Существует() Тогда
    Стр = "Результат выполнения:"+Символы.ПС+
    +"Файл: "+ВыбФайл.ПолноеИмя+Символы.ПС+
    +"Имя: "+ ВыбФайл.Имя+Символы.ПС+
    +"Имя без расширения: "+ВыбФайл.ИмяБезРасширения+Символы.ПС+
    +"Расширение: "+ВыбФайл.Расширение+Символы.ПС+
    +"Путь: "+ВыбФайл.Путь+Символы.ПС+
    +"Размер: "+ВыбФайл.Размер()+Символы.ПС+
    +"Это файл: "+ВыбФайл.ЭтоФайл()+Символы.ПС+
    +"Время изменения: "+ВыбФайл.ПолучитьВремяИзменения()+Символы.ПС+
    +"Только чтение: "+ВыбФайл.ПолучитьТолькоЧтение()+Символы.ПС+
    +"Невидимость: "+ВыбФайл.ПолучитьНевидимость();
    Сообщить(Стр);
    Иначе
    Предупреждение("Файл не найден!");
    КонецЕсли;
```

Останется только присвоить его в реквизит каталога
---
Сам файл получить будет не проблема. Вот путь как раз и нужно вытащить
---
Возможно, поможет
пример получения картинки, ссылка.
---
```1c
    Sub ВыгрузкаВpdf()
    Dim fileSaveName As String
    Dim namef As String
    Dim path As String
    Dim FullName

    FullName = "C:\Users\Владелец\Desktop\Ежедневный"
    namef = CStr(Sheets("Лист3").Range("K1").Value)
    path = FullName
    fileSaveName = path & namef & ".pdf"

    MsgBox (namef)
    Sheets("Лист2").ExportAsFixedFormat Type:=xlTypePDF, filename:=(fileSaveName), _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    End Sub
```
---
Прикрепление и извлечение различных файлов из книги Excel
https://excelvba.ru/code/tools/Attachments