|
Внутренние соединения - оставить только то чего нет в двух таблицах. | ☑ | ||
---|---|---|---|---|
0
Maniac
25.03.17
✎
11:12
|
Как известно запросы в 1С содержат разные соединения для разных вещей.
В частности внутреннее соединение оставит из двух таблиц те строки которые есть и в первой и во второй. А вот стоит задача как сделать чтобы остались строки из первой которых нет во второй по трем ключам. Почему то совместно не хотят работать правила когда одно поле равно, а другое не равно. |
|||
9
Maniac
25.03.17
✎
11:16
|
А надо чтобы было нечто такое
| ПО ВременнаяТаблицаНоменклатуры2.Номенклатура = СпрНоменклатураДопРекв.Ссылка | И ВременнаяТаблицаНоменклатуры2.Свойство <> СпрНоменклатураДопРекв.Свойство | И ВременнаяТаблицаНоменклатуры2.Значение <> СпрНоменклатураДопРекв.Значение"; |
|||
10
Maniac
25.03.17
✎
11:17
|
те проверка на наличия свойства - так как такой строки может не быть в табличной части доп свойств.
Или если оно есть, тогда проверка на значение. |
|||
11
Maniac
25.03.17
✎
11:18
|
Те может быть две ситуации
Это ВременнаяТаблицаНоменклатуры2.Свойство = СпрНоменклатураДопРекв.Свойство И ВременнаяТаблицаНоменклатуры2.Значение <> СпрНоменклатураДопРекв.Значение и просто ВременнаяТаблицаНоменклатуры2.Свойство <> СпрНоменклатураДопРекв.Свойство Пробовал или вставлять - вообще бред выдает. |
|||
12
jsmith82
25.03.17
✎
11:18
|
Не надо никаких <>
Обычное левое с is null |
|||
13
Maniac
25.03.17
✎
11:19
|
А еще также есть такая фигня что Значение в одной это текст.
А Значение в другой составной тип. Так вот чтобы еще значения сравнивались вне зависимости от всего - строками |
|||
14
jsmith82
25.03.17
✎
11:20
|
А если левое выдает пустую таблицу - значит, левая таблица сама пуста
|
|||
15
zak555
25.03.17
✎
11:20
|
(9) два is null в где можешь добавить
|
|||
16
RomanYS
25.03.17
✎
11:20
|
Сформулируй словами что тебе надо и что у тебя есть. Твои попытки уведут тему в никуда.
|
|||
17
jsmith82
25.03.17
✎
11:22
|
(15) Излишне. Одного хватит. Тут же конъюнкция.
|
|||
18
zak555
25.03.17
✎
11:25
|
(16) Радченко ему нужен, но денег нет
|
|||
19
Maniac
25.03.17
✎
11:25
|
(16) есть таблица
таблица в которой есть все свойства и значения номенклатуры, которые есть в базе и которых нет нужно получить только те строки которых нет в базе. то чего нет считается: а) есть такое свойство - но значение другое б) просто нет даже такого свойства |
|||
20
jsmith82
25.03.17
✎
11:28
|
а) есть такое свойство - но значение другое
по ссылка и свойство где не Т2.значение is null И Т1.Значение <> Т1.Значение б) просто нет даже такого свойства по ссылка и свойство где Т2.Значние is null |
|||
21
Maniac
25.03.17
✎
11:30
|
(20) да только надо чтобы оба условия (исключения) были сразу.
по свойству легко работает А вот когда еще надо комбинацию добавить уже нет |
|||
22
jsmith82
25.03.17
✎
11:32
|
(21) Третий ключ отсеет нужную информацию. Должно быть два ключа
|
|||
23
RomanYS
25.03.17
✎
11:35
|
(21)
левое СОЕДИНЕНИЕ Т2 ПО Т1.Номенклатура = Т2.Ссылка И Т1.Свойство = Т2.Свойство где Т1.Значение <> ЕстьNULL(Т2.Значение, &КакоеТоНереальноеЗначение) |
|||
24
Maniac
25.03.17
✎
11:36
|
(23) не работает это так как у части позиций Свойства нет
И Т1.Свойство = Т2.Свойство |
|||
25
RomanYS
25.03.17
✎
11:37
|
(24) поэтому и левое
|
|||
26
Maniac
25.03.17
✎
11:38
|
Как отдельно отбирать - все работает.
Либо свойства такого нет, либо значение другое - легко. А мне надо чтобы было и свойство есть - значение другое. И свойства НЕТ |
|||
27
Maniac
25.03.17
✎
11:40
|
С левым вообще ГДЕ комбинации не работают
в ГДЕ при левом соединении нельзя делать комбинации условий из двух таблиц. Данное условие может срабатывает не на результат а на фильрацию соединяемых таблиц если ГДЕ - тогда надо вложенный запроса фигачить. внутри соединять все. А потом во втором запросе уже можно будет накладывать где |
|||
28
Maniac
25.03.17
✎
11:41
|
я не мог в ГДЕ указать одну таблицу -с условием другой таблицы.
СОединения еще фактически не произошло и ГДЕ не берет значения в условии Или вы не в курсе этого |
|||
29
RomanYS
25.03.17
✎
11:42
|
(27) для этого там ЕстьNULL в ГДЕ.
Ты проверь сначала. |
|||
30
Maniac
25.03.17
✎
11:43
|
где только сработает если я добавлю в первую колонку колонки из второй. соединю их; Получу некую общую таблицу с добавленными данными. а ужде потом по ней могу где сделать на NULL или что то пустое.
До тех пор ГДЕ не будет работать с условие Т1 и Т2 одновременно |
|||
31
RomanYS
25.03.17
✎
11:44
|
..ля, как ты деньги 1с умудряешься зарабатывать?
Найми программиста. |
|||
32
Maniac
25.03.17
✎
11:44
|
Сейчас и без ГДЕ срабатывает либо одно либо второе.
А чтобы вместе - никак |
|||
33
Maniac
25.03.17
✎
11:45
|
(31) Я так понимаю что ты советуешь книгу/программиста, так как сам тоже не знаешь как это сделать
|
|||
34
Maniac
25.03.17
✎
11:46
|
Еще раз говорю
ПО Т1.Номенклатура = Т2.Ссылка И Т1.Свойство = Т2.Свойство где Т1.Значение <> ЕстьNULL(Т2.Значение, &КакоеТоНереальноеЗначение) - это отсеет одну часть, но не отсеет там где И Т1.Свойство <> Т2.Свойство |
|||
35
RomanYS
25.03.17
✎
11:49
|
(34)
"- это отсеет одну часть, но не отсеет там где И Т1.Свойство <> Т2.Свойство" Зачем тебе это отсеивать? По какому пункту из (19) это нужно сделать? |
|||
36
zak555
25.03.17
✎
11:55
|
(19) два правых соединениям + is null
|
|||
37
Maniac
25.03.17
✎
11:55
|
(35) блин потому что во второй таблице
Есть три колонки в одной и другоу таблице Товар1 пусто пусто Номенклатура существует в любом случае. те запись с точки зрения в Т2 существует по любому. |
|||
38
RomanYS
25.03.17
✎
11:58
|
(37) ты в (19) пишешь
"таблица в которой есть все свойства и значения номенклатуры" А теперь как я тебя понял такой таблицы нет. |
|||
39
Maniac
25.03.17
✎
11:58
|
В первой таблице Свойство - заполнено без исключения у всех товаров.
А во второй всегда будут строки с номенклатурой. Но свойства как могут быть так могут и не быть. и в случае если его нет то Т1.Свойство = Т2.Свойство уже не соединит такие строки где из Т1 - они все присутствуют -а Т2 будут пусты |
|||
40
Maniac
25.03.17
✎
12:02
|
(38)
ок поясню так- в Т1 полностью заполненная таблица до изменния в базе. В ней нет пустых значений - никаких. Она полностью заполнена и представляет собой как и новые обьекты (но не номенклатуру) так и те обьекты где значение конкретного свойства отличается. Те во второй - у номенклатуры, есть такая табличная часть - Дополнительные свойства. Так вот у этого конкретного товара, вообще не может быть сткройи со свойством, которое указано для тего в Т1 либо есть такая строка =- но значение другое, чем в первой таблице Это двойное условие |
|||
41
RomanYS
25.03.17
✎
12:02
|
(39) оно тебе покажет строку из первой таблицы. Куда ты хочешь присоединять строки с пустым свойством?
|
|||
42
RomanYS
25.03.17
✎
12:04
|
(40) Т1.Значение <> ЕстьNULL(Т2.Значение, &КакоеТоНереальноеЗначение)
Это и есть "двойное условие": при отсутствии записи во второй таблице вернет ИТИНА, при наличии превратится в Т1.Значение <> Т2.Значение |
|||
43
RomanYS
25.03.17
✎
12:06
|
(40) и нет у тебя в ТЧ Дополнительные свойства никаких пустых строк. Они либо есть, либо нет. Третий вариант: ты уже накосячил и надо сначала почистить.
|
|||
44
Maniac
25.03.17
✎
12:07
|
(41) да верно мне надо таблица где во второй пустое свойство
НО и строки, где свойство =. И значение <> |
|||
45
Maniac
25.03.17
✎
12:08
|
(42)
во второй таблице может быть что значение такое ЕСТЬ но у другого свойства |
|||
46
Maniac
25.03.17
✎
12:10
|
(43) элементарно.
Я загружаю свойство номенклатуры допустим 5 штук, У одного товара их нет, у другого их 3, у третьего их 5 Если нет - то мне надо все 5 строк загрузить. Если 3 - догрузить 2 новых. Если 5 то ничего не делать. а если ЕСТЬ 5 - но для одного значение другое - то изменить |
|||
47
RomanYS
25.03.17
✎
12:13
|
(45) И?
|
|||
48
Maniac
25.03.17
✎
12:15
|
Напрмиер загружаю 5 свойств
Товар Свойство1 Значение1 Товар Свойство2 Значение2 Товар Свойство3 Значение3 Товар Свойство4 Значение3 Товар Свойство5 Значение5 в базе имею Товар Свойство1 Значение1 Товар Свойство2 Значение2 Товар Свойство3 Значение2 Те в базе в двух строках у двух свойств одно и тоже значение Также и в таблице 1 - Значение3 может быть одинаковое у двух разных свойств РЕЗУЛЬТАТ Товар Свойство3 Значение3 Товар Свойство4 Значение3 Товар Свойство5 Значение5 |
|||
49
RomanYS
25.03.17
✎
12:17
|
(48) всё верно - решение в (23)
|
|||
50
Maniac
25.03.17
✎
12:19
|
Ок запускаю сейчас скажу
|
|||
51
Maniac
25.03.17
✎
12:22
|
НИЧЕГО не произошло вообще. Выдалась такая же таблица1 как и была. полностью
|
|||
52
Maniac
25.03.17
✎
12:22
|
ЕстьNULL(Т2.Значение, &КакоеТоНереальноеЗначение)
Сработало в исключение. соответственно получилось как будто вообще всех этих строк нет во второй таблице И первая осталась такая же |
|||
53
RomanYS
25.03.17
✎
12:28
|
(52) запрос покажи
|
|||
54
Maniac
25.03.17
✎
12:28
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ | ВременнаяТаблицаНоменклатуры2.КлючСтроки КАК КлючСтроки, | ВременнаяТаблицаНоменклатуры2.ВидНоменклатуры КАК ВидНоменклатуры, | ВременнаяТаблицаНоменклатуры2.НаборСвойств КАК НаборСвойств, | ВременнаяТаблицаНоменклатуры2.Свойство КАК Свойство, | ВременнаяТаблицаНоменклатуры2.Значение КАК Значение, | ВременнаяТаблицаНоменклатуры2.Индивидуальные КАК Индивидуальные, | ВременнаяТаблицаНоменклатуры2.ТипЗначенияТекст КАК ТипЗначенияТекст, | ВременнаяТаблицаНоменклатуры2.АртикулСсылка КАК АртикулСсылка, | ВременнаяТаблицаНоменклатуры2.Номенклатура КАК Номенклатура, | ВременнаяТаблицаНоменклатуры2.ЗначениеСвойства1С КАК ЗначениеСвойства1С |ИЗ | ВременнаяТаблицаНоменклатуры2 КАК ВременнаяТаблицаНоменклатуры2 | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК СпрНоменклатураДопРекв | ПО ВременнаяТаблицаНоменклатуры2.Номенклатура = СпрНоменклатураДопРекв.Ссылка | И ВременнаяТаблицаНоменклатуры2.Свойство = СпрНоменклатураДопРекв.Свойство |ГДЕ | ВременнаяТаблицаНоменклатуры2.Значение <> ЕСТЬNULL(СпрНоменклатураДопРекв.Значение, 0)"; |
|||
55
Maniac
25.03.17
✎
12:29
|
Я вам еще раз говорю)) вы все как Фома неверующий
нельзя ГДЕ использовать при соединениях и делать условие в котором есть что то из соединяемых таблиц |
|||
56
RomanYS
25.03.17
✎
12:33
|
(55) Можешь говорить сколько угодно, если ты чего-то не понимаешь, то от повторение чуши ("слышал звон, дан не знает где он") у тебя нигде не прибавится.
(54) запрос нормальный, косяк у тебя в данных скорей всего |
|||
57
Maniac
25.03.17
✎
12:35
|
ГДЕ срабатывает на
| ВременнаяТаблицаНоменклатуры2 КАК ВременнаяТаблицаНоменклатуры2 Но не берет данные | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК СпрНоменклатураДопРекв В соединениях условия между разными таблицами накладываются в блоке ПО Но так как левое соединение - то оно не подходит. Тут ВНУТРЕНЕЕ должно быть. с условиями в ПО Но так как два условия которые конфлитктуют - то такое не наложить. Причется делать внутренний запрос где получать сначала скрещенную таблицу с добавлением колонок которые будут дополнять два условия вечерез ВЫБОР КАК А уже потом делать условия по ней |
|||
58
Maniac
25.03.17
✎
12:35
|
(56) лол. ну вот уже данные не те))
Выходи в скайп - дам доступ через амми. Покажу тебе данные. Сделаешь рабочим - 2500 твои |
|||
59
RomanYS
25.03.17
✎
12:47
|
Кидай контакты в почту, сейчас ноутбук подключу
|
|||
60
Мыш
25.03.17
✎
12:55
|
(59) Не связывайся с ним, он же маньяк )))
|
|||
61
RomanYS
25.03.17
✎
13:04
|
(48) https://cloud.mail.ru/public/HfBx/4Wc4C4WCV
ВЫБРАТЬ "Товар" КАК Товар, "Свойство1" КАК Свойство, "Значение1" КАК Значение ПОМЕСТИТЬ Т1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Товар", "Свойство2", "Значение2" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Товар", "Свойство3", "Значение3" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Товар", "Свойство4", "Значение3" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Товар", "Свойство5", "Значение5" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Товар" КАК Товар, "Свойство1" КАК Свойство, "Значение1" КАК Значение ПОМЕСТИТЬ Т2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Товар", "Свойство2", "Значение2" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Товар", "Свойство3", "Значение2" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т1.Товар КАК Товар, Т1.Свойство КАК Свойство, Т1.Значение КАК Значение ИЗ Т1 КАК Т1 ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК Т2 ПО Т1.Товар = Т2.Товар И Т1.Свойство = Т2.Свойство где Т1.Значение <> ЕстьNULL(Т2.Значение, &КакоеТоНереальноеЗначение) |
|||
62
RomanYS
25.03.17
✎
13:11
|
(60) по повадкам больше на дятла похож
|
|||
63
Maniac
25.03.17
✎
13:14
|
(62) чувак
добавь у себя к таблице2 вот такую строку ВЫБРАТЬ "Товар", НЕОПРЕДЕЛЕНО, НЕОПРЕДЕЛЕНО |
|||
64
RomanYS
25.03.17
✎
13:16
|
(63) там всё открыто.
Результат не поменяется. |
|||
65
Maniac
25.03.17
✎
13:20
|
Опять теория - не поменяется))
Ты так уверен что ничего не поменяется но реально проверить не хочешь |
|||
66
RomanYS
25.03.17
✎
13:24
|
||||
67
RomanYS
25.03.17
✎
13:33
|
(65) Нужна помощь, пиши на почту.
Лечить дятлов на форуме контрпродуктивно. Евгений, ничего личного, это лишь мои ощущения от данной ветки. |
|||
68
Maniac
25.03.17
✎
14:06
|
Да Рома подключился - разобрались.
Условие заработало как надо. Я допустил ошибку с типами значений - сравнивал разные типы. Вернее у меня и там и там строка. Но у одной колнки смешанный тип несмотря на строку. Не ту колонку короче ставил в условие (хотя вроде бы они имели строковое значение) В итоге разобрались. Плюс Рома дал рекомендацию как обработать типы и предвариательно проверить по типам и заполнить по типам. Так как в случае сравнения строк - скорость будет не лучшей. В общем жду номер карты. На бутылку хорошего коньяка как и говорил 2500. |
|||
69
Мыш
25.03.17
✎
14:21
|
(67) Оно того стоило, вправлять мозг вот таким самоуверенным в своём невежестве? )
|
|||
70
Maniac
25.03.17
✎
14:29
|
(69) ты счастлив наверное что меня невежей назвал?)))
|
|||
71
Мыш
25.03.17
✎
14:37
|
(70) Нет, это меня печалит.
|
|||
72
Maniac
25.03.17
✎
14:45
|
(71) тебя печалит обычный рабочий процесс любого программиста на свете?)
|
|||
73
Maniac
25.03.17
✎
14:49
|
Меня почему то другое печалит.
Печалит какого х в типовой наделали х со справочниками. регистрами и прочими делами. Которые просто тормозят любую работу с базой данных. понаделали таблиц с доп реквизитами, регистров и прочего. с доп табл частями вообще х. надо в номенклатуру лесть и при изменении рыскать по табличной части. записывать номенклатуру. И вот когда приходит чел и говорит 600 000 товаров. Плюс 15 свойств. |
|||
74
Мыш
25.03.17
✎
15:05
|
(72) Меня печалит маниакальное упорство. Неумение слышать.
(73) Это сделано специально. Заговор. |
|||
75
Лефмихалыч
25.03.17
✎
15:33
|
(0) отлично все работает, просто А <> В в запросе вернет тоже ложь, если В - это null.
Нужно, во-первых, левое соединение, во-вторых, все условия в "ПО" должны быть "=", в-третьих, в ГДЕ должно быть ВтораяТаблица.Ссылка есть null. |
|||
76
RomanYS
25.03.17
✎
16:09
|
(69) ХЗ, трудно оценить.
С одной стороны свет всё-таки победил тьму, с другой стороны от процесса много отрицательных эмоций. Почему ТС так ведет себя здесь для меня загадка, при общении голосом человек вполне адекватен и воспринимает информацию. Может он такой только на форуме, а может просто задолбался с этой задачей. (73) всё там нормально. Насколько это возможно для универсальных механизмов. По работе с ПВХ у тебя похоже тоже пробел как и с соединениями. А так идея решать эту задачу минимальным количеством запросом - единственно правильная. Удивительно, что столько лет в этой теме, ты только сейчас пришел к этому. Удачи. (74) "маниакальное упорство" похоже главный компонент успеха ТС. Но побочные эффекты от этого конечно бесят, меня по крайней мере. |
|||
77
Maniac
25.03.17
✎
17:32
|
(76) я все неделю работаю по 14-18 часов.
Например лег спать сегодня в 6 утра. |
|||
78
Лефмихалыч
25.03.17
✎
18:04
|
(76) любую задачу можно решить либо мозгами, либо измором. Оба варианта абсолютно рабочие, но цена разная. Это нормально.
Да и ТС скорее предприниматель, чем программист, ему можно (простительно) ни хрена не соображать в платформе. |
|||
79
RomanYS
25.03.17
✎
18:57
|
(78) "Оба варианта абсолютно рабочие" Не соглашусь, ИМХО при отсутствии понимания некоторых базовых вещей ряд задач не будет иметь решения в какие-либо конечные сроки.
Не нормально: задать вопрос, игнорировать ответы и писать чушь по типу, например, (27) и (28) с претензиями на истину. По поводу предпринимателя. Я так понимаю он пилит свой продукт сам потому что ему это интересно, а не от того что не может найти разработчика. В такой ситуации давать себе какие-то поблажки не простительно - сразу скажется на результате. А то как ТС продвигает свой проект вполне заслуживает уважения, с этим спорить не буду. |
|||
80
Мыш
25.03.17
✎
19:08
|
(79) Чтот даже перечитал.
> в ГДЕ при левом соединении нельзя делать комбинации условий из двух таблиц. > Данное условие может срабатывает не на результат а на фильрацию соединяемых таблиц Да, налицо незнание базовых вещей. Соединения описывают источники данных. "Где" - обрабатывает результат. В том числе результат соединения. |
|||
81
Maniac
25.03.17
✎
19:16
|
(79) Я пилю сам потому что мне это интересно это ВЕРНО.
Но и также НЕ МОГУ уже долгое время найти себе разработчика в том числе. У тебя есть желание? |
|||
82
Maniac
25.03.17
✎
19:16
|
Причем мне как раз вот такой бы человек по базам и тонкостям не ПОМЕШАЛ БЫ
|
|||
83
Maniac
25.03.17
✎
19:18
|
(80) ну ладно уже. я левое еще вчера пробовал и долбился.
Соединял неправильное поле. У меня есть Колонки Значение и Значение1С - так вот я тупо не ту колонку в условие ставил |
|||
84
Maniac
25.03.17
✎
19:23
|
Основная моя работа в том числе что я не просто кодирую, а как постановщик задач разруливаю то что надо реализовать с прендметной точки зрения.
СНачала решаю это, а уже потом занимаюсь оптимизацией. Вот сейчас момент настал когда вагон проделанной работы с точки зрения предметных задач надо оптимизировать. Пришли клиенты с огроменными прайсами, и говорят если ваш продукт сможет тако обьем проработать - купим. Вот меня и ударило сейчас все оптимизировать и автоматизировать от и до |
|||
85
Maniac
25.03.17
✎
19:24
|
(80) да я в просто в ступор ушел из за двойного условия с тремя полями. по одному работало и левое и внутреннее причем ис равно и не равно.
Я штук 20 способов попробовал. Но в результате зашел в тупик - да еще не ту колонку начал хватать. Ясень пень до 6 утра посидишь потом башка вообще варить перестанет |
|||
86
Мыш
25.03.17
✎
19:35
|
(84) У джентльменов принято озвучивать бюджет на *огроменные* прайсы )
|
|||
87
RomanYS
25.03.17
✎
19:36
|
(81) Независимо от желания, возможности реально участвовать в разработке нет. А так в режиме форума - всегда пожалуйста, если ты ещё не будешь оспаривать всё что тебе пишут).
(83) "Соединял неправильное поле" это может следствие (77). Но проблема в другом: если бы ты точно понимал как работает запрос, ты бы знал что где-то ошибка и быстро ее задебажил. А так ты полдня маялся сомнениями "левое или внутреннее?", "а может соединить по <>" и т.п. В общем "пробовал и долбился". (82) Женя, это не тонкости, это база. Один раз прочитать, осознать и больше не надо будет "пробовать". (85) Ты сам хозяин своего графика. А программирование на больную голову это контрпродуктивно. |
|||
88
Maniac
25.03.17
✎
21:15
|
В общем то показатели такие сейчас (и это не последние) сейчас с отладчикам в зубах каждую строку по 0.5 процентов скоряю
5000 строк 7 секунд. - ПОЛНОЕ нахождение всей номенклатуры в 1С и заполнение. Значит 100 000 всего 2 минуты!!!! 2 минуты для 100к это шедеврально Создание новой номенклатуры в 5000 срок - 6 секунд!!! ПО СИНХРОНИЗАЦИИ Это все значит 600 должно выйти не более 10 минут. Это в 20 раз быстрее чем у моего конкурента ПО СОЗДАНИЮ У конкурента создание номенклатуры в 100к - 1 час. у меня 5 000 строк - 7 секунд. Это значит загрузка новых товаров - 2. Это в 30 раз быстрее) |
|||
89
Maniac
25.03.17
✎
21:17
|
Пока добился результата что на 3-4-5 местах у меня с показателями в 2-3 процента от общего времени это
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Те тупая передача таблиц между клиентом и сервером |
|||
90
Maniac
25.03.17
✎
21:19
|
Жду прайс от клиента в 650 тыщ срок. буду загонять.
А ну и сейчас я на файловой тупо все меряю. |
|||
91
RomanYS
25.03.17
✎
21:22
|
(89) это уже не передача клиент-сервер. Ты уже на сервере, строка создает ОбработкаОбъект и заполняет его данными формы
|
|||
92
Maniac
25.03.17
✎
21:24
|
Ну я про это да.
Сейчас таких 3 строки в общем занимают из этих 14 секунд порядка 3-4 |
|||
93
RomanYS
25.03.17
✎
21:26
|
+(91) блин, забавно: у встроенных обработок/отчетов есть модуль менеджера, а у внешних нет. Хотя он и сохраняется)
(92) сделай вместо 3 вызовов один - сэкономишь 10 сек. |
|||
94
Maniac
25.03.17
✎
21:26
|
Результатом я доволен.
В целом значит что для клиентво с товарами в 10 тысяч товаров - наша обработка просто со скоростью звука все делает. У кого 50 тысяч - придется ждать несколько минут. У кого 100-200 тысяч - время будет в 10 минут. Это очень хорошие показатели. По сути означает что обработка одна из самых быстрейших. |
|||
95
Maniac
25.03.17
✎
21:27
|
Еще отдельно сделали проверку регистрации це нв регистр на 10к строк - 40 секунд.
Очень впечатляюще |
|||
96
Maniac
25.03.17
✎
21:30
|
(93) для обработки оставлю так - потому что там бывает разделение на кнопки.
Вставлю галки - автоматиечские действия - тогда будет один вызов А в ПРО версии естественно что у нас вообще все минует форму - и все эти данные от начала до конца на сервере в едином порыве. Ориентировочно я прикидываю что еще будет ускорение в разы. Но надо сделать тесты. на хороших обьемах. сниму видео, опубликую замеры. |
|||
97
Maniac
25.03.17
✎
21:34
|
Вопрос
ВременнаяДанныеПоиска.Поле_Артикул <> """" Насколько такое условие может притормаживать запросы? |
|||
98
Maniac
25.03.17
✎
21:42
|
В общем то замерил. не влияет никак
|
|||
99
RomanYS
25.03.17
✎
21:50
|
потести.
Ощутимо не должно быть имхо. |
|||
100
Лефмихалыч
25.03.17
✎
22:00
|
(99) если инлекса нет или строка длинная, то при большом количестве записей еще как должно. Это тэйбл скан будет.
а еще там может быть строка из пробелов или из символа конца строки... |
|||
101
Maniac
25.03.17
✎
22:06
|
не там четкий тип.
|
|||
102
Maniac
25.03.17
✎
22:07
|
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", ПустаяСсылка); ПараметрыОтбора.Вставить("ЭтоГруппа", Ложь); ДанныеПоиска = ТабличнаяЧасть.Выгрузить(ПараметрыОтбора,"НомерСтроки,Поле_Артикул"); Вот ту прямо и не знаю есть сомнения. Но вот думаю стоит ли это менять на запрос. или нет. |
|||
103
Maniac
25.03.17
✎
22:07
|
скорее всего нет. так как таблицу так или иначе все равно придется выгружать.
|
|||
104
Maniac
25.03.17
✎
22:08
|
а это отбор на выгрузку самое то
|
|||
105
Maniac
25.03.17
✎
22:09
|
Короче можно сказать оптимизацию на данном этапе завершил. не вижу ничего из тормозов.
Есть вагон моментов где можно какие то переменные оптимизировать по 0.01 проценту. |
|||
106
RomanYS
25.03.17
✎
22:13
|
(105) "Есть вагон моментов где можно какие то переменные оптимизировать по 0.01 проценту."
Этого точно не стоит делать, если хоть на каплю ухудшится читаемость кода. Оптимизировать (по производительности) нужно только то, что реально жрет время. |
|||
107
Живой Ископаемый
27.03.17
✎
09:51
|
Ну что, научили за 100 постов Маньяка азам?
|
|||
108
DailyLookingOnA Sunse
27.03.17
✎
09:58
|
Научите маньяка циклам в одну строку.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |