1 2 ► |
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
Галахад 18.02.21 - 10:46 | [1C]
Таблица = Новый ТаблицаЗначений; Таблица.Колонки.Добавить("а", Новый ОписаниеТипов("Булево")); Таблица.Колонки.Добавить("б", Новый ОписаниеТипов("Строка")); НовСтр = Таблица.Добавить(); НовСтр.а = Истина; НовСтр.б = "ббб"; НовСтр = Таблица.Добавить(); НовСтр.а = Ложь; НовСтр.б = "бббббб"; Таблица2 = Новый ТаблицаЗначений; Таблица2.Колонки.Добавить("а", Новый ОписаниеТипов("Булево")); Таблица2.Колонки.Добавить("г", Новый ОписаниеТипов("Строка")); НовСтр = Таблица2.Добавить(); НовСтр.а = Истина; НовСтр.г = "ууу"; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Таблица", Таблица); Запрос.УстановитьПараметр("Таблица2", Таблица2); Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ТаблицаДанных |ИЗ | &Таблица КАК Таблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ПОМЕСТИТЬ ТаблицаДанных2 |ИЗ | &Таблица2 КАК Таблица2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ИЗ | ТаблицаДанных КАК ТаблицаДанных | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДанных2 КАК ТаблицаДанных2 | ПО ТаблицаДанных.а = ТаблицаДанных2.а"; Таб = Запрос.Выполнить().Выгрузить(); Таб.Колонки.Удалить("а1"); [/1C] | ||
ДенисЧ 1 - 18.02.21 - 10:47 | |||
Fragster 2 - 18.02.21 - 10:48 | а нафига тут субд дергать? | ||
H A D G E H O G s 3 - 18.02.21 - 10:48 | Не имеет. Имена колонок и таблиц значений должны четко и однозначно передавать предметную суть. | ||
polosov 4 - 18.02.21 - 10:49 | (3) Не обязательно. Может это одноразовая обработка. | ||
Галахад 5 - 18.02.21 - 10:51 | Хм. А аргументировать? | ||
Галахад 6 - 18.02.21 - 10:51 | (2) Это ж пример. | ||
Fragster 7 - 18.02.21 - 10:51 | |||
Галахад 8 - 18.02.21 - 10:58 | (7) Конечно. На самом деле Колонок несколько больше, не говоря уж о строках. | ||
H A D G E H O G s 9 - 18.02.21 - 11:01 | Я не понял, что спрашивает автор?
Можно ли соединять таблицы с помощью субд или с помощью сервера 1с? Я думаю, не стоит использовать субд. Используй код. А в коде либо индексирование одной из таблиц, либо мердж. Кроме того, SQL регистронезависим при работе со строками. | ||
Галахад 10 - 18.02.21 - 11:03 | (9) В коде медленнее. | ||
Волшебник 11 - 18.02.21 - 11:03 | говнокод детектед | ||
Галахад 12 - 18.02.21 - 11:04 | |||
Fragster 13 - 18.02.21 - 11:08 | (12) таы просто не умеешь его готовить | ||
Garykom 14 - 18.02.21 - 11:11 | (0) Науя? | ||
Галахад 15 - 18.02.21 - 11:12 | (13) Наверное. А как быстрее? | ||
Garykom 16 - 18.02.21 - 11:13 | (15) Сначала опиши что хочешь и какие граничные условия
Легко может получиться на больших табличках что заипешься ждать пока оно на субд и назад передается | ||
ptiz 17 - 18.02.21 - 11:14 | (15) Покажи код и мы ткнем тебя в колонку, по которой ты не создал индекс. Или ты наименование колонки не указываешь в методе ТЗ.Найти() | ||
Bigbro 18 - 18.02.21 - 11:15 | выглядит довольно бредово. | ||
Галахад 19 - 18.02.21 - 11:18 | (16) Допустим есть Таблица1 - колонки Справочник1, КоличествоА Таблица2 - колонки Справочник1, КоличествоБ В каждой по по 5000 записей. Хочу получить Таблица3 - колонки Справочник1, КоличествоА, КоличествоБ | ||
Garykom 20 - 18.02.21 - 11:22 | (19) Гыгыгыгы
Сначала слей в одну ТЗ а потом Свернуть()
Но учитывай что в некоторых версиях платформы 1С бага с тормозами если есть в ТЗ ссылки на Справочники и т.д. | ||
Галахад 21 - 18.02.21 - 11:26 | (20) Запросом быстрее. | ||
Волшебник 22 - 18.02.21 - 11:34 | (21) Это паразитная нагрузка на сервер. Эту тупую работу может выполнить клиентский компьютер.
При большой загруженности сервера он может уйти в себя. | ||
Hans 23 - 18.02.21 - 11:39 | (0) Не вижу говнокода. | ||
Волшебник 24 - 18.02.21 - 11:40 | (23) В запросе нет выборки из базы | ||
Галахад 25 - 18.02.21 - 11:41 | (22) Ну а если код и так выполняется на сервере. Например регламентное задание. | ||
Волшебник 26 - 18.02.21 - 11:42 | (25) Есть сервер 1С и сервер СУБД, два разных сервера | ||
Serg_1960 27 - 18.02.21 - 12:35 | Эээ... чисто от скуки и спортивного интереса ради :)
Я могу быстренько набросать лаконичный (с десяток строк) универсальный алгоритм для объединения разнородных таблиц (с различными составом колонок). Но только если кто-то потом согласится его протестировать на скорость на больших объёмах с другими алгоритмами (например, с запросом как у автора). Интересно же проверить идею :) | ||
Галахад 28 - 18.02.21 - 13:17 | (27) Да легко. Самому интересно. | ||
Fragster 29 - 18.02.21 - 13:34 | (28) сортируешь обе таблицы по ключам сопоставления, далее в один проход делаешь третью таблицу | ||
Малыш Джон 30 - 18.02.21 - 13:42 | (29) а если исходный порядок надо сохранить? предварительно добавлять поле для сохранения порядка? Рекламное место пустует | ||
Малыш Джон 31 - 18.02.21 - 13:47 | (27) алгоритм, я думаю, тут все смогут придумать. Проблемы две: 1) каким бы наглядным(не синоним слову "лаконичный") он не был, все равно тому, кто будет после тебя, нужно будет некоторое время, чтобы сообразить, что ты такое сделал (а запрос понимается сходу) и б) он будет медленнее варианта с запросом, особенно на больших объемах.
У варианта с запросом, естественно, свои недостатки | ||
fisher 32 - 18.02.21 - 14:04 | (0) Ну, такое... Лично на меня такой код действует как лимон, ибо по ресурсам очевидный оверкил. Есть варианты когда такой подход допустим и когда не очень. Я так никогда не делаю, ибо первые случаи имеют тенденцию плавно и незаметно перетекать во вторые плюс чувство прекрасного не позволяет.
Многие считают иначе. В основном те, кто избалован высокоуровневым API и у кого баланс между простотой кода и эффективностью сильно смещен в первое. | ||
H A D G E H O G s 33 - 18.02.21 - 14:09 | (30) Делаешь копии таблиц | ||
VladZ 34 - 18.02.21 - 14:14 | (0) Моё мнение: можно использовать в определенных ситуациях.
У меня такой вопрос: почему при получении первой части данных (первая таблица) мы не могли сразу получить вторую часть запросом? В чем сложность? | ||
vi0 35 - 18.02.21 - 14:17 | (6) встречный вопрос - запрос в цикле имеет право на жизнь? | ||
Вафель 36 - 18.02.21 - 14:23 | тут нужен мердж самому такое писать влом ибо нужно быть очень аккуратным | ||
Garykom 37 - 18.02.21 - 14:24 | |||
vi0 38 - 18.02.21 - 14:27 | |||
H A D G E H O G s 39 - 18.02.21 - 14:40 | Запросом 44 милисекунды Кодом 303 Таблица1=Новый ТаблицаЗначений; Таблица1.Колонки.Добавить("КолонкаСвязи",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,0))); Таблица2=Таблица1.СкопироватьКолонки(); ГенераторСЧ=Новый ГенераторСлучайныхЧисел(); Для Счетчик=1 По 10000 Цикл НоваяСтрока=Таблица1.Добавить(); НоваяСтрока.КолонкаСвязи=ГенераторСЧ.СлучайноеЧисло(0,50000); НоваяСтрока=Таблица2.Добавить(); НоваяСтрока.КолонкаСвязи=ГенераторСЧ.СлучайноеЧисло(0,50000); КонецЦикла; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Таблица1.КолонкаСвязи КАК КолонкаСвязи |ПОМЕСТИТЬ Таблица1 |ИЗ | &Таблица1 КАК Таблица1 |; | //////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица2.КолонкаСвязи КАК КолонкаСвязи |ПОМЕСТИТЬ Таблица2 |ИЗ | &Таблица2 КАК Таблица2 |; | //////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица1.КолонкаСвязи КАК КолонкаСвязи, | Таблица2.КолонкаСвязи КАК КолонкаСвязиТаблицы2 |ИЗ | Таблица1 КАК Таблица1 | ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2 | ПО Таблица1.КолонкаСвязи = Таблица2.КолонкаСвязи"; Запрос.УстановитьПараметр("Таблица1",Таблица1); Запрос.УстановитьПараметр("Таблица2",Таблица2); ВремяНачала=ТекущаяУниверсальнаяДатаВМиллисекундах(); Результат=Запрос.Выполнить().Выгрузить(); ВремяОкночания=ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("Запросом "+Строка(ВремяОкночания-ВремяНачала)); ВремяНачала=ТекущаяУниверсальнаяДатаВМиллисекундах(); Таблица1.Сортировать("КолонкаСвязи"); Таблица1.Колонки.Добавить("КолонкаСвязиТаблицы2"); Таблица2.Сортировать("КолонкаСвязи"); ИндексТаблицы1=0; ИндексТаблицы2=0; Пока Истина Цикл СтрокаТаблицы1=Таблица1[ИндексТаблицы1]; СтрокаТаблицы2=Таблица2[ИндексТаблицы2]; Если СтрокаТаблицы1.КолонкаСвязи>=СтрокаТаблицы2.КолонкаСвязи Тогда ИндексТаблицы2=ИндексТаблицы2+1; Если СтрокаТаблицы1.КолонкаСвязи=СтрокаТаблицы2.КолонкаСвязи Тогда СтрокаТаблицы1.КолонкаСвязиТаблицы2=СтрокаТаблицы2.КолонкаСвязи; КонецЕсли; Иначе ИндексТаблицы1=ИндексТаблицы1+1; КонецЕсли; Если ИндексТаблицы1>= Таблица1.Количество() Тогда Прервать; КонецЕсли; Если ИндексТаблицы2>= Таблица2.Количество() Тогда Прервать; КонецЕсли; КонецЦикла; ВремяОкночания=ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("Кодом "+Строка(ВремяОкночания-ВремяНачала)); | ||
H A D G E H O G s 40 - 18.02.21 - 14:41 | Плата за плохую математику 1С. В Дельфи было бы быстрее кодом. | ||
lEvGl 41 - 18.02.21 - 14:41 | в общем случае запросом быстрее и удобнее писать, при написании обходов циклами как раз и получается говнокод, даже визуально пока а б ц цикл н + 1 и остальные Стр и подобное. быстродействие будет зависеть от контекста выполнения, запрос всегда на субд, код на клиенте или сервере приложения, что мощнее по железу, то и будет быстрее. все от конкретной ситуации загруженности железа зависит.
поддержу (23) | ||
lEvGl 42 - 18.02.21 - 14:42 | (34) ну это прозрачный пример, я так понимаю | ||
H A D G E H O G s 43 - 18.02.21 - 14:43 | Потери размазаны по операциям сравнения, получению строки по индексу, и, удивительно, на сортировку.
http://prntscr.com/zz17qo | ||
lEvGl 44 - 18.02.21 - 14:44 | (40) 1с это в принципе производная от более низкоуровневых языков | ||
H A D G E H O G s 45 - 18.02.21 - 14:44 | Ну и СУБД у меня не нагружена и tempdb на SSD (а скорее, в памяти). | ||
lEvGl 46 - 18.02.21 - 14:46 | (45) в этом конкретика ситуации и есть
те, кто топит за разгрузку субд видимо сталкивались с проблемами в этой части. они есть у всех, но тут сталкивались видимо особенно остро | ||
H A D G E H O G s 47 - 18.02.21 - 14:46 | Забавно, но SQL соединил через hashmatch | ||
Garykom 48 - 18.02.21 - 14:48 | (39) У тебя "кодом" говно какое то | ||
H A D G E H O G s 49 - 18.02.21 - 14:48 | А причина, кстати, в том, что теперь 1С вставляет ТЗ в ВТ через bulk insert, а раньше просто через Insert | ||
H A D G E H O G s 50 - 18.02.21 - 14:49 | Жить стало лучше, жить стало веселее, а твое знания внезапно устарели, а чем 1С даже не уведомила. | ||
H A D G E H O G s 51 - 18.02.21 - 14:49 | Так что код автора теперь имеет право на жись.
И, пожалуй, я связывать ТЗ теперь буду на сервере | ||
Garykom 52 - 18.02.21 - 14:50 | (48)+ Сделай плиз просто как в (20) Все записи из двух ТЗ в одну новую ТЗ из 3-х колонок Справочник1, КоличествоА, КоличествоБ Пиши 0 где нет значения а затем Свернуть | ||
H A D G E H O G s 53 - 18.02.21 - 14:50 | (51) на сервере СУБД | ||
H A D G E H O G s 54 - 18.02.21 - 14:50 | |||
ИС-2 55 - 18.02.21 - 14:53 | (10) наоборот, в если помещаем таблицы в запрос, то получается медленее. Делал специально опыты несколько лет назад | ||
lEvGl 56 - 18.02.21 - 14:55 | (39) вот вот, про такие коды я и говорю, индекс шминдекс + 1 ><= и остальные знаки "препинания" Пока Истина Цикл СтрокаТаблицы1=Таблица1[ИндексТаблицы1]; СтрокаТаблицы2=Таблица2[ИндексТаблицы2]; Если СтрокаТаблицы1.КолонкаСвязи>=СтрокаТаблицы2.КолонкаСвязи Тогда ИндексТаблицы2=ИндексТаблицы2+1;и это пишет человек, который имеет опыт, интересуется производительностью и технической частью, а если это студент или кому пофигу на все это, то решение этой же задачи в коде будет иметь такой унылый вид, что всегда проще написать самому заново | ||
H A D G E H O G s 57 - 18.02.21 - 14:56 | (56) Это типовой mergejoin, типовее нет, какие вопросы то? | ||
lEvGl 58 - 18.02.21 - 15:01 | |||
lEvGl 59 - 18.02.21 - 15:02 | (57) ну я к тому что кодом лучше и не получится, если только не озадачиться именно этим | ||
fisher 60 - 18.02.21 - 15:12 | (43) Ты протестил наихудший случай, которых на практике фактически не будет (поэтому у тебя почти 20000 итераций при 10000 строк в таблицах).
Во-вторых, почему ты не включил в замер времени выполнения запроса передачу таблиц на сервер? Плюс это время будет расти при увеличении размеров строк таблиц. (51) Даже при наличии выигрыша по скорости, для реально больших таблиц (не только по количеству строк, но и по размеру строки) будут расти и накладные расходы на сервере СУБД, ухудшая его интегральную производительность. Рекламное место пустует | ||
fisher 61 - 18.02.21 - 15:18 | Ну и плюс утилизация сетки, если по серверам разнесено. | ||
Малыш Джон 62 - 18.02.21 - 15:18 | (60)
1) Почему наихудший? Случайным образом заполненные таблицы. Почему такого на практике не будет? 2) ну вон же присланы данные замера производительности. По сравнению с временем выполнения запроса - затраты на передачу таблиц нулевые 3) понятно, что будут расти нагрузка на сервер. Вопрос на сколько: На 10 - 20 - 50% или на 0.00001%? | ||
lEvGl 63 - 18.02.21 - 15:19 | (60)при реально больших таблицах ресурсы будут расти и на сервере приложений, не говоря о клиенте | ||
fisher 64 - 18.02.21 - 15:24 | (62)
1) в реальности ты вряд ли будешь джойнить таблицы, в которых ни одного ключа не совпадает 2) я бы все-таки передвинул инициализацию времени начала замера действительно в самое начало, чтобы исключить возможные косяки замера производительности | ||
Почему 1С 65 - 18.02.21 - 15:30 | (39) Почему в Если СтрокаТаблицы1.КолонкаСвязи>=СтрокаТаблицы2.КолонкаСвязи Тогда не двигается индекс таблицы 1 при равенстве ключей? | ||
fisher 66 - 18.02.21 - 15:33 | (62)
3) в том-то и дело, что это проблематично спрогнозировать, если начать применять такой подход повсеместно. | ||
Почему 1С 67 - 18.02.21 - 15:33 | (0) Не знаю говнокод или нет, но такой поход использую не только для соединения таблиц, но и построения итогов (иерархий) по таблицам. | ||
Serg_1960 68 - 18.02.21 - 15:35 | (28) Ой, sorry. Я вышел с ветки и отвлёкся работой :)
Обещанный смешной (но рабочий) алгоритм:  // заполнение таблиц для примера Т1 = Новый ТаблицаЗначений; Т1.Колонки.Добавить("а", Новый ОписаниеТипов("Булево")); Т1.Колонки.Добавить("б", Новый ОписаниеТипов("Число")); НовСтр = Т1.Добавить(); НовСтр.а = Истина; НовСтр.б = 1; НовСтр = Т1.Добавить(); НовСтр.а = Ложь; НовСтр.б = 2; Т2 = Новый ТаблицаЗначений; Т2.Колонки.Добавить("а", Новый ОписаниеТипов("Булево")); Т2.Колонки.Добавить("г", Новый ОписаниеТипов("Число")); НовСтр = Т2.Добавить(); НовСтр.а = Истина; НовСтр.г = 3; НовСтр = Т2.Добавить(); НовСтр.а = Ложь; НовСтр.г = 4;  // Собственно говоря сам алгоритм "объединения" таблиц Т3 = ?(Т1.Количество() > Т2.Количество(), Т1.Скопировать(), Т2.Скопировать()); Тх = ?(Т1.Количество() > Т2.Количество(), Т2.Скопировать(), Т1.Скопировать()); Для к = 1 По Тх.Количество() Цикл Т3.Вставить(0); КонецЦикла; Для к = 0 По Тх.Колонки.Количество()-1 Цикл Имя = Тх.Колонки[к].Имя; Если Т3.Колонки.Найти(Имя) = Неопределено Тогда Т3.Колонки.Добавить(Имя, Тх.Колонки[к].ТипЗначения); КонецЕсли; Т3.ЗагрузитьКолонку(Тх.ВыгрузитьКолонку(Имя),Имя); КонецЦикла;  // чисто для примера работа с "объединенной" таблицей Т3.Свернуть("а","б,г"); Т3.ВыбратьСтроку(); | ||
Вафель 69 - 18.02.21 - 16:00 | сдается мне что в коде основная проблема это сортировка таблиц | ||
Garykom 70 - 18.02.21 - 16:00 | |||
Garykom 71 - 18.02.21 - 16:02 | (70)+ Точнее так
Кодом 631 Запросом 157 Моим кодом 357 &НаСервереБезКонтекста Процедура ТестированиеНаСервере() Таблица1=Новый ТаблицаЗначений; Таблица1.Колонки.Добавить("КолонкаСвязи",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,0))); Таблица1.Колонки.Добавить("КолонкаЗначения",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,0))); Таблица2=Таблица1.СкопироватьКолонки(); ГенераторСЧ=Новый ГенераторСлучайныхЧисел(); Для Счетчик=1 По 10000 Цикл НоваяСтрока=Таблица1.Добавить(); НоваяСтрока.КолонкаСвязи=ГенераторСЧ.СлучайноеЧисло(0,50000); НоваяСтрока.КолонкаЗначения=ГенераторСЧ.СлучайноеЧисло(0,500); НоваяСтрока=Таблица2.Добавить(); НоваяСтрока.КолонкаСвязи=ГенераторСЧ.СлучайноеЧисло(0,50000); НоваяСтрока.КолонкаЗначения=ГенераторСЧ.СлучайноеЧисло(0,500); КонецЦикла; ВремяНачала=ТекущаяУниверсальнаяДатаВМиллисекундах(); Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Таблица1.КолонкаСвязи КАК КолонкаСвязи, | Таблица1.КолонкаЗначения КАК КолонкаЗначения |ПОМЕСТИТЬ Таблица1 |ИЗ | &Таблица1 КАК Таблица1 |; | //////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица2.КолонкаСвязи КАК КолонкаСвязи, | Таблица2.КолонкаЗначения КАК КолонкаЗначения |ПОМЕСТИТЬ Таблица2 |ИЗ | &Таблица2 КАК Таблица2 |; | //////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица1.КолонкаСвязи КАК КолонкаСвязи, | Таблица1.КолонкаЗначения КАК КолонкаЗначения1, | Таблица2.КолонкаЗначения КАК КолонкаЗначения2 |ИЗ | Таблица1 КАК Таблица1 | ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2 | ПО Таблица1.КолонкаСвязи = Таблица2.КолонкаСвязи"; Запрос.УстановитьПараметр("Таблица1",Таблица1); Запрос.УстановитьПараметр("Таблица2",Таблица2);  //ВремяНачала=ТекущаяУниверсальнаяДатаВМиллисекундах(); Результат=Запрос.Выполнить().Выгрузить(); ВремяОкночания=ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("Запросом "+Строка(ВремяОкночания-ВремяНачала)); ВремяНачала=ТекущаяУниверсальнаяДатаВМиллисекундах(); Таблица1.Сортировать("КолонкаСвязи"); Таблица1.Колонки.Добавить("КолонкаСвязиТаблицы2"); Таблица2.Сортировать("КолонкаСвязи"); ИндексТаблицы1=0; ИндексТаблицы2=0; Пока Истина Цикл СтрокаТаблицы1=Таблица1[ИндексТаблицы1]; СтрокаТаблицы2=Таблица2[ИндексТаблицы2]; Если СтрокаТаблицы1.КолонкаСвязи>=СтрокаТаблицы2.КолонкаСвязи Тогда ИндексТаблицы2=ИндексТаблицы2+1; Если СтрокаТаблицы1.КолонкаСвязи=СтрокаТаблицы2.КолонкаСвязи Тогда СтрокаТаблицы1.КолонкаСвязиТаблицы2=СтрокаТаблицы2.КолонкаСвязи; КонецЕсли; Иначе ИндексТаблицы1=ИндексТаблицы1+1; КонецЕсли; Если ИндексТаблицы1>= Таблица1.Количество() Тогда Прервать; КонецЕсли; Если ИндексТаблицы2>= Таблица2.Количество() Тогда Прервать; КонецЕсли; КонецЦикла; ВремяОкночания=ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("Кодом "+Строка(ВремяОкночания-ВремяНачала));  // Моим кодом ВремяНачала=ТекущаяУниверсальнаяДатаВМиллисекундах(); Таблица3=Новый ТаблицаЗначений; Таблица3.Колонки.Добавить("КолонкаСвязи",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,0))); Таблица3.Колонки.Добавить("КолонкаЗначения1",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,0))); Таблица3.Колонки.Добавить("КолонкаЗначения2",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,0))); Для Каждого ТекСтр Из Таблица1 Цикл НовСтр = Таблица3.Добавить(); НовСтр.КолонкаСвязи = ТекСтр.КолонкаСвязи; НовСтр.КолонкаЗначения1 = ТекСтр.КолонкаЗначения; НовСтр.КолонкаЗначения2 = 0; КонецЦикла; Для Каждого ТекСтр Из Таблица2 Цикл НовСтр = Таблица3.Добавить(); НовСтр.КолонкаСвязи = ТекСтр.КолонкаСвязи; НовСтр.КолонкаЗначения1 = 0; НовСтр.КолонкаЗначения2 = ТекСтр.КолонкаЗначения; КонецЦикла; Таблица3.Свернуть("КолонкаСвязи", "КолонкаЗначения1, КолонкаЗначения2"); ВремяОкночания=ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("Моим кодом "+Строка(ВремяОкночания-ВремяНачала)); КонецПроцедуры &НаКлиенте Процедура Тестирование(Команда) ТестированиеНаСервере(); КонецПроцедуры | ||
H A D G E H O G s 72 - 18.02.21 - 16:05 | (64) Ключи совпадают и довольно часто. | ||
Малыш Джон 73 - 18.02.21 - 16:05 | (71) и теперь ещё сравнить результат-то один и тот же получился или нет)) | ||
Малыш Джон 74 - 18.02.21 - 16:07 | (71) кстати, для объединения можно использовать таблицу1, просто туда вставить нужное количество пустых строк, а потом поколоночно загрузить таблицу2. Получиться быстрее должно. | ||
H A D G E H O G s 75 - 18.02.21 - 16:07 | (60) Ты реально думаешь, что ТЗ уходит на сервер в точке
УстановитьПараметр() ? А не при Запрос.Выполнить() ? | ||
H A D G E H O G s 76 - 18.02.21 - 16:07 | (74) Это не соединение по ключу | ||
Garykom 77 - 18.02.21 - 16:08 | (75) Уходит да но полное время же хотим, время установки параметра + время передачи установленного на сервер | ||
H A D G E H O G s 78 - 18.02.21 - 16:09 | (71) Что будет, если будут строковые ресурсы или ссылочные? | ||
Малыш Джон 79 - 18.02.21 - 16:09 | |||
Garykom 80 - 18.02.21 - 16:10 | (78) будет другой алгоритм | ||
Garykom 81 - 18.02.21 - 16:12 | (80)+ Вместо Свернуть, будет Сортировать и цикл сравнивающий пары строк, перенося в новую ТЗ | ||
Малыш Джон 82 - 18.02.21 - 16:13 | (78)
- Товарищ Сталин, дошла информация, что маршал Рокоссовский, не состоя в браке с актрисой Серовой, открыто с ней сожительствует и всячески разлагается. Что делать будем? - Чьто будэм, чьто будэм... Завыдоват будэм! | ||
H A D G E H O G s 83 - 18.02.21 - 16:16 | Запросом 157 у Гарри Запросом 40 у HadgehogsЭто все, что нужно знать о оборудовании Гарри на древних ксеонах. | ||
H A D G E H O G s 84 - 18.02.21 - 16:16 | Вот что страшно | ||
H A D G E H O G s 85 - 18.02.21 - 16:17 | Потом подключаешься к клиентам и теряешь драгоценные мгновения бесценной жизни, смотря на крутящееся колесико в ERP на 2.2 Ггц. | ||
Малыш Джон 86 - 18.02.21 - 16:18 | (85) Человеку, не желающему терять драгоценные мгновения бесценной жизни, в принципе не рекомендуется связываться с ERP. На любом оборудовании. | ||
Garykom 87 - 18.02.21 - 16:20 | (83) Это рабочий сервак на который я маты складываю
https://i.paste.pics/23acaba9bb778a9c5cc74f42b7abd7a5.png?trs=60174cc3ec6c8948da637408dbbd4706e227433d9d28e072a7bc087834a70180 Сча тестану на паре зионов | ||
fisher 88 - 18.02.21 - 16:21 | Все равно не брошу работать с ТЗ "по месту" :)=Вот еще, себе "руку сбивать" из-за тормозов интерпретатора, да еще сиквел обижать. | ||
Малыш Джон 89 - 18.02.21 - 16:23 | Если надо смержить данных
Все равно на серв не брошу
Буду мержить их руками
Потому что я хороший | ||
H A D G E H O G s 90 - 18.02.21 - 16:24 | (87) мммм., Silver, миленько. | ||
Garykom 91 - 18.02.21 - 16:24 | (90) Виртуалка в облаке | ||
H A D G E H O G s 92 - 18.02.21 - 16:25 | |||
Шоколадный глаз 93 - 18.02.21 - 16:27 | (0) Любой код имеет право на жизнь, главное не показывай его заказчику. | ||
Garykom 94 - 18.02.21 - 16:28 | (92) Чужое, Сотел кста на моем рабочем инженернике i7-6400T Запросом 127 Кодом 198 Моим кодом 114 | ||
Garykom 95 - 18.02.21 - 16:29 | (94) sql - Postgres | ||
Megas 96 - 18.02.21 - 16:31 | (4)
Особенно в одноразовой обработке. Потому что буквально через пару недель на рабочем столе лежит 12штук ВнешняяОбработка1 - 12, с кнопокой "выполнить" | ||
Garykom 97 - 18.02.21 - 16:31 | (94)+ На разогнанном 1650v2 Запросом 173 Кодом 168 Моим кодом 111 | ||
Garykom 98 - 18.02.21 - 16:32 | (97)+ Но это файловая, серверной там у меня не стоит | ||
H A D G E H O G s 99 - 18.02.21 - 16:39 | (97) SQL - MSSQL, i5-8600k, 40 мсек. | ||
Garykom 100 - 18.02.21 - 16:40 | (99) ты мой код запусти |
1 2 ► |
Список тем форума
|