Вход | Регистрация



База работает очень долго

База работает очень долго
Я
   LeoKeyn
 
10.05.18 - 15:13
Здравствуйте. База 1с работает на клиент серверном варианте УФ. У 
клиента стоит только управляемое приложение. Сервер администрирования
1с и SQL сервер располагаются на разных физических серверах.
Проблема в следующем:
Запускается обработка проверки базы террористов (конфигурация отраслевая не стандартная)
На одном компьютере данный документ заполняется за 20-30 минут, на другом за 4 часа. Выполняется и там и там на тонком клиенте.

Подскажите, пожалуйста, из-за чего такое может быть?
 
 
   Mankubus
 
1 - 10.05.18 - 15:15
(0) замер уже сделал? Профайлер смотрел?
   lodger
 
2 - 10.05.18 - 15:16
права у юзеров с ограничениями? а то мож у одного RLS, а у другого полные права...
   LeoKeyn
 
3 - 10.05.18 - 15:17
(2) У обоих полные права, даже тот же пользователь
   LeoKeyn
 
4 - 10.05.18 - 15:18
(1) Нет, не совсем знаю как это делать, не откажусь от методических материалов)
   DrShad
 
5 - 10.05.18 - 15:23
даже 20 минут это слишком
   vis_tmp
 
6 - 10.05.18 - 15:23
(0)Что за отрасль?
   ptiz
 
7 - 10.05.18 - 15:23
(0) Буду первый: 1С:Антитеррор ? :)
   H A D G E H O G s
 
8 - 10.05.18 - 15:23
Случаи разные бывают.
Я вот сталкивался с заполнением заказов из Ексель на ТонкомКлиенте.
Вот буквально - открывалась форма документа и менялись реквизиты шапки, вызываясь клиентские процедуры смены реквизита.
Работало сутками.

Думаю, у автора может быть подобное.
   LeoKeyn
 
9 - 10.05.18 - 15:24
(5) Ну документ очень большой получается
   LeoKeyn
 
10 - 10.05.18 - 15:24
(7) (6) Ак кредит
 
 Рекламное место пустует
   piter3
 
11 - 10.05.18 - 15:24
(9) Большой это сколько?
   LeoKeyn
 
12 - 10.05.18 - 15:25
(8) а как исправил, если не секрет?)
   ProxyInspector
 
13 - 10.05.18 - 15:25
В случае с 1с, следует писать "так называемые Управляемые Формы" и "так называемый серверный вариант". По моим наблюдениям, при определенных условиях, объем ресурсов, потребляемый УФ может существенно превышать объем ресурсов, потребляемых толстым клиентом. Соответственно
1. надо почистить кеш на клиентских компьютерах
2 Проверить скорость локальных дисков
3 Проверить скорость локальной сети
   Ну и вообще говоря УФ не предназначена для работы с большими документами
   LeoKeyn
 
14 - 10.05.18 - 15:26
(11) 52603 записи, плюс проверка то это идет через некий портал как я понимаю
   unregistered
 
15 - 10.05.18 - 15:27
(0) > из-за чего такое может быть?

Да из-за чего угодно. Начиная с того, что в первом случае с базой работал один единственный пользователь, а во втором - одновременно сидело 100 человек и интенсивно формировали какие-нибудь отчеты по базе.

При абсолютно равных или хотя бы сопоставимых условиях (одинаковые права пользователей, одинаковые параметры заполнения, одинаковая нагрузка на сервера СУБД и 1С) описанной тобой разницы (в 12 раз!!!) просто не может быть.
Даже если предположить проблемы с сетью в момент передачи результата с сервера на клиента, то разница не должна быть такой. Хотя бог его знает что у вас там за алгоритм.... Может вы там результат гоняете в цикле по каждой строчке с клиента на сервер и обратно...

Я вообще с трудом могу себе представить что такое может заполняться 20-30 минут. Не говоря уже о 4 часах....
Начните с замера производительности.
   LeoKeyn
 
