Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 сен 2025, 00:31

ссылка.*

Автор sali, 01 сен 2025, 12:56

0 Пользователей и 1 гость просматривают эту тему.

sali

как в скд выбрать все документы (чтобы были ссылочного типа) , прописать условия что {документы ссылка.*  как ссылка} и где пометка удаление = ложь, а проведение = истина??
типо ??
выбрать
документы.ссылка как ссылка
из
документы как документы
где не документы.пометкаудаления
 и документы.проведен
{где документы.ссылка.* как ссылка}

Максим75

sali, в СКД никак, вот обычным запросом можно.
Ну не понимает скд такого.
и Вам за это было сразу написано еще в первом письме по поводу отборов скд.

потому как вот такое
"из
документы как документы"
не работает

надо типа
"из
документы."+ИмяДокумента+" как документы"
вот ИмяДокумента брать из выбранных значений в списке

sali

Цитата: Максим75 от 01 сен 2025, 13:39документы."+ИмяДокумента+" как документы"
да, такое в модуле писать , думал обойти как то можно . но ладно. можете объяснить почему вот этот код в поле при выборе значений из списка добавляет пустое значение , галочки не ставятся
СписокВыбора = Новый СписокЗначений;
Если ЭтоУНФ Тогда   
СписокВыбора.Добавить(Тип("ДокументСсылка.РасходнаяНакладная"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.СписаниеЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ИнвентаризацияЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ПриходнаяНакладная"));   
ИначеЕсли ЭтоБП Тогда
СписокВыбора.Добавить(Тип("ДокументСсылка.ПеремещениеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.СписаниеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ИнвентаризацияТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг"));
КонецЕсли;
// ПредставлениеВидаДокумента.ТипЗначения = Новый ОписаниеТипов(СписокВыбора);
    ПредставлениеВидаДокумента.ДоступныеЗначения = СписокВыбора;


а этот код и добавляет и удаляет при желании выбранные значения
СписокВыбора = Новый СписокЗначений;
Если ЭтоУНФ Тогда   
СписокВыбора.Добавить(Тип("ДокументСсылка.РасходнаяНакладная"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.СписаниеЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ИнвентаризацияЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ПриходнаяНакладная"));   
ИначеЕсли ЭтоБП Тогда
СписокВыбора.Добавить(Тип("ДокументСсылка.ПеремещениеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.СписаниеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ИнвентаризацияТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг"));
КонецЕсли;
ПредставлениеВидаДокумента.ТипЗначения = Новый ОписаниеТипов(СписокВыбора);
    ПредставлениеВидаДокумента.ДоступныеЗначения = СписокВыбора;


Максим75

sali, видимо из-за этой строчки кода
ПредставлениеВидаДокумента.ТипЗначения = Новый ОписаниеТипов(СписокВыбора);

sali

Максим75, а такой вопрос вот я сделал некий СЗ где пользователь выбрал свои документы и возможно контрагента
СписокВыбора = Новый СписокЗначений;
Если ЭтоУНФ Тогда   
СписокВыбора.Добавить(Тип("ДокументСсылка.РасходнаяНакладная"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.СписаниеЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ИнвентаризацияЗапасов"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ПриходнаяНакладная"));   
ИначеЕсли ЭтоБП Тогда
СписокВыбора.Добавить(Тип("ДокументСсылка.ПеремещениеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.СписаниеТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ИнвентаризацияТоваров"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг"));
КонецЕсли;
ПредставлениеВидаДокумента.ТипЗначения = Новый ОписаниеТипов(СписокВыбора);
    ПредставлениеВидаДокумента.ДоступныеЗначения = СписокВыбора;

ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Тип("СправочникСсылка.Контрагенты"));//Реквизит_Контрагент);
ПредставлениеКонтаргента.ТипЗначения = Новый ОписаниеТипов(ДобавляемыеРеквизиты);

мне теперь нужно эти значения выбранные передать в данный запрос
&НаСервере
Процедура ЗаполнитьДокументыСообщенияНаСервере() Экспорт

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладная.Ссылка КАК Документ
|ИЗ
| Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
|ГДЕ
| ПриходнаяНакладная.Проведен
| И ПриходнаяНакладная.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОтчетОРозничныхПродажах.Ссылка
|ИЗ
| Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
|ГДЕ
| ОтчетОРозничныхПродажах.Проведен
| И ОтчетОРозничныхПродажах.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИнвентаризацияЗапасов.Ссылка
|ИЗ
| Документ.ИнвентаризацияЗапасов КАК ИнвентаризацияЗапасов
|ГДЕ
| НЕ ИнвентаризацияЗапасов.ПометкаУдаления
| И ИнвентаризацияЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СписаниеЗапасов.Ссылка
|ИЗ
| Документ.СписаниеЗапасов КАК СписаниеЗапасов
|ГДЕ
| НЕ СписаниеЗапасов.ПометкаУдаления
| И СписаниеЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОприходованиеЗапасов.Ссылка
|ИЗ
| Документ.ОприходованиеЗапасов КАК ОприходованиеЗапасов
|ГДЕ
| НЕ ОприходованиеЗапасов.ПометкаУдаления
| И ОприходованиеЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РасходнаяНакладная.Ссылка
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| НЕ РасходнаяНакладная.ПометкаУдаления
| И (РасходнаяНакладная.Дата МЕЖДУ &НачалоПериода И &КонецПериода)
| И (РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю)
| ИЛИ РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ВозвратПоставщику))
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПеремещениеЗапасов.Ссылка
|ИЗ
| Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов
|ГДЕ
| ПеремещениеЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И ПеремещениеЗапасов.Проведен";
//|   И РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю)
//|   ИЛИ РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ВозвратПоставщику)";
Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", ?(Период.ДатаОкончания = Дата(1,1,1), Дата(3999,12,31), КонецДня(Период.ДатаОкончания)));
ДокументыСообщения.Загрузить(Запрос.Выполнить().Выгрузить());

ДозаполнитьДокументыСообщенияВыгрузка();
КонецПроцедуры
мне просто для контрагента и документа подставить в документах такое  условие ?
{ГДЕ Какаойтодокумент.ссылка = &выбранному документу, Какаойтодокумент.контрагент = &выбранному контрагенту}

sali

хотя нет..не срабатывает

Максим75

sali, я выше писал как надо.
Какойтодокумент.ссылка - это ссылка на кокретный документ, а не на вид документа.

sali

Максим75, так ссылочный тип и получаю с этого списка, чтоб передать его в параметры выгрузки

sali

Максим75, вы правы, нихрена там не ссылка передается просто в графе Тип элемента написано ТИП , а не ссылка на документ

Максим75

sali, смотрите, Вам по факту в конце надо получить запрос динамически, т.е. в зависимости от количества выбранных видов документов текст запроса будет разным. СКД такое не кушает, только обычным запросом и текст его собирать как пазл.
Вот возьмите и сделайте запрос на один вид документа. посмотрите на его текст. потом через объединение сделайте на два вида документа и тоже посмотрите на его текст. и поймите, каким образом в цикле обойти список выбранных видов документов и скомпоновать из кусочков нужный Вам текст запроса.

Второй вариант: если есть некий регистр, где присутствуют все виды документов, тогда можно и через СКД и там сделать сложное условие на ССЫЛКА (в регистер можно отобрать только по нужному регистратору/регистраторам).

Теги:

Похожие темы (4)

Рейтинг@Mail.ru

Поиск