Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Aug 10 17:53
    EvilBeaver commented #3
  • Aug 10 17:34

    EvilBeaver on v2-adaptation

    Проект конвертирован под Core (compare)

  • Aug 10 16:09

    EvilBeaver on master

    Добавлена опция распаковки несж… Merge pull request #14 from osc… bump 1.0.5 and 1 more (compare)

  • Aug 09 12:21
    militarymax commented #3
  • Aug 09 12:19
    EvilBeaver commented #3
  • Aug 09 11:57
    militarymax opened #3
  • Aug 04 10:52
    asosnoviy synchronize #290
  • Jul 20 11:09
    ivankexko closed #52
  • Jul 20 11:09
    ivankexko commented #52
  • Jul 20 02:14
    ivankexko opened #52
  • Jul 11 10:58

    EvilBeaver on master

    Исправил неточности (compare)

  • Jul 11 09:36

    EvilBeaver on master

    Добавлены примеры конфигурирова… (compare)

  • Jul 04 13:49

    nixel2007 on 3.5.2

    (compare)

  • Jul 04 13:49
    nixel2007 closed #295
  • Jul 04 13:49

    nixel2007 on master

    Update packagedef Update build_packagedef Update ПараметрыСистемы.os and 1 more (compare)

  • Jul 04 13:49
    nixel2007 opened #295
  • Jul 04 13:48

    nixel2007 on develop

    Update ПараметрыСистемы.os (compare)

  • Jul 04 13:48

    nixel2007 on develop

    Update build_packagedef (compare)

  • Jul 04 13:48

    nixel2007 on develop

    Update packagedef (compare)

  • Jul 04 12:54

    nixel2007 on 3.5.1

    (compare)

Kirill Krasnov
@Kirill
При том, что я формирую ТОЛЬКО по одному счету (62) без субсчетов, без аналитики, без фильтров только по БУ.
Во. В компоновщике отчет уменьшился до правильного
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОстаткиИОбороты.Счет КАК Счет,
    ОстаткиИОбороты.Организация КАК Организация,
    ОстаткиИОбороты.СуммаНачальныйОстатокДт КАК БУНачальныйОстатокДт,
    ОстаткиИОбороты.СуммаНачальныйОстатокКт КАК БУНачальныйОстатокКт,
    ОстаткиИОбороты.СуммаОборотДт КАК БУОборотДт,
    ОстаткиИОбороты.СуммаОборотКт КАК БУОборотКт,
    ОстаткиИОбороты.СуммаКонечныйОстатокДт КАК БУКонечныйОстатокДт,
    ОстаткиИОбороты.СуммаКонечныйОстатокКт КАК БУКонечныйОстатокКт,
    ПРЕДСТАВЛЕНИЕССЫЛКИ(ОстаткиИОбороты.Счет) КАК СчетПредставление,
    ОстаткиИОбороты.Счет.Вид КАК СчетВид,
    ОстаткиИОбороты.Счет.НалоговыйУчет КАК СчетНалоговыйУчет,
    ОстаткиИОбороты.Счет.Порядок КАК СчетПорядок
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&П2, &П, Период, , Счет В ИЕРАРХИИ (&Счет), , Организация = &П3) КАК ОстаткиИОбороты
ГДЕ
    ОстаткиИОбороты.Организация = &П3