16 - 10.05.18 - 15:28
(13)
1. Кеш чисты, клиенту только поставили 1с и работает он пока только с этим документом;
2. С этим тоже все в порядке машина новая;
3. Скорость локалки 100мб.
   DrShad
 
17 - 10.05.18 - 15:29
(16) убейте того кто писал алгоритм заполнения
   LeoKeyn
 
18 - 10.05.18 - 15:30
(17) получается с этим нужно обращаться к разработчикам или искать проблему в оборудовании?
   ProxyInspector
 
19 - 10.05.18 - 15:31
(15) Что тут представлять? Берешь УТ-3. Документ УстановкаЦенНоменклатуры на 50 тыс позиций и (0) покажется вам сказкой
   H A D G E H O G s
 
20 - 10.05.18 - 15:31
(12) Переписал все на серверную обработку.
Да, тяжело, но 5000 строк заказа вместо суток, стало заполняться за 16 секунд. Считая инициализацию libreofice
   piter3
 
21 - 10.05.18 - 15:31
(18) монетку кинь.И там и там.Код покажи уже
   H A D G E H O G s
 
22 - 10.05.18 - 15:32
(13) Проблема производительности Тонких форм в солидоле.
В голове у критиканов, ну и, частично, у разработчиков типовых.
   DrShad
 
23 - 10.05.18 - 15:32
(18) оборудование тут ни при чем
   H A D G E H O G s
 
24 - 10.05.18 - 15:33
(19) Вы же понимаете, в чем там проблема и можете нам рассказать, ведь так?
   Любопытная
 
25 - 10.05.18 - 15:33
(18) Замер производительности сделайте для начала и посмотрите, на чем умирает система.
   ProxyInspector
 
26 - 10.05.18 - 15:33
(22) Проблемы у разработчиков Типовых
   H A D G E H O G s
 
27 - 10.05.18 - 15:35
(26) Ну так если руки крюки у разрабов типовых, че тогда пургу на ТонкийКлиент гоним?
При желании, можно обойти ограничение на 99 тыс строк и открывать 300тыс строковый документ за пару секунд.
   ProxyInspector
 
28 - 10.05.18 - 15:35
(24) Конечно понятно, в чем проблема УТ3. И там реально раз в 100 можно ускорить, но все равно работать не возможно
   H A D G E H O G s
 
29 - 10.05.18 - 15:36
(28) "в чем проблема УТ3"

В чем? В чем конкретно проблема УТЗ?
   H A D G E H O G s
 
30 - 10.05.18 - 15:36
(28) Конкретно УстановкаЦенНоменклатуры
   ProxyInspector
 
31 - 10.05.18 - 15:36
Для больших документов на УФ две проблемы - разработчики и сами УФ.
   H A D G E H O G s
 
32 - 10.05.18 - 15:37
(31) Это понятно, но хочется подробностей.
Что приводит к тормозам УстановкаЦенНоменклатуры ?
   DrShad
 
33 - 10.05.18 - 15:38
казалось бы, причем тут большой или нет документ и УФ?
 
 
   H A D G E H O G s
 
34 - 10.05.18 - 15:38
(33) Хароший вопрос!
   DrShad
 
35 - 10.05.18 - 15:38
(32) +1
   H A D G E H O G s
 
36 - 10.05.18 - 15:38
На который ответит Proxy, ведь он не криворукий разраб из 1С.
   DrShad
 
37 - 10.05.18 - 15:39
(36) а откуда вообще возникла УТ3? это же украинская конфа
   H A D G E H O G s
 
38 - 10.05.18 - 15:40
Он, конечно, сейчас открывает конфигуратор с УТ, но это - долго, комп скорее всего стар, без SSD или антивирус злобствует.

Но мы подождем.
   H A D G E H O G s
 
