Вход | Регистрация


Форумы на Кубань.Ру


1С:Предприятие ::

Метки:Запросы и построители

Поиск элемента с помощью Запроса

Ø
Я
   sauxID
11.11.04 - 11:05
Необходимо осуществлять поиск элемента в справочнике по n реквизитам
где n - переменная (в зависимости от справочника)
Но уже на начальной стадии заглох не могу заставить работать запрос типа
Процедура Сформировать()
  Перем Запрос, ТекстЗапроса, Таб;
  Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
  "//{{ЗАПРОС(Сформировать)
  |ТекущийЭлемент = Справочник.Контрагенты.ТекущийЭлемент;
  |Наименование=Справочник.Контрагенты.Наименование;
  |Код=Справочник.Контрагенты.Код;
  |Условие (Наименование = ВыбЭл.Наименование);//ВыбЭлемент - элемент на форме
  |Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.Код;
  |"//}}ЗАПРОС
  Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
  КонецЕсли;
КонецПроцедуры
 
 
   sauxID
1 - 11.11.04 - 11:09
Не мог бы кто нить объснить (0)
А я продолжу - на самом деле ВыбЭл.Наименование - это в качестве эксперимента, а там вообще должна быть строка с наименованием т.е. ПоискИмени = "Поставщики";
а в запросе строка условия такая
|Условие(Наименование = ПоискИмени);
   Sure2
3 - 11.11.04 - 11:12
А в чём проблема? В том, что после выполнения запроса ничего не появляется на форме? Ну так и не может! Где цикл, разбирающий строки результата?
Если же запрос спотыкается на "= ВыбЭл.Наименование", то попробуй завести переменную ВыбНаименование = ВыбЭл.Наименование;
Помогло?
   sauxID
4 - 11.11.04 - 11:12
(1) тоже не работает равно как и не работает условие типа
|Условие (Найти(Наименование,ПоискИмени)<>0);
а вот условие типа
|Условие (Найти(Наименование,ВыбЭлемент.Наименование)<>0);
работает
   Sure2
5 - 11.11.04 - 11:16
(4) Если ПоискИмени - поле на форме, то нужно использовать не его, а СокрЛП(ПоискИмени). Конечные пробелы!
   sauxID
6 - 11.11.04 - 11:18
(2) и (3) Фишка в том что все строковые реквизиты Код, Наименование, и т.д. - у меня есть строкой т.е. надо проверить наличие в справочнике элеента с таким кодом и наименованием (может быть и еще что-то) и продолжить обработку (все это делается в загрузке из XML но сложность в том что данные пришли из самописной конфы вообщ не на что не похожей т.е структура данных отличается от структуры принимающей конфы)
   sauxID
7 - 11.11.04 - 11:25
Может кто предложит другой способ поиска элемента в справочнике если при входе есть только такие данные (все переменные - Не CONST)
           ВидСправочника = "Справочник.Материалы";
           КодПоиска = "00174587";
           ИмяПоиска = "Труба Т-типа";
           ЦенаПоиска = 13.50;
           РодительПоиска = Материалы (элемент справочника);
ну и т.д. в зависимости от Вида справочника
   dma
8 - 11.11.04 - 11:30
(7) Так если есть код, то по нему и ищи. Или он не уникальный?
А в запросе надо сравнивать не Строку Наименование, а элементы, т.е.
Условие(ТекущийЭлемент=ВыбЭлемент)
Иначе придется колбасить ВРег(СокрЛП(ТвоеНаименование)), да еще убирать всякие тире, точки и всякую лабуду
   sauxID
9 - 11.11.04 - 11:39
Код уникальный (я его зря написал - сори), но т.к. базы и по сей день не совмещены то идет полное не совпадение кодов т.е. поиск по коду НЕ НАДО!
   Sure2
10 - 11.11.04 - 11:40
(7) А такое годится:
//Начало кода
Спр=СоздатьОбъект(ВидСправочника);
Спр.ИспользоватьРодителя(РодительПоиска);
Если 1=Спр.НайтиПоКоду(КодПоиска,1) Тогда ... КонецЕсли;//1=Поиск внутри подчинения, а не глобальный (0)
Если 1=Спр.НаитиПоНаименованию(ИмяПоиска,1,0) Тогда ... КонецЕсли;// 1 -поиск внутри подчинения, ",0" - по начальным символам
Если 1=Спр.НайтиПоРеквизиту(ИмяРеквизита,ЦенаПоиска,0) Тогда ... КонецЕсли;// 0 - в пределах подчинения
//КонецКода
 
 
   sauxID
11 - 11.11.04 - 11:43
Конечно синхронизация кодов в большинстве справочников буде достигнута но в некоторых справочниках (напр. Спр Материалы) это еще с полгода после начала совместной работы будет сделать не возможно т к есть остатки а конфы ОЧЕНЬ разные
   dma
