Имя: Пароль:
1C
 
Как правильно переделать запрос?
0 Ugra
 
13.10.16
13:50
Здравствуйте. подскажите как переделать запрос чтобы  при открытии поступления товаров не выходила ошибка-дублирование ключевых значений в колонке "сслыка", отображение данных невозможно. Ошибка именно в этом запросе, в форме списка поступления в поступлении товаров динамические дописки..

Процедура УстановитьТекстЗапросаПТиУФормаСписка(Список)   Экспорт
    Список.ТекстЗапроса = "ВЫБРАТЬ
                          |    ВЫБОР
                          |        КОГДА ДокументПоступлениеТоваровУслуг.РучнаяКорректировка = ИСТИНА
                          |            ТОГДА ВЫБОР
                          |                    КОГДА ДокументПоступлениеТоваровУслуг.ПометкаУдаления = ИСТИНА
                          |                        ТОГДА 10
                          |                    КОГДА ДокументПоступлениеТоваровУслуг.Проведен = ЛОЖЬ
                          |                        ТОГДА 9
                          |                    ИНАЧЕ 8
                          |                КОНЕЦ
                          |        ИНАЧЕ ВЫБОР
                          |                КОГДА ДокументПоступлениеТоваровУслуг.ПометкаУдаления = ИСТИНА
                          |                    ТОГДА 2
                          |                КОГДА ДокументПоступлениеТоваровУслуг.Проведен = ИСТИНА
                          |                    ТОГДА 1
                          |                ИНАЧЕ 0
                          |            КОНЕЦ
                          |    КОНЕЦ КАК СостояниеДокумента,
                          |    ДокументПоступлениеТоваровУслуг.Ссылка,
                          |    ДокументПоступлениеТоваровУслуг.ПометкаУдаления,
                          |    ДокументПоступлениеТоваровУслуг.Дата,
                          |    ДокументПоступлениеТоваровУслуг.Номер,
                          |    ДокументПоступлениеТоваровУслуг.Проведен,
                          |    ДокументПоступлениеТоваровУслуг.ВидОперации,
                          |    ДокументПоступлениеТоваровУслуг.Организация,
                          |    ДокументПоступлениеТоваровУслуг.Склад,
                          |    ДокументПоступлениеТоваровУслуг.ПодразделениеОрганизации,
                          |    ДокументПоступлениеТоваровУслуг.Контрагент,
                          |    ДокументПоступлениеТоваровУслуг.ДоговорКонтрагента,
                          |    ДокументПоступлениеТоваровУслуг.СпособЗачетаАвансов,
                          |    ДокументПоступлениеТоваровУслуг.ВалютаДокумента,
                          |    ДокументПоступлениеТоваровУслуг.НомерВходящегоДокумента,
                          |    ДокументПоступлениеТоваровУслуг.ДатаВходящегоДокумента,
                          |    ДокументПоступлениеТоваровУслуг.Грузоотправитель,
                          |    ДокументПоступлениеТоваровУслуг.Грузополучатель,
                          |    ДокументПоступлениеТоваровУслуг.Ответственный,            
                          //|    ДокументПоступлениеТоваровУслуг.Комментарий,
                          | ВЫРАЗИТЬ
                          | (ДокументПоступлениеТоваровУслуг.Комментарий КАК Строка (500)) КАК Комментарий,
                          
                          |    ДокументПоступлениеТоваровУслуг.СуммаДокумента,
                          |    ДокументПоступлениеТоваровУслуг.ТипЦен,
                          |    ДокументПоступлениеТоваровУслуг.РучнаяКорректировка,
                          |    ДокументПоступлениеТоваровУслуг.Менеджер,
                          |    СостоянияЭД.СостояниеВерсииЭД,
                          |    ВЫБОР
                          |        КОГДА СтатусыДокументов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДокументовПоступления.ОригиналПолучен)
                          |            ТОГДА ИСТИНА
                          |        ИНАЧЕ ЛОЖЬ
                          |    КОНЕЦ КАК Оригинал,
                          |    ВЫБОР
                          |        КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
                          |            ТОГДА ЛОЖЬ
                          |        ИНАЧЕ ИСТИНА
                          |    КОНЕЦ КАК СодержитНекорректныхКонтрагентов,
                          |    НаличиеПрисоединенныхФайлов.ЕстьФайлы,
                          |    ВЫБОР
                          |        КОГДА СчетФактураПолученный.НомерВходящегоДокумента <> """"
                          |            ТОГДА СчетФактураПолученный.НомерВходящегоДокумента
                          |        ИНАЧЕ "" ""
                          |    КОНЕЦ КАК НомерСФ,
                          |    Накладные.ОригиналПолучен КАК ОригиналТН,
                          |    СФ.ОригиналПолучен КАК ОригиналСФ
                          |ИЗ
                          |    Документ.ПоступлениеТоваровУслуг КАК ДокументПоступлениеТоваровУслуг
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДокументов КАК СтатусыДокументов
                          |        ПО ДокументПоступлениеТоваровУслуг.Организация = СтатусыДокументов.Организация
                          |            И ДокументПоступлениеТоваровУслуг.Ссылка = СтатусыДокументов.Документ
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
                          |        ПО (СостоянияЭД.СсылкаНаОбъект = ДокументПоступлениеТоваровУслуг.Ссылка)
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
                          |        ПО ДокументПоступлениеТоваровУслуг.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
                          |            И (&ИспользованиеПроверкиВозможно)
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеПрисоединенныхФайлов КАК НаличиеПрисоединенныхФайлов
                          |        ПО (НаличиеПрисоединенныхФайлов.ОбъектСФайлами = ДокументПоступлениеТоваровУслуг.Ссылка)
                          |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
                          |        ПО ДокументПоступлениеТоваровУслуг.Ссылка = СчетФактураПолученный.ДокументОснование
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОригиналПолучен КАК Накладные
                          |        ПО (ДокументПоступлениеТоваровУслуг.Ссылка = Накладные.Документ
                          |                И Накладные.ТипДокумента = ЗНАЧЕНИЕ(Перечисление.ВидДокумента.ТоварнаяНакаладная))
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОригиналПолучен КАК СФ
                          |        ПО (ДокументПоступлениеТоваровУслуг.Ссылка = СФ.Документ
                          |                И СФ.ТипДокумента = ЗНАЧЕНИЕ(Перечисление.ВидДокумента.СчетФактура))";
                          
КонецПроцедуры
1 Boleev
 
13.10.16
13:56
У вас при левом соединении образуются дубли строк, т.е. в РС присутствует несколько измерений с одним и тем же документом
2 Ugra
 
13.10.16
14:07
я поняла что проблема в левом соединении. Подскажите как можно изменить эту запись?
я думаю проблема вот тут:
  ПО (НаличиеПрисоединенныхФайлов.ОбъектСФайлами = ДокументПоступлениеТоваровУслуг.Ссылка)
3 Irbis
 
13.10.16
14:10
>> я поняла что проблема в левом соединении
Если проблема в левом соединении, то нужно использовать правое. Это же очевидно.
4 Ugra
 
13.10.16
14:25
Получается во всех процедурах этого использовать Правое соединение вместо левого?или только в этом запросе?
5 Irbis
 
13.10.16
14:30
Разумеется нет, только в проблемных запросах. !Сники всегда так делают. потом стоит попробовать внутреннее и полное. Если не поможет надо начинать думать
6 Ugra
 
13.10.16
14:36
при ПОЛНОМ соединении выдает такую же ошибку.
когда меняю ЛЕВОЕ СОЕДИНЕНИЕ на ПРАВОЕ СОЕДИНЕНИЕ  вообще при открытии списка поступлений список пуст