Имя: Пароль:
1C
1С v8
Внешняя обработка выгрузки в xls
0 buketovav
 
21.02.20
14:36
Добрый день, дорогие Форумчане!
Сделал внешнюю обработку, выгружает данные документ "реализация товаров" и услуг в xls.
Если ее открывать через файл - открыть, то все работает правильно.
Вот как сделать так, чтобы эти действия теперь выполнялись при использовании команды из документа "реализация товаров и услуг" без открытия формы обработки.

как правильно написать параметры регистрации?


Модуль формы:


&НаКлиенте
Процедура СохранитьВXLS(Команда)
    
    ТабДок = СохранитьВXLSНаСервере();
    //ТабДок.Показать();
    КаталогСохранения = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    КаталогСохранения.Расширение = "xls";
    
    Если КаталогСохранения.Выбрать() Тогда
        ТабДок.Записать(КаталогСохранения.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS)
    КонецЕсли;
        
КонецПроцедуры

&НаСервере
Функция СохранитьВXLSНаСервере()
    
    МассивПередач = Новый Массив();
    МассивПередач.Добавить(РеализацияТоваровУслуг.Ссылка);
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    Возврат ОбработкаОбъект.СохранитьТЧВXLS(МассивПередач, "");
    
КонецФункции


Модуль обехкта:

//ПОДГОТОВКА РЕГИСТРАЦИИ ОБРАБОТКИ
Функция СведенияОВнешнейОбработке() Экспорт
  
  ПараметрыРегистрации = Новый Структура;
  ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта"); //Варианты: "ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов"
  
  МассивНазначений = Новый Массив();
  МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
  //МассивНазначений.Добавить("Документ.<ИмяДокумента2>");
  ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
  
  ПараметрыРегистрации.Вставить("Наименование", "Сохрание в XLS");
  ПараметрыРегистрации.Вставить("Версия", "1.0"); //"1.0"
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); //Варианты: Истина, Ложь
  ПараметрыРегистрации.Вставить("Информация", "");
  ПараметрыРегистрации.Вставить("ВерсияБСП", "2.4.4.64");// не ниже какой версии БСП подерживается обработка
  ТаблицаКоманд = ПолучитьТаблицуКоманд();
  ДобавитьКоманду(ТаблицаКоманд,
          "Сохранить в XLS",
          "СохранитьВXLS",
          "ВызовСерверногоМетода",  //Использование.  Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"  
          Ложь,//Показывать оповещение. Варианты Истина, Ложь
          "");//Модификатор
  ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
  Возврат ПараметрыРегистрации;
  
КонецФункции

Функция ПолучитьТаблицуКоманд()
    
  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Возврат Команды;
  
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
  
КонецПроцедуры

Функция СохранитьТЧВXLS(МассивОбъектов, ОбъектыПечати) Экспорт
    
    ТабДок=Новый ТабличныйДокумент;
    Итог = 0;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    РеализацияТоваровУслугТовары.Ссылка.Номер КАК НомерДокумента,
    |    РеализацияТоваровУслугТовары.Ссылка.Дата КАК ДатаДокумента,
    |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    |    РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
    |    РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдИзм,
    |    РеализацияТоваровУслугТовары.КоличествоУпаковок КАК Количество,
    |    РеализацияТоваровУслугТовары.Цена КАК Цена,
    |    РеализацияТоваровУслугТовары.Сумма КАК Сумма,
    |    РеализацияТоваровУслугТовары.СтавкаНДС КАК СтавкаНДС,
    |    РеализацияТоваровУслугТовары.СуммаСНДС КАК СуммаСНДС
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |    РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)";
    
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Результат = Запрос.Выполнить();
    К=2;
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    ТабДок.Область("R2"+"C1").Текст = "НомерДокумента";
    ТабДок.Область("R2"+"C2").Текст = "ДатаДокумента";
    ТабДок.Область("R2"+"C3").Текст = "Номенклатура";
    ТабДок.Область("R2"+"C4").Текст = "Артикул";
    ТабДок.Область("R2"+"C5").Текст = "ЕдИзм";
    ТабДок.Область("R2"+"C6").Текст = "Цена";
    ТабДок.Область("R2"+"C7").Текст = "Сумма";
    ТабДок.Область("R2"+"C8").Текст = "СтавкаНДС";
    ТабДок.Область("R2"+"C9").Текст = "СуммаСНДС";
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ТабДок.Область("R"+(К+1)+"C1").Текст = ВыборкаДетальныеЗаписи.НомерДокумента;
        ТабДок.Область("R"+(К+1)+"C2").Текст = Формат(ВыборкаДетальныеЗаписи.ДатаДокумента, "ДЛФ=Д");
        ТабДок.Область("R"+(К+1)+"C3").Текст = ВыборкаДетальныеЗаписи.Номенклатура;
        ТабДок.Область("R"+(К+1)+"C4").Текст = ВыборкаДетальныеЗаписи.Артикул;
        ТабДок.Область("R"+(К+1)+"C5").Текст = ВыборкаДетальныеЗаписи.ЕдИзм;
        ТабДок.Область("R"+(К+1)+"C6").Текст = Формат(ВыборкаДетальныеЗаписи.Цена,      "ЧДЦ=2");
        ТабДок.Область("R"+(К+1)+"C7").Текст = Формат(ВыборкаДетальныеЗаписи.Сумма,     "ЧДЦ=2");
        ТабДок.Область("R"+(К+1)+"C8").Текст = ВыборкаДетальныеЗаписи.СтавкаНДС;
        ТабДок.Область("R"+(К+1)+"C9").Текст = Формат(ВыборкаДетальныеЗаписи.СуммаСНДС, "ЧДЦ=2");
        К=К+1;
    КонецЦикла;
    //Рамка = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
    //ТабДок.Область("R2C1:R2C2").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C2").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C3").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C3").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C4").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C4").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C5").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C5").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C6").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C6").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C7").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C7").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C8").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C8").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C1:R2C9").Обвести(,Рамка,,Рамка);
    //ТабДок.Область("R2C2:R2C9").Обвести(,Рамка,,Рамка);
    
    
    //ТабДок.Область("R"+(К+1)+"C1:"+"R"+(К+1)+"C2").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C3").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C4").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C5").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C6").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C7").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C8").Обвести(,Рамка,,);
    //ТабДок.Область("R"+(К+1)+"C2:"+"R"+(К+1)+"C9").Обвести(,Рамка,,);
    ТабДок.ОтображатьСетку = Истина;
    Возврат ТабДок;
    
КонецФункции
1 buketovav
 
21.02.20
14:37
прошу прощения так код, надеялся он свернется
2 buketovav
 
25.02.20
07:57
Решено, всем спасибо