Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ЛЕВОЕ СОЕДИНЕНИЕ двух таблиц значений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Veizdem
Есть две таблицы значений, нужно из одной таблицы исключить все записи, которые имеются в другой таблице. Думал сделать запросом через левое соединение, но не работает, говорит что при выборе не могут быть соединения. Народ, очень срочно нужно, помогите как-нибудь, как подобное решить можно.

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

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


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


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

{Форма.Форма.Форма(161)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();                  
по причине:
При выборе данных из объекта в запросе не могут присутствовать соединения и объединения
Petre
Это то, о чем я говорил в "во-вторых".
Vofka
Дополню немного то, о чем Petre сказал, как во-вторых. В запросе единственное что можно сделать с ТЗ - это выбрать из нее данные и поместить во временную таблицу. Если нужны последующие манипуляции с этими данными, то работать нужно с этой временной таблицей.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.