Имя: Пароль:
1C
1С v8
Сливать однотипные результаты запросов
0 Вуглускр1991
 
11.09.13
16:26
Привет!
В семерке было, Выгрузить не очищая, а дополняя таблицу. Что-то не могу в 8-ке найти хоть какой-нибудь объект, который бы мог заполнять какой-нибудь список без выборки "Для Каждого ..."
Плохо искал?
1 Error pro
 
11.09.13
16:27
(0) который бы мог заполнять какой-нибудь список без(с)
Заполнять или дополнять?
2 Maxus43
 
11.09.13
16:33
да, нет дополняемых объектов, циклы надо всё равно
3 Maxus43
 
11.09.13
16:34
но это 3-мя строчками делается
4 Maxus43
 
11.09.13
16:34
Для Каждого Стр Из НоваяТз Цикл
   ЗаполнитьЗначениеСвойств(Старый.Добавить(), Стр);
КонецЦикла;
5 Maxus43
 
11.09.13
16:35
*ЗначениЯСвойств
6 palpetrovich
 
11.09.13
16:35
это?
Для каждого СтрокаТЗ Из Таблица1 Цикл
     ЗаполнитьЗначенияСвойств(Таблица2.Добавить(), СтрокаТЗ)
КонецЦикла;
7 Darth Anyan
 
11.09.13
16:36
а если это результаты запросов - не легче их в один мегазапрос склеить через ОБЪЕДИНИТЬ?
8 Лефмихалыч
 
модератор
11.09.13
16:39
(0) с появлением пакетных запросов и объединения эта клюшко*бская ересь стала ненужна
9 Жан Пердежон
 
11.09.13
16:41
(8) каждый раз дергать сервер, когда надо на клиенте объединить 2 "таблички"? хорош!
10 IШаман
 
11.09.13
16:41
(7) + 1000 Это будет правильное решение.
А методов чтоб дополнить ТЗ чем то кроме строки нет.
11 Defender aka LINN
 
11.09.13
16:48
(9) А на клиенте эти 2 таблицы от сырости завелись, да?
12 hhhh
 
11.09.13
16:49
(8) на клиенте нет табличек
13 Лефмихалыч
 
модератор
11.09.13
16:49
(9) а на кой кол их вообще на клиент передавать?
14 Defender aka LINN
 
11.09.13
16:51
(13) Чтобы объединить! От ты тугой...
15 Вуглускр1991
 
11.09.13
17:02
У меня есть набор условий для поиска, не ограниченный набор.
Я боюсь, что тысяча условий
+"ИЛИ Наименование %" + КлючПоиска + "%"
добавленных к тексту запроса неадекватно "разгонят" платформу. Поэтому хочу перебирать эти условия в цикле и подгружать потихоньку в список давая возможность остальным клиентам также выполнять свою работу.
16 Лефмихалыч
 
модератор
11.09.13
17:05
ппц
17 Вуглускр1991
 
11.09.13
17:15
(16) А то! я не зря не хочу писать этот великий запрос. Есть номенклатура, связанная между собой, ключ словами:
тумбочка Шатура "Радуга"
зеркало Шатура "Радуга"
...
Таким образом я научил пользователей записывать связи в виде перечисления ключевых слов в строке, которая начинается "поиск "
И теперь если мне нужно отследить связь в конкретной группе - все легко, а когда мне надо поднять все связи - тут и возникает эта задача.
Можно сделать агрегат, и может даже придется ...
18 Лефмихалыч
 
11.09.13
18:29
(17) гениально!


закрой пожалуйста конфигуратор
19 Fragster
 
модератор
11.09.13
18:31
(17) регистры сведений, знаешь, такая штука? причем не обязательно пользователю видеть таблицу, пусть видит строку с ключевыми словами через запятую...
20 Вуглускр1991
 
11.09.13
19:55
(19) Пользователь вводит ключслова через запятую, а результат запроса записывается в регистр сведений? Ты это имеешь ввиду?
Это я и назвал агрегатом.
Когда товар изменяет название, вводится новый в базу или удаляется, надо пересчитывать агрегат, поэтому я его пока не сделал. Не было таких задач, чтобы получать сразу всю таблицу задействованных товаров.
(18) Ты жену свою щи варить поучи, похожий на бота персонаж. Не видел у тебя ни одного достойного решения, голый синтакс-помошник. Читай на лурке "ФГМ".
21 Лефмихалыч
 
11.09.13
20:01
(20) ты вообще мало что видел. Читай на лурке "Школота".
22 France
 
11.09.13
20:14
вот и пообщались...
23 Вуглускр1991
 
11.09.13
20:18
(22) все нормально ..
24 France
 
11.09.13
20:19
(23) все же, объединение почему не хочется использовать?
25 Вуглускр1991
 
11.09.13
20:23
(24)
МассивКлючей = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Сред(СОКРЛП(ЭлСпи.Наименование),8)," ");
ЗапросГДОПСК.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                   |    Номенклатура.Ссылка КАК Номенклатура
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.ЭтоГруппа = ЛОЖЬ";
Для Каждого СловоКлюч Из МассивКлючей Цикл
    СлКл = СловоКлюч;
    Если Лев(СлКл,1) = "^" Тогда
        СлКл = Сред(СлКл,2);
        Если ПустаяСтрока(СлКл) Тогда
            Продолжить;
        КонецЕсли;
        ЗапросГДОПСК.Текст = Заорп2.Текст + "
                   |    И Номенклатура.Наименование НЕ ПОДОБНО ""%" + СтрЗаменить(СлКл,"""","""""") + "%""";
    Иначе
        Если ПустаяСтрока(СлКл) Тогда
            Продолжить;
        КонецЕсли;
        ЗапросГДОПСК.Текст = Заорп2.Текст + "
                   |    И Номенклатура.Наименование ПОДОБНО ""%" + СтрЗаменить(СлКл,"""","""""") + "%""";
    КонецЕсли;    
КонецЦикла;
Все это для каждого ЭлСпи из списка введенных пользователем связей.
26 France
 
11.09.13
20:27
(25) так руки и чешутся дописать перед последним КонецЕсли "Объединить все". И со всех точек зрения правильно: и красивое слово масштабирование в действии, и клиентский комп не нагружается (если клиент серверный вариант).
В случае добавления строк - будет долго и нудно создавать таблицу в памяти, и в случае если оперативки мало, все это дело кэшировать на диск.. в общем, ой..
27 Вуглускр1991
 
11.09.13
20:36
(26) Да, но страшно, как поведет себя платформа, я ещё не в курсе, сколько наколочено в реальной базе связей, и сколько их будет наколочено в принципе на 8к рабочих SKU.
Я уж по зернышку их соберу с прогрессбаром, там ещё постобработка намечается, которая в общий запрос полезла бы ЛЕВЫМ ВНЕШНИМ СОЕДИНЕНИЕМ
нет желания рассказывать заказчику почему она повисла, нажрала памяти и завершилась ошибкой, хотя если 1С это сделала без обвалов - то они круты, на мой вкус.
28 France
 
11.09.13
20:40
(27) в последнее время (год) из принципиальных соображений делаю отчеты только с использованием запросов, и только на СКД.. как правило, все проблемы с "повисла" и "нажрала памяти" решались переосмыслением запроса и выпрямлением рук с помощью кувалды))
зы. правда, один отчет, точнее, платежный календарь пока упирается, негодник)) просит старые проверенные дедовские методы))
29 hhhh
 
11.09.13
22:29
(27) крутизна фирмы 1с в том, что они делают то, что они считают правильным.

А так как они считают неправильным выполнять на клиенте, то что должно выполняться на сервере, то будьте уверены, они там ничего не оптимизировали, и ваша программка на клиенте выполнится примерно в 500 раз медленнее, чем такая же на сервере.
30 Вуглускр1991
 
11.09.13
23:46
(29) Толстый клиент, файловая база.
Пока условия такие. Я работал с платформой 8.2 в режиме клиент-сервер управляемое приложение с 2010 года, сперва на ubuntu + DB2 потом на MS SQL - версия платформы 8.2.13.219 вот тут я и хапнул страхов, предрассудков, примет ..
может сейчас все уже круто, я могу давать оценку их труду, я его использую в своей работе.
31 mistеr
 
12.09.13
00:22
(20) Вы там, в углу, про "свойства и категории" слышали?
32 hhhh
 
12.09.13
07:58
(30) ну тогда (6) вам в помощь.
33 Defender aka LINN
 
12.09.13
08:17
(30) Я думаю, тот кто после тебя это сопровождать будет, вообще валерьянку литрами хапать будет.
34 Вуглускр1991
 
12.09.13
17:18
(31) Эта связь сделана на справочнике "Свойства объектов".
А можно ли свойство добавить группе?
(33) А ты сможешь сделать "ИЗ Таблица1 ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 ПО Таблица1.Ссылка В ИЕРАРХИИ Таблица2.Группа"?
35 France
 
12.09.13
17:24
(34) насколько помню, можно использовать  Ссылка В..
36 Вуглускр1991
 
12.09.13
17:33
(35)
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                   |    Таблица1.Ссылка,
                   |    Таблица2.Ссылка КАК Ссылка1
                   |ИЗ
                   |    Справочник.Номенклатура КАК Таблица1
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Таблица2
                   |        ПО (Таблица1.Ссылка В (Таблица2.Ссылка))";
Будет проверять иерархию?
37 mrDSide
 
12.09.13
17:35
"ВЫБРАТЬ Т1.П1,Т2.П2 ПОМЕСТИТЬ КОНЕЧНАЯТАБЛИЦА ИЗ &Т1 КАК Т1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Т2.П1, Т2.П2 ИЗ &Т2 КАК Т2; ВЫБРАТЬ * ИЗ КОНЕЧНАЯ ТАБЛИЦА"
38 mrDSide
 
12.09.13
17:37
ВЫБРАТЬ
    Т1.П1,
    Т1.П2
ПОМЕСТИТЬ КОНЕЧНАЯТАБЛИЦА
ИЗ
    &Т2 КАК Т1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Т1.П1,
    Т1.П2
ИЗ
    &Т2 КАК Т1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОНЕЧНАЯТАБЛИЦА.П1,
    КОНЕЧНАЯТАБЛИЦА.П2
ИЗ
    КОНЕЧНАЯТАБЛИЦА КАК КОНЕЧНАЯТАБЛИЦА
39 Вуглускр1991
 
12.09.13
17:39
(38) &Т2, &Т2 надо будет получать в запросах, а потом опять кидать как параметр. Надо смотреть, будет ли это быстрее, чем (6). Проверял? Быстрее?
40 mrDSide
 
12.09.13
17:58
Однозначно нет.
41 mrDSide
 
12.09.13
17:59
Но это 100% верный ответ на поставленный вопрос, т.к. получить именно слияние своих таблиц.
42 Вуглускр1991
 
12.09.13
18:04
(41) Сэр, Вы находитесь в корзине воздушного шара! :))
43 mistеr
 
12.09.13
20:27
(34) >А можно ли свойство добавить группе?
Ничто вроде не мешает.
44 Вуглускр1991
 
12.09.13
21:17
(43) УТ 10: открываем карточку группы товаров - свойств нет.
Нарисовать можно, но это меняет типовую.