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

СкД на форме документа

Автор sali, 29 авг 2025, 12:18

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

sali

скажите , как на форму добавить отбор скд с 3 параметрами : период , документы , контрагент
у контрагента идет выборка здесь все просто, с остальным не очень.ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагенты
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
НЕ Контрагенты.ПометкаУдаления
И НЕ Контрагенты.ЭтоГруппа
{ГДЕ
Контрагенты.Ссылка.* КАК контрагенты}

для документов нужно программно установить список значений. как эти параметры создать чтобы все нормально работало?

LexaK

так вроде формируете список типо нужных документов,
обходите его в цикле
и формируете такой запрос
выбрать
   Док.Ссылка как документ
из
   Документ.Тип1 как Док
где
   Док.Дата между &дата1 и &дата2
и док.проведен

объединить все


выбрать
   Док.Ссылка как документ
из
   Документ.Тип2 как Док
где
   Док.Дата между &дата1 и &дата2
и док.проведен

объединить все

....
//и добавить сортировку
Упорядочить по 1 автоупорядочивание

 
если помогло нажмите: Спасибо!

sali

LexaK, это понятно. но у меня программа разработана для унф и бп , там как вы знаете документы наименованием различаются. и я думал это зафигачит в список значений для скдэшного параметра отбора , но не получилось потому как неправильно отображался список он был в принципе не рабочий

sali

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

выходит этоСнимок экрана 2025-09-01 120908.pngСнимок экрана 2025-09-01 120925.png 

sali

а нужно такое отображениеСнимок экрана 2025-09-01 123306.pngСнимок экрана 2025-09-01 123315.png 
это то что в запросе ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагенты
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
НЕ Контрагенты.ПометкаУдаления
И НЕ Контрагенты.ЭтоГруппа
{ГДЕ
Контрагенты.Ссылка.* КАК контрагенты}
это сам код списка значений
&НасЕРВЕРЕ
Процедура аКТИВИЗАЦИЯоТБОРА()
   
ДоступныеЭлементыОтбора = КомпоновщикНастроекОтбора.Настройки.Отбор.ДоступныеПоляОтбора.Элементы;
ЭлементыОтбора = ДоступныеЭлементыОтбора.Найти("Контрагенты");   

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

             

ЭлементыОтбора.ДоступныеЗначения = СписокВидовДокумента;

КонецПроцедуры

весь понт в параметре

sali

скажите, как создать параметр для вида документа ?

sali

делаю так ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагенты,
    &ВидДокумента КАК ВидДокумента
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    НЕ Контрагенты.ПометкаУдаления
    И НЕ Контрагенты.ЭтоГруппа
{ГДЕ
    Контрагенты.Ссылка.* КАК контрагенты}

ДоступныеЭлементыОтбора = КомпоновщикНастроекОтбора.Настройки.Отбор.ДоступныеПоляОтбора.Элементы;
ЭлементыОтбора = ДоступныеЭлементыОтбора.Найти("Контрагенты"); 
ЭлементыОтбора_вд = ДоступныеЭлементыОтбора.Найти("ВидДокумента");

Если ЭтоУНФ Тогда 
СписокВидовДокумента = Новый СписокЗначений;   
СписокВыбора = Новый СписокЗначений;

СписокВидовДокумента.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("Розничный покупатель"));
    СписокВидовДокумента.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("Дэмирэквайрер"));

СписокВыбора.Добавить(Тип("ДокументСсылка.РасходнаяНакладная"));
СписокВыбора.Добавить(Тип("ДокументСсылка.ОприходованиеЗапасов"));

//ИначеЕсли ЭтоБП Тогда 
// СписокВидовДокумента = Новый СписокЗначений; 
// СписокВидовДокумента.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("иванв"));
КонецЕсли;

               

ЭлементыОтбора.ДоступныеЗначения = СписокВидовДокумента;
    ЭлементыОтбора_вд.ДоступныеЗначения = СписокВыбора;   
получаю это. почему? Снимок экрана 2025-09-01 130658.png

LexaK

sali, в ЛЮБОЙ базе, через метаданные, программно, получаете типы документов,
пользователь отмечает нужные, и по отмеченным , динамически, программно, формируете текст запроса именно к нужным документам именно в той базе где и работает вала обработка!!!
если помогло нажмите: Спасибо!

sali

LexaK, скажите почему не срабатывает ограничение списка и выходит такая фигня?Снимок экрана 2025-09-04 110258.pngСнимок экрана 2025-09-04 110324.png 

ДобавляемыйДокумент = Новый массив;
ДобавляемыйДокумент.Добавить("РасходнаяНакладная");
ДобавляемыйДокумент.Добавить("ПеремещениеЗапасов");
ДобавляемыйДокумент.Добавить("ОприходованиеЗапасов");
ДобавляемыйДокумент.Добавить("ИнвентаризацияЗапасов");
ДобавляемыйДокумент.Добавить("ОтчетОРозничныхПродажах");
ДобавляемыйДокумент.Добавить("ПриходнаяНакладная");     

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

antoneus

Потому что в конструктор ОписаниеТипов надо передавать массив типов, а не строк.

Теги:

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

Рейтинг@Mail.ru

Поиск