Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
31 мая 2024, 23:31

Исключение данных из таблицы значений

Автор Greiv, 12 мар 2015, 14:29

0 Пользователей и 1 гость просматривают эту тему.

Greiv

Приветствую. Есть задача из таблицы значений которую я передаю  в запрос исключить совпадающие записи с одним из регистров, есть проблема, дело в том, что записей совпадающих в таблицах очень много. То есть:
8783787878787 Бабенко Москва Ленина 1 квартира 1
0909090909090 Бабенко Москва Ленина 1 квартира 2
2112121211212 Бабенко Москва Ленина 1 квартира 3
Примерно так.
А в тз графы выглядят следующим образом:
Бабенко Москва Ленина 1
Бабенко Москва Ленина 2
Бабенко Москва Ленина 3

То есть функция должна мне вернуть:
Бабенко Москва Ленина 2
Бабенко Москва Ленина 3

А вот собственно сама функция:
&НаСервере
Функция ВозвратТаблицыКурьеров()
ТаблицаКурьеров = Новый ТаблицаЗначений;
ТаблицаКурьеров = Объект.НазначениеКурьеров.Выгрузить();
Запрос = Новый Запрос;
//Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст ="ВЫБРАТЬ
              | Таблица.ФИО,
              | Таблица.НаселенныйПункт,
              | Таблица.Улица,
              | Таблица.Дом,
              | Таблица.Отметка,
              | Таблица.КодКурьера,
              | Таблица.КодДоставки
              |ПОМЕСТИТЬ Таблица
              |ИЗ
              | &Таблица КАК Таблица
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | Таблица.ФИО,
              | Таблица.НаселенныйПункт,
              | Таблица.Улица,
              | Таблица.Дом,
              | Таблица.Отметка,
              | Таблица.КодКурьера,
              | Таблица.КодДоставки
              |ИЗ
              | Таблица КАК Таблица
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | КурьерыЛицевыхСчетов.Курьер,
              | КурьерыЛицевыхСчетов.НаселенныйПункт,
              | КурьерыЛицевыхСчетов.Улица,
              | КурьерыЛицевыхСчетов.НомерДома
              |ПОМЕСТИТЬ КурьерыЛицыхСчетов
              |ИЗ
              | РегистрСведений.КурьерыЛицевыхСчетов КАК КурьерыЛицевыхСчетов
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | КурьерыЛицыхСчетов.Курьер,
              | КурьерыЛицыхСчетов.НаселенныйПункт,
              | КурьерыЛицыхСчетов.Улица,
              | КурьерыЛицыхСчетов.НомерДома,
              | Таблица.ФИО,
              | Таблица.НаселенныйПункт КАК НаселенныйПункт1,
              | Таблица.Улица КАК Улица1,
              | Таблица.Дом,
              | Таблица.Отметка,
              | Таблица.КодКурьера,
              | Таблица.КодДоставки
              |ИЗ
              | Таблица КАК Таблица
              | ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурьерыЛицыхСчетов КАК КурьерыЛицыхСчетов
              | ПО Таблица.ФИО = КурьерыЛицыхСчетов.Курьер
              | И Таблица.НаселенныйПункт = КурьерыЛицыхСчетов.НаселенныйПункт
              | И Таблица.Улица = КурьерыЛицыхСчетов.Улица
              | И Таблица.Дом <> КурьерыЛицыхСчетов.НомерДома";
 
Запрос.УстановитьПараметр("Таблица", ТаблицаКурьеров);
ТабличнаяЧастьЗапроса = Запрос.Выполнить().Выгрузить();
Сообщить(ТабличнаяЧастьЗапроса);
Возврат ТабличнаяЧастьЗапроса
КонецФункции


cska-fanat-kz

правильно сформулируйте условие соединения и будет вам счастье.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Greiv

Цитата: cska-fanat-kz от 12 мар 2015, 14:51
правильно сформулируйте условие соединения и будет вам счастье.

В этом и проблема не селён в соединениях я ещё. Левое соединение выдаёт мне полную ТЗ без исключения.
Добавлено: 13 мар 2015, 11:18


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

cska-fanat-kz

1. Вам же надо условие на НасПункт+Улица+Дом а у вас условие только на Дом
2. Зачем нужно соединение с регистром если вы с него ни одного поля не используете?
3. Тот же вопрос к врем. таблице "КурьерыЛицыхСчетов"
4. Оставьте первый вариант и поменяйте только место:
              |        ПО Таблица.ФИО = КурьерыЛицыхСчетов.Курьер
              |            И Таблица.НаселенныйПункт = КурьерыЛицыхСчетов.НаселенныйПункт
              |            И Таблица.Улица = КурьерыЛицыхСчетов.Улица
              |            И Таблица.Дом <> КурьерыЛицыхСчетов.НомерДома";
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск