|   |   | 
| 
 | Проверка на наличие значения в РС | ☑ | ||
|---|---|---|---|---|
| 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мя запросами ведь? один по РС другой по ТЗ?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |