|
v7: Тормозит справочник в ЗиК | ☑ | ||
---|---|---|---|---|
0
matizov
31.10.12
✎
11:44
|
Здравствуйте!
С недавних пор начал тормозить справочник "сотрудники" в 1С ЗиК 7.7. Базы с 2008 года. SQL. С чем это может быть связано? |
|||
1
Ёпрст
31.10.12
✎
11:45
|
с периодикой
|
|||
2
matizov
31.10.12
✎
11:46
|
с какой периодикой?
|
|||
3
Ёпрст
31.10.12
✎
11:47
|
которая отображается в форме списка справочника.
|
|||
4
matizov
31.10.12
✎
11:48
|
и как это исправить?
|
|||
5
Ёпрст
31.10.12
✎
11:49
|
убери колонку состояние, заместо неё - текст на форму с формулой Состояние, чтоб показ был только у текущего сотрудника.
Будет летать |
|||
6
Ёпрст
31.10.12
✎
11:50
|
ну или, кешируй периодику перед открытием формы списка справочника..
|
|||
7
matizov
31.10.12
✎
11:57
|
ок. попробую.
|
|||
8
matizov
31.10.12
✎
12:17
|
может скажешь где найти информацию про кэширование?
|
|||
9
Ёпрст
31.10.12
✎
12:20
|
А че там знать то ?
Скидываешь в табличку все значения, потом в формуле списка справочника читаешь с этой таблички. |
|||
10
Gucci76
31.10.12
✎
12:53
|
А еще лучше в ДБФ формат переводи базу и терминальный режим.
Плюс парочку манипуляций в конфигураторе и ваще все будет летать (раз в 10 быстрее, чем сейчас) )))) |
|||
11
matizov
31.10.12
✎
13:20
|
Кэширование не помогло. на DBF работает хорошо, а на SQL нет. так же тормозит.
|
|||
12
Ёпрст
31.10.12
✎
13:24
|
(11) высчисляемые колонки то выкинул с формы списка справочника ?
|
|||
13
matizov
31.10.12
✎
13:45
|
Я в эту функцию закинул кэширование. а состояние сотрудника и так идет как текст с формулой.
|
|||
14
Bizon2005
31.10.12
✎
13:47
|
||||
15
Ёпрст
31.10.12
✎
13:48
|
(13) покажи код тогда, что сделал
|
|||
16
Ёпрст
31.10.12
✎
13:48
|
(14) выкинь регистрацию со своего сайта - люди мот и потянутся
|
|||
17
matizov
31.10.12
✎
13:50
|
//+маер
стр = 0; Если глКэшПечатныхФорм.НайтиЗначение(ТекущийЭлемент(),стр,"Сотрудник") = 1 Тогда Для Ном = 1 По глКэшПечатныхФорм.КоличествоСтрок() Цикл глКэшПечатныхФорм.ПолучитьСтрокуПоНомеру(Ном); Если (ТекущийЭлемент() = глКэшПечатныхФорм.Сотрудник) Тогда Значение = глКэшПечатныхФорм.СостояниеФизлица; Возврат Значение; КонецЕсли; КонецЦикла; Иначе //-маер Если (ПустоеЗначение(ТекущийЭлемент())=1)или(ЭтоГруппа()=1) Тогда Возврат "" КонецЕсли; ДатаПриема = Дата(0); ДатаУвольнения = Дата(0); ДатаАктуальности = ИспользоватьДату(); Периодический.ИспользоватьОбъект("СостояниеФизлица",ТекущийЭлемент()); СостояниеФЗ = Периодический.ЗначениеНаДату(ДатаАктуальности); Если ПустоеЗначение(СостояниеФЗ)=0 Тогда Если Периодический.НайтиЗначение(ДатаАктуальности,-1)=1 Тогда ДатаПриема = Периодический.ДатаЗнач КонецЕсли; Если Периодический.НайтиЗначение(ДатаАктуальности+1,1)=1 Тогда ДатаУвольнения = Периодический.ДатаЗнач-1 КонецЕсли; Если ТекущийЭлемент().ОсновнойЭлемент<>ТекущийЭлемент() Тогда ОписаниеСостояния = "Внутреннее совместительство"; Если СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботает Тогда ОписаниеСостояния = "Внутреннее совмест-во, временно не работает"; ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботаетВоеннослужащий Тогда ОписаниеСостояния = "Внутреннее совмест-во, военнослужащий, временно не работает"; КонецЕсли; ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.СотрудникОсновной Тогда ОписаниеСостояния = "Штатный сотрудник"; ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.СотрудникНеосновной Тогда ОписаниеСостояния = "Внешний совместитель"; ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.Госслужащий Тогда Если Константа.ЕстьМуниципальныеСлужащие = 1 Тогда ОписаниеСостояния = "Муниципальный служащий"; Иначе ОписаниеСостояния = "Государственный служащий"; КонецЕсли; ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботает Тогда ОписаниеСостояния = "Временно не работает"; ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботаетВоеннослужащий Тогда ОписаниеСостояния = "Военнослужащий временно не работает"; Иначе ОписаниеСостояния = "Военнослужащий"; КонецЕсли; //+маер //Возврат ОписаниеСостояния+" с "+ДатаПриема+?(ПустоеЗначение(ДатаУвольнения)=1,""," по "+ДатаУвольнения) Значение = ОписаниеСостояния+" с "+ДатаПриема+?(ПустоеЗначение(ДатаУвольнения)=1,""," по "+ДатаУвольнения); глКэшПечатныхФорм.НоваяСтрока(); глКэшПечатныхФорм.Сотрудник = ТекущийЭлемент(); глКэшПечатныхФорм.СостояниеФизлица = Значение; Возврат Значение; //-маер Иначе Периодический.ОбратныйПорядок(); Периодический.ВыбратьЗначения(,ДатаАктуальности); Пока Периодический.ПолучитьЗначение()=1 Цикл Если ПустоеЗначение(Периодический.Значение)=1 Тогда //+маер Если глВидРасчетаДействует(ОсновнойЭлемент,,ДатаАктуальности,ДатаАктуальности)=1 Тогда Значение = "Физическое лицо, получающее доход на предприятии (договорник)"; глКэшПечатныхФорм.НоваяСтрока(); глКэшПечатныхФорм.Сотрудник = ТекущийЭлемент(); глКэшПечатныхФорм.СостояниеФизлица = Значение; Возврат Значение; Иначе Значение = "Сотрудник уволен "+(Периодический.ДатаЗнач-1); глКэшПечатныхФорм.НоваяСтрока(); глКэшПечатныхФорм.Сотрудник = ТекущийЭлемент(); глКэшПечатныхФорм.СостояниеФизлица = Значение; Возврат Значение; КонецЕсли; //Возврат "Сотрудник уволен "+(Периодический.ДатаЗнач-1) //-маер КонецЕсли; КонецЦикла; КонецЕсли; Если ОсновнойЭлемент=ТекущийЭлемент() Тогда Если глВидРасчетаДействует(ОсновнойЭлемент,,ДатаАктуальности,ДатаАктуальности)=1 Тогда //+маер Значение = "Физическое лицо, получающее доход на предприятии (договорник)"; глКэшПечатныхФорм.НоваяСтрока(); глКэшПечатныхФорм.Сотрудник = ТекущийЭлемент(); глКэшПечатныхФорм.СостояниеФизлица = Значение; Возврат Значение; //-маер Иначе //+маер Значение = "Физическое лицо"; глКэшПечатныхФорм.НоваяСтрока(); глКэшПечатныхФорм.Сотрудник = ТекущийЭлемент(); глКэшПечатныхФорм.СостояниеФизлица = Значение; Возврат Значение; //-маер КонецЕсли; Иначе //+маер Значение = "Не принят на внутреннее совместительство"; глКэшПечатныхФорм.НоваяСтрока(); глКэшПечатныхФорм.Сотрудник = ТекущийЭлемент(); глКэшПечатныхФорм.СостояниеФизлица = Значение; Возврат Значение; //-маер КонецЕсли; КонецЕсли; //-маер |
|||
18
matizov
31.10.12
✎
13:51
|
глКэшПечатныхФорм = СоздатьОбъект("ТаблицаЗначений");
глКэшПечатныхФорм.НоваяКолонка("Сотрудник","Справочник.Сотрудники"); глКэшПечатныхФорм.НоваяКолонка("СостояниеФизлица","Строка"); |
|||
19
matizov
31.10.12
✎
13:51
|
Перем глКэшПечатныхФорм; //маер
|
|||
20
Ёпрст
31.10.12
✎
13:53
|
(17) Это же полный п..ц
|
|||
21
matizov
31.10.12
✎
13:54
|
почему?
|
|||
22
Ёпрст
31.10.12
✎
13:57
|
(21)
А не видно разве ? стр = 0; Если глКэшПечатныхФорм.НайтиЗначение(ТекущийЭлемент(),стр,"Сотрудник") = 1 Тогда Возврат глКэшПечатныхФорм.ПолучитьЗначение(стр,"СостояниеФизлица"); Иначе |
|||
23
Ёпрст
31.10.12
✎
13:57
|
стр = 0;
Если глКэшПечатныхФорм.НайтиЗначение(ТекущийЭлемент(),стр,"Сотрудник") = 1 Тогда Возврат глКэшПечатныхФорм.ПолучитьЗначение(стр,"СостояниеФизлица"); КонецЕсли; |
|||
24
matizov
31.10.12
✎
13:59
|
http://infostart.ru/public/64424/
Взял отсюда. |
|||
25
Ёпрст
31.10.12
✎
14:03
|
(24) чего ты оттуда взял ?
%)) |
|||
26
Gucci76
31.10.12
✎
14:04
|
Лучше через список значение
|
|||
27
matizov
31.10.12
✎
14:05
|
Если глКэшПечатныхФорм.НайтиЗначение(ВидОбъекта,стр,"ВидДокумента") = 1 Тогда
Для Ном = 1 По глКэшПечатныхФорм.КоличествоСтрок() Цикл глКэшПечатныхФорм.ПолучитьСтрокуПоНомеру(Ном); Если (ВидОбъекта = глКэшПечатныхФорм.ВидДокумента) И (глКэшПечатныхФорм.Название <> "") Тогда ТаблицаПечФорм.НоваяСтрока(); ТаблицаПечФорм.Название = глКэшПечатныхФорм.Название; ТаблицаПечФорм.Кнопка = глКэшПечатныхФорм.Кнопка; ТаблицаПечФорм.Файл = глКэшПечатныхФорм.Файл; ТаблицаПечФорм.ФайлОписания = глКэшПечатныхФорм.ФайлОписания; КонецЕсли; КонецЦикла; Иначе |
|||
28
Ёпрст
31.10.12
✎
14:08
|
(27) да уж..
|
|||
29
matizov
31.10.12
✎
14:09
|
смысл остается тот же. попробую сейчас снова.
|
|||
30
Ёпрст
31.10.12
✎
14:10
|
(29) см. (23).
И не бери гамно код откуда не поподя. |
|||
31
dedmoroz777
31.10.12
✎
14:12
|
(29) смысл в том, что в глобальнике в ПриНачалеРаботыСистемы, заполнять таблицу значений данными. В форме справочника доставать из этой таблицы путём (23)
|
|||
32
IvaneS
31.10.12
✎
16:06
|
А если поменяет рабочую дату, то нужно пересмотреть весь кеш... :) Сколько сотров то в базе?
|
|||
33
IvaneS
31.10.12
✎
16:09
|
Наверно юзают базу через локалку, а там изменилась пропускная способность. (Вариант?)
|
|||
34
Bizon2005
01.11.12
✎
12:04
|
похожая тема, напиши если разобрался
http://ask.8c1.ru/questions/31/тормозит-справочник-сотрудников-в-зик |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |