Есть ограничения в платформе 1С:Підприємство 8.3 (8.3.10.2168), ну и ниже версий.
Нельзя использовать одновременно соединение таблиц базы данных (например таблицы регистра) и данные из ВнешнеИсточникиДанных в запросах.
Обойти это ограничение возможно сначала обратиться к ВнешниеИсточникиДанных с помощью запроса, а результат запроса выгрузить в таблицу значений.
Далее сделать еще один запрос и в качестве источника данных выбрать ранее выгруженную таблицу значений.
А далее в этом запросе готовую таблицу значений соединяем с нашими данными из базы 1С (например, регистром сведений).
У меня данный пример реализован в функции ПолучитьТЗ()
Нельзя использовать одновременно соединение таблиц базы данных (например таблицы регистра) и данные из ВнешнеИсточникиДанных в запросах.
Обойти это ограничение возможно сначала обратиться к ВнешниеИсточникиДанных с помощью запроса, а результат запроса выгрузить в таблицу значений.
Далее сделать еще один запрос и в качестве источника данных выбрать ранее выгруженную таблицу значений.
А далее в этом запросе готовую таблицу значений соединяем с нашими данными из базы 1С (например, регистром сведений).
У меня данный пример реализован в функции ПолучитьТЗ()
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) //так как нельзя использовать в одном запросе обращение к таблицам внешних //источников данных и таблицам информационной базы 1С делаем такой ход ТаблицаЗначенийРезультат = ПолучитьТЗ(); //получим ТЗ и ее запихнем в отчет Если ТаблицаЗначенийРезультат.Количество() = 0 Тогда Возврат; КонецЕсли; СтандартнаяОбработка = Ложь; СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //поместим ТЗ в отчет ВнешнийНаборДанных = Новый Структура("fdu92doc", ТаблицаЗначенийРезультат); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры Функция ПолучитьТЗ() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | AdjacentDoc.OID |ИЗ | ВнешнийИсточникДанных.fdu92doc.Таблица.AdjacentDoc КАК AdjacentDoc"; fdu92doc = Запрос.Выполнить().Выгрузить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | fdu92doc.OID |ПОМЕСТИТЬ ВременаяТаблица |ИЗ | &fdu92doc КАК fdu92doc |; | |////////////////////////////////////////////// |ВЫБРАТЬ | fdu92doc.OID |ИЗ | РегистрСведений.fdu92doc КАК fdu92doc | СОЕДИНЕНИЕ ВременаяТаблица КАК ВременаяТаблица |ПО fdu92doc.OID = ВременаяТаблица.OID"; Запрос.УстановитьПараметр("fdu92doc", fdu92doc); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции
Комментариев нет:
Отправить комментарий