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

Запрос для макета СКД на форму

Автор sali, 25 авг 2025, 08:50

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

sali

Максим75, спасибо вам за ваши старания. но
Цитата: Максим75 от 26 авг 2025, 15:20надо подготовить некий список видов документов (вот какие есть в конфигурации), потом по выбранному виду документа сделать выборку этих документов за период и отобрать по конрагенту?
это не так)....(
вы же знаете как выглядит отбор СКДэшный на форме документа/обработки. и эти фильтры по периоду, документу и контрагенту решили объединить в одно (в виде нашего отбора СКД) чтобы потом сохранить настройки в регистре , чтобы каждый раз не выставлять их.

и как все идет:
форма где все происходит имеет 3 отбора (период, контрагент, документ)
пользователь может выбрать любой из вариантов отбора - выбрать только период, выбрать только документ или выбрать и документ и период
список документов он тоже есть. загрузка и выгрузка в эдо работает с определенными документами как для БП так и для УНФ(Розницы) и это дело тоже в отбор нужно включить. именно включить список документов в отбор параметра Вид Документа исходя от использующейся конфигурации.

Цитата: Максим75 от 26 авг 2025, 15:20потом по выбранному виду документа сделать выборку этих документов за период и отобрать по конрагенту?
это уже если конечно пользователь выбрал и документ и контрагента и период

и что-то мне подсказывает, что нужно возвращаться к старому варианту :bleh:  , где эти параметры отделены друг от друга

sali

просто в значения параметра Вид документа добавить список или массив определенных документовСнимок экрана 2025-08-27 124045.png

sali

по нажатию кнопки открывается отбор
&НаКлиенте
Процедура ЗаполнитьОтборСообщений(Команда)
ВидимостьОтбораВыгрузка = НЕ ВидимостьОтбораВыгрузка;
УстановитьВидимостьОтбораВыгрузка(Элементы, ВидимостьОтбораВыгрузка);
аКТИВИЗАЦИЯоТБОРА();

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

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

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

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

кОНЕЦПроцедуры
 
ошибка : Ошибка отображения типов:
Отсутствует отображение для типа 'ДокументМенеджер.ПеремещениеЗапасов'



sali

поменял код, но отображение не удобное. нужен в виде списка. потому что чтобы удалить вид документа нужно найти милимитровое место , кликнуть и только тогда можно. добавить нельзя Снимок экрана 2025-08-27 162209.pngСнимок экрана 2025-08-27 162217.png 
&НаКлиенте
Процедура ЗаполнитьОтборСообщений(Команда)
ВидимостьОтбораВыгрузка = НЕ ВидимостьОтбораВыгрузка;
УстановитьВидимостьОтбораВыгрузка(Элементы, ВидимостьОтбораВыгрузка);
массивдокументов = аКТИВИЗАЦИЯоТБОРА();
//для каждого строкамассива из массивдокументов.ПравоеЗначение цикл
// ДокументОбъект = КомпоновщикНастроекОтбора.Настройки.
//конеццикла;

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

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

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

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

шаблон макета для отбора
Снимок экрана 2025-08-27 162524.pngСнимок экрана 2025-08-27 162604.pngСнимок экрана 2025-08-27 162613.pngСнимок экрана 2025-08-27 162620.png   

sali

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

и этот 0 использовать как параметр для отбора
&НасЕРВЕРЕ
Процедура аКТИВИЗАЦИЯоТБОРА()
    ДоступныеЭлементыОтбора = КомпоновщикНастроекОтбора.Настройки.Отбор.ДоступныеПоляОтбора.Элементы;
ЭлементыОтбора = ДоступныеЭлементыОтбора.Найти("ВидДокумента");

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

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

Теги:

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

Рейтинг@Mail.ru

Поиск