39 - 10.05.18 - 15:40
(37) Я так понял, что это УТ11.3
   ProxyInspector
 
40 - 10.05.18 - 15:41
Да
   DrShad
 
41 - 10.05.18 - 15:41
(39) возможно
   MaxS
 
42 - 10.05.18 - 15:41
(17) Ещё как вариант - физически сократить количество террористов, потом пометить на удаление в 1С, исключить из учета и база будет работать быстрее.
   DrShad
 
43 - 10.05.18 - 15:41
(40) хвала великим яйцам, хоть не Украина виновата
   H A D G E H O G s
 
44 - 10.05.18 - 15:42
(43) Еще ничего не ясно.
   DrShad
 
45 - 10.05.18 - 15:42
(44) ну да, всяко может статься )))
   H A D G E H O G s
 
46 - 10.05.18 - 15:42
Сохраняйте спокойствие, приготовьте QR-татуировки к сканированию.
   unregistered
 
47 - 10.05.18 - 15:43
(14) > 52603 записи

И что? У меня книга покупок в типовой бухне ~28000 записей заполняется несколько минут (может и меньше - никогда не замерял)... При этом и сервера, и клиенты, и сеть - не какие-то супер-пупер-мегакрутые (скорее даже наоборот).
   DrShad
 
48 - 10.05.18 - 15:43
(46) чьорт побьери
а если я свою дома забыл?
   H A D G E H O G s
 
49 - 10.05.18 - 15:43
(48) Руку?
 
 Рекламное место пустует
   DrShad
 
50 - 10.05.18 - 15:44
(49) QR-татуировку
   H A D G E H O G s
 
51 - 10.05.18 - 15:44
Ты еще голову дома забуть, с NFR-меткой! Как мы вас учитывать будем? Вот как с вами тоталитаризм строить?
   H A D G E H O G s
 
52 - 10.05.18 - 15:45
Ладно, пашутили...
Что там у ProxyInspectora? Открылась форма документа? Готовы ответы на сакральные вопросы?
   worker-good
 
53 - 10.05.18 - 15:47
(18) Если конфигурация снята с поддержки, то вполне возможны проблемы с блокировками транзакций, которые создал неумелый разработчик. Найдите исходную конфигурацию не снятую с поддержки и посмотрите как там формируется данный документ
   Вафель
 
54 - 10.05.18 - 15:49
конечно 52 тыщи коннектов к серверу через инет явно быстр не будет
   ProxyInspector
 
55 - 10.05.18 - 15:50
1. Ут11 разработчики попытались повторить алгоритм УТ, когда из табличной части вида ТипЦен-Цена пытаются формировать таблицу типа ТипЦен1-Цена , ТИпЦен2-Цена , ТИпЦен3-цена. И при изменении любого реквизита вся эта каша гоняется на сервер и обратно.
2. При проведении проверка на дублирование строк производится тупым перебором строк и для каждой строки вызывается ТабличнаяЧасть.НайтиСтроки()
  В результате скорость работы падает как квадрат количества строк. Если документ на 100 строк от отрывается/проводится за 1 сек, 1000 строк за 100 сек, 10 000 строк за несколько минут
   Вафель
 
56 - 10.05.18 - 15:52
неужели 1сники не смогли гонять диффы вместо полных данных???
вопрос риторический
   ProxyInspector
 
57 - 10.05.18 - 15:53
Я в свое время убрал все основные ошибки, но все равно комфортной работы с большими документами на УФ не получилось. И от нее пришлось отказаться в пользу толстого клиента.
   ProxyInspector
 
58 - 10.05.18 - 15:54
Что касается (0), то надо исправить алгоритм заполнения документа и ускорение раз в 100 вполне можно добиться
   H A D G E H O G s
 
