|
Прочитать Эксельник и вывести таблицу как параметр отчета скд | ☑ | ||
---|---|---|---|---|
0
Тессеракт
23.03.20
✎
11:21
|
Добрый день.
Необходимо построить отчет СКД, который сравнивает данные из эксель файла и результата запроса из БП3.0. Посредством инструментов разработчика это делается элементарно. В виде отчета что то забуксовал в плане кода. Помогите отредактировать код пжалста) Эксельник прочитал, а как оттуда данные взять и передать в запрос- не догоню( спасибо! Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОсновнаяТаблицаЗапроса = ПолучимТаблицуДанных(); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ВнешнийНаборДанных = Новый Структура("ДанныеОтчета", ОсновнаяТаблицаЗапроса); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры //"D:\Test\Тестовый.mxl" "D:\Test\Тестовый.xlsx" &НаКлиенте Процедура ЗагрузитьEXCEL(Команда) Файл = Новый Файл("D:\Test\Тестовый.xlsx"); Если НЕ Файл.Существует() Тогда Возврат; КонецЕсли; ДвоичныеДанные = Новый ДвоичныеДанные("D:\Test\Тестовый.xlsx"); ДокументРезультат = EXCELВТаблицуЗначений(ДвоичныеДанные, Файл.Расширение); ДокументРезультат.Показать(); КонецПроцедуры &НаСервере Функция EXCELВТаблицуЗначений(ДвоичныеДанные, Расширение) ФайлEXCELНаСервере = ПолучитьИмяВременногоФайла(Расширение); ДвоичныеДанные.Записать(ФайлEXCELНаСервере); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.Прочитать(ФайлEXCELНаСервере); УдалитьФайлы(ФайлEXCELНаСервере); ОбластьТаблицы = ТабличныйДокумент.Область(8, 1, ТабличныйДокумент.ВысотаТаблицы, ТабличныйДокумент.ШиринаТаблицы); ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьТаблицы); ПостроительЗапроса.Выполнить(); ТаблицаДанных = ПостроительЗапроса.Результат.Выгрузить(); Возврат ТаблицаЗначенийВТабличныйДокумент(ТаблицаДанных); КонецФункции &НаСервереБезКонтекста Функция ТаблицаЗначенийВТабличныйДокумент(ТаблицаДанных) ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаДанных); ДокументРезультат = Новый ТабличныйДокумент; Построительотчета.Вывести(ДокументРезультат); Возврат ДокументРезультат; КонецФункции &НаСервере Функция ПолучимТаблицуДанных() ТаблицаЗначенийВТабличныйДокумент(ТаблицаДанных); ТаблицаРезультат = Новый ТаблицаЗначений; ТаблицаРезультат.Колонки.Добавить("Номенклатура", новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ТаблицаРезультат.Колонки.Добавить("Артикул", новый ОписаниеТипов("СправочникСсылка.Номенклатура.Артикул")); ТаблицаРезультат.Колонки.Добавить("Склад", новый ОписаниеТипов("СправочникСсылка.Склады")); ТаблицаРезультат.Колонки.Добавить("КолвоОст", новый ОписаниеТипов("Число",,, Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой))); Запрос.УстановитьПараметр("Тэзэ",ДокументРезультат); ПоискДанных = Новый Запрос Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Тэзэ.Номенклатура КАК НоменУТ, | Тэзэ.Артикул КАК АртикулУТ, | Тэзэ.Склад КАК СкладУТ, | Тэзэ.КолвоОст КАК КолвоОстУТ |ПОМЕСТИТЬ Тзз |ИЗ | &Тэзэ КАК Тэзэ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто1 КАК НоменБП, | ХозрасчетныйОстатки.Субконто1.Артикул КАК АртикулБП, | ХозрасчетныйОстатки.Субконто2 КАК СкладБП, | ХозрасчетныйОстатки.Подразделение КАК ПодрБП, | ХозрасчетныйОстатки.КоличествоОстаток КАК КолвоОстБП, | ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстБП, | Тзз.НоменУТ КАК НоменУТ, | Тзз.АртикулУТ КАК АртикулУТ, | Тзз.СкладУТ КАК СкладУТ, | Тзз.КолвоОстУТ КАК КолвоОстУТ |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, счет В (&Счет), &СубконтоНоменклатураСклад, ) КАК ХозрасчетныйОстатки, | Тзз КАК Тзз |ГДЕ | НЕ ХозрасчетныйОстатки.Субконто1.Артикул = """" | |УПОРЯДОЧИТЬ ПО | ХозрасчетныйОстатки.Субконто1.Наименование" ; Запрос.УстановитьПараметр("Период", Период); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах); МассивСубконтоНоменклатураСклад = Новый Массив(); МассивСубконтоНоменклатураСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); МассивСубконтоНоменклатураСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); Запрос.УстановитьПараметр("СубконтоНоменклатураСклад",МассивСубконтоНоменклатураСклад ); ТаблицаЗначенийВТабличныйДокумент(); Запрос.УстановитьПараметр("Тэзэ",ДокументРезультат); Результат = Запрос.Выполнить(); ТаблицаРезультат = Результат.Выгрузить(); Возврат ТаблицаРезультат; КонецФункции |
|||
1
Жан Пердежон
23.03.20
✎
12:19
|
(0) тебе скорее на фрилансру или что там у фрилансеров сейчас популярно
|
|||
2
mikecool
23.03.20
✎
12:34
|
(0) так и используй ИР
|
|||
3
Тессеракт
23.03.20
✎
13:04
|
(2) бухи просят отчет сделать, который бы подтягивал данные из эксельника.
|
|||
4
toypaul
гуру
23.03.20
✎
13:41
|
набор данных объект.
подробно разбирали в нашем курсе https://learn.programstore.ru/video_kurs_skd день 03 |
|||
5
Chameleon1980
23.03.20
✎
13:59
|
ИмяОбъектаСодержащегоДанные указано?
Таблица данных в отладчике норм? Ошибка где? |
|||
6
Chameleon1980
23.03.20
✎
13:59
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |