8.х Как сделать отбор по свойству объекта (документа) в журнале «Док Контр»

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Asintelekt, 6 июл 2009.

  1. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Платформа - 1С:Предприятие 8.1 (8.1.14.72)
    Конфигурация - "Управление торговлей", редакция 10.3 (10.3.7.9)
    Есть план видов характеристик «Свойства объектов», там есть предопределенное свойство «Документы» (к нему относятся все типы документов), и данному свойству заданны «Значения свойств», которые падают в справочник «Значения свойств».
    После этого данное свойство можно выбирать во всех формах документов (на верхней панели кнопок, есть кнопка «Открыть свойства») После выставления данного свойства, оно записывается в регистр сведений «Значения свойств объектов»

    Требуется:
    1) Добавить колонку с данным свойством в журнал
    2) И возможность проводить Отбор по данной колонке

    Заранее спасибо!
  2. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А вам не кажется, что чем так извращаться проще завести новый реквизит у документа?

    1) в событие "При выводе строки" добавить вывод этого свойства:

    Код:
    СтруктураОтбора = Новый Структура("Объект, Свойство", ДанныеСтроки.Ссылка, Планы видовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Нужное свойство"))
    
    Значение = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(СтруктураОтбора).Значение;
    
    2) Написать свой запрос, который будет оббирать данные и выводить их.
  3. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Все, как я и предпологал:)
    Там одним реквизитом не обойдется, так как не документ, а журнал, используются все документы
  4. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    На какое событие табличного поля повесить код?
    Попробывал на событие "ПриПолученииДанных":


    Код:
    Процедура ЖурналДокументовСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    СтруктураОтбора = Новый Структура("Объект, Свойство", Элемент.ТекущаяСтрока.Ссылка, ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Проект"));	
    Значение = РегистрыСведений.ЗначенияСвойствОбъектов.Выбрать(СтруктураОтбора).Значение;		
    КонецПроцедуры
    

    1) В итоге ошибка : "Ошибка при вызове метода контекста (Выбрать): Недопустимое значение параметра (Параметр номер "1")"
    2) Добавил колонку "Состояние", как в нее поместить полученное значение?
  5. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Не
    Код:
    Элемент.ТекущаяСтрока.Ссылка
    
    
    , а
    Код:
    Элемент.ТекущиеДанные.Ссылка
    
    
    Поместить в колонку можно в обработчике "ПриВыводеСтроки()"

    Код:
    ОформлениеСтроки.Ячейки.Состояние.УстановитьТекст(<УстанавливаемыйТекст>,Истина);
    
    
  6. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ЖурналДокументовСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    СтруктураОтбора = Новый Структура("Объект, Свойство", ДанныеСтроки.Ссылка, ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Проект"));    
    Значение = РегистрыСведений.ЗначенияСвойствОбъектов.Выбрать(СтруктураОтбора).Значение;
    ОформлениеСтроки.Ячейки.Проект.УстановитьТекст(Значение);
    КонецПроцедуры
    
    
    
    Таже ошибка "Ошибка при вызове метода контекста (Выбрать): Недопустимое значение параметра (Параметр номер "1")" на строке:
    Значение = РегистрыСведений.ЗначенияСвойствОбъектов.Выбрать(СтруктураОтбора).Значение;

    Пробывал за место "ДанныеСтроки.Ссылка", Элемент.ТекущиеДанные.Ссылка - ошибка осталась
  7. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Кстати, почему "Выбрать()"?
    Нужно так:
    Код:
       
    Значение = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(СтруктураОтбора).Значение;
    
    
  8. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Спасибо!

    В справку залез не туда:) -

    РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Получить (InformationRegisterRecordSet.<Имя регистра сведений>.Get)
    РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
    Получить (Get)
    Синтаксис:
    Получить(<Индекс>)
  9. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Может, у кого есть идея, как лучше сделать отбор по проекту? Желательно подетальнее :unsure:
  10. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Стоп. А чем вам не подошел реквизит проект? Он во многих документах есть. Просто может он у вас в учетной политике отключен.
  11. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    В том и дело, что во многих:) Но далеко не вовсех. А именно в документах реализации и поступления. Тут скорее идея вообще классифицировать все документы, которые вводятся менеджерами. И это не единственное свойство
  12. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Чтобы работал стандартный отбор, у всех документов нужно добавить общий реквизит. Что есть лажа.
    Можно добавить всем документам свойство "Проект" и написать простенькую обработку отбора этих документов. Поскольку стандартный отбор работать не будет.
    Можно, в конце концов создать дополнительную форму списка, в которой будет колонка "Проект".
    Какая именно задача решается?
    Что вы подразумеваете под проектом?
  13. TopicStarter Overlay
    Asintelekt
    Offline

    Asintelekt Опытный в 1С

    Регистрация:
    23 авг 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    В данной фирме работает порядка 30 активников-менеджеров, в журнале им почти не реально ориентироваться в своих документах. Поэтому всем документам проставляются свойства объектов. Отбор по ответственному не катит, так как они работают чаще группами, то есть, когда-то в одном проекте задействовано несколько человек. При этом это не единственное свойство объектов. Их порядка 5. То есть нужен был механизм, для классификации всех документов сразу. Чтобы и в отчетах можно было пользоваться этими свойствами и в данном журнале. Сейчас они выполняют отбор по свойствам в отчете «Реестр документов», им хотелось бы иметь данную конструкцию в журнале.
  14. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Что значит конструкцию? Либо они пользуются стандартным отбором в форме списка, для работы которого должен быть добавлен общий реквизит, либо используют обработку (Реестр документов), вызываемую отдельно.

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

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