Автор: 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
Разобрался сам !
Так не работает:
Элементы.Список.Период = СтруктураПараметров.Период;
а так работает:
ЗаполнитьЗначенияСвойств(Элементы.Список.Период,СтруктураПараметров.Период);
Ну или так:
Элементы.Список.Период.Вариант = СтруктураПараметров.Период.Вариант;
Элементы.Список.Период.ДатаНачала = СтруктураПараметров.Период.ДатаНачала;
Элементы.Список.Период.ДатаОкончания = СтруктураПараметров.Период.ДатаОкончания;
Оказывается, что когда мы присваиваем период, он есть ссылкой на объект в памяти, и потому заменяется другим объектом, мы просто заменяем объект периода на другой, вместо того, чтоб устанавливать его атрибуты
Отсюда правило: никогда не писать "Период = " даже в сравнении, т. к. сравниватся будут ссылки на объекты а не их значения. Тут уже начинают работать правила ООП
))
Автор: vbi 18.11.11, 13:50
Но что делать с галочкой "Використовувати цю настройку періоду при відкритті"? Использовать методы УниверсальныеМеханизмы.ПолучитьНастройку() и УниверсальныеМеханизмы.СохранитьНастройку() ? Подругому никак?