Имя: Пароль:
1C
1С v8
Отчет СКД, проверка параметра
0 Gracheva
 
06.05.16
09:15
В скд объединила три таблицы:

ВЫБРАТЬ
    Реестр.Дата,
    Реестр.Документ,
    Реестр.Контрагент,
    Реестр.ТорговыйПредставитель,
    Реестр.ДатаВыдачиАктаТП,
    Реестр.ДатаСдачиАктаТП
ПОМЕСТИТЬ ВТ1
ИЗ
    (ВЫБРАТЬ
        АктСверкиВзаиморасчетов.Дата КАК Дата,
        АктСверкиВзаиморасчетов.Ссылка КАК Документ,
        АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
        АктСверкиВзаиморасчетов.ТорговыйПредставитель КАК ТорговыйПредставитель,
        АктСверкиВзаиморасчетов.ДатаВыдачиАктаТП КАК ДатаВыдачиАктаТП,
        АктСверкиВзаиморасчетов.ДатаСдачиАктаТП КАК ДатаСдачиАктаТП
    ИЗ
        Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        АктСверкиПоОборудованию.Дата,
        АктСверкиПоОборудованию.Ссылка,
        АктСверкиПоОборудованию.Контрагент,
        АктСверкиПоОборудованию.ТорговыйПредставитель,
        АктСверкиПоОборудованию.ДатаВыдачиАктаТП,
        АктСверкиПоОборудованию.ДатаСдачиАктаТП
    ИЗ
        Документ.хАктСверкиПоОборудованию КАК АктСверкиПоОборудованию
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        АктСверкиПоТаре.Дата,
        АктСверкиПоТаре.Ссылка,
        АктСверкиПоТаре.Контрагент,
        АктСверкиПоТаре.ТорговыйПредставитель,
        АктСверкиПоТаре.ДатаВыдачиАктаТП,
        АктСверкиПоТаре.ДатаСдачиАктаТП
    ИЗ
        Документ.хАктСверкиПоТаре КАК АктСверкиПоТаре) КАК Реестр

где Реестр.Документ.Ссылка подобно &ТипДокумента

Тип документа такой:
Акт сверки по таре, Акт сверки по оборудованию и акт сверки взаиморасчетов.

Не работает у меня Подобно. Как тогда мне проверить параметр?
1 PLUT
 
06.05.16
09:20
бесПодобно

используй Ссылка Документ.ХХХ ИЛИ Ссылка Документ.YYY ИЛИ  Ссылка Документ.ЙЙЙ
2 НЕА123
 
06.05.16
09:21
(0)
ПОДОБНО для строк.
ССЫЛКА надо.

интересно, а зачем это условие?
3 Gracheva
 
06.05.16
09:28
(2) Сейчас у меня в отчете отображается список всех актов сверки. А мне нужно, чтоб можно было указать, какой вид акта сверки нужен, такой список актов чтоб и выводился.
4 catena
 
06.05.16
09:29
Выбрать из документов и проверить, что выбраны только выбранные типы?
5 Gracheva
 
06.05.16
09:32
(4) проще говоря, мне нужен некий фильтр по актам сверки.
6 Маратыч
 
06.05.16
09:34
(5) Ответ в (1) :)
7 НЕА123
 
06.05.16
09:34
НЕ (Реестр.Документ Ссылка Документ.АктСверкиВзаиморасчетов)
ИЛИ Реестр.Документ.ВидактаСверки = &НужныйВидАкта

типа так.
ЗЫ
в (0) ну никак нельзя было сказать.
8 Gracheva
 
06.05.16
09:37
Вот так у меня сейчас выводится, все в кучу

http://c2n.me/3xKrfFO
9 Timon1405
 
06.05.16
10:00
Самое простое добавьте поле в запрос
... АктСверкиВзаиморасчетов.Ссылка КАК Документ,
"АктСверкиВзаиморасчетов" КАК ВидДокумента,
и отбирайтесь по нему на здоровье
10 Sabbath
 
06.05.16
10:05
(0) я таки не понял,из нескольких разных документов, а потом фильтруешь по одному

Ссылочный тип сравнивается через оператор ССЫЛКА

Например
ГДЕ
Документ.Ссылка ССЫЛКА ЗНАЧЕНИЕ(Документ.<ТвойТипДокумента>)
11 catena
 
06.05.16
10:09
(8)Все равно не поняла смысл запроса.

Выбрать
из
Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
Документ.хАктСверкиПоОборудованию КАК АктСверкиПоОборудованию
Документ.хАктСверкиПоТаре КАК АктСверкиПоТаре

А потом ограничивать по типу?
12 Sabbath
 
06.05.16
10:12
(8) так ты так и выбираешь все в кучу объединением. Признавайся, зачем выбираешь все, если тебе нужен один тип)

Если тебе нужно то одно, то другое. То сделай параметр, состоящий из списка типов. В нем выбираешь тип. Далее подставляешь его в запрос

Например, у тебя в параметре "Акт сверки по таре". В коде у тебя соответствие значению "АктСверкиПоТаре".

Получаешь переменную ТипДокумента = "АктСверкиПоТаре"

В запрос подставляешь

"... Документ."+ТипДокумента +" КАК ТекДокумент ..."
13 Gracheva
 
