|
База работает очень долго | ☑ | ||
---|---|---|---|---|
0
LeoKeyn
10.05.18
✎
15:13
|
Здравствуйте. База 1с работает на клиент серверном варианте УФ. У
клиента стоит только управляемое приложение. Сервер администрирования 1с и SQL сервер располагаются на разных физических серверах. Проблема в следующем: Запускается обработка проверки базы террористов (конфигурация отраслевая не стандартная) На одном компьютере данный документ заполняется за 20-30 минут, на другом за 4 часа. Выполняется и там и там на тонком клиенте. Подскажите, пожалуйста, из-за чего такое может быть? |
|||
1
Mankubus
10.05.18
✎
15:15
|
(0) замер уже сделал? Профайлер смотрел?
|
|||
2
lodger
10.05.18
✎
15:16
|
права у юзеров с ограничениями? а то мож у одного RLS, а у другого полные права...
|
|||
3
LeoKeyn
10.05.18
✎
15:17
|
(2) У обоих полные права, даже тот же пользователь
|
|||
4
LeoKeyn
10.05.18
✎
15:18
|
(1) Нет, не совсем знаю как это делать, не откажусь от методических материалов)
|
|||
5
DrShad
10.05.18
✎
15:23
|
даже 20 минут это слишком
|
|||
6
vis_tmp
10.05.18
✎
15:23
|
(0)Что за отрасль?
|
|||
7
ptiz
10.05.18
✎
15:23
|
(0) Буду первый: 1С:Антитеррор ? :)
|
|||
8
H A D G E H O G s
10.05.18
✎
15:23
|
Случаи разные бывают.
Я вот сталкивался с заполнением заказов из Ексель на ТонкомКлиенте. Вот буквально - открывалась форма документа и менялись реквизиты шапки, вызываясь клиентские процедуры смены реквизита. Работало сутками. Думаю, у автора может быть подобное. |
|||
9
LeoKeyn
10.05.18
✎
15:24
|
(5) Ну документ очень большой получается
|
|||
10
LeoKeyn
10.05.18
✎
15:24
|
(7) (6) Ак кредит
|
|||
11
piter3
10.05.18
✎
15:24
|
(9) Большой это сколько?
|
|||
12
LeoKeyn
10.05.18
✎
15:25
|
(8) а как исправил, если не секрет?)
|
|||
13
ProxyInspector
10.05.18
✎
15:25
|
В случае с 1с, следует писать "так называемые Управляемые Формы" и "так называемый серверный вариант". По моим наблюдениям, при определенных условиях, объем ресурсов, потребляемый УФ может существенно превышать объем ресурсов, потребляемых толстым клиентом. Соответственно
1. надо почистить кеш на клиентских компьютерах 2 Проверить скорость локальных дисков 3 Проверить скорость локальной сети Ну и вообще говоря УФ не предназначена для работы с большими документами |
|||
14
LeoKeyn
10.05.18
✎
15:26
|
(11) 52603 записи, плюс проверка то это идет через некий портал как я понимаю
|
|||
15
unregistered
10.05.18
✎
15:27
|
(0) > из-за чего такое может быть?
Да из-за чего угодно. Начиная с того, что в первом случае с базой работал один единственный пользователь, а во втором - одновременно сидело 100 человек и интенсивно формировали какие-нибудь отчеты по базе. При абсолютно равных или хотя бы сопоставимых условиях (одинаковые права пользователей, одинаковые параметры заполнения, одинаковая нагрузка на сервера СУБД и 1С) описанной тобой разницы (в 12 раз!!!) просто не может быть. Даже если предположить проблемы с сетью в момент передачи результата с сервера на клиента, то разница не должна быть такой. Хотя бог его знает что у вас там за алгоритм.... Может вы там результат гоняете в цикле по каждой строчке с клиента на сервер и обратно... Я вообще с трудом могу себе представить что такое может заполняться 20-30 минут. Не говоря уже о 4 часах.... Начните с замера производительности. |
|||
16
LeoKeyn
10.05.18
✎
15:28
|
(13)
1. Кеш чисты, клиенту только поставили 1с и работает он пока только с этим документом; 2. С этим тоже все в порядке машина новая; 3. Скорость локалки 100мб. |
|||
17
DrShad
10.05.18
✎
15:29
|
(16) убейте того кто писал алгоритм заполнения
|
|||
18
LeoKeyn
10.05.18
✎
15:30
|
(17) получается с этим нужно обращаться к разработчикам или искать проблему в оборудовании?
|
|||
19
ProxyInspector
10.05.18
✎
15:31
|
(15) Что тут представлять? Берешь УТ-3. Документ УстановкаЦенНоменклатуры на 50 тыс позиций и (0) покажется вам сказкой
|
|||
20
H A D G E H O G s
10.05.18
✎
15:31
|
(12) Переписал все на серверную обработку.
Да, тяжело, но 5000 строк заказа вместо суток, стало заполняться за 16 секунд. Считая инициализацию libreofice |
|||
21
piter3
10.05.18
✎
15:31
|
(18) монетку кинь.И там и там.Код покажи уже
|
|||
22
H A D G E H O G s
10.05.18
✎
15:32
|
(13) Проблема производительности Тонких форм в солидоле.
В голове у критиканов, ну и, частично, у разработчиков типовых. |
|||
23
DrShad
10.05.18
✎
15:32
|
(18) оборудование тут ни при чем
|
|||
24
H A D G E H O G s
10.05.18
✎
15:33
|
(19) Вы же понимаете, в чем там проблема и можете нам рассказать, ведь так?
|
|||
25
Любопытная
10.05.18
✎
15:33
|
(18) Замер производительности сделайте для начала и посмотрите, на чем умирает система.
|
|||
26
ProxyInspector
10.05.18
✎
15:33
|
(22) Проблемы у разработчиков Типовых
|
|||
27
H A D G E H O G s
10.05.18
✎
15:35
|
(26) Ну так если руки крюки у разрабов типовых, че тогда пургу на ТонкийКлиент гоним?
При желании, можно обойти ограничение на 99 тыс строк и открывать 300тыс строковый документ за пару секунд. |
|||
28
ProxyInspector
10.05.18
✎
15:35
|
(24) Конечно понятно, в чем проблема УТ3. И там реально раз в 100 можно ускорить, но все равно работать не возможно
|
|||
29
H A D G E H O G s
10.05.18
✎
15:36
|
(28) "в чем проблема УТ3"
В чем? В чем конкретно проблема УТЗ? |
|||
30
H A D G E H O G s
10.05.18
✎
15:36
|
(28) Конкретно УстановкаЦенНоменклатуры
|
|||
31
ProxyInspector
10.05.18
✎
15:36
|
Для больших документов на УФ две проблемы - разработчики и сами УФ.
|
|||
32
H A D G E H O G s
10.05.18
✎
15:37
|
(31) Это понятно, но хочется подробностей.
Что приводит к тормозам УстановкаЦенНоменклатуры ? |
|||
33
DrShad
10.05.18
✎
15:38
|
казалось бы, причем тут большой или нет документ и УФ?
|
|||
34
H A D G E H O G s
10.05.18
✎
15:38
|
(33) Хароший вопрос!
|
|||
35
DrShad
10.05.18
✎
15:38
|
(32) +1
|
|||
36
H A D G E H O G s
10.05.18
✎
15:38
|
На который ответит Proxy, ведь он не криворукий разраб из 1С.
|
|||
37
DrShad
10.05.18
✎
15:39
|
(36) а откуда вообще возникла УТ3? это же украинская конфа
|
|||
38
H A D G E H O G s
10.05.18
✎
15:40
|
Он, конечно, сейчас открывает конфигуратор с УТ, но это - долго, комп скорее всего стар, без SSD или антивирус злобствует.
Но мы подождем. |
|||
39
H A D G E H O G s
10.05.18
✎
15:40
|
(37) Я так понял, что это УТ11.3
|
|||
40
ProxyInspector
10.05.18
✎
15:41
|
Да
|
|||
41
DrShad
10.05.18
✎
15:41
|
(39) возможно
|
|||
42
MaxS
10.05.18
✎
15:41
|
(17) Ещё как вариант - физически сократить количество террористов, потом пометить на удаление в 1С, исключить из учета и база будет работать быстрее.
|
|||
43
DrShad
10.05.18
✎
15:41
|
(40) хвала великим яйцам, хоть не Украина виновата
|
|||
44
H A D G E H O G s
10.05.18
✎
15:42
|
(43) Еще ничего не ясно.
|
|||
45
DrShad
10.05.18
✎
15:42
|
(44) ну да, всяко может статься )))
|
|||
46
H A D G E H O G s
10.05.18
✎
15:42
|
Сохраняйте спокойствие, приготовьте QR-татуировки к сканированию.
|
|||
47
unregistered
10.05.18
✎
15:43
|
(14) > 52603 записи
И что? У меня книга покупок в типовой бухне ~28000 записей заполняется несколько минут (может и меньше - никогда не замерял)... При этом и сервера, и клиенты, и сеть - не какие-то супер-пупер-мегакрутые (скорее даже наоборот). |
|||
48
DrShad
10.05.18
✎
15:43
|
(46) чьорт побьери
а если я свою дома забыл? |
|||
49
H A D G E H O G s
10.05.18
✎
15:43
|
(48) Руку?
|
|||
50
DrShad
10.05.18
✎
15:44
|
(49) QR-татуировку
|
|||
51
H A D G E H O G s
10.05.18
✎
15:44
|
Ты еще голову дома забуть, с NFR-меткой! Как мы вас учитывать будем? Вот как с вами тоталитаризм строить?
|
|||
52
H A D G E H O G s
10.05.18
✎
15:45
|
Ладно, пашутили...
Что там у ProxyInspectora? Открылась форма документа? Готовы ответы на сакральные вопросы? |
|||
53
worker-good
10.05.18
✎
15:47
|
(18) Если конфигурация снята с поддержки, то вполне возможны проблемы с блокировками транзакций, которые создал неумелый разработчик. Найдите исходную конфигурацию не снятую с поддержки и посмотрите как там формируется данный документ
|
|||
54
Вафель
10.05.18
✎
15:49
|
конечно 52 тыщи коннектов к серверу через инет явно быстр не будет
|
|||
55
ProxyInspector
10.05.18
✎
15:50
|
1. Ут11 разработчики попытались повторить алгоритм УТ, когда из табличной части вида ТипЦен-Цена пытаются формировать таблицу типа ТипЦен1-Цена , ТИпЦен2-Цена , ТИпЦен3-цена. И при изменении любого реквизита вся эта каша гоняется на сервер и обратно.
2. При проведении проверка на дублирование строк производится тупым перебором строк и для каждой строки вызывается ТабличнаяЧасть.НайтиСтроки() В результате скорость работы падает как квадрат количества строк. Если документ на 100 строк от отрывается/проводится за 1 сек, 1000 строк за 100 сек, 10 000 строк за несколько минут |
|||
56
Вафель
10.05.18
✎
15:52
|
неужели 1сники не смогли гонять диффы вместо полных данных???
вопрос риторический |
|||
57
ProxyInspector
10.05.18
✎
15:53
|
Я в свое время убрал все основные ошибки, но все равно комфортной работы с большими документами на УФ не получилось. И от нее пришлось отказаться в пользу толстого клиента.
|
|||
58
ProxyInspector
10.05.18
✎
15:54
|
Что касается (0), то надо исправить алгоритм заполнения документа и ускорение раз в 100 вполне можно добиться
|
|||
59
H A D G E H O G s
10.05.18
✎
15:56
|
(55) Ну слава яйцам. Но на самом деле, это только то, что ты смог увидеть через замер.
Проблема - глубже - называется она ДеревоЦен:ДеревоЗначений, решить которую можно, только перенеся ТипЦен в шапку документа. |
|||
60
ProxyInspector
10.05.18
✎
15:57
|
Самый простой способ - заполнять таблицу значений, а потом ее грузить в табличную часть. Основные тормоза, как мне кажется - это все те же ТабличнаяЧасть.НайтиСтроки()
|
|||
61
H A D G E H O G s
10.05.18
✎
15:57
|
И редактируя цены через табличную часть.
|
|||
62
Вафель
10.05.18
✎
15:57
|
(59) предлагаешь на каждый тип цен по отдельному документу заводить?
А вот в толстых формах ... |
|||
63
H A D G E H O G s
10.05.18
✎
15:58
|
(60) Нихрена.
Таблица значений ставит колом сервер 1С на от 10К-20K строк. |
|||
64
H A D G E H O G s
10.05.18
✎
15:58
|
(62) "А вот в толстых формах .."
Даа, были времена. |
|||
65
Вафель
10.05.18
✎
15:58
|
(63) но найти строки то на тз явно быстрее ибо индекс
|
|||
66
ProxyInspector
10.05.18
✎
15:59
|
(59) Эта первая проблема - разработчики. Вторая проблема - УФ. Остается. Ты можешь попробовать поработать с обычным документом на 100 тыс строк. Без всяких обработчиков. И убедиться, что работать с ним не возможно.
|
|||
67
H A D G E H O G s
10.05.18
✎
16:00
|
(66) Я работаю с документом в 300 тыс. строк со всякими обработчиками и норм.
|
|||
68
LeoKeyn
10.05.18
✎
16:00
|
Вот Процедура
#Область СлужебныйПрограммныйИнтерфейс Процедура ФоноваяПроверкаПоБазеТеррористов(СтруктураПараметров, АдресХранилища) Экспорт ДатаПроверки = СтруктураПараметров.ДатаПроверки; РеестрПроверки = СтруктураПараметров.РеестрПроверки; РеестрСовпадений = СтруктураПараметров.РеестрСовпадений; Организация = СтруктураПараметров.Организация; ПроверятьТолькоКлиентов = СтруктураПараметров.ПроверятьТолькоКлиентов; НеПроверятьСовпаденияАдресов = СтруктураПараметров.НеПроверятьСовпаденияАдресов; // Выборка юрфизлиц ЗапросЮрФизЛиц = Новый Запрос; ЗапросЮрФизЛиц.Параметры.Вставить("СрокДействия", ДатаПроверки); ЗапросЮрФизЛиц.Параметры.Вставить("ДатаОстатков", Новый Граница(КонецДня(ДатаПроверки), ВидГраницы.Включая)); ЗапросЮрФизЛиц.Параметры.Вставить("Организация", Организация); ЗапросЮрФизЛиц.Параметры.Вставить("Все", НЕ ПроверятьТолькоКлиентов); ЗапросЮрФизЛиц.Текст = "ВЫБРАТЬ | ФизическиеЛица.Наименование, | ФизическиеЛица.ДатаРождения, | ФизическиеЛица.Ссылка КАК ЮрФизЛицо, | ФизическиеЛица.ИНН, | ФизическиеЛица.ОГРН |ПОМЕСТИТЬ ЮрИФизЛица |ИЗ | Справочник.ФизическиеЛица КАК ФизическиеЛица |ГДЕ | НЕ ФизическиеЛица.ЭтоГруппа | И НЕ ФизическиеЛица.ПометкаУдаления | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЮридическиеЛица.Наименование, | ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0), | ЮридическиеЛица.Ссылка, | ЮридическиеЛица.ИНН, | ЮридическиеЛица.ОГРН |ИЗ | Справочник.ЮридическиеЛица КАК ЮридическиеЛица |ГДЕ | НЕ ЮридическиеЛица.ПометкаУдаления | И НЕ ЮридическиеЛица.ЭтоГруппа |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КлиентыОрганизацииОстатки.Клиент.ЮрФизЛицо КАК КлиентЮрФизЛицо, | ИСТИНА КАК Клиент |ПОМЕСТИТЬ КлиентыОстатки |ИЗ | РегистрНакопления.КлиентыОрганизации.Остатки(&ДатаОстатков, Организация = &Организация) КАК КлиентыОрганизацииОстатки |ГДЕ | КлиентыОрганизацииОстатки.КоличествоОстаток = 1 | |ИНДЕКСИРОВАТЬ ПО | КлиентЮрФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЮрИФизЛица.Наименование, | ЮрИФизЛица.ДатаРождения, | ЮрИФизЛица.ЮрФизЛицо КАК ЮрФизЛицо, | ЮрИФизЛица.ИНН, | ЮрИФизЛица.ОГРН, | ЕСТЬNULL(КлиентыОстатки.Клиент, ЛОЖЬ) КАК Клиент |ПОМЕСТИТЬ ЮрФизЛицаПредварительно |ИЗ | ЮрИФизЛица КАК ЮрИФизЛица | ЛЕВОЕ СОЕДИНЕНИЕ КлиентыОстатки КАК КлиентыОстатки | ПО ЮрИФизЛица.ЮрФизЛицо = КлиентыОстатки.КлиентЮрФизЛицо | |ИНДЕКСИРОВАТЬ ПО | ЮрФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ДокументыФизическихЛицСрезПоследних.Физлицо, | ДокументыФизическихЛицСрезПоследних.Серия, | ДокументыФизическихЛицСрезПоследних.Номер |ПОМЕСТИТЬ ДокументыФизЛиц |ИЗ | РегистрСведений.ДокументыФизическихЛиц.СрезПоследних КАК ДокументыФизическихЛицСрезПоследних |ГДЕ | ДокументыФизическихЛицСрезПоследних.ЯвляетсяДокументомУдостоверяющимЛичность | И (ДокументыФизическихЛицСрезПоследних.СрокДействия >= &СрокДействия | ИЛИ ДокументыФизическихЛицСрезПоследних.СрокДействия = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПоручителиПоЗаймамСрезПоследних.Поручитель КАК Поручитель, | ПоручителиПоЗаймамСрезПоследних.Действует |ПОМЕСТИТЬ Поручители |ИЗ | РегистрСведений.ПоручителиПоЗаймам.СрезПоследних(&ДатаОстатков, ДоговорПоручительства.Организация = &Организация) КАК ПоручителиПоЗаймамСрезПоследних |ГДЕ | ПоручителиПоЗаймамСрезПоследних.Действует = ИСТИНА | |ИНДЕКСИРОВАТЬ ПО | Поручитель |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗалогодателиПоЗаймамСрезПоследних.Залогодатель КАК Залогодатель, | ЗалогодателиПоЗаймамСрезПоследних.Действует |ПОМЕСТИТЬ Залогодатели |ИЗ | РегистрСведений.ЗалогодателиПоЗаймам.СрезПоследних(&ДатаОстатков, ДоговорЗалога.Организация = &Организация) КАК ЗалогодателиПоЗаймамСрезПоследних |ГДЕ | ЗалогодателиПоЗаймамСрезПоследних.Действует = ИСТИНА | |ИНДЕКСИРОВАТЬ ПО | Залогодатель |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ЮрФизЛицаПредварительно.Наименование КАК Наименование, | ЮрФизЛицаПредварительно.ДатаРождения, | ЮрФизЛицаПредварительно.ЮрФизЛицо, | ЕСТЬNULL(ДокументыФизЛиц.Серия, """""""") КАК Серия, | ЕСТЬNULL(ДокументыФизЛиц.Номер, """""""") КАК Номер, | ЮрФизЛицаПредварительно.ИНН, | ЮрФизЛицаПредварительно.ОГРН, | ВЫБОР | КОГДА Поручители.Действует = ИСТИНА | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ФлагПоручитель, | ЮрФизЛицаПредварительно.Клиент КАК ФлагКлиент, | ВЫБОР | КОГДА Залогодатели.Действует = ИСТИНА | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ФлагЗалогодатель |ИЗ | ЮрФизЛицаПредварительно КАК ЮрФизЛицаПредварительно | ЛЕВОЕ СОЕДИНЕНИЕ ДокументыФизЛиц КАК ДокументыФизЛиц | ПО ЮрФизЛицаПредварительно.ЮрФизЛицо = ДокументыФизЛиц.Физлицо | ЛЕВОЕ СОЕДИНЕНИЕ Поручители КАК Поручители | ПО ЮрФизЛицаПредварительно.ЮрФизЛицо = Поручители.Поручитель | ЛЕВОЕ СОЕДИНЕНИЕ Залогодатели КАК Залогодатели | ПО ЮрФизЛицаПредварительно.ЮрФизЛицо = Залогодатели.Залогодатель |ГДЕ | (ЮрФизЛицаПредварительно.Клиент | ИЛИ &Все) | |УПОРЯДОЧИТЬ ПО | Наименование"; Проверяемые = ЗапросЮрФизЛиц.Выполнить().Выгрузить(); // Выборка террористов Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | БазаТеррористов.ФИО, | БазаТеррористов.ДатаРождения, | БазаТеррористов.Паспорт, | БазаТеррористов.Адрес, | БазаТеррористов.МестоРождения |ИЗ | РегистрСведений.БазаТеррористов КАК БазаТеррористов"; Террористы = Запрос.Выполнить().Выгрузить(); // Подготовка поисковых запросов (паспорта) ЗапросПаспорта = Новый Запрос; ЗапросПаспорта.УстановитьПараметр("ВнешнийИсточник", Террористы); ЗапросПаспорта.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗапросПаспорта.Текст = "ВЫБРАТЬ | БазаТеррористов.ФИО, | БазаТеррористов.ДатаРождения, | БазаТеррористов.Паспорт КАК Паспорт |ПОМЕСТИТЬ ВременнаяТаблица |ИЗ | &ВнешнийИсточник КАК БазаТеррористов | |ИНДЕКСИРОВАТЬ ПО | Паспорт"; Результат = ЗапросПаспорта.Выполнить(); ЗапросПаспорта.Текст = "ВЫБРАТЬ | БазаТеррористов.ФИО, | БазаТеррористов.ДатаРождения, | БазаТеррористов.Паспорт |ИЗ | ВременнаяТаблица КАК БазаТеррористов |ГДЕ | БазаТеррористов.Паспорт ПОДОБНО &Паспорт"; // Подготовка поисковых запросов (адреса) ЗапросАдреса = Новый Запрос; ЗапросАдреса.УстановитьПараметр("ВнешнийИсточник", Террористы); ЗапросАдреса.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗапросАдреса.Текст = "ВЫБРАТЬ | БазаТеррористов.ФИО, | БазаТеррористов.ДатаРождения, | БазаТеррористов.Адрес КАК Адрес |ПОМЕСТИТЬ ВременнаяТаблица |ИЗ | &ВнешнийИсточник КАК БазаТеррористов | |ИНДЕКСИРОВАТЬ ПО | Адрес"; Результат = ЗапросАдреса.Выполнить(); ЗапросАдреса.Текст = "ВЫБРАТЬ | БазаТеррористов.ФИО, | БазаТеррористов.ДатаРождения, | БазаТеррористов.Адрес КАК Адрес |ИЗ | ВременнаяТаблица КАК БазаТеррористов |ГДЕ | БазаТеррористов.Адрес ПОДОБНО &Адрес"; // Подготовка контактной информации МассивОбъектов = Проверяемые.ВыгрузитьКолонку("ЮрФизЛицо"); ТипыКИ = Новый Массив; ТипыКИ.Добавить(Перечисления.ТипыКонтактнойИнформации.Адрес); Если НЕ НеПроверятьСовпаденияАдресов Тогда АдресаПроверяемых = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(МассивОбъектов, ТипыКИ); Иначе АдресаПроверяемых = Неопределено; КонецЕсли; Для Каждого ТекЛицо Из Проверяемые Цикл Заметки = ""; // 1. Проверка на ФИО и ДатуРождения Поиск = Террористы.НайтиСтроки(Новый Структура("ФИО", ВРЕГ(СокрЛП(ТекЛицо.Наименование)))); Если Поиск.Количество() > 0 Тогда Если ТипЗнч(ТекЛицо.ЮрФизЛицо) = Тип("СправочникСсылка.ФизическиеЛица") Тогда Для Каждого ТекТеррорист Из Поиск Цикл Если ТекЛицо.ДатаРождения = ТекТеррорист.ДатаРождения И ЗначениеЗаполнено(ТекТеррорист.ДатаРождения) Тогда Заметки = Заметки + ?(Заметки <> "", ";" + Символы.ПС, "") + " совпадения по ФИО и дате рождения." ИначеЕсли НЕ ЗначениеЗаполнено(ТекТеррорист.ДатаРождения) Тогда Заметки = Заметки + ?(Заметки <> "", ";" + Символы.ПС, "") + " совпадения по ФИО с лицом в списке без даты рождения." //Иначе // Заметки = Заметки + ?(Заметки <> "", ";" + Символы.ПС, "") + " совпадения по ФИО с лицом в списке." КонецЕсли; КонецЦикла; Иначе Заметки = Заметки + ?(Заметки <> "", ";" + Символы.ПС, "") + " совпадения по наименованию." КонецЕсли; КонецЕсли; // 2. Проверка на совпадение паспорта Если ТипЗнч(ТекЛицо.ЮрФизЛицо) = Тип("СправочникСсылка.ФизическиеЛица") Тогда Серия = ТекЛицо.Серия; Номер = ТекЛицо.Номер; Если СтрДлина(Серия) > 0 И СтрДлина(Номер) > 0 Тогда СтрокаПоиска = "%" + Лев(Серия, 2) + Прав(Серия, 2) + "," + СокрЛП(Номер) + "%"; ЗапросПаспорта.Параметры.Вставить("Паспорт", СтрокаПоиска); Поиск = ЗапросПаспорта.Выполнить().Выгрузить(); Если Поиск.Количество() > 0 Тогда Заметки = Заметки + ?(Заметки <> "", ";" + Символы.ПС, "") + "совпадения по серии и номеру паспорта с (" + Поиск[0].ФИО + " / " + Поиск[0].Паспорт + ")"; КонецЕсли; КонецЕсли; КонецЕсли; Если НЕ НеПроверятьСовпаденияАдресов Тогда // 3. Проверка на совпадение адреса с адресом террориста АдресаПроверяемого = АдресаПроверяемых.Скопировать(Новый Структура("Объект", ТекЛицо.ЮрФизЛицо)); Для Каждого ТекАдрес Из АдресаПроверяемого Цикл Если НЕ ЗначениеЗаполнено(ТекАдрес.ЗначенияПолей) Тогда Продолжить; КонецЕсли; Попытка ЗначенияАдреса = УправлениеКонтактнойИнформацией.ПредыдущаяСтруктураКонтактнойИнформацииXML(ТекАдрес.ЗначенияПолей); Исключение // Адрес введен не корректно, не проверяем. Продолжить; КонецПопытки; Если ЗначенияАдреса.Город = "" И ЗначенияАдреса.НаселенныйПункт = "" И ЗначенияАдреса.Улица = "" Тогда // Адрес в произвольном формате и не раскладывается в шаблон поиска, или не заполнен Продолжить; КонецЕсли; СтрокаПоиска = ПолучитьСтрокуПоискаПоАдресу(ЗначенияАдреса); Если СтрокаПоиска = "%" Тогда // для произвольных адресов может быть пустой шаблон поиска Продолжить; КонецЕсли; ЗапросАдреса.УстановитьПараметр("Адрес", СтрокаПоиска); Поиск = ЗапросАдреса.Выполнить().Выгрузить(); Если Поиск.Количество() > 0 Тогда Заметки = Заметки + ?(Заметки <> "", ";" + Символы.ПС, "") + "совпадения по значащим частям адреса [" + ТекАдрес.Представление + "] (" + Поиск[0].ФИО + " / " + Поиск[0].Адрес + ")"; КонецЕсли; КонецЦикла; КонецЕсли; Если Заметки <> "" Тогда НС = РеестрСовпадений.Добавить(); НС.ЮрФизЛицо = ТекЛицо.ЮрФизЛицо; НС.Комментарий = Заметки; КонецЕсли; НС = РеестрПроверки.Добавить(); НС.ЮрФизЛицо = ТекЛицо.ЮрФизЛицо; НС.Клиент = ТекЛицо.ФлагКлиент; НС.Поручитель = ТекЛицо.ФлагПоручитель; НС.Залогодатель = ТекЛицо.ФлагЗалогодатель; Если ТекЛицо.ФлагКлиент = Ложь И ТекЛицо.ФлагПоручитель = Ложь И ТекЛицо.ФлагЗалогодатель = Ложь Тогда НС.Прочий = Истина; Иначе НС.Прочий = Ложь; КонецЕсли; НС.ВСписке = ?(Заметки <> "", Истина, Ложь); КонецЦикла; РезультатыПроверки = Новый Структура; РезультатыПроверки.Вставить("РеестрПроверки", РеестрПроверки); РезультатыПроверки.Вставить("РеестрСовпадений", РеестрСовпадений); СтруктураПараметров.АдресХранилищаРезультатовПроверки = ПоместитьВоВременноеХранилище(РезультатыПроверки, АдресХранилища); КонецПроцедуры #КонецОбласти |
|||
69
Вафель
10.05.18
✎
16:00
|
(67) без отображения тч?
|
|||
70
H A D G E H O G s
10.05.18
✎
16:01
|
(69) С отображением ДинСписка :-)
|
|||
71
ProxyInspector
10.05.18
✎
16:01
|
Я думаю, что ТабличнаяЧасть.НайтиСтроки() выгружает всю табличную часть в dbf, а потом уже ищет в этом файле и так 100 000 раз :)
|
|||
72
Вафель
10.05.18
✎
16:03
|
(71) найти строки делает простой цикл.
Причем если бы было просто найти, то в среднем цикл был бы в 2 раза короче |
|||
73
LeoKeyn
10.05.18
✎
16:06
|
(71) (72) Короче как и тут понимаю, тут обход всех строк по одной, а внутри обхода еще и цикл по совпадению с базой ТР. Не очень актуально даже на мой взгляд похоже. Я может и ошибаюсь но можно ведь и искать совпадения с помощью запроса нет?
|
|||
74
xXeNoNx
10.05.18
✎
16:07
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | БазаТеррористов.ФИО, | БазаТеррористов.ДатаРождения, | БазаТеррористов.Паспорт, | БазаТеррористов.Адрес, | БазаТеррористов.МестоРождения |ИЗ | РегистрСведений.БазаТеррористов КАК БазаТеррористов"; Террористы = Запрос.Выполнить().Выгрузить(); Используй сразу МВТ, зачем выгружаешь и снова загружаешь? |
|||
75
Вафель
10.05.18
✎
16:08
|
твой единственный вариант ускорения - параллельные потоки
|
|||
76
ProxyInspector
10.05.18
✎
16:12
|
Мы здесь пару лет назад обсуждали проблему нечеткого поиска по базе. Когда надо искать Типа Иванов,Иуанов,Иганов и так далее. Там добивались ускорения раз в 100 за счет запросов
|
|||
77
ProxyInspector
10.05.18
✎
16:17
|
Нашел веточку https://www.forum.mista.ru/topic.php?id=758311&page=2
|
|||
78
unregistered
10.05.18
✎
16:21
|
(23) > оборудование тут ни при чем
Скорее всего так, но случаи бывают разные. Может на том компе, где 4 часа заполняется документ, какие-то проблемы со стабильностью работы сети. Сами данные формируются на серваке за те же самые 20-30 минут, а потом 3,5 часа пытаются добраться до клиента. На меньших объемах (на маленьких документах и справочниках) этого не заметишь, а тут вот проявляется. Такое можно наблюдать при работе тонких клиентов в Wi-Fi сети, где сеть отличается нестабильностью (скачущая нагрузка, помехи и пр.). Проверить сеть можно простой командой ping с указанием большой величины пакета. Параметр -l 65500. Выполнить на проблемном компьютере команду ping -l 65500 SERVER1C где SERVER1C - имя или IP-адрес сервака 1С. Если результат покажет значительное количество потерянных пакетов или слишком длительное время ожидания, то проблема в сети (кабель ножкой стула придавили, карточка сетевая умирает). Если |
|||
79
unregistered
10.05.18
✎
16:25
|
Господа.
Обсуждение алгоритма заполнения соврешенно бессмысленно так как не отвечает на главный вопрос ветки - чем объясняется 12-кратная РАЗНИЦА в скорости заполнения документа на разных компах. Пусть ваш алгоритм хоть 100 раз идеально вылизан и оптимизирован - как это решит проблему с разницей? Разве что позволит не обращать на неё внимание - типа на "быстром" компьютере документ вместо 20-30 минут будет заполняться за 2-3 минуты, а на "медленном" при этом - 24-36 вместо 4-х часов. |
|||
80
ProxyInspector
10.05.18
✎
16:25
|
У (0) все делается на сервере, поэтому надо оптимизировать алгоритм
|
|||
81
ProxyInspector
10.05.18
✎
16:26
|
(79) При таком раскладе надо смотреть диск и сеть
|
|||
82
ProxyInspector
10.05.18
✎
16:26
|
Либо (0) что то не договаривает.
Надо запустить замер скорости и все станет ясно |
|||
83
Dmitry1c
10.05.18
✎
16:27
|
(82) он проверяет базу террористов.
что он может не договаривать? |
|||
84
LeoKeyn
10.05.18
✎
16:29
|
(79) Ну я тоже кроме как на сеть грешить больше ни на что не могу. Решил вот посоветоваться на всякий случай
|
|||
85
unregistered
10.05.18
✎
16:36
|
(84) > кроме как на сеть грешить больше ни на что не могу
Для этого и нужен замер производительности. Может после заполнения данных на сервере у вас выполняется какой-то код на клиенте. Какое-нибудь перечитывание формы с перезаполнением элементов формы. И тут выплывает какая-нибудь особенность - отличие "быстрого" компа от "медленного". Сеть проверьте командой Ping с параметром, как я описал в (78). |
|||
86
LeoKeyn
10.05.18
✎
16:39
|
(85) обязательно проверю, как получу доступ к компьютеру, спасибо. Отпишусь о результатах)
|
|||
87
DrShad
10.05.18
✎
16:40
|
к гадалке не ходи, что кроме сбора данных заполнения еще и форма перерисовывается
|
|||
88
mistеr
10.05.18
✎
17:00
|
(68) Трэш какой. Гоняют таблицы туда-сюда и в итоге все равно вручную делают то, что должен делать скуль.
|
|||
89
mistеr
10.05.18
✎
17:01
|
А никого не смутило (14) "проверка то это идет через некий портал"? Возможно, ТС все-таки не договаривает.
|
|||
90
unregistered
10.05.18
✎
17:16
|
(89) > Возможно, ТС все-таки не договаривает.
Конечно возможно. Но как это проверить? ;) Мест, где он может не договаривать полно. И "проверка через некий портал" - только лишь одно из многих. |
|||
91
alxxsssar
10.05.18
✎
17:46
|
(42) не получится. это загрузка из внешнего файла который присылают Органы
|
|||
92
alxxsssar
10.05.18
✎
17:48
|
(0) а конфигурации компьютеров одинаковые?
|
|||
93
Fram
10.05.18
✎
18:32
|
(91) мне кажется, ты не совсем правильно понял что имелось ввиду под "физически сократить"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |