8.х Отбор

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем бухг123, 31 июл 2013.

  1. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.

    В обработчике пробую сделать ограничение на просмотр элементов справочника, т.е. пробую сделать отбор в Справочнике.

    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ИнформационныеКарты.Родитель КАК Группа,
    | ИнформационныеКарты.Наименование КАК Объект
    |ИЗ
    | Справочник.ИнформационныеКарты КАК ИнформационныеКарты
    |ГДЕ
    | ИнформационныеКарты.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.ВыберемКогоНибудь);
    Результат = Запрос.Выполнить().Выгрузить();
    Таблица.Загрузить(Результат);
    
    Если Строка(ЭтотОбъект.ВыберемКогоНибудь.Родитель) = "VIP 20%" Тогда
    Сообщить(ЭтотОбъект.ВыберемКогоНибудь.Родитель);
    
    ФормаСписка = Справочники.ВидыОплатЧекаККМ.ПолучитьФормуСписка();
    ФормаСписка.СправочникСписок.Отбор.Ссылка.Значение = Справочники.ВидыОплатЧекаККМ.НайтиПоНаименованию("VIP");
    ФормаСписка.СправочникСписок.Отбор.Ссылка.Использование = Истина;
    
    КонецЕсли;
    КонецПроцедуры
    
    Выручайте. Вопрос скорее всего простой, но как то не получается.

    Вложения:

  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    а где открытие формы?
  3. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Так?

    Код:
    ФормаСписка = Справочники.ВидыОплатЧекаККМ.ПолучитьФормуСписка().Открыть()
  4. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Пробую сделать ограничение на просмотр элементов справочника. в данном случае чтобы в справочнике при открытии показывался только элемент "VIP".
    Код:
    ФормаСписка = Справочники.ВидыОплатЧекаККМ.ПолучитьФормуСписка().ОткрытьМодально()
    тоже пробовал
  5. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Есть конструкция языка запросов "В ИЕРАРХИИ", посмотрите в синтаксис помощнике.
    А вообще такое в типовых конфигурациях делается через "настройки доступа по записям"
  6. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Добиться необходимого результата получается только из процедуры ПриОткрытии ФормыВыбора самого справочника.

    Код:
    Процедура ПриОткрытии()
    СправочникСписок.Отбор.Наименование.ВидСравнения = ВидСравнения.Равно;
    СправочникСписок.Отбор.Наименование.Значение = "VIP";
    СправочникСписок.Отбор.Наименование.Использование = Истина;
    КонецПроцедуры
    

    Очень нужно программно в обработчике добиться отбора по "наименованию". Выручайте. Что не так делаю?
  7. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Не уверен что сработает, но попробовать ничто не мешает :
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    | ИнформационныеКарты.Ссылка,
    | ИнформационныеКарты.Родитель  КАК Группа,
    | ИнформационныеКарты.Наименование КАК Объект
    |ИЗ
    | Справочник.ИнформационныеКарты КАК ИнформационныеКарты
    |ГДЕ
    | ИнформационныеКарты.Ссылка В ИЕРАРХИИ(
    |  ВЫБРАТЬ ПЕРВЫЕ 1
    |   СправочникИК.Ссылка
    |  ИЗ Справочник.ИнформационныеКарты КАК СправочникИК
    |  ГДЕ СправочникИК.Наименование ПОДОБНО ""%VIP 20%""
    | )
    |";
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
    СписокЗначений = Новый СписокЗначений;
    Результат = Запрос.Выполнить().Выгрузить();
    
    СписокЗначений.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Ссылка"));
    ФормаСписка = Справочники.ВидыОплатЧекаККМ.ПолучитьФормуСписка();
    ФормаСписка.СправочникСписок.Ссылка.ВидСравнения  = ВидСравнения.ВСписке;
    ФормаСписка.СправочникСписок.Отбор.Ссылка.Значение  = СписокЗначений;
    ФормаСписка.СправочникСписок.Отбор.Ссылка.Использование = Истина;
    
    Если НЕ ФормаСписка.Открыта() Тогда ФормаСписка.Открыть(); КонецЕсли;
    КонецПроцедуры
  8. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Большое спасибо. Немного переделав ваш код получилось приблизительно то что нужно, не думал что можно добиться этого через запрос.
    Как я понял в результате всех этих проб. Добиться открытия из формы Обработчика таким образом чтобы реквизит "Справочник" нажатием на выбор (три точки), не получается. Для этого нужно в ФормуВыбора справочника в процедуру "ПриОткрытии" дописывать отбор.

    Для того чтобы в обработчике добиться похожего результата остается открывать Форму в конце процедуры
    Код:
    ФормаСписка.Открыть()
    . И пользоваться этим. Ну в принципе и этого достаточно. (могу ошибаться и наверняка есть другое решение)

    Большое спасибо за помощь Yuriy_Alexandrovich.
  9. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    У обведенного поля выбора есть обработчик "ПриНачалеВыбора", в процедуре поставить Стандартная обработка = Ложь, и вставить туда ваш код по открытию формы
  10. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Код:
    ФормаСписка = Справочники.ЗначениеСвойствоОбъектов.ПолучитьФормуСписка();
    
    По какой причине у некоторых справочников не проходит обращение к СправочникуСписку. Выдает сообщение об ошибке не найден СправочникСписок? Никто не сталкивался? Хотя он есть когда просматриваешь в конфигураторе.

    Вложения:

    • 13.png
      13.png
      Размер файла:
      202,6 КБ
      Просмотров:
      13
  11. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Все, извиняюсь за продолжение темы, разобрался.
  12. Гриша
    Offline

    Гриша Опытный в 1С

    Регистрация:
    4 май 2008
    Сообщения:
    286
    Симпатии:
    5
    Баллы:
    29
    подскажи как решал, интересно
  13. TopicStarter Overlay
    бухг123
    Offline

    бухг123 Опытный в 1С

    Регистрация:
    8 дек 2011
    Сообщения:
    219
    Симпатии:
    0
    Баллы:
    26
    Ссылался не на тот объект. В моем случае не к справочнику ЗначениеСвойствоОбъектов а к документам РеализацияТоваровИУслуг. Т.к. сам реквизит к кому необходимо было применить данное действо был Ссылкой.РеализацияТоваровИУслуг (глупая ошибка конечно, но иногда не замечаешь мелочей и теряешь время в догадках)

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