06.05.16
10:38
(11) (12) Посоветовали мне объединить таблицы, а потом проверять параметр. От 1с голова уже кругом, до этого запросы писала только на sql.

Я хочу с помощью СКД сделать этот отчет. Делала по-другому, но там надо запрос изменить, сделать вывод всех актов сверки, если контрагент выбран из группы или списка. Не очень представляю, как это сделать....

Ну так вот, мне надо сделать выборку даты, контрагента и тд, если в настройке указан тип акта сверки (то есть параметр для отбора). Пробовала, как написали выше, ничего не получается(
14 PLUT
 
06.05.16
10:53
(10) ашипка

ЗНАЧЕНИЕ - лишнее

(11) ограничивать по типу - это юзабилити конкретного юзверя, который будет мучать отчет - нужна в быстрых отборах возможность устанавливать вид документа или список видов
15 Sabbath
 
06.05.16
11:01
(13) Сделай строковое поле ТипДокумента в каждом подзапросе. И проверяй его на равенство параметру. Для параметра в СКД укажи строковые значения, которые нужны
16 catena
 
06.05.16
11:27
(13)Поняла. Добавь к каждой выборке поле ТипЗначения(Ссылка), в отборах поле само типизируется как надо.
17 Gracheva
 
06.05.16
14:51
(15) а как добавить строковое поле к подзапросу?
18 Gracheva
 
06.05.16
15:01
(16) к типу приводится почему-то только  консоли отчетов.
В рабочей базе всё то же самое делаю, а в итоге в отчете выводится как ссылка.

ВЫБРАТЬ
    Реестр.Дата,
    Реестр.Документ КАК Документ,
    Реестр.Контрагент,
    Реестр.ТорговыйПредставитель,
    Реестр.ДатаВыдачиАктаТП,
    Реестр.ДатаСдачиАктаТП
ПОМЕСТИТЬ ВТ1
ИЗ
    (ВЫБРАТЬ
        АктСверкиВзаиморасчетов.Дата КАК Дата,
        ТИПЗНАЧЕНИЯ(АктСверкиВзаиморасчетов.Ссылка) КАК Документ,
        АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
        АктСверкиВзаиморасчетов.ТорговыйПредставитель КАК ТорговыйПредставитель,
        АктСверкиВзаиморасчетов.ДатаВыдачиАктаТП КАК ДатаВыдачиАктаТП,
        АктСверкиВзаиморасчетов.ДатаСдачиАктаТП КАК ДатаСдачиАктаТП
    ИЗ
        Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
    
    ОБЪЕДИНИТЬ
и т.д.
19 Gracheva
 
06.05.16
19:41
Всем спасибо за помощь, отчет сделала!
В каждом подзапросе прописала так:

ТИПЗНАЧЕНИЯ(АктСверкиВзаиморасчетов.Ссылка) КАК Документ.

В параметрах ТипДокумента указала виды актов в виде массива, а не списка.

При настройки отчета на вкладке "Отбор" отбор делала не по параметру  ТипДокумента, а по полю Документ (это чтобы не было такой ошибки:

Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля "DataParameters.ТипДокумента Равно Акт сверки взаиморасчетов")

         ВЫБРАТЬ
    Реестр.Дата,
    Реестр.Контрагент как Контрагент,
    Реестр.ТорговыйПредставитель,
    Реестр.ДатаВыдачиАктаТП,
    Реестр.ДатаСдачиАктаТП,
    Реестр.Документ
    

    
ПОМЕСТИТЬ ВТ1
ИЗ
    (ВЫБРАТЬ
        АктСверкиВзаиморасчетов.Дата КАК Дата,
        ТИПЗНАЧЕНИЯ(АктСверкиВзаиморасчетов.Ссылка) КАК Документ,
        АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
        АктСверкиВзаиморасчетов.ТорговыйПредставитель КАК ТорговыйПредставитель,
        АктСверкиВзаиморасчетов.ДатаВыдачиАктаТП КАК ДатаВыдачиАктаТП,
        АктСверкиВзаиморасчетов.ДатаСдачиАктаТП КАК ДатаСдачиАктаТП
    ИЗ
        Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        АктСверкиПоОборудованию.Дата,
        ТИПЗНАЧЕНИЯ(АктСверкиПоОборудованию.Ссылка),
        АктСверкиПоОборудованию.Контрагент,
        АктСверкиПоОборудованию.ТорговыйПредставитель,
        АктСверкиПоОборудованию.ДатаВыдачиАктаТП,
        АктСверкиПоОборудованию.ДатаСдачиАктаТП
    ИЗ
        Документ.хАктСверкиПоОборудованию КАК АктСверкиПоОборудованию
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        АктСверкиПоТаре.Дата,
        ТИПЗНАЧЕНИЯ(АктСверкиПоТаре.Ссылка),
        АктСверкиПоТаре.Контрагент,
        АктСверкиПоТаре.ТорговыйПредставитель,
        АктСверкиПоТаре.ДатаВыдачиАктаТП,
        АктСверкиПоТаре.ДатаСдачиАктаТП
    ИЗ
        Документ.хАктСверкиПоТаре КАК АктСверкиПоТаре) КАК Реестр
ГДЕ
    Реестр.Документ = &ТипДокумента