59 - 10.05.18 - 15:56
(55) Ну слава яйцам. Но на самом деле, это только то, что ты смог увидеть через замер.
Проблема - глубже - называется она ДеревоЦен:ДеревоЗначений, решить которую можно, только перенеся ТипЦен в шапку документа.
   ProxyInspector
 
60 - 10.05.18 - 15:57
Самый простой способ - заполнять таблицу значений, а потом ее грузить в табличную часть. Основные тормоза, как мне кажется - это все те же ТабличнаяЧасть.НайтиСтроки()
   H A D G E H O G s
 
61 - 10.05.18 - 15:57
И редактируя цены через табличную часть.
   Вафель
 
62 - 10.05.18 - 15:57
(59) предлагаешь на каждый тип цен по отдельному документу заводить?
А вот в толстых формах ...
   H A D G E H O G s
 
63 - 10.05.18 - 15:58
(60) Нихрена.
Таблица значений ставит колом сервер 1С на от 10К-20K строк.
   H A D G E H O G s
 
64 - 10.05.18 - 15:58
(62) "А вот в толстых формах .."

Даа, были времена.
   Вафель
 
65 - 10.05.18 - 15:58
(63) но найти строки то на тз явно быстрее ибо индекс
   ProxyInspector
 
66 - 10.05.18 - 15:59
(59) Эта первая проблема - разработчики. Вторая проблема - УФ. Остается. Ты можешь попробовать поработать с обычным документом на 100 тыс строк. Без всяких обработчиков. И убедиться, что работать с ним не возможно.
   H A D G E H O G s
 
67 - 10.05.18 - 16:00
(66) Я работаю с документом в 300 тыс. строк со всякими обработчиками и норм.
   LeoKeyn
 
68 - 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) без отображения тч?
   H A D G E H O G s
 
70 - 10.05.18 - 16:01
(69) С отображением ДинСписка :-)
   ProxyInspector
 
71 - 10.05.18 - 16:01
Я думаю, что ТабличнаяЧасть.НайтиСтроки() выгружает всю табличную часть в dbf, а потом уже ищет в этом файле и так 100 000 раз :)
   Вафель
 
72 - 10.05.18 - 16:03
(71) найти строки делает простой цикл.
Причем если бы было просто найти, то в среднем цикл был бы в 2 раза короче
   LeoKeyn
 
73 - 10.05.18 - 16:06
(71) (72) Короче как и  тут понимаю, тут обход всех строк по одной, а внутри обхода еще и цикл по совпадению с базой ТР. Не очень актуально даже на мой взгляд похоже. Я может и ошибаюсь но можно ведь и искать совпадения с помощью запроса нет?
   xXeNoNx
 
74 - 10.05.18 - 16:07
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    БазаТеррористов.ФИО,
                   |    БазаТеррористов.ДатаРождения,
                   |    БазаТеррористов.Паспорт,
                   |    БазаТеррористов.Адрес,
                   |    БазаТеррористов.МестоРождения
                   |ИЗ
                   |    РегистрСведений.БазаТеррористов КАК БазаТеррористов";
    Террористы = Запрос.Выполнить().Выгрузить();

Используй сразу МВТ, зачем выгружаешь и снова загружаешь?
   Вафель
 
75 - 10.05.18 - 16:08
твой единственный вариант ускорения - параллельные потоки
   ProxyInspector
 
76 - 10.05.18 - 16:12
Мы здесь пару лет назад обсуждали проблему нечеткого поиска по базе. Когда надо искать Типа Иванов,Иуанов,Иганов и так далее. Там добивались ускорения раз в 100 за счет запросов
   ProxyInspector
 
77 - 10.05.18 - 16:17
   unregistered
 
78 - 10.05.18 - 16:21
(23) > оборудование тут ни при чем

Скорее всего так, но случаи бывают разные.
Может на том компе, где 4 часа заполняется документ, какие-то проблемы со стабильностью работы сети. Сами данные формируются на серваке за те же самые 20-30 минут, а потом 3,5 часа пытаются добраться до клиента. На меньших объемах (на маленьких документах и справочниках) этого не заметишь, а тут вот проявляется.
Такое можно наблюдать при работе тонких клиентов в Wi-Fi сети, где сеть отличается нестабильностью (скачущая нагрузка, помехи и пр.).

Проверить сеть можно простой командой ping с указанием большой величины пакета. Параметр -l 65500. Выполнить на проблемном компьютере команду

ping -l 65500 SERVER1C

где SERVER1C - имя или IP-адрес сервака 1С. Если результат покажет значительное количество потерянных пакетов или слишком длительное время ожидания, то проблема в сети (кабель ножкой стула придавили, карточка сетевая умирает).
Если
   unregistered
 
79 - 10.05.18 - 16:25
Господа.

Обсуждение алгоритма заполнения соврешенно бессмысленно так как не отвечает на главный вопрос ветки - чем объясняется 12-кратная РАЗНИЦА в скорости заполнения документа на разных компах.

Пусть ваш алгоритм хоть 100 раз идеально вылизан и оптимизирован - как это решит проблему с разницей? Разве что позволит не обращать на неё внимание - типа на "быстром" компьютере документ вместо 20-30 минут будет заполняться за 2-3 минуты, а на "медленном" при этом - 24-36 вместо 4-х часов.
   ProxyInspector
 
80 - 10.05.18 - 16:25
У (0) все делается на сервере, поэтому надо оптимизировать алгоритм
   ProxyInspector
 
81 - 10.05.18 - 16:26
(79) При таком раскладе надо смотреть диск и сеть
   ProxyInspector
 
82 - 10.05.18 - 16:26
Либо (0) что то не договаривает.
 Надо запустить замер скорости и все станет ясно
   Dmitry1c
 
83 - 10.05.18 - 16:27
(82) он проверяет базу террористов.
что он может не договаривать?
   LeoKeyn
 
84 - 10.05.18 - 16:29
(79) Ну я тоже кроме как на сеть грешить больше ни на что не могу. Решил вот посоветоваться на всякий случай
   unregistered
 
85 - 10.05.18 - 16:36
(84) > кроме как на сеть грешить больше ни на что не могу

Для этого и нужен замер производительности.
Может после заполнения данных на сервере у вас выполняется какой-то код на клиенте. Какое-нибудь перечитывание формы с перезаполнением элементов формы. И тут выплывает какая-нибудь особенность - отличие "быстрого" компа от "медленного".

Сеть проверьте командой Ping с параметром, как я описал в (78).
   LeoKeyn
 
86 - 10.05.18 - 16:39
(85) обязательно проверю, как получу доступ к компьютеру, спасибо. Отпишусь о результатах)
   DrShad
 
87 - 10.05.18 - 16:40
к гадалке не ходи, что кроме сбора данных заполнения еще и форма перерисовывается
   mistеr
 
88 - 10.05.18 - 17:00
(68) Трэш какой. Гоняют таблицы туда-сюда и в итоге все равно вручную делают то, что должен делать скуль.
   mistеr
 
89 - 10.05.18 - 17:01
А никого не смутило (14) "проверка то это идет через некий портал"? Возможно, ТС все-таки не договаривает.
   unregistered
 
90 - 10.05.18 - 17:16
(89) > Возможно, ТС все-таки не договаривает.


Конечно возможно. Но как это проверить? ;)
Мест, где он может не договаривать полно. И "проверка через некий портал" - только лишь одно из многих.
   alxxsssar
 
91 - 10.05.18 - 17:46
(42) не получится. это загрузка из внешнего файла который присылают Органы
   alxxsssar
 
92 - 10.05.18 - 17:48
(0) а конфигурации компьютеров одинаковые?
   Fram
 
93 - 10.05.18 - 18:32
(91) мне кажется, ты не совсем правильно понял что имелось ввиду под "физически сократить"


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует