Имя: Пароль:
1C
1С v8
Выход из процедуры к точке вызова...
, , ,
0 areaho0ray
 
13.07.17
03:54
Добрый день.
Есть обработка на УФ, в этой обработке не так давно начал подвисать выбор значения в поле. Выяснилось, что подвисает в этом месте:
&НаКлиенте
Процедура НастройкаСчетДтПриИзменении(Элемент)
    
    ТД = Элементы.Настройка.ТекущаяСтрока;
    СтрокаТаблицы = Элементы.Настройка.ТекущиеДанные;
    УстановитьЗаголовкиИДоступностьСубконто(ЭтаФорма, СтрокаТаблицы.СчетДт, "", "Дт", Истина);
    ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СтрокаТаблицы.СчетКт);

    Для Индекс = 1 По 3 Цикл
        ТипЗначенияСубконто = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"];
        Если Индекс <= ДанныеСчета.КоличествоСубконто Тогда
            СтрокаТаблицы["СубконтоДт" + Индекс] = Новый(ДанныеСчета["ВидСубконто"+Индекс+"ТипЗначения"].Типы()[0]);
        КонецЕсли;
    КонецЦикла;
    
    ПоляОбъекта = Новый Структура("Субконто1, Субконто2, Субконто3",
                                  "СубконтоДт1", "СубконтоДт2", "СубконтоДт3");
    БухгалтерскийУчетКлиентСервер.ПриИзмененииСчета(СтрокаТаблицы.СчетДт, СтрокаТаблицы, ПоляОбъекта, Истина);
    
    СчетПриИзменении(ТД, "Дт", "Настройка", "СчетДт", СтрокаТаблицы.СчетДт);
    
КонецПроцедуры

Конкретно - процедура СчетПриИзменении(), серверная, с ней все нормально, в отладчике пролетает без проблем, но при выходе из нее обратно в точку вызова 1С подвисает секунд на 15-20.
Быть может сталкивался кто-нибудь?
1 1dvd
 
13.07.17
06:01
На сервере без контекста?
2 areaho0ray
 
13.07.17
06:03
(1) Нет, просто на сервере.
Это, к слову, обработка загрузки проводок в БП3.0 из Камина.
3 1dvd
 
13.07.17
06:11
(2) скорее всего данные переливаются с/на клиента на/с сервера
4 areaho0ray
 
13.07.17
06:14
(3) тоже так думал, но не пойму, что там так долго может переливаться, так как процедура не возвращает ничего, а аргументы там - число, три строки и элемент плана счетов.
5 1dvd
 
13.07.17
06:16
(4) процедура изменяет данные на сервере. Если бы там было "без контекста", то ничего не переливалось бы
6 areaho0ray
 
14.07.17
03:57
(5) Ну собственно говоря да, переделал процедуру под клиента, начал зависать на следующей серверной процедуре.
Что интересно - раньше такого не было + на этом же сервере еще одна база стоит, там все нормально.
7 1dvd
 
14.07.17
07:04
(6) попробуй проиндексировать, хотя хз что там, какие объёмы данных и проч...
8 Имитация работы
 
14.07.17
07:28
(6) Раньше у тебя форма поскромнее была. Строк в таблице поменьше и т.п.
9 areaho0ray
 
14.07.17
07:46
(8) Да не, она всегда огромная была.
10 areaho0ray
 
14.07.17
07:47
(7) Да тоже была идея, попробовать руки не дошли еще.
11 areaho0ray
 
17.07.17
00:19
(7) Есть еще идеи?)
12 Имитация работы
 
17.07.17
07:34
(11) Написать заявление на увольнение?

Тебе ж рассказали, что это - передача контекста громадной формы с сервера на клиент по завершению вызова.
13 GenAcid
 
17.07.17
07:50
(11) Замер производительности?
14 areaho0ray
 
19.07.17
08:52
(12) На твое имя максимум. Тебе ж русским языком сказали, что проблема не наблюдалась никогда, а форма громадной была всегда.
(13) Делал, но ничего сверхъестественного - показывает 99,99% времени на исполнение оной процедуры, хотя по факту - он из нее просто так долго выползает.
15 1dvd
 
19.07.17
08:54
(14) что-то ты темнишь. Не может эска висеть при переходе между процедурами. скорее всего там последней строкой какой-то оператор, который висит
16 Имитация работы
 
19.07.17
09:03
(14) Не возражаю. Уволить согласно ТК РФ (п. 1 ст. 80 ТК РФ).
17 areaho0ray
 
19.07.17
09:14
(15) Не, все честно рассказал. В отладчике курсор переходит на конец процедуры, исчезает и предприятие висит. Через некоторое время брякается на входе.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.