|
Не работает отбор в СКД | ☑ | ||
---|---|---|---|---|
0
ultrannge89
29.08.14
✎
08:48
|
Почти типовой отчет скд.
На форме кнопка с процедурой формирования отчета. Параметры = "Srvr=""192.168.7.96"";Ref=""ut_anlk"";Usr=""ПриданниковаС"";"; V82COMConnector= Новый COMОбъект("V82.COMConnector"); //Попытка БазаИсточник = V82COMConnector.Connect(Параметры); Запрос = БазаИсточник.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | ПлатежиПоДоговору.ДоговорКонтрагента.Номер КАК УтНомер, | ВЫБОР | КОГДА ПлатежиПоДоговору.ДоговорКонтрагента.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыДоговоров.Оплата100) | ТОГДА ""Оплата100"" | КОГДА ПлатежиПоДоговору.ДоговорКонтрагента.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыДоговоров.Ипотека) | ТОГДА ""Ипотека"" | КОГДА ПлатежиПоДоговору.ДоговорКонтрагента.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыДоговоров.ИпотекаФОНД) | ТОГДА ""ИпотекаФОНД"" | КОГДА ПлатежиПоДоговору.ДоговорКонтрагента.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыДоговоров.Рассрочка) | ТОГДА ""Рассрочка"" | ИНАЧЕ """" | КОНЕЦ КАК УтСпособОплаты, | ПлатежиПоДоговору.СуммаПлатежа КАК УтСуммаДок, | ПлатежиПоДоговору.Период КАК УтПериод |ИЗ | РегистрСведений.ПлатежиПоДоговору КАК ПлатежиПоДоговору |ГДЕ | ПОДСТРОКА(ПлатежиПоДоговору.ДоговорКонтрагента.Номер, 1, 1) = ""А"" | |УПОРЯДОЧИТЬ ПО | ДоговорКонтрагента, | Период"; Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда ТаблицаРезультат = Новый ТаблицаЗначений; ТаблицаРезультат.Колонки.Добавить("УтНомер", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(100))); ТаблицаРезультат.Колонки.Добавить("УтСпособОплаты", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(100))); ТаблицаРезультат.Колонки.Добавить("УтНомерСтроки", Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(12))); ТаблицаРезультат.Колонки.Добавить("УтСуммаДок", Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(12))); ТаблицаРезультат.Колонки.Добавить("УтПериод", Новый ОписаниеТипов("Дата",, Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя))); Выборка = Результат.Выбрать(); ДокНомерПред = ""; Пока Выборка.Следующий() Цикл НоваяСтрока = ТаблицаРезультат.Добавить(); Если ДокНомерПред = "" ИЛИ ДокНомерПред <> Выборка.УтНомер Тогда ДокНомерПред = Выборка.УтНомер; НомерСтроки = 1; ИначеЕсли ДокНомерПред = Выборка.УтНомер Тогда НомерСтроки = НомерСтроки + 1; КонецЕсли; НоваяСтрока.УтНомерСтроки = НомерСтроки; НоваяСтрока.УтНомер = Выборка.УтНомер; НоваяСтрока.УтСпособОплаты = Выборка.УтСпособОплаты; НоваяСтрока.УтСуммаДок = Выборка.УтСуммаДок; НоваяСтрока.УтПериод = Выборка.УтПериод; КонецЦикла; Иначе Сообщить("Пустой результат запроса"); КонецЕсли; //сформируем структуру внешних данных ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("Данные", ТаблицаРезультат); Настройки = КомпоновщикНастроек.Настройки; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //инициализация процессора скд ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); ТабличныйДокумент.Очистить(); //инициализация процессора вывода ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); В конструкторе имеются 2 набора данных, которые объединяю по номеру договора, отчет формируется, но если делаю отбор по любой колонке пишет: Ошибка исполнения отчета по причине: Ошибка инициализации по причине: Ошибка создания набора данных "ВнешнийИсточник" по причине: Не найден внешний набор данных "Данные" |
|||
1
ultrannge89
29.08.14
✎
08:52
|
Признаюсь честно, это мой первый отчет с программным формированием... До этого были простенькие скд, если требовалось что-то сложней, делал стандартно в макете. Но времена меняются и надо учиться...
|
|||
2
ultrannge89
29.08.14
✎
09:04
|
Еще вопросик, как уже после формирования отчета добавить колонку булево и обработать по условию таблицу? Колонка нужна чтобы проще было сверять суммы в отчете...
|
|||
3
ultrannge89
29.08.14
✎
09:05
|
На выходных посмотрю курс по скд от Гилева, надеюсь часть моих вопросов он исключит.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |