Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:33

Выгрузка из 1с в Ексель

Автор Вожак, 21 мар 2012, 12:32

0 Пользователей и 1 гость просматривают эту тему.

Вожак

как мне хотябы сделать, чтобы просто открывался заполненный макет моей формы, пока без екселя?

Вожак

http://ifolder.ru/29449898

вот моя модернизированная обработка, проблема актуальна, очень

Вожак

Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (ОбработкаВыгрузки)


почему возникает эта ошибка? ОбработкаВыгрузки так называется внешняя обработку, которую я писал, какое поле он тогда ищет?

Вожак

Разобрался с печатной формой, теперь открывается мой макет, который я рисовал, но он не заполняется, как сделать так, чтобы в него передавались данные из запроса?

Вожак

   Макет = ПолучитьМакет("Макет");
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ПоступлениеТоваровУслугТовары.НомерСтроки,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.НаименованиеПолное,
      |   ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения,
      |   ПоступлениеТоваровУслугТовары.Количество,
      |   ПоступлениеТоваровУслугТовары.Цена,
      |   ПоступлениеТоваровУслугТовары.СтавкаНДС,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.СтранаПроисхождения.Код,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.СтранаПроисхождения.Наименование,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.НомерГТД
      |ИЗ
      |   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
      |ГДЕ
      |   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка";

   Запрос.УстановитьПараметр("Ссылка", );

   Результат = Запрос.Выполнить();

вот где мы устанавливаем значение параметра("Ссылка", ) ;
что там после ссылки мы прописываем? не понимаю

Вожак

и еще вопрос, пишет ошибку

Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (Получить)



Функция СформироватьОтчет(ТабДок)
   //ТабДок = Новый ТабличныйДокумент;

        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Макет = ПолучитьМакет("Макет");
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ПоступлениеТоваровУслугТовары.НомерСтроки,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.НаименованиеПолное,
      |   ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения,
      |   ПоступлениеТоваровУслугТовары.Количество,
      |   ПоступлениеТоваровУслугТовары.Цена,
      |   ПоступлениеТоваровУслугТовары.СтавкаНДС,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.СтранаПроисхождения.Код,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.СтранаПроисхождения.Наименование,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.НомерГТД
      |ИЗ
      |   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
      |ГДЕ
      |   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка";

   Запрос.УстановитьПараметр("Ссылка",  );

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();
    ТабДок.Показать ();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
      ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);
   ТабДок.Получить(ОбластьДетальныхЗаписей);

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   ДанныеДляПечати  = Новый Структура();
   
   ДанныеДляПечати.Вставить("Номер",            СсылкаНаОбъект.Номер);
   ДанныеДляПечати.Вставить("НаименованиеТовара",        ОбластьДетальныхЗаписей.Количество);
   ДанныеДляПечати.Вставить("ЕдиницыИзмерения",          ОбластьДетальныхЗаписей.ЕдиницаИзмерения);
   ДанныеДляПечати.Вставить("Количество",        ОбластьДетальныхЗаписей.Количество);
   ДанныеДляПечати.Вставить("ЦенаБезНДС", ОбластьДетальныхЗаписей.Цена );
   ДанныеДляПечати.Вставить("СтавкаНДС",       ОбластьДетальныхЗаписей.СтавкаНДС);
   ДанныеДляПечати.Вставить("ЦифровойКод", ОбластьДетальныхЗаписей.НоменклатураСтранаПроисхожденияКод );
   ДанныеДляПечати.Вставить("КраткоеНаименование",            ОбластьДетальныхЗаписей.НоменклатураСтранаПроисхожденияНаименование);
   ДанныеДляПечати.Вставить("НомерГТД",           ОбластьДетальныхЗаписей.НоменклатураНомерГТД);
   ДанныеДляПечати.Вставить("СуммаБезНДС",     ОбластьПодвал.Сумма);
   ДанныеДляПечати.Вставить("СуммаНДС", ОбластьПодвал.СуммаСНДС);
   ДанныеДляПечати.Вставить("ВсегоСНДС", ОбластьПодвал.СуммаДокумента);
    ДанныеДляПечати.Вставить("ДатаДокумента", ОбластьПодвал.ДатаДокумента);
   ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать();
   

   
   Товары = ИнициализацияТаблицыСтрок();
   Пока ВыборкаСтрокТовары.Следующий() = 1 Цикл

      Строчка = Товары.Добавить();
      Строчка.Номер               = ВыборкаСтрокТовары.НомерСтроки;
      Строчка.НаименованиеТовара  = ВыборкаСтрокТовары.НаименованиеПолное;
      Строчка.Количество          = ВыборкаСтрокТовары.Количество;
      Строчка.ЦенаБезНДС          = ВыборкаСтрокТовары.Цена;
      Строчка.СтавкаНДС           = ВыборкаСтрокТовары.СтавкаНДС;
      Строчка.ЦифровойКод         = ВыборкаСтрокТовары.НоменклатураСтранаПроисхожденияКод;
      Строчка.КраткоеНаименование = ВыборкаСтрокТовары.НоменклатураСтранаПроисхожденияНаименование;
      Строчка.ЕдиницаИзмерения    = "";
      Строчка.НомерГТД            = "";
         КонецЦикла;

   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);
   //ОбластьПодвал.Параметр.ДатаДокумента = ТекущаяДата();
     
   
КонецФункции




как? зачем он пишет что метод объекта не найден, если он в самом начале этой функции?

Вожак

Ошибка при вызове метода контекста (Выполнить): {(14, 39)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПоступлениеТоваровУслугТовары.Ссылка <<?>>= &Ссылка


как исправить?

Вожак

все, разобрался, макет почти заполняется. ТОлько все равно проблема:
как мне тепереь сделать, чтобы считалась
ОбластьПодвал.Параметры.Сумма = СсылкаНаОбъект.СуммаБезНДС
ОбластьПодвал.Параметры.СуммаНДС = СсылкаНаОбъект.СуммаВключаетНДС;?

они нигде не определены, где и как это сделать? мозг не работает вообще(((



Вот Код запроса:


Функция СформироватьОтчет(ТабДок)
   
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Макет = ПолучитьМакет("Макет");
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ПоступлениеТоваровУслугТовары.НомерСтроки,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.НаименованиеПолное,
      |   ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения,
      |   ПоступлениеТоваровУслугТовары.Количество,
      |   ПоступлениеТоваровУслугТовары.Цена,
      |   ПоступлениеТоваровУслугТовары.СтавкаНДС,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.СтранаПроисхождения.Код,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.СтранаПроисхождения.Наименование,
      |   ПоступлениеТоваровУслугТовары.Номенклатура.НомерГТД
      |ИЗ
      |   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
      |ГДЕ
      |   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка";

   Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
      ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

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

Dethmontt

Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Add();
Эксель.Visible = 1; //Если память мне не изменяет то число передаем (если не получиться то булево попробуй)
Лист = Книга.WorkSheets(1);
Лист.Cells(1,1).Value = "Мое значение для выгрузки"; //Сюда подставляем любое значение
Книга.SaveAs("C:\");
Эксель.Quit();
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Вожак

Цитата: Dethmontt от 22 мар 2012, 22:42
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Add();
Эксель.Visible = 1; //Если память мне не изменяет то число передаем (если не получиться то булево попробуй)
Лист = Книга.WorkSheets(1);
Лист.Cells(1,1).Value = "Мое значение для выгрузки"; //Сюда подставляем любое значение
Книга.SaveAs("C:\");
Эксель.Quit();



"Мое значение для выгрузки";

туда указываем функцию, которая заполняет макет, так получается?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск