Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объединение виртуальных таблиц.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Bon Jovi
Конфигурация: Trade (10.3.29.1) (http://v8.1c.ru/trade/), версия: 8.3.11.2867, обычные формы.
Добрый день. Подскажите пожалуйста в следующем. Хочу написать запрос, который будет формироваться по ходу обхода цикла, то есть каждая строка будет добавлять часть кода. Проблема в том, что я хочу объединить очень много таблиц в одну (полей всего два и они общие, есть у всех таблиц). Но на сколько я понимаю, нельзя объединять виртуальные таблицы. То есть такой метод не работает и выдаёт ошибку "Содержимое объекта данных может быть выбрано только во временную таблицу":
ВЫБРАТЬ
    ТЗ.Элемент1 КАК Элемент1 ,
    ТЗ.Элемент2 КАК Элемент2
ИЗ
    &ТЗ КАК ТЗ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ТЗ2.Элемент1 ,
    ТЗ2.Элемент2
ИЗ
    &ТЗ2 КАК ТЗ2


Поделитесь информацией по этому поводу. Нужно именно таким способом, то есть каждая строка цикла должна добавить очередной кусок объединения.
Bernet
Bon Jovi @ Сегодня, 18:05 необходимо зарегистрироваться для просмотра ссылки ,
сначала помещаете каждую из таблиц во временную таблицу, а потом уже объединяете результат
т.е.
ВЫБРАТЬ
    ТЗ.Элемент1 КАК Элемент1 ,
    ТЗ.Элемент2 КАК Элемент2
ПОМЕСТИТЬ ВТ1
ИЗ
    &ТЗ КАК ТЗ
;
///////////////////////////////////////////////
ВЫБРАТЬ
    ТЗ2.Элемент1 ,
    ТЗ2.Элемент2
ПОМЕСТИТЬ ВТ2
ИЗ
    &ТЗ2 КАК ТЗ2
;
///////////////////////////////////////////////
ВЫБРАТЬ
    ВТ1.Элемент1 КАК Элемент1 ,
    ВТ1.Элемент2 КАК Элемент2
ИЗ
   ВТ1 КАК ВТ1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ВТ2.Элемент1 ,
    ВТ2.Элемент2
ИЗ
    ВТ2 КАК ВТ2
sava1
Bon Jovi @ Сегодня, 18:05 необходимо зарегистрироваться для просмотра ссылки ,

стесняюсь спросить - а зачем такое объединение?
Bon Jovi
Bernet @ Вчера, 18:52 необходимо зарегистрироваться для просмотра ссылки ,
Немного ошибся (за что стыдно) ... Объединить не виртуальные, а временные таблицы...
И о таком методе как вы предложили я знаю, не подходит

sava1 @ Вчера, 20:23 необходимо зарегистрироваться для просмотра ссылки ,
Цитата
хочу объединить очень много таблиц в одну
Vofka
Цитата(Bon Jovi @ 25.09.20, 10:09) необходимо зарегистрироваться для просмотра ссылки
И о таком методе как вы предложили я знаю, не подходит

В смысле не подходит? Код выше обхъдиняет временные таблицы.
Bon Jovi
Vofka @ 25.09.20, 10:12 необходимо зарегистрироваться для просмотра ссылки ,
Вот как с этой задачей справился я:
ТекстЗапроса1 = ""; ТекстЗапроса2 = ""; Счётчик = 0;
    Для каждого СтрокаПараметра Из Параметры Цикл    
        
        Если НЕ ТипЗнч(ЗначениеИзСтрокиВнутр(СтрокаПараметра)) = Тип("ТаблицаЗначений") ИЛИ ЗначениеИзСтрокиВнутр(СтрокаПараметра).Количество() = 0 Тогда
            Продолжить;            
        КонецЕсли;    
        
        Счётчик = Счётчик + 1;
        
        ТекстЗапроса1 = ТекстЗапроса1 + "ВЫБРАТЬ ТЗ" + Счётчик + ".Номенклатура, ТЗ" + Счётчик + ".Склад ПОМЕСТИТЬ ТЗ" + Счётчик + " ИЗ &ТЗ" + Счётчик + " КАК ТЗ" + Счётчик + ";";        
        ТекстЗапроса2 = ТекстЗапроса2 + "ВЫБРАТЬ ТЗ" + Счётчик + ".Номенклатура, ТЗ" + Счётчик + ".Склад ИЗ ТЗ" + Счётчик + " КАК ТЗ" + Счётчик + "";
        
        Если Счётчик <> 1 Тогда
            ТекстЗапроса2 = СтрЗаменить(ТекстЗапроса2, "ВЫБРАТЬ ТЗ" + Счётчик, " ОБЪЕДИНИТЬ ВЫБРАТЬ ТЗ" + Счётчик);        
        КонецЕсли;
        
        Запрос.УстановитьПараметр("ТЗ" + Счётчик, ЗначениеИзСтрокиВнутр(СтрокаПараметра).Скопировать(, "Номенклатура, Склад"));                         
        
    КонецЦикла;      
    
    Если Счётчик = 0 Тогда
        Возврат;
    КонецЕсли;

    Запрос.Текст = ТекстЗапроса1 + ТекстЗапроса2;
Petre
Bon Jovi @ Today, 11:38 необходимо зарегистрироваться для просмотра ссылки ,
И в чем разница между
QUOTE (Bernet @ 24.09.20, 17:52) необходимо зарегистрироваться для просмотра ссылки
сначала помещаете каждую из таблиц во временную таблицу, а потом уже объединяете результат

???
Bon Jovi
Petre @ Сегодня, 12:58 необходимо зарегистрироваться для просмотра ссылки ,
Вопрос был в том, как это сделать автоматически к большому количеству таблиц значений. Сам принцип объединения временных таблиц мне был понятен и известен.
twilight_dream
Цитата(Bon Jovi @ 01.10.20, 13:02) необходимо зарегистрироваться для просмотра ссылки
Вопрос был в том, как это сделать автоматически к большому количеству таблиц значений. Сам принцип объединения временных таблиц мне был понятен и известен.

Обычно это делают с помощью набора программного кода. Можно заплатить кому то - и за вас наберут. Или заставить с помощью лести, лжи, угроз, чтобы кто то написал за вас.
Bon Jovi
twilight_dream @ Сегодня, 13:46 необходимо зарегистрироваться для просмотра ссылки ,
Большое спасибо. Задание давно готово и написано личной мной. Да и вначале я не просил за меня работу делать, а только дать идею реализации задачи, но видно для гуру программистов оказать помощь это слишком, но вот оставить язвителный комментарии это они могут
twilight_dream
Цитата(Bon Jovi @ 05.10.20, 13:56) необходимо зарегистрироваться для просмотра ссылки
но вот оставить язвителный комментарии это они могут


Чесно, первый раз в жизни. Больше так не буду.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.