|
Проверка на наличие значения в РС | ☑ | ||
---|---|---|---|---|
0
Валидатор
03.12.13
✎
13:50
|
1с 8.2. Такой вопрос, есть Таблица Значений заполненная из файла, теперь хочу проверить, совпадают ли значения из моей таблицы с значениями РС, написал запрос:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.КодНоменклатуры, | ТЗ.НаименованиеНоменклатуры, | ТЗ.ИдентификаторНоменклатуры, | ТЗ.НомерГТД, | ТЗ.Страна, | ТЗ.Количество, | ТЗ.Цена |ИЗ | ТаблицаЗначений КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗ.КодНоменклатуры, | ТЗ.НаименованиеНоменклатуры, | ТЗ.ИдентификаторНоменклатуры, | ТЗ.НомерГТД, | ТЗ.Страна, | ТЗ.Количество, | ТЗ.Цена |ИЗ | &ТЗ КАК ТЗ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ттСоответствиеОбъектов КАК ттСоответствиеОбъектов | ПО ТЗ.ИдентификаторНоменклатуры = ттСоответствиеОбъектов.Идентификатор"; Запрос.УстановитьПараметр("ТЗ", ТаблицаЗначений); Результат = Запрос.Выполнить(); ДанныеПоНоменклатуре = Результат.Выгрузить(); летит ошибка, что не так? |
|||
1
Валидатор
03.12.13
✎
13:53
|
и в результате запроса мы ведь получим только те строки, которые удовлятворять условию будут так? а как быть с теми строками, которые не совпадают с РС? мне их нужно создавать, но запрос же их не вернет
|
|||
2
Галахад
гуру
03.12.13
✎
13:54
|
А где менеджер?
|
|||
3
Бешеная Нога
03.12.13
✎
13:54
|
а че текст ошибки стыдно показать?
|
|||
4
Бешеная Нога
03.12.13
✎
13:54
|
и что такое "ТаблицаЗначений" в первом запросе
|
|||
5
Валидатор
03.12.13
✎
13:55
|
{Форма.Форма.Форма(88)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить(); по причине: Содержимое объекта данных может быть выбрано только во временную таблицу |
|||
6
Валидатор
03.12.13
✎
13:55
|
(4) Таблица значений - таблица которая заполняется данными из загружаемого файла, я же написал
|
|||
7
Бешеная Нога
03.12.13
✎
13:55
|
(6) это твой первый запрос к таблице значений?
|
|||
8
Валидатор
03.12.13
✎
13:56
|
(7) да
|
|||
9
Бешеная Нога
03.12.13
✎
13:57
|
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | ТЗ.КодНоменклатуры, | ТЗ.НаименованиеНоменклатуры, | ТЗ.ИдентификаторНоменклатуры, | ТЗ.НомерГТД, | ТЗ.Страна, | ТЗ.Количество, | ТЗ.Цена |Поместить ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗ.КодНоменклатуры, | ТЗ.НаименованиеНоменклатуры, | ТЗ.ИдентификаторНоменклатуры, | ТЗ.НомерГТД, | ТЗ.Страна, | ТЗ.Количество, | ТЗ.Цена |ИЗ | ТЗ КАК ТЗ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ттСоответствиеОбъектов КАК ттСоответствиеОбъектов | ПО ТЗ.ИдентификаторНоменклатуры = ттСоответствиеОбъектов.Идентификатор"; Запрос.УстановитьПараметр("ТЗ", ТаблицаЗначений); Результат = Запрос.Выполнить(); ДанныеПоНоменклатуре = Результат.Выгрузить(); |
|||
10
Бешеная Нога
03.12.13
✎
13:57
|
и колонки ТЗ должны быть типизированы
|
|||
11
Валидатор
03.12.13
✎
13:57
|
с поместить тоже делал, там запрос возвращал потом пустое значение
|
|||
12
Бешеная Нога
03.12.13
✎
13:58
|
(11) сделай как написано
|
|||
13
Валидатор
03.12.13
✎
13:58
|
(10) это то понятно
|
|||
14
Валидатор
03.12.13
✎
14:01
|
(12) теперь он мне выдал совпадения с РС, но только в РС 2 совпадения, а в результате запроса 3 совпадения, как так?
|
|||
15
Галахад
гуру
03.12.13
✎
14:03
|
(14) Какие нафиг совпадения. Запрос тупо выдает исходную таблицу.
|
|||
16
Валидатор
03.12.13
✎
14:03
|
И так же, я удалил из РС записи совпадающие, теперь смотрю результат запроса, у меня в нем 2 позиции, те же, которые грузятся из файла, но этих позиций НЕТ в РС, почему они тогда отображаются?
|
|||
17
Валидатор
03.12.13
✎
14:03
|
так а толку мне от запроса, когда я и так ТЗ мог получить
|
|||
18
Enders
03.12.13
✎
14:03
|
(14)Ну наверное потому что там Левое соединение...
И надо либо ставить проверку на NULL, либо делать внутреннее |
|||
19
Бешеная Нога
03.12.13
✎
14:04
|
у тебя левое соединие. на выходе по любому будут все записи из таблицы значений. как ни крути. или ставь условие или делай внутреннее
|
|||
20
Валидатор
03.12.13
✎
14:04
|
(18) вот тут то и проблема, если мы сделаем соединение, у нас отобразятся только те позиции, которые одинаковы и в моей ТЗ, которая в 1 запросе, и в РС, а остальные то данные мы не получим? на которых нет совпадений?
|
|||
21
Enders
03.12.13
✎
14:06
|
(20) Да, именно так.
Если тебя это не устраивает, тогда чего ты жаловался в (14) что получаешь все данные?))) |
|||
22
Enders
03.12.13
✎
14:06
|
и что мешает выбрать какой-то реквизит из РС, что б при обходе результата запроса понимать, эта позиция совпадает или нет?
|
|||
23
Валидатор
03.12.13
✎
14:08
|
(22) у меня есть измерение в РС, идентификатор, вот по нему как то нужно смотреть, типа если идентификатор из РС совпадает с идентификатором из ТЗ, то берем номенклатуру, если нет, то создаем номенклатуру
|
|||
24
Галахад
гуру
03.12.13
✎
14:09
|
(20) Нет не так. При левом соединение будут и совпадения и не совпадения.
|
|||
25
Enders
03.12.13
✎
14:10
|
Блин, вариантов масса как это сделать. Некоторые приведены выше. Ещё есть вариант получить всё это двумя запросами:
Первым - только совпадающие Вторым - не совпадающие Ещё есть вариант в запросе написать Выбор Когда ттСоответствиеОбъектов.Идентификатор ЕСТЬ NULL Тогда Истина Иначе Ложь Конец как ЕстьСовпадение |
|||
26
Enders
03.12.13
✎
14:11
|
*немного напутал
Тогда ложь Иначе Истина |
|||
27
Валидатор
03.12.13
✎
14:12
|
(25) в каждом из двух запросов?
|
|||
28
Enders
03.12.13
✎
14:34
|
(27) нет, это различные варианты решения задачи
Или два запроса, или через выбор, или просто через реквизит. |
|||
29
Валидатор
03.12.13
✎
14:51
|
(25) если делать условие на есть нул, все равно с 2мя запросами ведь? один по РС другой по ТЗ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |