Версия для печати темы (https://pro1c.org.ua/index.php?s=60bc141a1a836d35cc0d3a310410dbe9&showtopic=5406)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Как установить интервал отображения в форме списка документа?

Автор: vbi 17.11.11, 17:03

Есть форма списка документа. в ней есть поле "Список" типа "Динамический список: произвольный запрос" но для него установлена основная таблица (типа документ реализация товаров и услуг).
Если основную таблицу не указывать, то на панели действий списка ничего автоматически не заполняется. Если указывать, то на панели действий списка автоматически заполняются кнопки типа добавить, скопировать документ, установить интервал и т. д.
При нажатии на кнопку установки интервала открывается окно выбора периода:



Вопрос, как программно установить интервал такому списку?
Пробовал

Элементы.Список.Период = СтруктураПараметров.Период;
- не помогает.
Кстате в стандартной установке интервала есть еще такая галочка: "Використовувати цю настройку періоду при відкритті". Вот ее нужно тоже программно устанавливать. Где ее устанавливать, не подскажите?

А такого:
Список.Период

вообще нету

Автор: Ardi 17.11.11, 18:59

Цитата
Вопрос, как программно установить интервал такому списку?

теоретически так:
таблчасть.отбор.дата.ЗначениеС =
таблчасть.отбор.дата.ЗначениеПо =
таблчасть.отбор.дата.ТутаТипОтбора
таблчасть.отбор.дата.использовать = истина;

Автор: vbi 18.11.11, 9:20

Цитата(Ardi @ 17.11.11, 18:59) *
теоретически так:
таблчасть.отбор.дата.ЗначениеС =
таблчасть.отбор.дата.ЗначениеПо =
таблчасть.отбор.дата.ТутаТипОтбора
таблчасть.отбор.дата.использовать = истина;

Согласен, можна так. Для этого в отбор нужно два раза добавить дату и програмно устанавливать. Но ведь стандартная кнопочка работает не через отбор а как то по другому (в отборе дин. списка изначально нет даты). И тогда наверно придется сохранять этот отбор и восстанавливать. А это не хорошо, т. к. "действие" происходит на веб-клиенте. В крайнем случае сделаю так. Но может кто знает как установить интервал отображения без добавления дат?

Автор: vbi 18.11.11, 10:59

Разобрался сам 63000000.gif !
Так не работает:

Элементы.Список.Период = СтруктураПараметров.Период;

а так работает:
ЗаполнитьЗначенияСвойств(Элементы.Список.Период,СтруктураПараметров.Период);

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

Оказывается, что когда мы присваиваем период, он есть ссылкой на объект в памяти, и потому заменяется другим объектом, мы просто заменяем объект периода на другой, вместо того, чтоб устанавливать его атрибуты smile.gif
Отсюда правило: никогда не писать "Период = " даже в сравнении, т. к. сравниватся будут ссылки на объекты а не их значения. Тут уже начинают работать правила ООП smile.gif))

Автор: vbi 18.11.11, 13:50

Но что делать с галочкой "Використовувати цю настройку періоду при відкритті"? Использовать методы УниверсальныеМеханизмы.ПолучитьНастройку() и УниверсальныеМеханизмы.СохранитьНастройку() ? Подругому никак?

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua