Имя: Пароль:
1C
1С v8
Как организовать отбор в форме выбора документа? УФ.
0 Paul_Nevada
 
24.07.14
16:55
Организовать отбор по реквизиту документа, что бы в форме выбора были только доки с Рекв1 = СсылкаНаЭлементСправочника.
1 Paul_Nevada
 
24.07.14
16:56
СсылкаНаЭлементСправочника есть изначально.
2 Wobland
 
24.07.14
16:59
3 Paul_Nevada
 
24.07.14
17:01
Спасибо!
4 Paul_Nevada
 
24.07.14
17:21
Дык а как процедуру привязать к стандартной кнопке формы - "Добавить"?
5 Paul_Nevada
 
24.07.14
17:22
*процедуру с настройкой отбора
6 Wobland
 
24.07.14
17:23
стандартная кнопка - это та кнопка, которая работает стандартно, не?
7 Paul_Nevada
 
24.07.14
17:26
да - зеленым написано цветом - "Добавить" - имеется сразу при создании формы в конфигураторе
8 arccos6pi
 
24.07.14
17:28
9 Wobland
 
24.07.14
17:30
(7) а ты от неё хочешь нестандаартности
10 Goggy
 
24.07.14
17:32
Всё намного проще на УФ.
Учитесь готовить кошек правильно.

- На форму кидаешь поле ввода(соответственно выстави правильный тип значения реквизита) например Реквизит "ОтборКлиент" с типом СправочникСсылка.Клиенты.
- Устанавливаешь обработчик ПриИзменении:

&НаКлиенте
Процедура ОтборКлиентПриИзменении(Элемент)
    РаботаСФормамиКлиент.ИзменитьЭлементОтбораСписка(Список, "Клиент", ОтборКлиент, ЗначениеЗаполнено(ОтборКлиент));
КонецПроцедуры

Содержимое самого клиентского модуля "РаботаСФормамиКлиент":

// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ДИНАМИЧЕСКИМИ СПИСКАМИ

// Удаляет элемент отбора динамического списка
//
//Параметры:
//Список  - обрабатываемый динамический список,
//ИмяПоля - имя поля компоновки, отбор по которому нужно удалить
//
Процедура УдалитьЭлементОтбораСписка(Список, ИмяПоля) Экспорт
    
    ПолеКомпоновки = Новый ПолеКомпоновкиДанных(ИмяПоля);
    Счетчик = 1;
    Пока Счетчик <= Список.Отбор.Элементы.Количество() Цикл
        ЭлементОтбора = Список.Отбор.Элементы[Счетчик - 1];
        Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных")
            И ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновки Тогда
            Список.Отбор.Элементы.Удалить(ЭлементОтбора);
        Иначе
            Счетчик = Счетчик + 1;
        КонецЕсли;    
    КонецЦикла;
    
КонецПроцедуры // УдалитьЭлементОтбораСписка()

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

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



З.Ы. При желании, отблагодарить разрешаю пивом, территориально МСК :)
11 Paul_Nevada
 
24.07.14
18:03
=)
12 Paul_Nevada
 
24.07.14
18:03
вот так сделал:
Ответ = ОткрытьФормуМодально("Документ.АктВыполненныхРабот.ФормаВыбора", Новый Структура("Отбор", Новый Структура("Плательщик", Объект.Плательщик)));
13 Paul_Nevada
 
24.07.14
18:04
теперь надо бы обработать Ответ... и, не пойму - что в Ответе-то... не могу сейчас обратиться к реквизитам документа, выбранного в форме выбора...
14 Paul_Nevada
 
24.07.14
18:05
Ответ    Акт выполненных работ 000000003 от 22.07.2014 15:55:03    ДокументСсылка.АктВыполненныхРабот
15 Paul_Nevada
 
24.07.14
18:05
Тип = ДокументСсылка.АктВыполненныхРабот
Значение = Акт выполненных работ 000000003 от 22.07.2014 15:55:03
16 Paul_Nevada
 
24.07.14
18:05
а почему не могу обращаться к реквизитам-то?
17 Timon1405
 
24.07.14
18:05
модальность нынче не в моде http://v8.1c.ru/o7/201312ref/index.htm
18 arccos6pi
 
24.07.14
18:07
(16) потому что на клиенте
передавайте на сервер и обращайтесь сколько влезет
19 Paul_Nevada
 
24.07.14
18:19
(18) Спасибо!
Основная теорема систематики: Новые системы плодят новые проблемы.