![]() |
|
Внешняя обработка выгрузки в 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
|
Решено, всем спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |