8.х Отбор информации в 1С 8.3.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем direx53, 17 июл 2017.

  1. TopicStarter Overlay
    direx53
    Offline

    direx53

    Регистрация:
    14 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Добрый день.Есть динамический список(который находится на форме), в котором есть поле Дата(Берется из регистра сведений).Необходимо сделать выборку по дате путем периода.Я сделал это так: Создал два дополнительных реквизита с типом дата, после разместил их на форме, а так же сделал кнопку "Применить период".На данную кнопку я сделал команду, ну а в команду бахнул такой код:

    &НаКлиенте
    Процедура ПрименитьПериод(Команда)

    ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = ДатаНачало;
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = ДатаОкончания;

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


    Т.е.получается, что пользователь выбирает период, после жмет на кнопку, и данные должны отфильтроваться.Подскажите, что я не так делаю, и если есть предложения, как сделать все вот это по другому, готов выслушать их.
  2. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    148
    Симпатии:
    18
    Баллы:
    29
    а зачем все это? в формах с динамическим списком и так, без всякого кода, можно задать отбор по периоду/дате,
    только для удобства пользователя, и то если часто используется, можно/нужно вывести на форму настройку отбора по периоду.
    Программировать ни чего не надо.
  3. TopicStarter Overlay
    direx53
    Offline

    direx53

    Регистрация:
    14 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Была именно такая задача, так как с периодом очень часто люди работают.Можно более подробно рассказать как вывести на форму настройку отбора по периоду
  4. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    148
    Симпатии:
    18
    Баллы:
    29
    вот пример отбора по дате за период в динамическом списке документов,
    настройка производися по кнопке Еще --- настройка списка.
    даты появляются на форме, см. вложенную картику

    Вложения:

  5. TopicStarter Overlay
    direx53
    Offline

    direx53

    Регистрация:
    14 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Так то оно так, просто необходимо было именно, чтобы не использовать кнопку еще, а чтобы пользователь выбирал дату, жал на кнопку и все у него фильтровалось.Я не знаю насколько правильно сделал, но вот посмотри:
    В самой конфигурации я поставил отбор самый минимальный и самый максимальный, ну например, с 1990года и до 2021 года.
    После я подправил код(спасибо за скрин, понял, что необходимо было местами поменять больше и меньше).И вроде все сортируется, есть лишь одна проблема. Если,например поставить изначально дату поиска больше, и потом сокращать к минимуму, например я поставил дату 01.01.2016 и вторую дату 01.02.2017.Если я после поставлю дату 30.02.2016 , то у меня откинется все то, что было в интервале от 01.01.2016 до 30.02.2016.Но если я поставлю дату с 01.01.2016 и 01.03.2017,он мне не показывает все заказы сделанные в периоде с 01.02.2017 по 01.03.2017.Как вот тут быть?
  6. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    148
    Симпатии:
    18
    Баллы:
    29
    ну вы, блин, даете!
    1.приучайте пользователей самостоятельно пользоваться всей мощью интерфейса 1С
    в вашем случае, кнопку Еще надо надавить и настроить работу с периодом всего ОДИН раз!!! потом только даты меняй, на самой форме!
    иначе вы скатитесь к тому что начнете за пользователей делать всю ихнюю работу!

    2.ошибка с отборами у вас следующая, при нажатии кнопки Применить вы каждый раз добавляете новый отбор!
    а старый отбор кто будет чистить? Пушкин?
    а если просто будете чистить, то есть вероятность что и что-то нужное, другое условие отбора, например по контрагенту или по складу удалите.
    а если не чистить, то необходимо искать ранее добавленные условия отбора по дате и менять у них ПравыеЗначения со старого периода на новый
    геморрой тот еще, а оно вам надо?
  7. TopicStarter Overlay
    direx53
    Offline

    direx53

    Регистрация:
    14 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    1.Ну вот тут да, очень хотелось бы)))
    2.Блдаж, точно...
    Короче, все заработало)Спасибо

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