Имя: Пароль:
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, к кассиру потому что на кассе,в разные дни, могут работать разные кассиры. И каждый должен отвечать за свою сумму. И в конце месяца нужен отчет, кто сколько денег принимал. И какая разница поле как ресурс или измерения ? Я данные вытаскиваю через запрос.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn