Имя: Пароль:
1C
1С v8
Выгрузка Данных из 1с в Excel
,
0 Singenor
 
22.03.12
16:45
Добрый день, столкнулся с такой проблемой.Пишу ввнешнюю обработку. Имеется документ ПоступлениеТоваровУслуг, нужно чтобы при нажатии на кнопку, табличная часть этого документа выгружалась в Эксель. Но до экселя мне еще походу далеко. Сейчас мне нужно, чтобы открывалась печатная форма моего документа(макет, который я нарисовал), и в нее вносились данные, но макет открывается, а данные не вносятся, выдает ошибку

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



Не знаю что делать, не сплю второй день, нужно сегодня сдать обработку, ничего не получается, нужна помощь. Спасибо
1 х86
 
22.03.12
16:46
какбэ книжки бы почитать умные
2 Нуф-Нуф
 
22.03.12
16:46
в ссылку что передаешь?
3 cyberandr
 
22.03.12
16:46
запрос в студию
4 Maxus43
 
22.03.12
16:47
ЭтотОбъект наверно передаёт
5 Maxus43
 
22.03.12
16:50
Запрос.УстановитьПараметр("Ссылка", Ссылка);
6 Darky
 
22.03.12
16:50
Вносить данные! в макет? Ну не знаю...
Вноси данные в документ и выводи уже в макет при печати.
Кстати, выгрузить в Эксель можно так
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);
где ТабДок = Новый ТабличныйДокумент;
7 manyak
 
22.03.12
17:07
(6) у него ТЧ а не ТД, так что этот номер не пройдет
8 Singenor
 
22.03.12
17:07
Функция СформироватьОтчет(ТабДок)
   
       //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

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

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

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

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

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

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

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

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

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

   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);
   ОбластьПодвал.Параметры.ДатаДокумента = ТекущаяДата();
         
   
КонецФункции
9 Singenor
 
22.03.12
17:07
Функция ИнициализацияТаблицыСтрок()

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

   Возврат Товары;

КонецФункции
10 КМ155
 
22.03.12
17:08
(8)блеать, что это :
Запрос.УстановитьПараметр("Ссылка",  );
11 КМ155
 
22.03.12
17:09
(8) ну и Запрос.Выполнить().Выбрать();
а надо ТЗТовары=Запрос.Выполнить().Выгрузить()
12 manyak
 
22.03.12
17:10
ТД=новый табличныйдокумент;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ТЧ);
Построитель.Вывести(ТД);
ТД.Записать("c:\123.XLSX","XLSX");
13 Singenor
 
22.03.12
17:44
Функция СформироватьОтчет(ТабДок)
   
       //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

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

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

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

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

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

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




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

они нигде не определены, где и как это сделать? мозг не работает вообще(((
14 Singenor
 
22.03.12
18:17
пробелма актуальна еще
15 Darky
 
22.03.12
18:25
чел, если документ называется ПоступлениеТоваровУслуг, то судя по твоим вопросам это не твоя самописка, а вполне себе типовая конфа.
Открой модуль объекта, найди процедуру печать и делай по аналогии
16 Singenor
 
22.03.12
18:45
я пишу обработку внешнюю
17 Reset
 
22.03.12
19:03
На

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

Таб=Новый ТабличныйДокумент();
КоличествоКолонок=Таблица.Колонки.Количество();
// "Шапка"
Для НомерКолонки=2 по КоличествоКолонок цикл
   Таб.Область(1,НомерКолонки).Текст=Таблица.Колонки[НомерКолонки-1].Имя;
КонецЦикла;
// Строки
НомерСтроки=2;
Для каждого Строка Из Таблица цикл
   Для НомерКолонки=2 по КоличествоКолонок цикл
       Таб.Область(НомерСтроки,НомерКолонки).Текст=Строка[НомерКолонки-1];
   КонецЦикла;
   НомерСтроки=НомерСтроки+1;
КонецЦикла;
ИмяФайла="D:\Blabla.xls"; // <--- Указать имя твоего файла
Таб.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS);



За оптимальность не ручаюсь, писал быстро.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший