Прошу помощи, друзья!
Есть документы-заявки, на основании которых создаются документы движения (документы связаны)
Необходимо средствами СКД по каждому документу движения определить связанный документ
ВЫБРАТЬ
КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения.Ссылка КАК ДокСсылка,
КазначействоДвиженияДенежныхСредствОбороты.СуммаОборот,
СвязанныеДокументы.Ссылка
ИЗ
РегистрНакопления.КазначействоДвиженияДенежныхСредств.Обороты КАК КазначействоДвиженияДенежныхСредствОбороты,
КритерийОтбора.СвязанныеДокументы(&СсылкаДок) КАК СвязанныеДокументы
Запрос.УстановитьПараметр("СсылкаДок", ДокСсылка)
(9) Параметр должен быть только в одном наборе.
Попытаюсь догадаться для вашего случая.
Первый набор
ВЫБРАТЬ
КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения КАК ДокументСсылка,
КазначействоДвиженияДенежныхСредствОбороты.СуммаОборот
ИЗ
РегистрНакопления.КазначействоДвиженияДенежныхСредств.Обороты КАК КазначействоДвиженияДенежныхСредствОбороты
Второй набор
ВЫБРАТЬ
&СсылкаДок КАК СсылкаДок
СвязанныеДокументы.Ссылка КАК СвязанныйДокумент
ИЗ
КритерийОтбора.СвязанныеДокументы(&СсылкаДок) КАК СвязанныеДокументы
Выражение источник указываете ДокументСсылка, выражение приемника и параметр СсылкаДок.
При построении отчета не забудьте указать в отборах узкий период или конкретный список документов движения, иначе рискуете ждать результата очень долго.
ВЫБРАТЬ КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения.Ссылка КАК ДокСсылка, КазначействоДвиженияДенежныхСредствОбороты.СуммаОборот, СвязанныеДокументы.Ссылка ИЗ РегистрНакопления.КазначействоДвиженияДенежныхСредств.Обороты КАК КазначействоДвиженияДенежныхСредствОбороты, КритерийОтбора.СвязанныеДокументы(&СсылкаДок) КАК СвязанныеДокументы Запрос.УстановитьПараметр("СсылкаДок", ДокСсылка)
ВЫБРАТЬ
КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения.Ссылка КАК ДокСсылка,
КазначействоДвиженияДенежныхСредствОбороты.СуммаОборот,
СвязанныеДокументы.Ссылка
ИЗ
РегистрНакопления.КазначействоДвиженияДенежныхСредств.Обороты КАК КазначействоДвиженияДенежныхСредствОбороты,
КритерийОтбора.СвязанныеДокументы(&СсылкаДок) КАК СвязанныеДокументы
ГДЕ
КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения.Ссылка = &ДокСсылка
Проблема в том, что в параметрах (СКД) я могу установить только "жесткое" значение - ссылку на конкретный документ
А мне нужно для каждого документа движения в таблице установить конкретное, свое значение параметра.
Как это сделать программно в коде запроса?
Данный запрос выдает пустое значение (так как отбор в коде осуществляется по пустому параметру)
Такой код тоже выдает ошибку:
ВЫБРАТЬ
КазначействоКонтрольБюджета.Регистратор.Ссылка КАК ДокСсылка,
КазначействоКонтрольБюджета.Факт,
СвязанныеДокументы.Ссылка
ИЗ
РегистрНакопления.КазначействоКонтрольБюджета КАК КазначействоКонтрольБюджета,
КритерийОтбора.СвязанныеДокументы( ЗНАЧЕНИЕ( КазначействоКонтрольБюджета.Регистратор.Ссылка ) ) КАК СвязанныеДокументы
По логике, тут надо соединение делать, а не параметры выставлять, но по-моему, вы не так задачу решаете. Скорее всего там связь через реквизит "ДокументОснование" , критерий отбора там участвует, конечно, но мне кажется он в запросе не нужен
Парень запрос твой никогда не взлетит в таком виде...
Критерий отбора содержит весь список полей связанных между собой объектов.
Для начала определи по какому полю(обычно в реквизите содержится основание) документы связаны между собой, и привязывайся исключительно к реквизитам.
Передай внешний набор данных в СКД со списком своих заявок.
Боюсь разочаровать, но знаний у тебя маловато.
Основная цель найти в ДокументДвижения реквизит содержащий заявку. Через консоль ищи, если несколько типов, для каждого ищи
Документы "ДокументДвижения" и Заявка на расходование ден.средств связаны через ссылку ДокументДвижения.ДокументОснование.Ссылка
Самый очевидный способ связать документы через Левое соединение, однако в таком случае почему-то около 20% документов не связываются, хотя в структуре подчиненности документов есть связь (почему так, для меня остается загадкой).
Поэтому, я пошел по другому пути - определить связь через КритерийОтбора.СвязанныеДокументы. Чтобы это сделать, нужно в КритерииОтбора передать параметр - ссылку на документ (при этом, связь работает только в одном направлении от документа-родителя к документу-потомку)
Задать параметр (ссылку на документ-родитель) в СКД можно, как я понимаю, способом, о котором пишет выше Александр Дубровский:
1) в конструкторе СКД мы создаем набор данных1
ВЫБРАТЬ
КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения.Ссылка,
КазначействоДвиженияДенежныхСредствОбороты.СуммаОборот
ИЗ
РегистрНакопления.КазначействоДвиженияДенежныхСредств.Обороты(, , , ДокументДвижения.Ссылка = &СсылкаДок) КАК КазначействоДвиженияДенежныхСредствОбороты
2) И набор данных2
ВЫБРАТЬ
СвязанныеДокументы.Ссылка
ИЗ
КритерийОтбора.СвязанныеДокументы(&СсылкаДок) КАК СвязанныеДокументы
(9) Параметр должен быть только в одном наборе.
Попытаюсь догадаться для вашего случая.
Первый набор
ВЫБРАТЬ
КазначействоДвиженияДенежныхСредствОбороты.ДокументДвижения КАК ДокументСсылка,
КазначействоДвиженияДенежныхСредствОбороты.СуммаОборот
ИЗ
РегистрНакопления.КазначействоДвиженияДенежныхСредств.Обороты КАК КазначействоДвиженияДенежныхСредствОбороты
Второй набор
ВЫБРАТЬ
&СсылкаДок КАК СсылкаДок
СвязанныеДокументы.Ссылка КАК СвязанныйДокумент
ИЗ
КритерийОтбора.СвязанныеДокументы(&СсылкаДок) КАК СвязанныеДокументы
Выражение источник указываете ДокументСсылка, выражение приемника и параметр СсылкаДок.
При построении отчета не забудьте указать в отборах узкий период или конкретный список документов движения, иначе рискуете ждать результата очень долго.