|
Скорость выполнения БухИт.ВыполнитьЗапрос | ☑ | ||
---|---|---|---|---|
0
Sherpa
15.11.11
✎
08:31
|
1с 7.7 SQL-версия. Конфа: Бухгалтерия (немного дописанная).
Провожу документ начисление зарплаты за июнь - 3 секунды, за июль - 15 минут. Количество документов не изменилось. Полный пересчет итогов делал. Кто-нибудь может подсказать как исправить ситуацию? |
|||
1
Sherpa
15.11.11
✎
08:55
|
ап
|
|||
2
1Сергей
15.11.11
✎
09:01
|
отладчег знает
|
|||
3
Sherpa
15.11.11
✎
09:02
|
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.Опции(1,1); БухИт.ВключатьСубсчета(, -1); БухИт.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников); БухИт.ИспользоватьСубконто(ВидыСубконто.ВидыНачисленийВыплат,СписокВидовНачисленийОблПо13); БухИт.ИспользоватьКорСубконто(); БухИт.ВыполнитьЗапрос(НачГода(ДатаДок), КонецМесяцаДокумента, "70,ДФЛ",,, 2, "Месяц"); зависание на крайней строчке |
|||
4
1Сергей
15.11.11
✎
09:15
|
СписокСотрудников, СписокВидовНачисленийОблПо13 - по сколько строк?
|
|||
5
Sherpa
15.11.11
✎
09:26
|
СписокСотрудников - 1
СписокВидовНачисленийОблПо13 - 3 |
|||
6
1Сергей
15.11.11
✎
09:27
|
(5) и в прошлом месяце так было?
|
|||
7
1Сергей
15.11.11
✎
09:34
|
попробуй так:
Если СписокСотрудников.РазмерСписка()=1 Тогда БухИт.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников.ПолучитьЗначение(1)); Иначе БухИт.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников); КонецЕсли; |
|||
8
Sherpa
15.11.11
✎
09:36
|
нет, в прошлом месяце было 29 сотрудников и 5 видов начислений.
Зависание документов начисления зарплаты, не только в конкретном документе с одним сотрудников, но и во всех последующих (за июль, август...), где список сотрудников так же 29 и видов начислений 5 штук |
|||
9
Sherpa
15.11.11
✎
09:38
|
(7) даже если получится не решит проблему с остальными документами
|
|||
10
Fynjy
15.11.11
✎
09:39
|
Пересчет БИ делали7
|
|||
11
Sherpa
15.11.11
✎
09:42
|
Делал полный пересчет БИ, проверку логической целостности, реиндексацию
|
|||
12
Sherpa
15.11.11
✎
10:19
|
(7) попробовал. не помогло. Любой документ начиная с июля проводится около 15 минут.
|
|||
13
1Сергей
15.11.11
✎
10:47
|
(12) хз тогда. Может, есть сотрудник-группа? Может, есть документы без даты?
|
|||
14
PaulBC
15.11.11
✎
10:51
|
Смотри счет ДФЛ - где-то не закрывается скорей всего
|
|||
15
Sherpa
15.11.11
✎
10:52
|
(13) я полагаю дело в периоде
БухИт.ВыполнитьЗапрос(НачГода(ДатаДок), КонецМесяцаДокумента, "70,ДФЛ",,, 2, "Месяц"); если я ставлю вместо начГода - НачМесяца, то тогда все летает, но это алгоритмически не верно. а в документах начиная с июля получается обрабатывается период больше чем за 6 месяцев и начинаются тормоза... (в каждом месяце 1, 2 документа начисления зарплаты по 25-30 человек или по 1) |
|||
16
Sherpa
15.11.11
✎
10:55
|
(14) за весь год по счету ДФЛ движения всегда только по кредиту. Так не должно быть?
|
|||
17
Sherpa
15.11.11
✎
10:55
|
(13) нет сотрудника группы, все документы с датами.
|
|||
18
Морозов Александр
15.11.11
✎
10:59
|
итоги то по какой месяц рассчитаны?
|
|||
19
1Сергей
15.11.11
✎
11:00
|
(18)в бухне обычно по кварталам
|
|||
20
Морозов Александр
15.11.11
✎
11:03
|
(19) ну.. раз за июнь считается быстро, а за июль медленно (а это уже другой увартал) значит собака точно в итогах порылась.
|
|||
21
zak555
15.11.11
✎
11:06
|
ДФЛ это же забаланс ?!
|
|||
22
Sherpa
15.11.11
✎
11:07
|
итоги рассчитаны по 4 квартал 2011
|
|||
23
Sherpa
15.11.11
✎
11:08
|
(21) ДФЛ - забаланс, с двумя оборотными субконтами (сотрудники и виды начислений)
|
|||
24
zak555
15.11.11
✎
11:09
|
сделай запрос без дфл
проверь скорость |
|||
25
Морозов Александр
15.11.11
✎
11:11
|
а в настройках - вкладка "бухгалтерские итоги" тама че?
|
|||
26
Кириллка
15.11.11
✎
11:18
|
(0)скуль сваливается в тупое сканирование. Начать с того, что обновить статистику.
|
|||
27
DEVIce
15.11.11
✎
11:19
|
ДФЛ должен закрываться при закрытии месяца
|
|||
28
Sherpa
15.11.11
✎
11:20
|
(24) да помогло. спасибо. летает.
|
|||
29
Sherpa
15.11.11
✎
11:20
|
(25) - а это вообще где? не могу найти
|
|||
30
Sherpa
15.11.11
✎
11:20
|
(26) пробовали. не помогло.
|
|||
31
Sherpa
15.11.11
✎
11:21
|
(27) каким образом? счет забалансовый с оборотными субконто
|
|||
32
Морозов Александр
15.11.11
✎
11:22
|
(29) Сервис-Параметры-"Бухгатерские Итоги"
|
|||
33
Кириллка
15.11.11
✎
11:23
|
(30)в (0) об этом ни слова.
|
|||
34
Sherpa
15.11.11
✎
11:24
|
(32) - там стоит квартал. 4 квартал 2011.
|
|||
35
Sherpa
15.11.11
✎
11:24
|
(33) да. немного волнуюсь. впервые вопрос через форум решаю.
|
|||
36
DEVIce
15.11.11
✎
11:25
|
(31). То что забалансовый не значит, что движения по нему могут быть только в одну сторону. 50-ый счет тоже имеет только оборотные субконто, однако остаток по кассе всегда можно узнать.
|
|||
37
DEVIce
15.11.11
✎
11:27
|
Кстати проблемы с ДФЛ как раз и возникают, если не закрывать месяц штатным документом. Сейчас точно ужене помню, но как раз из-за отсутствия закрытия счета ДФЛ были в бухии проблемы с начислением зп.
|
|||
38
Кириллка
15.11.11
✎
11:27
|
(36)здрасьте, остаток по СЧЕТУ 50 можешь получить, а вот в разрезе аналитики - нет.
|
|||
39
Sherpa
15.11.11
✎
11:28
|
думаю вопрос закрыт, всем спасибо за участие.
отдельное спасибо zak555 за решение. для меня осталось загадкой причина проблемы. |
|||
40
Кириллка
15.11.11
✎
11:29
|
(35)а как обновляли статистику?
|
|||
41
DEVIce
15.11.11
✎
11:31
|
(38). Да, в разрезе аналитики не получишь, но если у тебя будут обороты только по одной стороне, то остаток будет только накапливаться. Конкретно в бух и БУП если движения по ДФЛ только с одной стороны, то вылазят проблемы с начислением зп. Т.е. закрытие месяца делает потом обороты по ДФЛ с другой стороны, таким образом закрывая его. Причем многие алгоритмы работают даже не с сотатком а от оборотов одной стороны отнимают обороты другой, что при отсутсвии закрытия тоже приводит к проблемам.
|
|||
42
Sherpa
15.11.11
✎
11:32
|
(40). я похоже вас дважды обманул.
статистику не обновлял. |
|||
43
Кириллка
15.11.11
✎
11:33
|
(42)такие проблемы только у тех, кто начинал свою прог. деятельность на 1с с компоненты ОУ или у альтернативно-одаренных.
|
|||
44
zak555
15.11.11
✎
11:35
|
БухИт.Опции(1,1);
БухИт.ВключатьСубсчета(, -1); заменить на БухИт.ВключатьСубсчета(-1, -1); и вставит в зад счёт дфл |
|||
45
Кириллка
15.11.11
✎
11:52
|
+43 сессно (43) относилост к (41)
(42)ну зря. |
|||
46
DEVIce
15.11.11
✎
11:59
|
(45). Причем тут программисты? Это результат бардака в учете.
|
|||
47
Sherpa
15.11.11
✎
12:00
|
(44) Все вернулось на круги своя - время проведения порядка 15 минут.
|
|||
48
Кириллка
15.11.11
✎
12:06
|
(46)такие проблемы в учете только у тех, кто начинал свою прог. деятельность на 1с с компоненты ОУ или у альтернативно-одаренных.
|
|||
49
DEVIce
15.11.11
✎
12:44
|
(48). Без комментариев.
|
|||
50
zak555
15.11.11
✎
21:52
|
(47) какую инфу ты хочешь со счёта ДФла получить ?
|
|||
51
Sherpa
16.11.11
✎
08:38
|
(50) облагаемый доход с начала года.
БухИт.ВыбратьПериоды(1); Пока БухИт.ПолучитьПериод() = 1 Цикл // по месяцам // Сумма, начисленная за период. НачисленоЗаМесяц = 0; СкидкаЗаМесяц = 0; Если БухИт.ПолучитьСубконто(1,, Сотрудник) = 1 Тогда БухИт.ВыбратьСубконто(2); Пока БухИт.ПолучитьСубконто(2) = 1 Цикл Если БухИт.КонДата=КонецМесяцаДокумента Тогда Если БухИт.ПолучитьСчет(, Сч70) = 1 Тогда НачисленоПоСчету70 = БухИт.КО(); Если БухИт.ПолучитьКорСчет(, Сч00) = 1 Тогда // Исключим из начислений начальные остатки. НачисленоПоСчету70 = НачисленоПоСчету70 - БухИт.КорКО(); КонецЕсли; НачисленоЗаМесяц = НачисленоЗаМесяц + НачисленоПоСчету70; СкидкаЗаМесяц = СкидкаЗаМесяц + ДобавитьСкидкуПоСт217(БухИт.Субконто(2), НачисленоПоСчету70); КонецЕсли; Если БухИтКоррект.ПолучитьСубконто(ВидыСубконто.Сотрудники,, Сотрудник) = 1 Тогда Если БухИтКоррект.ПолучитьСубконто(2,, БухИт.Субконто(2)) = 1 Тогда НачисленоЗаМесяц = НачисленоЗаМесяц + БухИтКоррект.КО(); // доп. доходы в последнем месяце СкидкаЗаМесяц = СкидкаЗаМесяц + ДобавитьСкидкуПоСт217(БухИтКоррект.Субконто(2), БухИтКоррект.КО()); КонецЕсли; КонецЕсли; Иначе Если БухИт.ПолучитьСчет(, СчДФЛ) = 1 Тогда НачисленоЗаМесяц = НачисленоЗаМесяц + БухИт.КО(); СкидкаЗаМесяц = СкидкаЗаМесяц + ДобавитьСкидкуПоСт217(БухИт.Субконто(2), БухИт.КО()); КонецЕсли; КонецЕсли; Если БухИт.ПолучитьСчет(, Сч70) = 1 Тогда Если БухИт.ПолучитьКорСчет(, Сч68_1) = 1 Тогда Если БухИт.ПолучитьКорСубконто(1,, Перечисление.ВидыПлатежейВБюджет.Налог) = 1 Тогда НачисленныйНалогНаДоходы = НачисленныйНалогНаДоходы + БухИт.КорДО(); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; //еще куча кода конеццикла; // по месяцам |
|||
52
zak555
16.11.11
✎
08:42
|
а это что ?
|
|||
53
Sherpa
16.11.11
✎
08:51
|
вообще документ начисления зарплаты не правился. Конфа правилась в совершенно другом разделе, так что по идеи это типовой код и Бухи. Насколько я понимаю начисленный НДФЛ лежит именно на счете ДФЛ. собственно без этого счета НДФЛ рассчитывается неверно.
|
|||
54
zak555
16.11.11
✎
08:53
|
(53) я не помню, какой там типовой код
но код 1с можно переписать на два запроса |
|||
55
Sherpa
16.11.11
✎
08:57
|
(45) обновляю статистику:
EXEC sp_msforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN' пока выполняется. |
|||
56
Sherpa
16.11.11
✎
08:57
|
(54) очень не хотелось, но видимо придется
|
|||
57
zak555
16.11.11
✎
08:58
|
(56) долго что ли ?
|
|||
58
Sherpa
16.11.11
✎
09:05
|
(57) наверно я просто не знаю как быстро, изменить один запрос на два и не менять при этом тело цикла обработки запроса
|
|||
59
zak555
16.11.11
✎
09:07
|
в ТЗ данные по ДФЛ, а потом оперируй с запросом по 70 и ТЗ
|
|||
60
Sherpa
16.11.11
✎
09:10
|
(59). спасибо. так и сделаю.
тем более, что обновление статистики (55) не помогло |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |