7.7 Отбор по журналу

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем 2man, 15 фев 2011.

  1. TopicStarter Overlay
    2man
    Offline

    2man Опытный в 1С

    Регистрация:
    26 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Журнал товары, включает документы Счет, Постуление товаров, накладная, розничная накладная, возврат и т.д. В табличной части журнала следующие колонки: вид документа, номер, поступление, отгрузка, контрагент, автор, отчет.
    Кроме "Автор" общего реквизита у документов нету.
    Для отбора документа по виду используется список значений:

    Код:
    	Если Форма.РежимВыбора()=1 Тогда 
    Иначе                              
    Поз = СпЗнач.ТекущаяСтрока();
    УстановитьОтбор(СпЗнач.ПолучитьЗначение(Поз)); 
    КонецЕсли;
    
    Код:
    СпЗнач.ДобавитьЗначение("","Все документы");
    СпЗнач.ДобавитьЗначение("ПоступлениеТоваров",            "Поступление товаров");
    СпЗнач.ДобавитьЗначение("ПоступлениеТоваровВал",         "Поступление товаров в валюте");
    СпЗнач.ДобавитьЗначение("ПеремещениеТоваров",            "Перемещение товаров");
    СпЗнач.ДобавитьЗначение("Накладная",                     "Накладная на отгрузку");
    СпЗнач.ДобавитьЗначение("ВозвратТоваров",                "Возврат товаров от покупателя");
    СпЗнач.ДобавитьЗначение("ю02_СкладРозница",				 "Склад-розница");
    СпЗнач.ДобавитьЗначение("ю02_РозницаСклад",				 "Розница-склад");
    СпЗнач.ДобавитьЗначение("Счет",							 "Счет");
    
    Для отбора по контрагенту ниже табличной части создаю реквизиты:
    выбКонтрагент - Справочник.Контрагенты;
    выбМагазин - Справочник.МестаХранения;
    выбАвтор - Строка, 40

    В модуле пишу процедуру:
    Код:
    Процедура Фильтр()
    //ищем по контрагенту
    Если выбКонтрагент.Выбран()=1 Тогда                     
    //выбран ли магазин?
    Если выбМагазин.Выбран()=1 Тогда
    //искать по магазину и контрагенту нульзя!
    Предупреждение("Нельзя фильтровать по контрагенту и магазину одновременно!");
    Возврат;
    Иначе
    УстановитьОтбор(выбКонтрагент);
    КонецЕсли;
    КонецЕсли;
    //если не выбран контрагент     
    //если выбран магазин
    Если выбМагазин.Выбран()=1 Тогда
    УстановитьОтбор(выбМагазин);
    КонецЕсли;               
    //отбор по автору
    Если ПустоеЗначение(выбАвтор)=0 Тогда
    УстановитьОтбор(выбАвтор);
    КонецЕсли;
    КонецПроцедуры
    
    Но он ругается на неверное имя реквизита и соответственно ничего не отбирает.
    Можно ли отобрать без общего реквизита у документов? Или нужно формировать ТЗ?
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    [off]Эээххх..... почти родной код ;-)[/off]
    Отбор можно выполнить либо по общему реквизиту, либо по графе отбора.
    Ну и по виду документа. Вроде бы и все.

    В какой строке хоть ошибка? Какой текст ошибки?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Журнал у вас какого типа?
  4. TopicStarter Overlay
    2man
    Offline

    2man Опытный в 1С

    Регистрация:
    26 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Тип журнала - общий.
    В журнале есть графа Контрагент, в которой отражаются реквизиты с различных документов с типом Справочник.Контрагенты, а если документ по рознице - то Справочник.МестаХранения.
    Ругался на строку:
    Код:
    Если выбКонтрагент.Выбран()=1 Тогда
    {Журнал.Товары.Форма.ФормаСписка.Модуль(105)}: Значение не представляет агрегатный объект (Выбран)
    
    Переписал немного, теперь не ругается, но и не отбирает
    Код:
    Процедура Фильтр()
    Перем выбКонтрагент, выбАвтор, выбМагазин;
    //ищем по контрагенту
    Если ПустоеЗначение(выбКонтрагент)=0 Тогда                     
    //выбран ли магазин?
    Если ПустоеЗначение(выбМагазин)=0 Тогда
    //искать по магазину и контрагенту нульзя!
    Предупреждение("Нельзя фильтровать по контрагенту и магазину одновременно!");
    Возврат;
    Иначе
    УстановитьОтбор(выбКонтрагент);
    КонецЕсли;
    КонецЕсли;
    //если не выбран контрагент     
    //если выбран магазин
    Если ПустоеЗначение(выбМагазин)=0 Тогда
    УстановитьОтбор(выбКонтрагент);
    КонецЕсли;               
    //отбор по автору
    Если ПустоеЗначение(выбАвтор)=0 Тогда
    УстановитьОтбор(выбАвтор);
    КонецЕсли;
    КонецПроцедуры
    
  5. TopicStarter Overlay
    2man
    Offline

    2man Опытный в 1С

    Регистрация:
    26 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Разобрался с проблемой. Тип журнала стоял Обычный, я почему-то увидел, что Общий :)
    Пришлось добавить новый общий реквизит КонтрагентДляОтбора для всех документов и написать обработку, которая записала значений в этот реквизит, чтобы потом по нему можно было отбирать

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