Pavel Khodakov
@Berckk
@Kirill Если еще актуально. Нужен план запроса текстом весь или скрин той части где "cost" наибольшая. Предполагаю, что не обновлена статистика . Выполни последовательно DBCC UPDATEUSAGE (БазаБухгалтерии) WITH NO_INFOMSGS; use БазаБухгалтерии exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
Kirill Krasnov
@Kirill
@Berckk еще как актуально... Уже две недели бьюсь с этим. Статистику обновлял дважды вот этим скриптом https://infostart.ru/public/61071/
image.png
Вот это DBCC UPDATEUSAGE ([exp-test-3]) WITH NO_INFOMSGS; еще не пробовал.
Kirill Krasnov
@Kirill
UPDATEUSAGE выполнилось, но скорость формирования отчета не изменилась. Пытался сравнить планы запроса и сам запрос сравнить в другой копии, но он формируется за 1 секунду, что даже не появляется в Active Monitor. Только если профайлером его ловить
Kirill Krasnov
@Kirill
Профайлером отловил нормальный запрос
SELECT
T1.AccountRRef,
T1.Fld489RRef,
T1.Fld492InitialBalanceDt_,
T1.Fld492InitialBalanceCt_,
T1.Fld492TurnoverDt_,
T1.Fld492TurnoverCt_,
T1.Fld492FinalBalanceDt_,
T1.Fld492FinalBalanceCt_,
T1.AccountRRef,
T4._Code,
T4._Kind,
T4._Fld480,
T4._OrderField
FROM (SELECT
T2._AccountRRef AS AccountRRef,
T2._Fld489RRef AS Fld489RRef,
CASE WHEN CAST(SUM(T2._TurnoverDt502) AS NUMERIC(27, 2)) IS NULL THEN 0.0 ELSE CAST(SUM(T2._TurnoverDt502) AS NUMERIC(27, 2)) END AS Fld492TurnoverDt_,
CASE WHEN CAST(SUM(T2._TurnoverCt503) AS NUMERIC(27, 2)) IS NULL THEN 0.0 ELSE CAST(SUM(T2._TurnoverCt503) AS NUMERIC(27, 2)) END AS Fld492TurnoverCt_,
CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) > 0.0 THEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) ELSE 0.0 END AS Fld492InitialBalanceDt_,
CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 1.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) < 0.0 THEN -(CAST(SUM(T2._Fld492) AS NUMERIC(27, 2))) ELSE 0.0 END AS Fld492InitialBalanceCt_,
CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2)) > 0.0 THEN CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2)) ELSE 0.0 END AS Fld492FinalBalanceDt_,
CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 1.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2)) < 0.0 THEN -(CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2))) ELSE 0.0 END AS Fld492FinalBalanceCt_,
MAX(T3._Kind) AS AccKind_
FROM dbo._AccRgAT0501 T2 WITH(NOLOCK)
INNER JOIN dbo._Acc19 T3 WITH(NOLOCK)
ON T3._IDRRef = T2._AccountRRef
WHERE T2._Period = @P1 AND (((T2._AccountRRef IN (@P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10)))) AND ((T2._Fld489RRef = @P11)) AND (T2._Fld492 <> @P12 OR T2._TurnoverDt502 <> @P13 OR T2._TurnoverCt503 <> @P14 OR T2._Turnover504 <> @P15)
GROUP BY T2._AccountRRef,
T2._Fld489RRef
HAVING (CASE WHEN CAST(SUM(T2._TurnoverDt502) AS NUMERIC(27, 2)) IS NULL THEN 0.0 ELSE CAST(SUM(T2._TurnoverDt502) AS NUMERIC(27, 2)) END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._TurnoverCt503) AS NUMERIC(27, 2)) IS NULL THEN 0.0 ELSE CAST(SUM(T2._TurnoverCt503) AS NUMERIC(27, 2)) END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) > 0.0 THEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 1.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) < 0.0 THEN -(CAST(SUM(T2._Fld492) AS NUMERIC(27, 2))) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2)) > 0.0 THEN CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld492) AS NUMERIC(27, 2)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 1.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2)) < 0.0 THEN -(CAST(SUM(T2._Fld492 + T2._Turnover504) AS NUMERIC(28, 2))) ELSE 0.0 END) <> 0.0) T1
LEFT OUTER JOIN dbo._Acc19 T4 WITH(NOLOCK)
ON T1.AccountRRef = T4._IDRRef
WHERE (T1.Fld489RRef = @P16)',N'@P1 datetime2(3),@P2 varbinary(16),@P3 varbinary(16),@P4 varbinary(16),@P5 varbinary(16),@P6 varbinary(16),@P7 varbinary(16),@P8 varbinary(16),@P9 varbinary(16),@P10 varbinary(16),@P11 varbinary(16),@P12 numeric(10),@P13 numeric(10),@P14 numeric(10),@P15 numeric(10),@P16 varbinary(16)','4011-04-01 00:00:00
гораздо компактнее и понятнее, не то, что в "кривой" копии
Andrei Ovsiankin
@EvilBeaver
Clustered Index Seek со стоимостью 48%
На инфостарте новая разработка по анализу плана запросов. Сам не пользовался, но консультировал автора
Советую взглянуть
Clustered Index Seek со стоимостью 48% - это скорее все большая выборка с отбором по дате в регистре AccRg488. По сути, это Table Scan с выбором дофига записей. Пересчет статистики не поможет
Kirill Krasnov
@Kirill
Там для УФ. А у меня БП2.0
Andrei Ovsiankin
@EvilBeaver
Ну а кто мешает запустить БП 2 в режиме УФ на короткое время?
Kirill Krasnov
@Kirill
Это могу... Понял.. Надо пробовать.
Andrei Ovsiankin
@EvilBeaver
Попробуйте и пришлите, пожалуйста отзывы или скриншоты от этого инструмента. Я держу связь с автором
А итоги точно пересчитаны?

на другой копии и рабочей базе этот же отчет за любой период формируется быстро.

Что-то мне кажется, что беда именно в этом. Копии - это точно копии? Кажется, что они разные

По окружению исполнения
Может вам базу вынесли на мега тормозной диск?
Kirill Krasnov
@Kirill
Не.. Диск быстрый и для чистоты эксперимента перенесли базу (вернее транзакционный лог) на тот же диск что и все остальные файлы.
Одна копия без свертки остатков, вторая со сверткой
Что-то мне кажется сбились какие-то данные, из-за которых теперь 1С некорректно строит SQL запрос
Pavel Khodakov
@Berckk
Я тоже так думаю. В компановщике запросы одинаковые, а в sql уже разные.
Стоит посмотреть что за таблица AccRg488
Kirill Krasnov
@Kirill
РБ. Хозрасчетный
Pavel Khodakov
@Berckk
А в _AccRgAT0501 данные за 2011 есть?
Kirill Krasnov
@Kirill
Хм... судя запросу
SELECT count(*) FROM [exp-test-3].[dbo].[_AccRgAT0501] where _Period < 5999-11-01
нет.
Pavel Khodakov
@Berckk
https://infostart.ru/public/197658/ тут про таблицы итогов, стоит все проверить
Kirill Krasnov
@Kirill
Спасибо за ссылку.. Сейчас проверю с консолью от Андрея, потом попробую сделать как в этой ссылке.. Как минимум вижу, что я не все таблицы очищал - только остатки.
Kirill Krasnov
@Kirill
С помощью консоли отчетов получил сам запрос и параметры запроса, но как мне кажется запрос в SQL явно избыточен
Pavel Khodakov
@Berckk
Так и есть.
Т.к. в таблице _AccRgAT0501 нет данных за 2011-2015 годы то 1С берет эти данные из AccRg488
Kirill Krasnov
@Kirill
Ок.. Тогда очищаю виртуальные таблицы РБ.Хозрасчетный и запускаю расчет итогов
Pavel Khodakov
@Berckk
т.е. надо заполнить данные в этой таблице на дату свертки
а потом итоги пересчитать
Kirill Krasnov
@Kirill
Большое всем спасибо. Павел, огромное спасибо за ссылку. Процесс расчета итогов еще не завершен, но уже пересчитаны итоги за проверяемый период - скорость формирования отчета - доли секунд. Если кому интересно - вот обработка - генерирует SQL скрипт для очистки таблиц. отдельно комментарием пишет таблицу хранения настроек итогов, в которой необходимо включить использование итогов. Теоретически можно написать команду обновления строки, но надо проверить на других базах поля и значения. А также рассчитывает поквартально итоги с 01.01.2010... Думаю можно это вынести в параметр.
ret-Phoenix
@ret-Phoenix
sample_winext_ordinary_forms.gif
Denis Kharchenko
@best-tech
Что это за магия? Через виртуальный X11 заработает?
ret-Phoenix
@ret-Phoenix
это Windows. Работа с экраном, мышкой и клавиатурой
На работе задача автоматизировать приемочное тестирование конфигурации на обычных формах
SikuliX, Selenium использовать не хочется. Слишком громоздко и нужно переучиваться для автоматизации сценариев
Сейчас накидываю материал на ИС. Сегодня/завтра будет
Антон Степанов
@Stepa86
Норм тема, не захотел использовать что-то - написал свое
ret-Phoenix
@ret-Phoenix
+ ты забыл правила на моей работе - если что-то нужно - пиши сам, скачивать левое НЕЛЬЗЯ.
Антон Степанов
@Stepa86
походу скоро будет много нового инструментария на оскрипте... А ты его на работу как пронес, кстати? Или по памяти написал с нуля?
ret-Phoenix
@ret-Phoenix
github и личный профиль спасли, это можно.
а так да, изначально по памяти и перепечаткой с телефона