Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Объединение виртуальных таблиц.          
Bon Jovi Подменю пользователя
сообщение 24.09.20, 17:05
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 2 раз
Рейтинг: 0

Конфигурация: 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 Подменю пользователя
сообщение 24.09.20, 17:52
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

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


Сообщение отредактировал Bernet - 24.09.20, 17:53


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

sava1 Подменю пользователя
сообщение 24.09.20, 19:23
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Bon Jovi @ Сегодня, 18:05 * ,

стесняюсь спросить - а зачем такое объединение?

Bon Jovi Подменю пользователя
сообщение 25.09.20, 9:09
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 2 раз
Рейтинг: 0

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

sava1 @ Вчера, 20:23 * ,
Цитата
хочу объединить очень много таблиц в одну

Vofka Подменю пользователя
сообщение 25.09.20, 9:12
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(Bon Jovi @ 25.09.20, 10:09) *
И о таком методе как вы предложили я знаю, не подходит

В смысле не подходит? Код выше обхъдиняет временные таблицы.

Bon Jovi Подменю пользователя
сообщение 01.10.20, 11:38
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 2 раз
Рейтинг: 0

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

    Запрос.Текст = ТекстЗапроса1 + ТекстЗапроса2;

Petre Подменю пользователя
сообщение 01.10.20, 11:58
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Bon Jovi @ Today, 11:38 * ,
И в чем разница между
QUOTE (Bernet @ 24.09.20, 17:52) *
сначала помещаете каждую из таблиц во временную таблицу, а потом уже объединяете результат

???


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Bon Jovi Подменю пользователя
сообщение 01.10.20, 12:02
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 2 раз
Рейтинг: 0

Petre @ Сегодня, 12:58 * ,
Вопрос был в том, как это сделать автоматически к большому количеству таблиц значений. Сам принцип объединения временных таблиц мне был понятен и известен.

twilight_dream Подменю пользователя
сообщение 05.10.20, 12:46
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 265
Спасибо сказали: 4 раз
Рейтинг: 0

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

Обычно это делают с помощью набора программного кода. Можно заплатить кому то - и за вас наберут. Или заставить с помощью лести, лжи, угроз, чтобы кто то написал за вас.


Signature

Bon Jovi Подменю пользователя
сообщение 05.10.20, 12:56
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 40
Спасибо сказали: 2 раз
Рейтинг: 0

twilight_dream @ Сегодня, 13:46 * ,
Большое спасибо. Задание давно готово и написано личной мной. Да и вначале я не просил за меня работу делать, а только дать идею реализации задачи, но видно для гуру программистов оказать помощь это слишком, но вот оставить язвителный комментарии это они могут

twilight_dream Подменю пользователя
сообщение 05.10.20, 14:37
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 265
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(Bon Jovi @ 05.10.20, 13:56) *
но вот оставить язвителный комментарии это они могут


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


Signature

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Тема закрыта Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 11:29
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!