Имя: Пароль:
1C
1С v8
Заменить источник схемы запроса
0 Dmitriy_
Kolesnikov
 
11.10.18
07:20
Не могу подобрать способ это сделать. Просто поменять таблицу и всё.

Вот что пробовал:

ОператорВыбора.Источники.Удалить(0);
Потом создать заново - тогда пропадают все отборы. Плохой вариант.


ОператорВыбора.Источники[0].Источник.Псевдоним = "Временный";
НовыйИсточник = ОператорВыбора.Источники.Добавить("Документ." + эл, "ДокументРегистратор");
- тогда во всех отборах меняется "Документ.МойДокумент" на "Временный".

ОператорВыбора.Источники.Заменить(0, НовыйИсточник);  - не работает

Кто делал? Подскажите.

Просто подменить "Документ.Документ1" на "Документ.Документ2" и ничего больше.
1 Dmitriy_
Kolesnikov
 
11.10.18
07:56
Пробую вот так:

НовыйИсточник = ОператорВыбора.Источники.Добавить("Документ." + эл, "ДокументРегистратор2");
ОператорВыбора.Источники.Заменить(0, НовыйИсточник.Источник);
ОператорВыбора.Источники[0].Источник.Псевдоним = "ДокументРегистратор";
ОператорВыбора.Источники.Удалить(1);


Всё равно ошибка во второй строке, ругается на второй параметр ф-и Заменить, мол, не тот тип данных. Я проверил - тот.
2 Dmitriy_
Kolesnikov
 
11.10.18
10:30
Похоже, никому не нужна СхемаЗапроса :(
ОК, буду делать текстом и не выёживаться.
3 Fragster
 
гуру
11.10.18
10:31
(2) она действительно недоделанная
4 Fragster
 
гуру
11.10.18
10:32
я делаю так - все, что можно - делаю построителем запроса. если какие-то вещи не получается - то вставляю куски типа &_название, которые потом заменяю (или не заменяю, а указываю в качестве параметра Истина) через стрзаменить. Тогда продолжает работать конструктор запроса
5 Dmitriy_
Kolesnikov
 
11.10.18
15:07
(4)
У меня там "Объединить все" из 35 кусков.
Я новые операторы создаю на основе старого.
А в старом уже есть источник.

Можно создать вторую (третью...) схему запроса на основе слегка измененного текста (с новым источником) и уже её присобачивать к первой 35 раз.
Тоже идея. Хотя и не такая красивая. Хотелось реализовать так, чтобы потомки плакали от радости и кричали "это шедевр!"
6 singlych
 
11.10.18
15:12
ОператорВыбора.Источники[0].Источник.ИмяТаблицы = "Документ.Документ2"
7 Dmitriy_
Kolesnikov
 
11.10.18
20:49
(6)
ТаблицаСхемыЗапроса (QuerySchemaTable)
ИмяТаблицы (TableName)
Использование:
Только чтение.
8 VinakovS
 
11.11.18
14:28
Добрый день.
В вашем случае необходимо просто заменить источник и заново присвоить псевдоним:

[code]
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(<текст_запроса>);
ПакетЗапроса = СхемаЗапроса.ПакетЗапросов[0];
ОператорЗапроса = ПакетЗапроса.Операторы[0];
ИсточникЗапроса = ОператорЗапроса.Источники[0];
ТаблицаСхемыЗапроса = ПакетЗапроса.ДоступныеТаблицы.Найти(<искомое_имя>);
ОператорЗапроса.Источники.Заменить(0, ТаблицаСхемыЗапроса);
ИсточникЗапроса.Источник.Псевдоним = "<псевдоним>";
Результат = СхемаЗапроса.ПолучитьТекстЗапроса();
[/code]

Если не получится - напишите, пришлю свой полный код с комментариями
Независимо от того, куда вы едете — это в гору и против ветра!