Версия для печати темы (https://pro1c.org.ua/index.php?s=541acc42fa19e83099512dd0598c3ef7&showtopic=24731)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ ЛЕВОЕ СОЕДИНЕНИЕ двух таблиц значений

Автор: Veizdem 21.08.15, 9:19

Есть две таблицы значений, нужно из одной таблицы исключить все записи, которые имеются в другой таблице. Думал сделать запросом через левое соединение, но не работает, говорит что при выборе не могут быть соединения. Народ, очень срочно нужно, помогите как-нибудь, как подобное решить можно.

Таблица из которой надо удалять:

ТаблицаУБ = Новый ТаблицаЗначений;
    ТаблицаУБ.Колонки.Добавить("Дата");
    ТаблицаУБ.Колонки.Добавить("Счет");
    ТаблицаУБ.Колонки.Добавить("Сумма");
    ТаблицаУБ.Колонки.Добавить("Валюта");
    ТаблицаУБ.Колонки.Добавить("ИНН");

Таблица в которой содержится что надо удалять:
ТаблицаСписок = Новый ТаблицаЗначений;
    ТаблицаСписок.Колонки.Добавить("ИНН");
    ТаблицаСписок.Колонки.Добавить("ФизЛицо")


Критерий для определения строк - колонка ИНН (она и там и там есть)
Пробовал делать вот так:
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТЗУБ", ТаблицаУБ);
    Запрос.УстановитьПараметр("ТЗС", ТаблицаСписок);
    
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТЗУБ.Дата,
                   |    ТЗУБ.Счет,
                   |    ТЗУБ.Сумма,
                   |    ТЗУБ.Валюта,
                   |    ТЗУБ.ИНН
                   |    ПОМЕСТИТЬ ТЗУБ
                   |ИЗ
                   |    &ТЗУБ КАК ТЗУБ
                   |        ЛЕВОЕ СОЕДИНЕНИЕ ТЗС КАК ТЗС
                   |        ПО ТЗУБ.ИНН = ТЗС.ИНН
                   |ГДЕ
                   |    ТЗС.ИНН ЕСТЬ NULL ";
    Результат = Запрос.Выполнить();

Автор: Petre 21.08.15, 9:22

Во первых, поля тз надо типизировать. Во-вторых, прежде чем делать манипуляции, все отправленные тз необходимо поместить в вт. В-третьих, если какая ошибка возникает, будьте добры публиковать ее текст.

Автор: Veizdem 21.08.15, 9:26

Цитата(Petre @ 21.08.15, 10:22) *
Во первых, поля тз надо типизировать. Во-вторых, прежде чем делать манипуляции, все отправленные тз необходимо поместить в вт. В-третьих, если какая ошибка возникает, будьте добры публиковать ее текст.


Ошибка вот такая:

{Форма.Форма.Форма(161)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();                  
по причине:
При выборе данных из объекта в запросе не могут присутствовать соединения и объединения

Автор: Petre 21.08.15, 9:27

Это то, о чем я говорил в "во-вторых".

Автор: Vofka 21.08.15, 9:32

Дополню немного то, о чем Petre сказал, как во-вторых. В запросе единственное что можно сделать с ТЗ - это выбрать из нее данные и поместить во временную таблицу. Если нужны последующие манипуляции с этими данными, то работать нужно с этой временной таблицей.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua