7.7 Как реализовать быстрый отбор по дате (не ДатаДок)

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем kulkrise, 25 июн 2016.

  1. TopicStarter Overlay
    kulkrise
    Offline

    kulkrise

    Регистрация:
    5 сен 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Добрый день!

    Есть на одном сайте код по быстрому отбору, статья называется "Отбор по текущему значению в колонке общего журнала документов".
    По поводу отбора если по контрагенту и др. понятно, а как реализовать отбор по реквизитам ДатаПередан и ДатаВозврат (Тип "Дата")?
    При этом эти даты могут быть, как заполненными, так и пустыми, а отбор нужен в обоих случаях.
    Помогите, пожалуйста.

    С уважением,
    kulkrise.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    что мешает добавить в графы отбора конфигурации?
  3. TopicStarter Overlay
    kulkrise
    Offline

    kulkrise

    Регистрация:
    5 сен 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    в типовом отборе графы отбора добавлены и по дате передан и по дате возврат, но в типовом отборе отбирает, только если зайти в отбор, а так как на панели инструментов отбора отсутствует кнопка "Отбор по колонке" (см. на форуме в этом же разделе тема "Отсутствует кнопка "Отбор по колонке"), то соответственно необходимо каждый раз заходить непосредственно в сам отбор, что крайне неудобно.
    Данный же отбор (на основе отбора в ТиС и с Инфостарта) удобен, и отбор по реквизитам типа справочник работает (Справочник.Контрагенты, Справочник. Адреса и др.), а мне по существу еще нужен отбор по дате передан и дате возврат.
    напр., в коде отбора Значение Плательщик
    Код:
    //******************************************************************************
    
    Процедура ПриВыбореПлательщика() 
        Если ПлательщикДляОтбора.Выбран() > 0 Тогда
            УстановитьОтбор("Плательщик", ПлательщикДляОтбора);
            ПлательщикДляОтбора = ПлательщикДляОтбора.ТекущийЭлемент();
        Иначе
            УстановитьОтбор("");
        КонецЕсли;
    КонецПроцедуры // ПриВыбореПлательщика()
    
    Процедура ПриУстановкеБыстрогоОтбора()
    ...
        Если ОтборПо = "по плательщику" Тогда  
                ПриВыбореПлательщика();
                ЗначениеВВидеСтроки = Строка(ПлательщикДляОтбора);
    ...
    КонецПроцедуры // ПриУстановкеБыстрогоОтбора()
    
    Процедура ПоКнопкеЗначение()  
    ...
        Если ОтборПо = "по плательщику" Тогда
            СтароеЗначение = ПлательщикДляОтбора;
            ВыбЗначение = СоздатьОбъект("Справочник.Контрагенты");
            //позиционируем начало
            Если ПустоеЗначение(СтароеЗначение)=0 Тогда
                ВыбЗначение.НайтиЭлемент(СтароеЗначение);
            КонецЕсли;
            //конец
            Если ВыбЗначение.Выбрать("Выбор плательщика","Форма списка") = 1 Тогда
                ПлательщикДляОтбора = ВыбЗначение;
                Если ВыбЗначение <> СтароеЗначение Тогда
                    ЗначениеИзменилось = 1;    
                КонецЕсли;   
            КонецЕсли;   
    ...
    КонецПроцедуры // ПоКнопкеЗначение()
    заменяю на ДатаПередан
    Код:
    //******************************************************************************
    
    Процедура ПриВыбореДатаПередан()
        Если ДатаПереданДляОтбора = 1 Тогда
            УстановитьОтбор("ДатаПередан", ДатаПереданДляОтбора);
            ДатаПереданДляОтбора = ДатаПереданДляОтбора.ТекущийЭлемент();
        Иначе
            УстановитьОтбор("");
        КонецЕсли;
    КонецПроцедуры // ПриВыбореДатаПередан()
    
    Процедура ПриУстановкеБыстрогоОтбора()
    ...
        ИначеЕсли ОтборПо = "по дате (передан)" Тогда  
            ПриВыбореДатаПередан();
            ЗначениеВВидеСтроки = Дата(ДатаПереданДляОтбора);
    ...
    КонецПроцедуры // ПриУстановкеБыстрогоОтбора()
    
    Процедура ПоКнопкеЗначение()  
    ...
        ИначеЕсли ОтборПо = "по дате (передан)" Тогда
            СтароеЗначение = ДатаПереданДляОтбора;
            ВыбЗначение = ТекущДок.ДатаПередан;
            ДатаПереданДляОтбора = ВыбЗначение;
            Если ВыбЗначение <> СтароеЗначение Тогда
                ЗначениеИзменилось = 1;    
            КонецЕсли;   
    ...
    КонецПроцедуры // ПоКнопкеЗначение()
    Не работает, только не могу понять как правильно, и ВыбЗначение.Выбрать не может же быть для даты, я ведь ее не из справочника выбираю
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    а графу отбора вы в конфигураторе типизировали ка дату?
  5. TopicStarter Overlay
    kulkrise
    Offline

    kulkrise

    Регистрация:
    5 сен 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    ТипЗначенийОтбора_Дата.JPG
    Да, и вопрос в том, что я не очень понимаю в коде кто есть кто и кто куда передается, т.е.
    Код:
        Если ДатаПереданДляОтбора = 1 Тогда // - здесь явно и косячу, как-то иначе д.б. прописано, т.е. причем здесь то что я перем. приравниваю единице?
    УстановитьОтбор("ДатаПередан", ДатаПереданДляОтбора); // - здесь имя отбора я присваиваю любое, а знач.отбора получаю из след. строки, так? (в первую очередь смотрю в СП)))
    ДатаПереданДляОтбора = ДатаПереданДляОтбора.ТекущийЭлемент(); // эта след.строка
    ***
    ЗначениеВВидеСтроки = Дата(ДатаПереданДляОтбора); // - правильно ведь что я заменяю Строка() на Дата(), или как раз оно и д.б. приравнено к строковому типу?
    ***
    ВыбЗначение = ТекущДок.ДатаПередан; // - тоже бред какой-то
    ДатаПереданДляОтбора = ВыбЗначение; // - оно же
    ***
    Если ВыбЗначение.Выбрать("Выбор плательщика","Форма списка") = 1 Тогда // в подборе плательщик (открывается форма подбора и т.д.), а как д.б. с датой?
    

Поделиться этой страницей