Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / 8.2 динамический список кэширование параметров или план запроса / 10 сообщений из 10, страница 1 из 1
05.01.2012, 15:25
    #37603135
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
судя по всему проблема именно в этом
в запрос который "прикурчен" к динамическому списка передается некий параметр который есть массивом неких значений
этот массив может содержать как один элемент так и несколько
так вот проблема в том что если в параметр передается массив с одинаковым количеством элементов с тем который был до этого то похоже отрабатывает старый план запросов (т.е. в сам запрос уходит старый массив)
если же параметр изменяется либо с массива с одним значением на массив с одним значением либо с нескольких на один или с одного на один то все нормально

отладчик говорит что внутри масива всё правильно а вот отработка по старым значениям происходит

элементы массива - перечисления

версии платформы 14.540 и 15.289
...
Рейтинг: 0 / 0
05.01.2012, 16:12
    #37603208
_VVP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
Last1Cmen, а код примерочный выложить можешь?
...
Рейтинг: 0 / 0
05.01.2012, 16:19
    #37603220
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
	Договора.Параметры.УстановитьЗначениеПараметра("ВыбДата",ТекущаяДата());
	

	Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатусПусто",Истина);

		
	спСтатусы = Новый Массив;
	
	Если СокрЛП(ОтборДоговоров) = "" Тогда
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатусВсе",Истина);
		спСтатусы.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыДоговоров.ПустаяСсылка"));
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатус",спСтатусы);
	ИначеЕсли СокрЛП(ОтборДоговоров) = "Актуальные" Тогда
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатусВсе",Ложь);
		спСтатусы.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыДоговоров.Открыт"));
		спСтатусы.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыДоговоров.Подготовка"));
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатус",спСтатусы);
	ИначеЕсли СокрЛП(ОтборДоговоров) = "Не актуальные" Тогда
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатусВсе",Ложь);
		спСтатусы.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыДоговоров.Закрыт"));
		спСтатусы.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыДоговоров.Передан"));
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатус",спСтатусы);
	Иначе
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатусВсе",Ложь);
		спСтатусы.Добавить(ПредопределенноеЗначение(СокрЛП(ОтборДоговоров)));
		Договора.Параметры.УстановитьЗначениеПараметра("ВыбСтатус",спСтатусы);
	КонецЕсли;



так вот когда идет изменение с "Актуальные" на "Не актуальные" и наоборот и когда с любого конкретного значения статуса на "Актуальные" или не "Не актуальные" то отрабатывает через непонятное количество вызовов процедуры с этим кодом

в запросе убычное условие

Код: c#
1.
2.
3.
ГДЕ
	(СостоянияДоговоровСрезПоследних.Статус В (&ВыбСтатус)
			ИЛИ &ВыбСтатусВсе = &ВыбСтатусПусто)



причем что занятно то что в тестовой базе всё нормально а в рабочей (и если её копию снять) то вот такие пироги

базу тестировал платформа одинакова конфигурации тоже :(
...
Рейтинг: 0 / 0
05.01.2012, 16:52
    #37603258
_VVP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
Last1Cmen, странно конечно.
Это на SQL?

Кстати, я бы порекомендовал вместо кода на 1С записать код на языке запросов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ГДЕ
    (&Отбор=""Актуальные"" И СостоянияДоговоровСрезПоследних.Статус В
      (ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Открыт),ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Подготовка)))
    ИЛИ
    (&Отбор=""Не актуальные"" И СостоянияДоговоровСрезПоследних.Статус В
      (ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Закрыт),ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Передан)))
    ИЛИ
    (СостоянияДоговоровСрезПоследних.Статус В (&Отбор))
    ИЛИ
    (&Отбор="""")
...
Рейтинг: 0 / 0
05.01.2012, 16:54
    #37603263
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
_VVP_Last1Cmen, странно конечно.
Это на SQL?

Кстати, я бы порекомендовал вместо кода на 1С записать код на языке запросов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ГДЕ
    (&Отбор=""Актуальные"" И СостоянияДоговоровСрезПоследних.Статус В
      (ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Открыт),ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Подготовка)))
    ИЛИ
    (&Отбор=""Не актуальные"" И СостоянияДоговоровСрезПоследних.Статус В
      (ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Закрыт),ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Передан)))
    ИЛИ
    (СостоянияДоговоровСрезПоследних.Статус В (&Отбор))
    ИЛИ
    (&Отбор="""")



нет файловый режим
можно попробовать напрямую в принципе
...
Рейтинг: 0 / 0
05.01.2012, 17:13
    #37603293
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
ещё и ошибку выдает на """"

Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(30, 14)}: Ожидается выражение ")"
((&Отбор= ""<<?>>Актуальные"" И СостоянияДоговоровСрезПоследних.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Открыт),ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоров.Подготовка)))
...
Рейтинг: 0 / 0
05.01.2012, 17:22
    #37603307
_VVP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
Last1Cmen, понятно - это же редактор запроса в динамическом списке - надо писать <"> а не <"">
...
Рейтинг: 0 / 0
05.01.2012, 17:28
    #37603318
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
по одной двойной понятное дело :)

если прям в тексте то работает

но некрасиво же это... завтра ещё пара статусов добавиться и прийдется бегать по объектам конфы искать :(
...
Рейтинг: 0 / 0
05.01.2012, 17:46
    #37603339
_VVP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
Last1Cmenно некрасиво же это... завтра ещё пара статусов добавиться и прийдется бегать по объектам конфы искать :(Почему же?
И так придется бегать и искать, даже если в коде 1С написали. Ведь вы уже написали ПредопределенноеЗначение("...") - по-любому придется поиск текста по конфигурации использовать.

Если делать по уму, с учетом появления новых статусов, то надо:
1) сделать в менеджере объекта метод, возвращающий текст запроса ваших объектов, и подставлять результат в запрос динамического списка при инициализации;
2) сделать вместо перечисления справочник статусов, в котором будет определяться, какой тип статуса - актуальный или нет.

Если оставлять твой вид секции ГДЕ, то ее лучше написать так:
Код: sql
1.
ГДЕ &ПоказатьВсе ИЛИ СостоянияДоговоровСрезПоследних.Статус В (&Статусы)

Т.е. дать явные названия, без сокращений и упростить логическое выражение.
...
Рейтинг: 0 / 0
19.01.2012, 15:01
    #37622352
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
8.2 динамический список кэширование параметров или план запроса
нет там таки бок какой-то
опять двадцать пять причем релиз не менял
да и вообще с динамическими списками беда у разрабов
скажем вот такое

Известные ошибки версии 8.2.15, планируемые к исправлению в версии 8.2.16
10095830 (SW647618) Отключенный режим динамической выборки в динамическом списке
Проблема:
Если динамический список отображает данные с отключенным режимом динамической выборки, то после изменения настроек (отбора или сортировки) динамического списка и последующего перехода в начало или конец данных, в списке могут отображаться данные, не учитывающие внесённые изменения.
Способ обхода:
Обновить список, используя F5.
Дата публикации:
2012-01-12

не мое но все же
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / 8.2 динамический список кэширование параметров или план запроса / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]