|
Директива на сервере | ☑ | ||
---|---|---|---|---|
0
Borteg
05.06.14
✎
11:55
|
С клиента вызываю сервер с директивой на сервере(тоесть передаю весь контекст формы), при вызове из этой серверной процедуры еще одной серверной процедуры я снова передам кучу данных формы?, или уже форма существует на сервере и не будет передачи контекста всей формы.
|
|||
1
H A D G E H O G s
05.06.14
✎
11:56
|
(0) нет, не передашь. Все уже на сервере, не боись.
|
|||
2
Borteg
05.06.14
✎
11:56
|
(1) спасибо)
|
|||
3
Fragster
гуру
05.06.14
✎
12:00
|
вообще контекстные вызовы зло.
http://infostart.ru/public/198264/ выводит время контекстного и неконтекстного вызова - там разница в десять и более раз легко может быть |
|||
4
Borteg
05.06.14
✎
12:06
|
(3) Я понимаю, но у меня огромная ТЧ около 10000 строк. Потом из этих строк создаются документы Около 6000-7000. Общее время работы 3-4 часа. Я в начале просто вызываю сразу сервер и там Для каждого Строка из объект.мояТч Цикл
и поехали там процедуры создания документов КонецЦикла |
|||
5
Borteg
05.06.14
✎
12:07
|
(3) Делал через БСП. Фоновое задание и создание документов -не понравилось както.
|
|||
6
Fragster
гуру
05.06.14
✎
12:07
|
а эти 10 килострок - они как беруться? может их вообще на клиент не надо тянуть?
|
|||
7
Borteg
05.06.14
✎
12:09
|
(6) Они из веб системы берутся, запрос к веб системе, она выдает xml файл, я его разбираю. Там просто иногда контрагенты не определяются например, или еще чтото. Там много проверок всяких.
Я просто че заморочился в 2.0 подобная загрузка отрабатывала за час, в 3.0 3-4 часа |
|||
8
Borteg
05.06.14
✎
12:11
|
(7)Тоесть ТЧ появляется и говорит не найден контрагент, не правильный код агента, инн, договор, направление итд итп. Они правят руками обычно это 5-6 минут и ждут кнопку создать документы. И начинается. 3.0 умирает 3-4 часа, в 2.0 проблем вообще не было.
|
|||
9
Borteg
05.06.14
✎
12:12
|
(8) у меня ощущение что проведение самих документов в 3.0 намного дольше. Да и работы пользователей тоже заметно медленнее стала..
|
|||
10
H A D G E H O G s
05.06.14
✎
12:12
|
(8) Ты что-то делаешь не так.
|
|||
11
H A D G E H O G s
05.06.14
✎
12:15
|
ТЧ в Тонком умирает на over 100000 строк *30 колонок.
Именно умирает - каждый скролл грузит сервер вумат на пару минут. Лечит разбитие ТЧ на блоки по 10000 строк. - там все влет отрабатывает |
|||
12
H A D G E H O G s
05.06.14
✎
12:16
|
" процедуры создания документов " - тормоза там.
Поиск контрагентов по коду, номенклатуры по артикулу в цикле без кэширования - вот тебе и ответ |
|||
13
acsent
05.06.14
✎
12:18
|
(12) с каких пор поиск элемента по индексу стал таким ресурсоемким?
|
|||
14
Borteg
05.06.14
✎
12:18
|
(12) Да все это находится на форме, есть закладка настройки там все лежит, никаких поисков по коду ничего такого нету, все грубо берется из настроек.
Может это тормозить типа РТИУ.СтрокаТЧ.Номенклатура = Объект.НомеклатураРТИУ; Может лучше собирать ее например в структура и с помощью ЗаполнитьЗначенияСвойств отбивать? |
|||
15
Fragster
гуру
05.06.14
✎
12:22
|
(13) если оно в цикле
|
|||
16
H A D G E H O G s
05.06.14
✎
12:23
|
(14) Давай, показывай обработку.
|
|||
17
hhhh
05.06.14
✎
12:24
|
(14) ЗаполнитьЗначенияСвойств - тормозней, чем присваивание. Она для облегчения труда 1с-ников сделана, а не для производительности.
|
|||
18
Borteg
05.06.14
✎
12:25
|
ДокументУслуг = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
ДокументУслуг.Организация = Организация; ДокументУслуг.Ответственный = ПараметрыСеанса.ТекущийПользователь; ДокументУслуг.Дата = КонецДня(Объект.КонецПериода); ДокументУслуг.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Услуги; ДокументУслуг.Контрагент = КонтрагентПост; ДокументУслуг.ДоговорКонтрагента = ДоговорПост; ДокументУслуг.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить(); ДокументУслуг.Грузоотправитель = КонтрагентПост; ДокументУслуг.КратностьВзаиморасчетов = 1; ДокументУслуг.КурсВзаиморасчетов = 1; ДокументУслуг.Комментарий = КомментарийПост.Значение; ДокументУслуг.НомерВходящегоДокумента = "б/н"; ДокументУслуг.ДатаВходящегоДокумента = КонецДня(Объект.КонецПериода); ДокументУслуг.СуммаВключаетНДС = Истина; ДокументУслуг.СчетУчетаРасчетовСКонтрагентом = Объект.СчетУчетаРасчетовСКонтрагентамиПТиУ; ДокументУслуг.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.НеЗачитывать; //Агентское вознаграждение Если (СуммаПост - СтрахВознПост) <> 0 Тогда НовСтрока = ДокументУслуг.Услуги.Добавить(); НовСтрока.Количество = 1; НовСтрока.Номенклатура = Объект.НоменклатураПТиУ; НовСтрока.Сумма = СуммаПост - СтрахВознПост; Если НЕ НДСПост = 0 Тогда Если СтрахВознПост <> 0 тогда НовСтрока.СуммаНДС = НДСПост - Окр(СтрахВознПост*18/118,2); иначе НовСтрока.СуммаНДС = НДСПост; КонецЕсли; иначе НовСтрока.СуммаНДС = 0; КонецЕсли; НовСтрока.Цена = НовСтрока.Сумма; Если Не НовСтрока.СуммаНДС = 0 Тогда Новстрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; Иначе Новстрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; КонецЕсли; НовСтрока.СчетЗатрат = Объект.СчетЗатратПТиУ; НовСтрока.ПодразделениеЗатрат = Объект.ПодразделениеЗатратПТиУ; НовСтрока.Содержание = Объект.НоменклатураПТиУ.НаименованиеПолное; НовСтрока.Субконто1 = Объект.Субконто1ПТиУ; НовСтрока.Субконто2 = Объект.Субконто2ПТиУ; НовСтрока.СчетЗатратНУ = Объект.СчетЗатратПТиУ; НовСтрока.СубконтоНУ1 =Объект.Субконто1ПТиУ; НовСтрока.СубконтоНУ2 = Объект.Субконто2ПТиУ; НовСтрока.СчетУчетаНДС = Объект.СчетУчетаНДСПТиУ; КонецЕсли; //Страховка Если СтрахВознПост <> 0 тогда НовСтрока = ДокументУслуг.Услуги.Добавить(); НовСтрока.Количество = 1; НовСтрока.Номенклатура = Объект.НоменклатураСтрахованияПТиУ; НовСтрока.Сумма = СтрахВознПост; Если НЕ НДСПост = 0 Тогда НовСтрока.СуммаНДС = Окр(СтрахВознПост*18/118,2); Иначе НовСтрока.СуммаНДС = 0; КонецЕсли; НовСтрока.Цена = СтрахВознПост; Если Не НовСтрока.СуммаНДС=0 Тогда Новстрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; Иначе Новстрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; КонецЕсли; НовСтрока.ПодразделениеЗатрат = Объект.ПодразделениеЗатратПТиУСтрахование; НовСтрока.Содержание = Объект.НоменклатураСтрахованияПТиУ.НаименованиеПолное; НовСтрока.СчетЗатрат = Объект.СчетЗатратПТиУСтрахование; НовСтрока.Субконто1 = Объект.Субконто1ПТиУСтрахование; НовСтрока.Субконто2 = Объект.Субконто2ПТиУСтрахование; НовСтрока.СчетЗатратНУ =Объект.СчетЗатратПТиУСтрахование; НовСтрока.СубконтоНУ1 = Объект.Субконто1ПТиУСтрахование; НовСтрока.СубконтоНУ2 = Объект.Субконто2ПТиУСтрахование; НовСтрока.СчетУчетаНДС = Объект.СчетУчетаНДСПТиУСтрахование КонецЕсли; Попытка ДокументУслуг.Записать(РежимЗаписиДокумента.Проведение); Исключение ДокументУслуг.Записать(РежимЗаписиДокумента.Запись); Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Документ не проведен: " + ДокументУслуг.Ссылка; Сообщение.УстановитьДанные(ДокументУслуг); Сообщение.Сообщить(); КонецПопытки; Если Не НДСПост = 0 Тогда Попытка СчетФактура = УчетНДСПереопределяемый.СоздатьСчетФактуруПолученныйНаОсновании(ДокументУслуг.Ссылка, "б/н",КонецДня(Объект.КонецПериода), ); Исключение Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Проверьте счет фактуру: " + СчетФактура; Сообщение.УстановитьДанные(СчетФактура.ПолучитьОбъект()); Сообщение.Сообщить(); КонецПопытки КонецЕсли; |
|||
19
Borteg
05.06.14
✎
12:26
|
Ну вот так примерно все документы и реализации тоже также заполняются СФ тоже типовым заполнением на основании делается
|
|||
20
Borteg
05.06.14
✎
12:26
|
ну по сравнению с 2.0 создание намного дольше, мне кажется что сама бухгалтерия 3.0 просто медленее
|
|||
21
Borteg
05.06.14
✎
12:26
|
&НаСервере
Функция СоздатьПоступлениеТоваровИУслуг(КонтрагентПост,ДоговорПост,СуммаПост,НДСПост,СтрахВознПост = 0,КомментарийПост) |
|||
22
H A D G E H O G s
05.06.14
✎
12:28
|
(21) Тормозит (18) ?
Или все-же тормозит то, что создается на основании 10000 строк табличной части? |
|||
23
Borteg
05.06.14
✎
12:28
|
Если СтрокаТч.ОказУсл <> 0 тогда
Документ = СоздатьПоступлениеТоваровИУслуг(СтрокаТч.Контрагент,СтрокаТч.Договор,СтрокаТч.ОказУсл,СтрокаТч.НдсОказУсл,0,Комментарий); КонецЕсли; Ну а вот так она вызывается в цикле с серверной процедуры куда я весь контекст передал один раз |
|||
24
Fragster
гуру
05.06.14
✎
12:28
|
ну так ты замер производительности-то сделал, чтобы определить места тормозов? или все занимает по 2%?
|
|||
25
acsent
05.06.14
✎
12:28
|
Серверная версия? Есть подозрение на блокировки. Попробуй для начала константу читать 1 раз
|
|||
26
H A D G E H O G s
05.06.14
✎
12:29
|
(23) ну вооот
|
|||
27
H A D G E H O G s
05.06.14
✎
12:29
|
Все стало ясно
|
|||
28
H A D G E H O G s
05.06.14
✎
12:29
|
Контекстный вызов сервера для каждой строки?
|
|||
29
Fragster
гуру
05.06.14
✎
12:30
|
т.е. (18) на клиенте, а (23) - переход на сервер в цикле? или что?
|
|||
30
H A D G E H O G s
05.06.14
✎
12:30
|
Если СтрокаТч.ОказУсл <> 0 тогда
Документ = СоздатьПоступлениеТоваровИУслуг(СтрокаТч.Контрагент,СтрокаТч.Договор,СтрокаТч.ОказУсл,СтрокаТч.НдсОказУсл,0,Комментарий); КонецЕсли; Это - на сервере? |
|||
31
Borteg
05.06.14
✎
12:30
|
(27) нет это серверная процедура я в нее передела все,
тоесть на сервер передал, начал там перебирать объектТч и вызывать ту процедуру сверху, контекст один раз приехал, это не с клиента. |
|||
32
H A D G E H O G s
05.06.14
✎
12:30
|
скинь обработку, не мучай никого
|
|||
33
Borteg
05.06.14
✎
12:30
|
(30) да
|
|||
34
Borteg
05.06.14
✎
12:32
|
(32) да не мучаю)) я что хотел узнал))) я думал что с сервера на сервер может гоняю контекст)) сейчас помучаюсь еще) Я суть уловил как надо, просто само проведение документов куда медленее, да и вообще 8.3 платформа у меня с памятью проблемы на сервере, не освобождается, да и медленее все стало...Скорее всего проблемы в этом. Проведение документов, работа с ними просто у пользователей медленее..
|
|||
35
Borteg
05.06.14
✎
13:21
|
Хм задам может еще один глупый вопрос) У меня почти вся логика в модуле формы, в типовых используется чаще модуль объекта и менеджера, я прекрасно понимаю что и как можно сделать и зачем это обычно делается, но влияет ли это на скорость?? Если я например создание документов делаю в модуле формы.
|
|||
36
H A D G E H O G s
05.06.14
✎
13:26
|
(35) Не влияет.
Делается для внеинтерфейсной работы. |
|||
37
Borteg
05.06.14
✎
13:26
|
(36) Спасибо))
|
|||
38
Borteg
05.06.14
✎
13:36
|
По проблеме впринципе все ясно. Я не учел что 3.0 у нас с бит финансом и при проведении делаются проводки по бюджетам бит итдп итп в 2.0 такого не было. + по передачи данных. Сделал такую гадость начал гонять между клиентом и сервером контекст формы на каждый документ и поставил там состояние чтобы смотреть скорость создания документов. При это обнаружил что данные практически не гоняются туда сюда , разница между таким кодом и правильным примерно в 3 минуты. Читал в проф разработке давно чтото вроде того что между сервером и клиентом гоняются только измененные данные(что то такое точно было) поэтому при нашем варианте когда все в локалке быстрой не сильно сказывается на работе, единственное конечно вызовов много))изза этого наверное и разница в 3 минуты между двумя этими вариантами. Как то так получилось.
|
|||
39
Borteg
05.06.14
✎
13:37
|
(38) попробую еще внеконтекстные вызовы сделать, по фэньшую совсем, скажу что там получится, но кажется скорость не сильно увеличится, по замеру проведение документов сильно много тянет. С битом вообще тяжко походу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |