|
v7: Найти по наименованию не с начала справочника | ☑ | ||
---|---|---|---|---|
0
FarmAdmin
13.12.12
✎
17:37
|
Суть такова. Есть справочник, методом НайтиПоНаименованию() нахожу в нем нужный мне элемент. Задача стоит в том, чтобы продолжить дальнейший поиск с этого элемента справочника, а не с начала. Цикл не предлагать.
|
|||
1
Wobland
13.12.12
✎
17:38
|
select предлагать?
|
|||
2
vinogradъ
13.12.12
✎
17:38
|
найди все и перебирай
|
|||
3
Стрелок
13.12.12
✎
17:40
|
транзакция+удалениевнутритритранзакции+поиск+отменатранзакции
выход из цикла если не нашли больше |
|||
4
Ёпрст
13.12.12
✎
17:40
|
Ну, вот штатный способ поиска по наименованию :
НачатьТранзакцию(); Пока Спр.НайтиПоНаименованию(....)=1 СЗ.ДобавитьЗначение(Спр.ТекущийЭлемент()); Спр.Удалить()4 КонецЦикла; ОтменитьТранзакцию(); |
|||
5
Ёпрст
13.12.12
✎
17:41
|
правда, он обламывается, если какой-то юзверь откроет форму нужного элемента справочника..
|
|||
6
NikNik001
13.12.12
✎
17:45
|
тогда уж выгрузить в ТЗ все элементы справочника, а потом удалить все элементы ТЗ, не удовлетворяющие усовию.
|
|||
7
NikNik001
13.12.12
✎
17:45
|
ну или построить индексный файл для справочника
|
|||
8
FarmAdmin
13.12.12
✎
17:45
|
(4)Ну вот я тоже так думаю, что через выгрузку в СЗ или ТЗ.Че-то другие варианты не лезут в голову под конец дня. (((
|
|||
9
Стрелок
13.12.12
✎
17:46
|
(6) т.е. это по вашему будет быстрее?
(7) про индекс к справочнику - поподробнее |
|||
10
Ёпрст
13.12.12
✎
17:46
|
(8) быстрее (1)
|
|||
11
Alexor
13.12.12
✎
17:47
|
Может запросом сделать проще?
|
|||
12
FarmAdmin
13.12.12
✎
17:48
|
Можно про select подробнее?
|
|||
13
Ёпрст
13.12.12
✎
17:50
|
(12)
|select | id [Элем $Справочник.Номенклатура] |from $справочник.Номенклатура (nolock) |where descr like '%вася%' |
|||
14
Ёпрст
13.12.12
✎
17:51
|
найдет все элементы, где в наименовании встречается вася
|
|||
15
Стрелок
13.12.12
✎
17:51
|
(13) я так понимаю в России 1с++ идёт в комплекте с 1С? и в коде уже всё прописаано? ;)
|
|||
16
Ёпрст
13.12.12
✎
17:52
|
(15) давно вроде
|
|||
17
ДенисЧ
13.12.12
✎
17:52
|
(15) Почти так. Причём даже конфигурацию менять не надо при использовании внешних обработок
|
|||
18
Стрелок
13.12.12
✎
17:53
|
круто ) реально что ли?
|
|||
19
Стрелок
13.12.12
✎
17:56
|
во блин. а я впариваю клиентам переделки под 1с++ как "супер пупер навороты". а наши то многие и не в курсе что это такое. Не так давно ковырял конфу клиента нового - мрак. фильтр по справочнику товаров в 10000 работает порядка 2 минут до вывода списка на экран.
Хотя вчерась столкнулся с интересным моментом в списке справочника - при получении актуального остатка в колонке формы списка быстрый запрос увы проиграл простому СводныйОстаток (при условии конечно что остатки на ТА надо) |
|||
20
Ёпрст
13.12.12
✎
17:57
|
(19) это на какой базе ?
на скуле ? |
|||
21
Стрелок
13.12.12
✎
17:59
|
(20) нет дбф
|
|||
22
NikNik001
13.12.12
✎
18:00
|
ТабКл = СоздатьОбъект("XBASE");
Файл1 = КаталогИБ() + "clients.dbf"; Индекс1 = КаталогИБ() + "clients.cdx"; Если ФС.СуществуетФайл(Файл1) = 1 Тогда ТабКл.ОткрытьФайл(Файл1,,0); Если (ФС.СуществуетФайл(Индекс1)=0) и (ТабКл.Открыта()=1) Тогда ТабКл.ДобавитьИндекс("IDXCode1","Code1",0,0,""); ТабКл.ДобавитьИндекс("IDXCode2","Code2",0,0,""); ТабКл.СоздатьИндексныйФайл(Индекс1); ТабКл.ЗакрытьФайл(); ТабКл.ОткрытьФайл(Файл1,Индекс1,0); ИначеЕсли (ТабКл.Открыта()=1) Тогда ТабКл.ЗакрытьФайл(); ТабКл.ОткрытьФайл(Файл1,Индекс1,0); КонецЕсли; Иначе ТабКл.ДобавитьПоле("Code1","N",5,); ТабКл.ДобавитьПоле("Code2","S",8,); ТабКл.ДобавитьИндекс("IDXCode1","Code1",0,0,""); ТабКл.ДобавитьИндекс("IDXCode2","Code2",0,0,""); ТабКл.СоздатьФайл(Файл1,Индекс1); КонецЕсли; |
|||
23
Стрелок
13.12.12
✎
18:00
|
уточнюсь - запрос выполнялся в функции с фильтром по товару
|
|||
24
Alexor
13.12.12
✎
18:00
|
(15) О, как! Какие люди появились!
|
|||
25
Ёпрст
13.12.12
✎
18:00
|
(21) запрос к дбф на чем ?
на оледб или на 1sqlite ? |
|||
26
Стрелок
13.12.12
✎
18:01
|
оледб
|
|||
27
Ёпрст
13.12.12
✎
18:01
|
(26) запрос пишешь с учетом индекса ?
анси офф перед этим есть ? |
|||
28
Стрелок
13.12.12
✎
18:02
|
ТекстЗапроса="
|SELECT | Рег.Товар AS [Товар $Справочник.Номенклатура], | SUM(Рег.ОстатокТовара) AS Остаток |FROM | (SELECT | $Рег_1.Товар AS Товар, | $Рег_1.ОстатокТовара AS ОстатокТовара | FROM | $РегистрИтоги.ОстаткиТоваров AS Рег_1 | WHERE | (PERIOD = :ПредМесяц~~) | AND ($Рег_1.Товар=:Товар) | | UNION ALL | | SELECT | $Рег_2.Товар AS Товар, | $Рег_2.ОстатокТовара*(1-Рег_2.debkred*2) AS ОстатокТовара | FROM | $Регистр.ОстаткиТоваров AS Рег_2 | INNER JOIN | 1sjourn jr ON Рег_2.iddoc = jr.iddoc | AND (jr.date BETWEEN :НачалоМесяца~~ AND :ПредДата~~) | AND ($ФлагРегистра.ОстаткиТоваров = 1) | WHERE ($Рег_2.Товар=:Товар) | ) Рег |GROUP BY | Рег.Товар | |ORDER BY | Рег.Товар"; |
|||
29
Ёпрст
13.12.12
✎
18:02
|
могу предположить, что нет и нет
:) |
|||
30
Стрелок
13.12.12
✎
18:02
|
(27) не говорите загадками....
|
|||
31
Стрелок
13.12.12
✎
18:02
|
всё по букварю ;)
|
|||
32
МихаилМ
13.12.12
✎
18:02
|
||||
33
Ёпрст
13.12.12
✎
18:03
|
(28) да , так и есть
Тогда, неудивительно, что "проиграл" |
|||
34
Стрелок
13.12.12
✎
18:03
|
(33) что не так?
|
|||
35
Ёпрст
13.12.12
✎
18:03
|
(31) http://www.1cpp.ru/forum/YaBB.pl?num=1184317705
вот с этим ознакомься и обгони сводный остаток! :) |
|||
36
Ёпрст
13.12.12
✎
18:04
|
а если еще и галку на быстрая обработка движений в регистр воткнешь - еще быстрее будет
|
|||
37
varelchik
13.12.12
✎
18:08
|
(36) Зачет!
|
|||
38
Стрелок
13.12.12
✎
18:09
|
спасибо глянул. надо разбираться. завтра сдавать работу. пока так оставлю - потом на досуге переделаю.... пока в голове каша из фокса, 1С и 1с++
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |