Имя: Пароль:
1C
 
Внутренние соединения - оставить только то чего нет в двух таблицах.
0 Maniac
 
25.03.17
11:12
Как известно запросы в 1С содержат разные соединения для разных вещей.

В частности внутреннее соединение оставит из двух таблиц те строки которые есть и в первой и во второй.

А вот стоит задача как сделать чтобы остались строки
из первой которых нет во второй

по трем ключам.
Почему то совместно не хотят работать правила когда одно поле равно, а другое не равно.
1 RomanYS
 
25.03.17
11:13
левое соединение и Где Т2.ЛюбоеПоле Есть NULL
2 zak555
 
25.03.17
11:14
левое соединение + is null
3 Maniac
 
25.03.17
11:14
Не работает левое
4 zak555
 
25.03.17
11:14
ты хотя бы курсы что ли прошёл бы по конфигурированию 1с
5 zak555
 
25.03.17
11:14
(3) запрос покажи
6 Maniac
 
25.03.17
11:15
Левое вообще пусто выдает. видимо потому что ГДЕ выходит за рамки соединения
7 Maniac
 
25.03.17
11:15
|
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВременнаяТаблицаНоменклатуры2.КлючСтроки КАК КлючСтроки,
    |    ВременнаяТаблицаНоменклатуры2.ВидНоменклатуры КАК ВидНоменклатуры,
    |    ВременнаяТаблицаНоменклатуры2.НаборСвойств КАК НаборСвойств,
    |    ВременнаяТаблицаНоменклатуры2.Свойство КАК Свойство,
    |    ВременнаяТаблицаНоменклатуры2.Значение КАК Значение,
    |    ВременнаяТаблицаНоменклатуры2.Индивидуальные КАК Индивидуальные,
    |    ВременнаяТаблицаНоменклатуры2.ТипЗначенияТекст КАК ТипЗначенияТекст,
    |    ВременнаяТаблицаНоменклатуры2.АртикулСсылка КАК АртикулСсылка,
    |    ВременнаяТаблицаНоменклатуры2.Номенклатура КАК Номенклатура,
    |    ВременнаяТаблицаНоменклатуры2.ЗначениеСвойства1С КАК ЗначениеСвойства1С
    |ИЗ
    |    ВременнаяТаблицаНоменклатуры2 КАК ВременнаяТаблицаНоменклатуры2
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК СпрНоменклатураДопРекв
    |        ПО ВременнаяТаблицаНоменклатуры2.Номенклатура = СпрНоменклатураДопРекв.Ссылка
    |            И ВременнаяТаблицаНоменклатуры2.Свойство = СпрНоменклатураДопРекв.Свойство
    |            И ВременнаяТаблицаНоменклатуры2.Значение = СпрНоменклатураДопРекв.Значение";
8 Maniac
 
25.03.17
11:16
Этот запрос сейчас выдает все существующие свойства.
которые есть реально в справочнике и сходятся с таблицей
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
Научите маньяка циклам в одну строку.
Независимо от того, куда вы едете — это в гору и против ветра!