8.х Поиск данных

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Mikhail74, 7 авг 2008.

  1. TopicStarter Overlay
    Mikhail74
    Offline

    Mikhail74

    Регистрация:
    7 авг 2008
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Доброго времени всем
    Есть вот такая форма( см прикрепленный файл) есть исходник
    Код:
    Перем СписокПоиска;
    Процедура ПриОткрытии()
    
    СписокПоиска=ПолнотекстовыйПоиск.СоздатьСписок();
    КонецПроцедуры
    
    Процедура НайтиНажатие(Элемент)
    СписокПоиска.СтрокаПоиска = Фраза;
    Попытка
    СписокПоиска.ПерваяЧасть();
    СписокПоиска.СтрокаПоиска=Фраза;
    Исключение
    Предупреждение(ОписаниеОшибки());
    КонецПопытки;
    
    Если СписокПоиска.ПолноеКоличество()= 0 Тогда
    ЭлементыФормы.СообщенияОРезультате.Значение="Не найдено";
    ЭлементыФормы.РезультатПоиска.УстановитьТекст("");
    Иначе
    ВывестиРезультатПоиска();
    КонецЕсли;
    
    
    
    КонецПроцедуры
    Процедура ВывестиРезультатПоиска()
    ЭлементыФормы.СообщенияОРезультате.Значение="Показаны"+
    Строка(СписокПоиска.НачальнаяПозиция()+1)+"-"+
    Строка(СписокПоиска.НачальнаяПозиция()+
    СписокПоиска.Количество())+"из"+СписокПоиска.ПолноеКоличество();
    Результат=СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст);
    ЭлементыФормы.РезультатПоиска.УстановитьТекст(Результат);
    ДоступностьКнопок();
    КонецПроцедуры
    
    Процедура ДоступностьКнопок()
    ЭлементыФормы.СледующаяФорма.Доступность(СписокПоиска.ПолноеКоличество()-СписокПоиска.НачальнаяПозиция()); //>СписокПоиска.Количество();
    ЭлементыФормы.ПредыдущаяПорция.Доступность=(СписокПоиска.НачальнаяПозиция()>0);
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецпроцедуры')">КонецПроцедуры	</span>
    Процедура ПредыдущаяПорцияНажатие(Элемент)
    // Вставить содержимое обработчика.
    СписокПоиска.ПредыдущаяЧасть();
    ВывестиРезультатПоиска();
    КонецПроцедуры
    
    Процедура СледующаяПрцияНажатие(Элемент)
    // Вставить содержимое обработчика.
    СписокПоиска.СледующаяЧасть();
    ВывестиРезультатПоиска();
    
    КонецПроцедуры
    Процедура РезультатПоискаonclick(Элемент, pEvtObj)
    HtmlElement=pEvtObj.srcElement;
    Если (htmlElement.id="FullTextSearchListItem") Тогда
    НомерВСписке=Число(htmlElement.NamrProp);
    ВыбраннаяСтрока=СписокПоиска[НомерВСписке];
    ОткрытьЗначение(ВыбраннаяСтрока.Значение);
    pEvtObj.returnValue=Ложь;
    КонецЕсли;
    КонецПроцедуры
    
    При заполнении Выскакивает такая ошибка "Значение не является значением объектного типа (СтрокаПоиска)"
    ПОМОГИТЕ ХРИСТА РАДИ

    Вложения:

    • trouble.JPG
      trouble.JPG
      Размер файла:
      146,3 КБ
      Просмотров:
      138
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Обработку выложите, а то не очень понятно, что тут к чему...
  3. freol
    Offline

    freol

    Регистрация:
    5 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Это упражнение из Радченко и я столкнулся с тем же.
    Обработку выложить это что выложить? Как решили проблему?

    Там текстовое поле пишет "невозможно преобразовать в объект", т.к.

    СписокПоиска.СтрокаПоиска = ПоисковоеВыражение;

    а "ПоисковоеВыражение" - строка. Как её сделать объектом?
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Судя по скрину - это 8.1. Сам лично делал полнотекстовый поиск по практическому пособию разработчика.
    Все там более чем понятно и все работает. Повнимательнее проделайте и все получится.
  5. freol
    Offline

    freol

    Регистрация:
    5 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Раскусил!

    Та же ошибка (грабли ) что и раньше...


    Процедура ПриОткрытии() - не была нажата кнопочка в св-вах, а просто скопирован текст программного кода... Эт БООЛЬшой косяк 1С, что она не находит в программном коде нужные элементы и не ставит их в свойства объектов!

    Всем спасибо за внимание!
  6. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Поясните
    И в чем это косяк 1С заключается?
  7. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Я так понимаю ТС обработчик событию не назначил.

    Только почему это косяк 1С, а не разработчика?! :angry:
  8. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Работал на разных версиях платформы и что-то не припомню чтобы у меня обработчики событий не назначались.
    Все она находит, видимо Вы, что-то не правильно делаете.
  9. freol
    Offline

    freol

    Регистрация:
    5 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Проблема: при копировании программного кода в модуль, из текстового файла, у меня, да и у всех, кого видел, 1С никогда не определяет, что там внутри написано, и не ставит сама действия в
    ПередОткрытием
    ПриОткрытии
    ПриЗакрытии
    ...
    и т.д.
    Не помню, уж где я работал до этого, но мне кажется, что если я скопировал что-то и вставил, то в Свойствах поля

    ПередОткрытием
    ПриОткрытии
    ПриЗакрытии
    ...
    сами должны заполнится, определив из программного кода текст

    "
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    ..................
    КонецПроцедуры
    "

    А то, получается, что текст в программном модуле не до конца связан с событиями в свойствах формы.


    Ура! мне наконец-то откроется секрет, как включить определение программного кода!
    Открывайте секрет, где что надо настроить, чтобы 1С видела и подставляла значения в свойства объекта, исходя из записей программного кода в модуле!?
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Никакого секрета нет.
    Обработчик события связывается с источником события только на основе источника.
    Т.е. связь только в одну сторону и то, что Вы назвали обработчик также, как источник события - н икакой роли не играет.

    Для связи источника с обработчиком необходимо в свойствах действия указать источник. Вот и все.
  11. freol
    Offline

    freol

    Регистрация:
    5 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    BabySG

    Жаль... Я уж думал, что можно как-то включить эту функцию "обратной связи"
    Просто помню, что в каком-то программировании работала обратная связь, и можно было по памяти сразу писать программный код и он работал. А в 1С надо еще в ручную привязать все процедуры к действиям.

    Потому что, это гораздо удобнее, когда можно по памяти писать код, или допустим копировать, а тут еще надо пробежаться и в ручную привязать к событиям, сдается мне что 1С таким образом не хочет суперпрограммеров иметь на этом свете, которые готовы писать код по памяти, не заглядывая во вкладку "свойства".


    Вообще, я считаю еще косяком, что в некоторых окнах в 1С ползунок не информативный, хотя в "Модуле" например он информативный. Что мешало им везде сделать его информативным?
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Смысл в том, что для обработчика может быть назначена ДРУГАЯ процедура и весь Ваш код по памяти просто работать не будет и Вы будете сидеть и гадать - почему?
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Ну следуя вашей логике, микрософт тоже не хочет суперпрограммистов на этом свете иметь :angry: (это я к тому что например в microsoft visual studio - все события формы также привязываются через закладку "свойства" (уж на IDE ms vs - я надеюсь вы возмущаться не будете? :D) ).

    И потом - ни разу это не удобней.
  14. freol
    Offline

    freol

    Регистрация:
    5 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Не хотелось бы спорить с гуру программирования в 1С. Но Ваша фраза "может быть назначена ДРУГАЯ процедура" это то же, что в любом языке программирования одну переменную несколько раз упомянуть в разных местах с разными значениями, и задумываться, а почему у нее вдруг значения меняются..? Это уже будет явно ошибка программиста, что он не заметил, что переменная одна и та же, а значения нужны разные.

    Но согласитесь, если бы 1С определяла сама, то, что ты уже скопировал, то не тратилось бы время на заход во вкладку св-ва и назначение в ручную этой ф-ии или проц-ры. А в масштабах применения 1С это тысячи рабочих часов программистов 1С. ;)
  15. alexeysmirnov20
    Offline

    alexeysmirnov20

    Регистрация:
    12 июл 2015
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1

Поделиться этой страницей