Имя: Пароль:
1C
1С v8
Активность пользователя. ☑
0 antihacker
 
24.05.17
✎
12:24
Всем привет ! Есть файловая база. К нему через локалку подключен толстый клиент. Локалка 1 гигабит. На клиенте есть обработка. Когда первый раз нажимаешь на кнопку обработки после долгого простоя, то ответ тормозит на 5-10 секунд. А после следующие нажатия отрабатываються моментально. Долгий простой, опять такая картина. Не могу понять в чем дело. Может на сикл сервер перейти ?
1 rabbidX
 
24.05.17
✎
12:41
Почему тормозит - см. замер производительности. При следующих нажатиях берет данные из кэша, поэтому моментально. Со скулем два варианта: либо поможет, либо не поможет.
2 Buster007
 
24.05.17
✎
12:51
а может дело не в 1С? попробуй задать вопрос админу
3 rabbidX
 
24.05.17
✎
12:54
(2) Ну, проблема с сетью должны бы проявляться чаще, чем в одной обработке.
4 antihacker
 
24.05.17
✎
13:02
rabbidX, по моему не верное предположение. Потому что при каждой нажатие, получает разные результаты, так как данные регистра меняеться моментально.
5 kossmatiy
 
24.05.17
✎
13:04
(0) Может в этой обработке запрос с десятком другим виртуальных таблиц и различными соединениями? О чем вопрос то? Смотри код, смотри монитор производительности и да про кеш в (1) верно написано...
6 antihacker
 
24.05.17
✎
13:12
ВОт запрос

Функция ОстатокНомНаСкладе(вхНоменклатура);

        //Товары в незакрытых сменах
        ЗапросКолТовароввСмене = новый запрос;
        ЗапросКолТовароввСмене.Текст="ВЫБРАТЬ
        |    СУММА(ХранилищеСуточныхПродаж.Количество) КАК СУММАКоличество
        |ИЗ
        |    РегистрСведений.ХранилищеСуточныхПродаж КАК ХранилищеСуточныхПродаж
        |    Где ХранилищеСуточныхПродаж.СменаЗакрыта = ЛОЖЬ
        |    И ХранилищеСуточныхПродаж.ЧекФРРаспечатан = ИСТИНА
        |    И ХранилищеСуточныхПродаж.Номенклатура = &вхНоменклатура";        

        ЗапросКолТовароввСмене.УстановитьПараметр("вхНоменклатура",вхНоменклатура);
        
        РезЗапросКолТовароввСмене = ЗапросКолТовароввСмене.Выполнить().Выбрать();
        
            
             Пока РезЗапросКолТовароввСмене.Следующий() Цикл
                
                      Если РезЗапросКолТовароввСмене.СУММАКоличество <> Null Тогда
                       КолТовВСмене = РезЗапросКолТовароввСмене.СУММАКоличество;
                  Иначе
                       КолТовВСмене = 0;        
                  КонецЕсли;                                                 
            
             КонецЦикла;
              
          //---Проверяем остаток---------------------------------
        запрос=новый запрос;
        запрос.Текст="ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Склад КАК Склад,
        |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(
        |            &ДатаОст,
        |            Склад = &выбСписСклады
        |                И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
            
        запрос.УстановитьПараметр("ДатаОст",ТекущаяДата());    
        запрос.УстановитьПараметр("выбСписСклады",Объект.Склад);
        запрос.УстановитьПараметр("Номенклатура",вхНоменклатура);        
                                          
        КолОстаток=запрос.Выполнить().Выбрать();

        Если КолОстаток.Количество()=0 Тогда
             Возврат 0;
        Иначе
             Пока КолОстаток.Следующий() Цикл  
                  Возврат  КолОстаток.КоличествоОстаток - КолТовВСмене;                                           
             КонецЦикла;                
        КонецЕсли;
7 antihacker
 
24.05.17
✎
13:13
Дело в том что данное решение работает и в другом месте. Но там таких тормозов нету.
8 Lama12
 
24.05.17
✎
13:19
(0) Есть у меня смутные подозрения, что проблема в двух вещах.
1. Работа кэша. После первого запуска обновляется кэш.
2. Наверняка на конечном компьютере либо памяти мало, либо 1С поставлена недавно. либо еще что-то что подталкивает винду скидывать страницы памяти в своп файл. Возможно по этой причине и кэш приходится обновлять.

1С давно на проблемный компьютер поставили и какая операционка?
9 antihacker
 
24.05.17
✎
13:40
там вин7. А что если 1С поставлен не давно ?
10 Lama12
 
24.05.17
✎
14:16
(9) Винда (примерно после 7) статистику нарабатывает по использованию тех или иных приложений. В зависимости от этого управляет выделением ресурсов компьютера.
Очень приблизительный пример.
На компе около года пользователь сидел постоянно в браузере и смотрел фильмы. Если несколько дней назад поставили 1С (или любое другое приложение), и у пользователя так же открыт браузер, то при разруливании какому приложению выделить дефицитный ресурс, операционка предпочтет браузер.

Понаблюдайте хотя бы месяц.
11 darius357
 
24.05.17
✎
14:26
ну как всегда побакланили, и нифига толку
12 antihacker
 
24.05.17
✎
14:36
И памяти хватает, так как компы там где база и там где клиент не тормозят.
13 antihacker
 
24.05.17
✎
14:38
Компы были куплены и там ни кто ни чем не занимался. Купили сразу поставили на кассу. Только используеться 1С для отпуска клиентов магазина.
14 Lama12
 
24.05.17
✎
14:41
(11) А какая инфа должна быть? Результатов мониторинга (5) нет. По результатам, думаю ТС сам поймет в чем дело. Причины, почему результаты будут такими, а не другими, уже озвучили. Что еще нужно?
15 antihacker
 
25.05.17
✎
12:17
Все выяснилось. Тормозит из за первого запроса

        ЗапросКолТовароввСмене = новый запрос;
        ЗапросКолТовароввСмене.Текст="ВЫБРАТЬ
        |    СУММА(ХранилищеСуточныхПродаж.Количество) КАК СУММАКоличество
        |ИЗ
        |    РегистрСведений.ХранилищеСуточныхПродаж КАК ХранилищеСуточныхПродаж
        |    Где ХранилищеСуточныхПродаж.СменаЗакрыта = ЛОЖЬ
        |    И ХранилищеСуточныхПродаж.ЧекФРРаспечатан = ИСТИНА
        |    И ХранилищеСуточныхПродаж.Номенклатура = &вхНоменклатура";        

        ЗапросКолТовароввСмене.УстановитьПараметр("вхНоменклатура",вхНоменклатура);
        
        РезЗапросКолТовароввСмене = ЗапросКолТовароввСмене.Выполнить().Выбрать();
        
            
             Пока РезЗапросКолТовароввСмене.Следующий() Цикл
                
                      Если РезЗапросКолТовароввСмене.СУММАКоличество <> Null Тогда
                       КолТовВСмене = РезЗапросКолТовароввСмене.СУММАКоличество;
                  Иначе
                       КолТовВСмене = 0;        
                  КонецЕсли;                                                  
            
             КонецЦикла;

Но почеу не знаю.
16 Fragster
 
гуру
25.05.17
✎
12:29
периодический ли это РС? почему нет отбора по периоду, если да?
какой порядок столбцов и на какие установлена галочка "индексировать"?
17 antihacker
 
25.05.17
✎
13:13
Не периодический, независимый, и нет индексируемых полей.

Вот так )

А что нужн делать ? Регистр я создавал сам
18 antihacker
 
25.05.17
✎
13:14
Там есть поле - НомерПродажи.  Туда я программно вставлю уникальные ключи.
19 antihacker
 
25.05.17
✎
13:34
Подскажите друзья. Исходя из запроса какие поля мне нужно инексировать ?
20 rphosts
 
25.05.17
✎
13:39
(19) для начала укажи его измерения в том порядке как они в конф
21 antihacker
 
25.05.17
✎
14:05
Измерения:

НомерПродажи
ДатаПродажи
Номенклатура
Кассир
АкцияНоменклатуры
БонусныйТовар
СменаЗакрыта
ВидРеализации
ОшибкаФРКоменатрии
ЧекФРРаспечатан
Контрагент
БиоПродажа

Ресурсы:

Количество
Цена
АкцЦена
ПроцентСкидки
Сумма
22 Волшебник
 
модератор
25.05.17
✎
14:07
Плохой регистр
23 Лефмихалыч
 
25.05.17
✎
14:08
(0) компьютер, на котором лежит база, просто в спячку поди уходит при простое?
24 Лефмихалыч
 
25.05.17
✎
14:09
(19) да любые. в файловой базе по сети это все пустая возня
25 antihacker
 
25.05.17
✎
14:09
Нет не уходит. И галочку для экономи энергии в сетевой карте тоже убрал.
26 Fragster
 
гуру
25.05.17
✎
14:10
сделай первые три:
СменаЗакрыта
ЧекФРРаспечатан
Номенклатура
27 Fragster
 
гуру
25.05.17
✎
14:11
вообще (22) прав
28 antihacker
 
25.05.17
✎
14:12
А поле НомерПродажи ?  И чем же он прав ?
29 antihacker
 
25.05.17
✎
14:16
Лефмихалыч , можно детальнее ?
30 НЕА123
 
25.05.17
✎
14:45
>Не периодический, независимый, и нет индексируемых полей.

>Там есть поле - НомерПродажи.  Туда я программно вставлю уникальные ключи.

Регистр зачем? Справочник - несолидно?
31 rabbidX
 
25.05.17
✎
15:06
(28) Если планировалось получать сумму числовых показателей по группе измерений, проще было использовать оборотный регистр с соответствующими измерениями.
Да, можно для одной задачи использовать несколько регистров, необязательно все в одну таблицу пихать.
Набор измерений регистра сведений должен однозначно определять сущность, а ресурсы регистра ее характеризовать. Например, СменаЗакрыта явно должно быть в ресурсах - странно хранить одновременно информацию о закрытой и открытой кассовой смене.
Довольно странно, что смена у Вас привязана к Кассиру, а не к Кассе.
Если сущность, описываемая регистром сведений меняется со временем (смена на Кассе иногда закрыта, иногда открыта) удобнее использовать периодический регистр. Тогда через срез последних можно получать актуальное состояние.
32 antihacker
 
26.05.17
✎
05:45
rabbidX, к кассиру потому что на кассе,в разные дни, могут работать разные кассиры. И каждый должен отвечать за свою сумму. И в конце месяца нужен отчет, кто сколько денег принимал. И какая разница поле как ресурс или измерения ? Я данные вытаскиваю через запрос.