Версия для печати темы (https://pro1c.org.ua/index.php?s=fa6004730ae502c914b42b16598fb9f0&showtopic=46587)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Добавление вычисляемого поля в динамический список

Автор: Andrian 10.07.18, 13:46

Всем привет, есть проблема!
Есть Динамический список "ФормаСпискаДокументов" документа "ЗаказКлиента" и есть еще документ "РеализацияТовароИУслуг" и проблема в том, что не могу вывести запросом поле "Дата" документа "ЗаказКлиента", в котором мне надо подсчитать количество дней числом от документа "РеализацияТовароИУслуг" ДатаРеализации -(минус) ТекущаяДата

Автор: sava1 10.07.18, 14:07

не понятно.
или помедленнее, или попонятнее.

Автор: ed.kharkov 10.07.18, 14:09

Andrian @ Сегодня, 14:46 * ,
Добрый день.

РАЗНОСТЬДАТ(<Дата1>, <Дата2>, ДЕНЬ)

Автор: Andrian 11.07.18, 8:48

ed.kharkov @ Вчера, 15:09 * ,
sava1 @ Вчера, 15:07 * ,
Вчера сделал РАЗНОСТЬДАТ и получилось, но теперь при переходе в режиме Предприятия на вкладку "Заказы Клиентов" выдает ошибку "обнаружено дублирование ключевых значений в колонках: ссылка"
вот код запроса

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДокументЗаказКлиента.Ссылка КАК Ссылка,
    ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления,
    ДокументЗаказКлиента.Номер КАК Номер,
    ДокументЗаказКлиента.Дата КАК Дата,
    ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
    ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
    ДокументЗаказКлиента.Проведен КАК Проведен,
    ДокументЗаказКлиента.Приоритет КАК Приоритет,
    ДокументЗаказКлиента.Партнер КАК Партнер,
    ДокументЗаказКлиента.Контрагент КАК Контрагент,
    ДокументЗаказКлиента.Организация КАК Организация,
    ДокументЗаказКлиента.Соглашение КАК Соглашение,
    ДокументЗаказКлиента.Договор КАК Договор,
    ДокументЗаказКлиента.Сделка КАК Сделка,
    ДокументЗаказКлиента.Валюта КАК Валюта,
    ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
    ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары,
    ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты,
    ДокументЗаказКлиента.ЖелаемаяДатаОтгрузки КАК ЖелаемаяДатаОтгрузки,
    ДокументЗаказКлиента.Склад КАК Склад,
    ДокументЗаказКлиента.Статус КАК Статус,
    ДокументЗаказКлиента.Менеджер КАК Менеджер,
    ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения,
    ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки,
    ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки,
    ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
    ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов,
    ВЫБОР
        КОГДА НЕ ДокументЗаказКлиента.Проведен
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
        ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
    КОНЕЦ КАК Состояние,
    ВЫБОР
        КОГДА НЕ ДокументЗаказКлиента.Проведен
            ТОГДА ЛОЖЬ
        КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
                И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Просрочен,
    ВЫБОР
        КОГДА ДокументЗаказКлиента.Приоритет В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    Приоритеты.Ссылка КАК Приоритет
                ИЗ
                    Справочник.Приоритеты КАК Приоритеты
                УПОРЯДОЧИТЬ ПО
                    Приоритеты.РеквизитДопУпорядочивания)
            ТОГДА 0
        КОГДА ДокументЗаказКлиента.Приоритет В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    Приоритеты.Ссылка КАК Приоритет
                ИЗ
                    Справочник.Приоритеты КАК Приоритеты
                УПОРЯДОЧИТЬ ПО
                    Приоритеты.РеквизитДопУпорядочивания УБЫВ)
            ТОГДА 2
        ИНАЧЕ 1
    КОНЕЦ КАК КартинкаПриоритета,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки,
    ВЫБОР
        КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0
            ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
        ИНАЧЕ 0
    КОНЕЦ КАК НашДолг,
    ВЫБОР
        КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0
            ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
        ИНАЧЕ 0
    КОНЕЦ КАК ДолгКлиента,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная,
    СостоянияЭД.СостояниеВерсииЭД,
    РеализацияТоваровУслуг.Дата КАК ДатаРеализации,
    ВЫРАЗИТЬ(РАЗНОСТЬДАТ(&ТекущаяДата, РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК ЧИСЛО(15, 1)) КАК Просрочка,
    РеализацияТоваровУслуг.ДокументОснование.Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ДокументЗаказКлиента
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
            ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка)
            {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
            ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)}
        ПО РеализацияТоваровУслуг.ЗаказКлиента = ДокументЗаказКлиента.Ссылка
            И РеализацияТоваровУслуг.ДокументОснование = ДокументЗаказКлиента.Ссылка

Автор: sava1 11.07.18, 9:04

Цитата(Andrian @ 11.07.18, 9:48) *
ВЫБРАТЬ РАЗЛИЧНЫЕ ДокументЗаказКлиента.Ссылка КАК Ссылка,


измените на
как Заказ

Автор: Petre 11.07.18, 9:13

Andrian @ Today, 8:48 * ,
Ошибка говорит о том, что в результате вашего соединения у вас несколько строк с одной и той же ссылкой на запись основной таблицы.

Автор: Andrian 11.07.18, 10:06

sava1 @ Сегодня, 10:04 * ,
При изменении начало писать, что дублирование в колонка "Заказ", есть какой нибудь другой вариант?

Автор: ed.kharkov 11.07.18, 10:10

Andrian @ Сегодня, 11:06 * ,
Обратите внимание на соединения в запросе, а именно на соединение с регистром сведений СостоянияЗаказовКлиентов.
Если в этом регистре несколько записей для одно заказа, то это может быть причиной ошибки.

Автор: Andrian 11.07.18, 10:21

ed.kharkov @ Сегодня, 11:10 * ,
Спасибо за наводку

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua