Последние сообщения

#11
7.7 / COM соединение с базой
Последний ответ от SnakePlisskin - Вчера в 16:43
Доброго дня, господа!
Сложилась такая ситуация, что нужно в базу 8, перегрузить справочник номенклатура, из базы на 7.7, причем делать это в регламентном задании на стороне 8 (клиент-серверная), после первоначальной загрузки в последующих "синхронизациях" нужно проверять на изменение наименования / полного наименования. Честно говоря раньше с такими задачами не сталкивался.

накидал вот такой код

    V77 = Новый COMОбъект("V77.Application");
    Запрос = V77.CreateObject("Запрос");
    ТекстЗапроса=

    "//{{ЗАПРОС(Сформировать)
    |Обрабатывать НеПомеченныеНаУдаление;
    |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
    |Код = Справочник.Номенклатура.Код;
    |Наименование = Справочник.Номенклатура.Наименование;
    |Родитель = Справочник.Номенклатура.Родитель.Наименование;
    |РодительКод = Справочник.Номенклатура.Родитель.Код;
    |Группировка Номенклатура;
    |";//}}ЗАПРОС
   
    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Ошибка выпонения запроса номенклатуры в базе-источнике");
        Возврат;
    КонецЕсли;
   
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Код",,,15);
    Таблица.Колонки.Добавить("Наименование",,,50);
    Таблица.Колонки.Добавить("Родитель",,,50);   
    Таблица.Колонки.Добавить("РодительКод",,,15);
    Таблица.Колонки.Добавить("ЭтоГруппа",,,1);
   
    Пока Запрос.Группировка() Цикл
        Строка = Таблица.Добавить();
        Строка.ЭтоГруппа    = Запрос.Номенклатура.ЭтоГруппа();
        Строка.Код          = Запрос.Код;
        Строка.Наименование = Запрос.Наименование;
        Строка.Родитель     = Запрос.Родитель;
        Строка.РодительКод  = Запрос.РодительКод;
    КонецЦикла;   
    V77 = "";

Но это только заполнение таблицы для последующей ее обработки, 36 тысяч элементов, заполняется почти 4 минуты, можно ли как то ускорить, хотя как, я особо не понимаю, но все же. Плюс может есть-какой то другой путь решения задачи ?
#12
Дружественные проекты / Re: v7DBNet + 1Sqlite = ?
Последний ответ от Djelf - Вчера в 15:22
Цитата: item от 28 августа 2025, 15:22В общем, парни, результат у меня такой.

Результаты первичных запросов практически идентичны, все укладываются по времени в 50-60 сек
(#1 и #2 ~ 55 сек, #3 ~ 50 сек, #4 ~ 60 сек), и все кэшируют таблицу полностью.
Результаты повторных запросов разнятся относительно существеннее:
#1 ~ 0.27 сек, #2 ~ 0.21 сек, #3 ~ 0.18 сек, #4 ~ 4.5 сек.
Тест отличный!
Результаты в пределах погрешности.
Но 60 секунд на заполнения кэша не очень комфортно...

1. Что выдает по скорости копирование этих файлов по смб?
25000 записей могут быть очень разным по размеру файла.

2. Если есть длинные строки? Науке не известно кеширует ли их Wirth.
Можно проверить на копии, просто грохнуть длинные строки (это предположение, возможно такого кэша нет).
Этот тест надо делать в разделенном режиме, 2-3 пользователя минимум, монопольный режим очень сильно отличается по скорости.

3. Можно включить монопольный режим доступа в sqlite, это сильно ускорит кеширование, но кто-то может отвалится на транзакции.
Но если это ускорит наполнение кэша раз в 10, то это будет довольно эффективно и не будет сильно заметно всем остальным пользователям.

Ну... или вообще забить на это и работать по rdp?

Вроде я все мои идеи на текущий момент описал, не понятно что еще придумать.
Кидайте идеи...
#13
FormEx / Re: Услышим ли мы НТЦ..? 199 п...
Последний ответ от Злоп - 28 августа 2025, 23:59
Лелеем, что НТЦ вернется из летних отпусков и с новыми силами, отдохнувши запилит няшку!
#14
Дружественные проекты / Re: v7DBNet + 1Sqlite = ?
Последний ответ от Злоп - 28 августа 2025, 23:57
Какие вы все умные!
#15
Дружественные проекты / Re: v7DBNet + 1Sqlite = ?
Последний ответ от item - 28 августа 2025, 15:22
В общем, парни, результат у меня такой.
Сетка 100Мб, сервер X3440, SSD бюджет, 8 юзеров, номенклатура ~25000.

Протестированы четыре запроса:
#1. "SELECT descr as Наименование, id as [Элемент :Справочник.Номенклатура] ..."
#2. "SELECT id as [Элемент :Справочник.Номенклатура] ..."
#3. "SELECT MAX(rowid) AS cnt FROM [Справочник.Номенклатура]..."
#4. Штатный "ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент| Без итогов"

Результаты первичных запросов практически идентичны, все укладываются по времени в 50-60 сек
(#1 и #2 ~ 55 сек, #3 ~ 50 сек, #4 ~ 60 сек), и все кэшируют таблицу полностью.
Результаты повторных запросов разнятся относительно существеннее:
#1 ~ 0.27 сек, #2 ~ 0.21 сек, #3 ~ 0.18 сек, #4 ~ 4.5 сек.

В общем, нет смысла кэшировать descr, достаточно только id,
а поскольку запрос #3 чуток быстрее, я на нём и остановился.

Респект, друзья, от начинающего 1sqlite-щика.


#16
Глюки форума / Re: Перенос домена к другому р...
Последний ответ от Злоп - 27 августа 2025, 19:59
Я прочитал.
#17
Глюки форума / Re: Перенос домена к другому р...
Последний ответ от Djelf - 27 августа 2025, 16:16
Пока все работает (я через cloudfire).
В whois что-то невнятное, если ip меняется, то это 1-3 часа, по недавнему опыту.
Если регистратор сменился то не знаю, предположений делать не буду.
#18
Глюки форума / Re: Перенос домена к другому р...
Последний ответ от АЛьФ - 27 августа 2025, 15:36
Переехал на Рег.ру.
Если вдруг что-то поломается, пишите-звоните.
#19
Дружественные проекты / Re: v7DBNet + 1Sqlite = ?
Последний ответ от Djelf - 21 августа 2025, 15:58
Мне кажется, что любой запрос с перебором будет не эффективным с точки зрения клиента.
Все рано весь справочник будет передан на клиент, возможно что объект Запрос этот момент ускорит.
Это включит другой механизм платформы, я точно это не знаю, но это возможно.
Мы туда не залезали... это неисследованная область клюшек, хрен знает где это вообше находится и в какой библиотеке... я не нашел...
#20
7.7 / Re: Рег.ОбратныйПорядок(1) - д...
Последний ответ от Харлампий Дымба - 16 августа 2025, 12:24
Добавлю, что во всех случаях значение флажка ОбратныйПорядок не сбрасывается после окончания выборки. То есть, если пользоваться единожды созданным объектом для разных целей, то вторая выборка будет идти с учетом установок первой. Тут особенно внимательно надо, если пользуешься глобальной переменной.