[РЕШЕНО] Как выгрузить номенклатуру с картинкой в прайс Excel?

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем Ktyf, 3 окт 2014.

  1. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Добрый день! Надо выгрузить прайс в Эксель. С самой номенклатурой проблем нет, а вот с ее присоединенными файлами картинками - есть. Сначала попробовала так, через двоичные данные
    Код:
    ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(спрНоменклатура.ФайлКартинки);
    ДанныеКартинки = ДанныеКартинки.ДвоичныеДанные;
    
    Однако у справочников "Файлы" и "Присоединенные файлы (номенклатуры)" разная структура, и поэтому в процедуре ПолучитьДанныеФайлаИДвоичныеДанные выскакивает ошибка.
    Как еще можно попробовать?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    по всей видимости, использовать типовые процедуры/функции, которые обрабатывают данные в справочнике "Присоединенные файлы (номенклатуры)".

    Поиском найти место вызовов необходимых процедур/функций и использовать эти же самые вызовы в своем коде.
  3. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Делал такой прайс, могу продать :)
  4. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    спасибо за заботу, но мне бы самой разобраться:). Хоть подскажите: двоичные данные - правильный путь? Если я их передам в эксель - картинка покажется?
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    да, правильный, только не забудьте спозиционировать картинку соответственно номенклатуре:), удачи:)
    --- Объединение сообщений, 3 окт 2014 ---
    двоичные данные нужно преобразовать в файл картинки;)
  6. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    УРРАА:)
    задумаласьo_O
  7. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Продолжаю задумываться: теперь уперлась в метод AddPicture. НА данный момент такой код:
    Код:
    Изобр = Новый Картинка (Элемент.Картинка,Истина); //Элемент.Картинка  - двоичные данные
    Верх = Лист.Cells(стр, 1).Top;
    Лево = Лист.Cells(стр, 1).Left;
    Лист.Shapes.AddPicture(Изобр, Ложь, Истина, Лево, Верх, 100, 100);
    на него получаю ошибку "Типы не совпадают (6)". Какие типы? 6 - это 6-й по счету от начала? Число 100 не совпадает по типу с чем?
    Вообще-то везде метод Shapes.AddPicture применяется для файлов предварительно временно сохраненных во вне. Неужели это обязательно?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ессесина :)
    Эксель ничего не знает про тип данных 1C Картинка.

    Про типы: возможно, что 6-ой по счету параметр метода Excel вовсе и не числом должен быть....
  9. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    т.е. ему только временную внешнюю картинку?
    А у него может есть что-то переводящее двоичные данные в изображение?
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Это уже надо курить мануал к Excel, каким образом он умеет понимать картинки на входе перед помещением их на лист.
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Да и не получится в экселе спозиционировать картинку на соответствующей ей номенклатуре. Это делается еще в печатной форме, методами 1С. Потом только можно конечный результат сохранять в нужные вам файлы. Удивляйтесь дальше :)
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Поэтому, перестаем удивляться и делаем прайс средствами 1С :)
  13. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Ну вот чего наваялось. Насколько это "правильно и красиво" пусть спецы судят, но работает так как мне надо
    Код:
    стр=1;
        ДЛя каждого Элемент Из мсВыгрузки Цикл
            Если Элемент.Картинка <>"" Тогда
                Изобр = Новый Картинка (Элемент.Картинка,Истина);
                ВременныйФайл = ПолучитьИмяВременногоФайла("jpg");
                Изобр.Записать(ВременныйФайл);
                Верх = Лист.Cells(стр, 1).Top;
                Лево = Лист.Cells(стр, 1).Left;
                Лист.Rows(стр).RowHeight = 109;
                Лист.Columns("A").ColumnWidth = 24;
                // Используем метод AddPicture и добавляем картинку в координаты с размером картинки 100 на 100.
                // Сама картинка, при этом, не теряет своего настоящего разрешения, просто подгоняется под указанные размеры.
                Лист.Shapes.AddPicture(ВременныйФайл, Ложь, Истина, Лево+1, Верх+1, 100, 100);
                УдалитьФайлы(ВременныйФайл);
            Иначе
                Лист.Cells(стр, 1).Value  = " ";
            КонецЕсли;
           
            Лист.Cells(стр, 2).Value  = Строка(Элемент.Наименование);
            Лист.Cells(стр, 3).Value = Строка(Элемент.ЕдИзм);
            стр=стр+1;
        КонецЦикла;
    
    мсВыгрузки - это массив с нужными мне данными из справ.Номенклатура. И там же лежат двоичные данные прикрепленных файлов картинок
    nikita_s нравится это.

Поделиться этой страницей