12 - 11.11.04 - 11:43
(9) У-у-у-у-у... Как тут у вас всё за Путина... ИМХО, сначала надо это все совместить по кодам. А иначе этот секс будет постоянным, т.к. наименования в разных базах совместить будет сложнее.
Кстати. А загрузка одноразовая или будет повторяться периодически? Если одноразовая, то в принципе один разок извратиться можно.
   Sure2
13 - 11.11.04 - 11:47
(9) Сорри за (10), тогда ещё (9) не было.
Но почему по коду не нужно искать? Во-первых, задача состоит в совмещении баз, не так ли? То есть нужно добавить все элементы (которых ещё нет в базе-приёмнике), где коды не совпадают с имеющимися, сохраняя коды. Далее -если для разных элементов оказались одинаковые коды - добавить все элементы, но с новыми кодами.
И, наконец, если элемент есть (совпадение по имени), но с другим кодом - добавить в существующий элемент.
Похоже на твоё понимание задачи? Тогда ПоискПо... очень даже проходит!
   sauxID
14 - 11.11.04 - 11:47
Не множечко логики не доганю вот он нашел по имени Трубу дальше ищем по цене и что ему мешает найти какое-нить Кольцо по цене 13-50 и еще НайтиПоРеквизиту - в отсутствии некоторых галочек не работает по-моему
   Sure2
15 - 11.11.04 - 11:51
(11) То есть загрузка идёт этапами, кусочками. Значить, как минимум, нужно добавить в конфигурацию-приёмник доп.реквизит "ДругойКод", в который заносится код, под которым элемент известен в Базе-Источнике. Иначе потом никак не удастся сверить остатки. А вероятность=100%, что это потребуют. Даже если первоначально будут клясться и божиться, что на это не нужно закладываться.
   dma
16 - 11.11.04 - 11:52
(11) Стоп, стоп, стоп. Что значит "... нашел по имени Трубу дальше ищем по цене ..."??? А разве есть смысл в справочнике с уникальным кодом сделать несколько элементов с одинаковым наимнованием, но с разными ценами? ИМХО что-то с логикой поиска не то...
   Sure2
17 - 11.11.04 - 11:54
(14) По цене, действительно, весьма сомнительная возможность ( и необходимость) поиска. Полезнее искать по штрих-кодам, артикулам и т.п. (если есть доп.каталоги, классификаторы)
   dma
18 - 11.11.04 - 11:54
(15) Масло масляное... Все равно придется визуально совмещать элементы разных справочников.
   sauxID
19 - 11.11.04 - 11:55
Для (9): у "больших" людей это в планах на постоянку а я честно говоря уже поставил задачу сделать это одноразово что-бы показать какой это Гемор, и что их базу надо более подгинать под нашу (У нас обычная бух с бешенными дописками рабочая а у них самописка на основе Производства в тетовом варианте - на ней никто еще не работает и неизвестно когда будет но задача поставлена - ОБЪЕДИНИТЬ!!!)
   sauxID
20 - 11.11.04 - 11:58
16) Справочник Материалы реализован в бухии, для каждой новой карточки заводится новый элемент с новым кодом и ценой с тем же наименованием (конечно при условии что цена разная)
   dma
21 - 11.11.04 - 11:59
(15) Масло масляное... Все равно придется визуально совмещать элементы разных справочников.
   dma
22 - 11.11.04 - 12:01
(21) по ошибке послал.
ИМХО мой путь решения проблемы:
1. Перекодируй справочники с использованием префиксов.
2. Все новые элементы должны заводиться с учетом префикса.
3. Написать обработку для визуального сравнения двух справочников с элементами автоматизации некоторых операций поиска и т.д.
4. В один из нерабочих дней провести синхронизацию справочников.
зы. А справочники большие?
   sauxID
23 - 11.11.04 - 12:03
Еще раз повторюсь "Структура баз очень отличается" в полне возможно что база или по крайней мере принцип выгрузки будут переделаны но сейчас надо как-то найти элементы по-пырому;
   dma
24 - 11.11.04 - 12:06
(23) Да без разницы какая у них структура. Ессно, если ты хочешь использовать стандартную обработку переноса справочников, то ... один черт придется ручками долопачивать. Проще свою написАть. 1-2 дня потратишь.
Удачи.
   sauxID
25 - 11.11.04 - 12:09
(22)Все это "прекрасное далёко" и уже административные или управленческие задачи, а надо пока просто найти хоть чё-нить удовлетворяющее условиям. Что был белее ясен принцип, то перед поиском для каждого загружаемого элемента формируются правила-набор реквизитов со значениями по которым и надо осуществлять поиск доп для Контр достаточно ИНН и поиск по этому реквизиту кстати ЗАПРОСОМ прокатывает, проблема именно с Наименованием не хочет он ничего отбирать
   sauxID
26 - 11.11.04 - 12:12
(24) Действительно стандартная не прокатит, все пишется заново, но
1) Выгрузка есть уже готовая в ЭксЭмэле,
2) Надо только загрузить и проблема возникла только для справочника материалы




Список тем форума

Форум Территория 1С

Рекламное место пустует   Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует