Имя: Пароль:
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
при ПОЛНОМ соединении выдает такую же ошибку.
когда меняю ЛЕВОЕ СОЕДИНЕНИЕ на ПРАВОЕ СОЕДИНЕНИЕ  вообще при открытии списка поступлений список пуст
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан