Имя: Пароль:
1C
1С v8
Тормоза при создании штрих-кодов
0 oreshka7387
 
27.08.13
11:05
УТ 10.3. База файловая, доступ по сети. После перехода на 8.2 конвертацией появились дикие тормоза при создании штрих-кодов. Для сравнения, на компьютере, где лежит база (назовем его сервер), один штрих-код создается 9-11 секунд, по сети доходит до минуты на каждый штрих-код.
Номенклатурный перечень большой, каждый день создается по 20-30 новых позиций.
Первый раз сталкиваюсь с тормозами после конвертации. Подскажите, как облегчить работу? Возврат на 8.1 не предлагать. Заранее спасибо
1 Allexe
 
27.08.13
11:09
(0) Посмотреть в отладчике замером производительности?
2 oreshka7387
 
27.08.13
11:14
Уже смотрела. Долгое выполнение почему-то в общем модуле РаботаСТорговым оборудованием на функции

Функция СформироватьШтрихКод(Знач ПрефиксШтучногоТовара = Неопределено, Знач ПрефиксВнутреннегоШтрихкода = Неопределено) Экспорт

    Если ПрефиксШтучногоТовара = Неопределено Тогда
        ПрефиксШтучногоТовара = СокрЛП(Константы.ПрефиксШтучногоТовара.Получить());
    КонецЕсли;

    Если ПрефиксВнутреннегоШтрихкода = Неопределено Тогда
        ПрефиксВнутреннегоШтрихкода = Константы.ПрефиксВнутреннегоШтрихкода.Получить();
    КонецЕсли;

    ПрефиксШтучногоТовара = ?(ПустаяСтрока(ПрефиксШтучногоТовара), "0", ПрефиксШтучногоТовара);
    ПрефиксВнутреннегоШтрихкода = Формат(ПрефиксВнутреннегоШтрихкода, "ЧЦ=2; ЧН=; ЧВН=");

    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |    МАКСИМУМ(ПОДСТРОКА(РегШтрихКоды.Штрихкод, 5, 8)) КАК Код
    |ИЗ
    |    РегистрСведений.ШтрихКоды КАК РегШтрихКоды
    |ГДЕ
    |    РегШтрихКоды.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN13)
    |    И РегШтрихКоды.Штрихкод ПОДОБНО ""2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + "_________""
    |");

    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    ТекКод = ?(Выборка.Код = NULL, 1, Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(Выборка.Код) + 1, 99999999));

    Штрихкод = "2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + Формат(ТекКод, "ЧЦ=8; ЧВН=; ЧГ=");
    Штрихкод = Штрихкод + КонтрольныйСимволEAN(ШтрихКод, 13);

    Возврат Штрихкод;

КонецФункции // СформироватьШтрихКод()
3 oreshka7387
 
27.08.13
11:14
(2) блин, как спойлер сделать?
4 Fragster
 
модератор
27.08.13
11:21
|ВЫБРАТЬ
    |    ПОДСТРОКА(МАКСИМУМ(РегШтрихКоды.Штрихкод), 5, 8) КАК Код
    |ИЗ
    |    РегистрСведений.ШтрихКоды КАК РегШтрихКоды
    |ГДЕ
    |    РегШтрихКоды.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN13)
    |    И РегШтрихКоды.Штрихкод ПОДОБНО ""2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + "_________""
    |
5 Fragster
 
модератор
27.08.13
11:23
РегШтрихКоды.Штрихкод ПОДОБНО ""2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + "%""
6 Михаил Козлов
 
27.08.13
11:24
Может быть тормоз при поиске максимума в РС ШтрихКоды.
Делад так: завел РС (условно счетчтки), куда писал 1 строку с текущим максимум кода в РС ШтрихКоды.
7 oreshka7387
 
27.08.13
11:26
(6) хм... вариант, в принципе, тогда вопрос по производительности - почему на 8.1 тормозов не было? может быть, это риторический вопрос, но ответ знать хочется, чтоб не наступить  на те же грабли в будущем
8 Галахад
 
гуру
27.08.13
11:27
Может базу пожать надо? ТиИ?
9 oreshka7387
 
27.08.13
11:28
(4) (5) попробую, спасибо! хотя не совсем поняла, в чем суть в от здесь: ПрефиксВнутреннегоШтрихкода + "%""
пойду за справкой по запросам
10 Fragster
 
модератор
27.08.13
11:28
(9) не будет проверки на длину строки
11 Fragster
 
модератор
27.08.13
11:29
(10)+ она же и так известна для EAN13
12 oreshka7387
 
27.08.13
11:29
(8) тии делаю раз в месяц
13 oreshka7387
 
27.08.13
11:29
(10) а! спасибо!
14 oreshka7387
 
27.08.13
11:50
время выполнения с 55 секунд сократилось до 26. уже лучше, но действительно подумываю о том, чтобы где-то хранить максимальное значение шк
15 H A D G E H O G s
 
27.08.13
11:52
26 секунд.
жесть, как она есть...
16 Fragster
 
модератор
27.08.13
12:31
(14) это и (4) тоже?
17 oreshka7387
 
27.08.13
12:35
(16) ага!
Решила сделать так: в запросе подстроку не получать, а только максимум. А уже потом обработать результат и получить эти самые 8 знаков.
Может, и по-детски, зато на каждый шк уходит 0,88 сек
18 Fragster
 
модератор
27.08.13
14:20
т.е. просто добавление ПОДСТРОКА(МАКСИМУМ(РегШтрихКоды.Штрихкод), 5, 8) КАК Код увеличивает в 25 раз время запроса?
19 oreshka7387
 
27.08.13
16:39
(18) как ни странно, но да! если доступ по сети и клиентская машина похожа на калькулятор
20 Fragster
 
модератор
27.08.13
16:44
(19) обращаю внимание на то, что подстрока снаружи максимума.

ВЫБРАТЬ
    ПОДСТРОКА(Вложенный.Код, 5, 8) КАК Код
ИЗ
    (Выбрать Максимум(РегШтрихКоды.Штрихкод) из ...) как Вложенный

тоже долго работает?

А такой вариант:

Выбрать Первые 1
ПОДСТРОКА(РегШтрихКоды.Штрихкод, 5, 8) КАК Код
Из ...
Где ...
Упорядочить по РегШтрихКоды.Штрихкод Убыв

?
21 Vitamax3
 
27.08.13
16:54
А зачем? Она же сделала вроде так.

|ВЫБРАТЬ
|    МАКСИМУМ(РегШтрихКоды.Штрихкод) КАК Код
    |ИЗ
    |    РегистрСведений.ШтрихКоды КАК РегШтрихКоды
    |ГДЕ


И дальше

Сред(Выборка.Код,5,8)
22 Fragster
 
модератор
27.08.13
17:02
(21) я не понимаю почему тормозит
23 oreshka7387
 
29.08.13
11:14
(21) да, именно так!
(22) тоже не понимаю :(
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс