Имя: Пароль:
1C
1С v8
Как ограничить результаты выборки?
0 gorden
 
29.01.13
17:17
Добрый день. Номенклатура ~ 100000 наименований. Нужен запрос который отображал бы наименования по частям, например первые 20, вторые 20 итд (т.е. постранично). Что то типа LIMIT в MySQL. Как такое сделать?
1 Wobland
 
29.01.13
17:18
на зачем? выгрузи в ТЗ
2 Утконос
 
29.01.13
17:18
Первые 200
3 rotting
 
29.01.13
17:18
выбрать первые 20
4 Живой Ископаемый
 
29.01.13
17:18
А) никак
Б) сделать запрос источником динамического списка
5 Aprobator
 
29.01.13
17:19
(0) запрос ничего не отображает. Вообще.
6 Wobland
 
29.01.13
17:19
(2)(3) и следующие 20
7 rotting
 
29.01.13
17:19
(4) при "первые 20" запрос все равно сначала все отбирает, а потом отсекает?
8 rotting
 
29.01.13
17:20
(6) соласен, тупим)
9 Wobland
 
29.01.13
17:20
(7) выборки всего не происходит
10 Aprobator
 
29.01.13
17:20
+(5) и к выводу информации по страницам он отношения также не имеет.
11 Reset
 
29.01.13
17:20
(7) А почему ты это у (4) спрашиваешь? :)
12 Бешеная Нога
 
29.01.13
17:21
может привязаться к нумерации?
13 Aprobator
 
29.01.13
17:23
(0) какая цель данного действия то?
14 Reset
 
29.01.13
17:24
Обычно предлагают запрос отсортировать как-то (если есть уникальное поле), затем использовать
Первые 20
Где ЭтоПоле>&ПоследнегоВыбранногоНаПредыдущемШаге
15 gorden
 
29.01.13
17:25
(13) Web-приложение работает с 1С через COM. В него нужно загружать номенклатуру частями, например чтобы на страницу помещалось по 20 записей. Ну и постраничное пролистывание.
16 Aprobator
 
29.01.13
17:30
(15) вот запрос тут совсем не при чем.
17 Antizdoba
 
29.01.13
17:32
(15) Судя по всему вам понадобится план обмена. Выгружать n количество элементов помечая их, при удачной выгрузке выгружать следующую порцию.После удачной выгрузке всего справочника, следующий раз буду загружаться только измененные объекты, что сократит объем передаваемых данных.
18 Reset
 
29.01.13
17:33
(15) СправочникВыборка посмотри. Правда "назад" не полистать
19 H A D G E H O G s
 
29.01.13
17:37
(18) Херовая идея.
20 gorden
 
29.01.13
17:38
(18) Есть ли в 1С что то типа "Выборка.ПереместитьКурсорНа(20)" вместо "Выборка.Следующий()",
21 Reset
 
29.01.13
17:39
(20) Нет
22 МихаилМ
 
29.01.13
17:39
23 H A D G E H O G s
 
29.01.13
17:39
ВЫБРАТЬ ПЕРВЫЕ 30
   Номенклатура.Ссылка КАК Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка > &ПоследняяВыбранная

УПОРЯДОЧИТЬ ПО
   Ссылка
24 Reset
 
29.01.13
17:41
(23) -> (14)
+ упорядочивание по ссылке явно не удобно для отображения

(19) Херовое обоснование херовости идеи
25 H A D G E H O G s
 
29.01.13
17:43
(24) Выборка работает точно также, только цепляет с собой ВСЕ. Пора бы знать.
26 Reset
 
29.01.13
17:49
(25) Ты реально себя богом счиатешь?
27 Живой Ископаемый
 
29.01.13
17:52
Проще чтобы ваша база выгружала номенклатуру в табличку майскл
28 H A D G E H O G s
 
29.01.13
17:53
(26) Ты с какой целью интересуешься?
29 rs_trade
 
29.01.13
17:55
(15) Сделайте для веб-приложения свою таблицу номенклатуры. подкачивайте туда изменения и новые элементы из 1с. А из веб-приложения свою табличку уж как угодно листать можно.
30 rs_trade
 
29.01.13
18:18
Вообще конечно общение веб-сервера и 1с-ки через COM, это путь в никуда.
31 gorden
 
29.01.13
18:20
Да, жаль. Такая простая вещь не предусмотрена в 1С. В принципе все Database движки с которыми работает 1С (кроме наверное своей файловой) имеют встроенные механизмы, позволяющие ограничивать выборки, двигаться по ним. (((
32 gorden
 
29.01.13
18:22
(30) Все от задачи зависит. Какие вы варианты предпочитаете? WEB сервисы? Тоже палка о двух концах...
33 Fragster
 
гуру
29.01.13
18:24
(31) не путай mysql (который, кстати, limit 300, 30 делает через top 330 с прямой сортировкой, top 30 с обратной сортировкой, сортировку снова в прямом порядке). в mssql лимита нет, только top
34 rs_trade
 
29.01.13
18:27
(32) Лично я предпочитаю прямые запросы. КОМ просто самый не гибкий.
35 rs_trade
 
29.01.13
18:27
Да и не понятно как через интернеты через ком работать. Никак.
36 Fragster
 
гуру
29.01.13
18:30
(15) классический вариант - план обмена, узел для ИМ, через веб сервис происходит синхронизация справочников по плану обмена по расписанию. для таких вещей, как отображение списка номенклатуры 1ска не дергается, 1ска дергается только для тех действий, которые влияют на 1с, или на которые 1с виляет - расчет суммы заказа, подтверждение заказа с созданием документа в 1ске и т.п.
37 gorden
 
29.01.13
18:30
(34) Прямые запросы это как, поясните пожалуйста, оч. интересно.
38 МихаилМ
 
29.01.13
18:32
(35)
DCOM
39 rs_trade
 
29.01.13
18:34
(37) Коннектишься через АДО к сайту. Читаешь оттуда, пишешь туда.
40 rs_trade
 
29.01.13
18:36
(38) DCOM круче чем http для работы через интереты?
41 gorden
 
29.01.13
18:37
(36)(39) Раньше было организовано через обмен/синхронизацию. Но сейчас кроме номенклатуры нужно вываливать на WEB информацию по поставщикам, балансы, документы, отчеты и многое другое. Чтобы не городить две системы, пытаемся сделать прямой доступ к 1С.
42 rs_trade
 
29.01.13
18:40
(41) Ну так включайте в состав плана обмена нужные объекты, и фоновыми заданиями пуляйте измененные данные на сайт. Веб-сервисом, или прямым запросом.
43 МихаилМ
 
29.01.13
18:41
(40)
не сравнивал. критерии крутости какие ?
44 rs_trade
 
29.01.13
18:48
(43) как я понимаю, DCOM все же для локалки, а не интернетов.
45 gorden
 
29.01.13
18:51
(42) Пробовали. Чем дальше, тем сложнее, так. как достаточно сложная бизнес-логика приложения. И к тому-же она постоянно масштабируется. Контролировать 2 системы становится сложнее и сложнее.
46 Fragster
 
гуру
29.01.13
18:53
(45) не надо реализовывать логику в 2-х местах, надо реализовывать представление отдельно, разделить бизнес процессы. тогда повторяться мало чего дует. а то когда для того, чтобы покопаться в каталоге требуется дергать 1с - очень просто сделать DoS
47 rs_trade
 
29.01.13
18:57
(45) Имхо, в тупик зайдете с COM-обменом в итоге. Придется много переделывать.