7.7 Выборка значений

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем ChaFieLd, 18 май 2010.

  1. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Добрый день, Уважаемые!

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

    Код:
    Процедура Выполнить()   
    Пер = СоздатьОбъект("Справочник.ОбъектыПотребителей");
    Пер.ВыбратьЭлементы(0); 
    КолВсего = 0;
    КолГотово = 0;  
    Пока Пер.ПолучитьЭлемент() > 0 Цикл
    Если Пер.ЭтоГруппа() = 0 Тогда
    КолВсего = КолВсего + 1;
    Если ПустоеЗначение(Пер.Фидер) = 1 Тогда   
    КолГотово = КолГотово + 1;   
    КонецЕсли; 
    КонецЕсли; 
    КонецЦикла; 
    Сообщить("кол фидеров "+КолГотово+", всего "+КолВсего+" абонентов");
    КонецПроцедуры
    
    
    проблема возникает вот в этом месте

    Код:
    Если ПустоеЗначение(Пер.Фидер) = 1 Тогда 
    
    Надеюсь на вашу помощь!
  2. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104
    Попробуй так:
    Код:
    Процедура Выполнить()   
    Пер = СоздатьОбъект("Справочник.ОбъектыПотребителей");
    Пер.ВыбратьЭлементы(0); 
    КолВсего = 0;
    КолГотово = 0;  
    Пока Пер.ПолучитьЭлемент() =1 Цикл
    Если Пер.ЭтоГруппа() = 0 Тогда
    КолВсего = КолВсего + 1;
    Если Пер.Фидер.Выбран() = 0 Тогда   
    КолГотово = КолГотово + 1;   
    КонецЕсли; 
    КонецЕсли; 
    КонецЦикла; 
    Сообщить("кол фидеров "+КолГотово+", всего "+КолВсего+" абонентов");
    КонецПроцедуры
    
    
    
  3. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    не получилось:
    Код:
    Если Пер.Фидер.Выбран() = 0 Тогда 
    {C:\DOCUMENTS AND SETTINGS\АДМИНИСТРАТОР.TAISHETENERGO\РАБОЧИЙ СТОЛ\ВЫБОРКА.ERT(11)}: Поле агрегатного объекта не обнаружено (Выбран)
    
  4. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104
    Значит реквизит Фидер не является справочником..... либо это какой-то периодический реквизит
  5. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Код:
    ТипД = ТипЗначения(Пер.Фидер);
    Сообщить(ТипД);
    
    Результат этой процедуры = 100.

    "100 - внешний объект ('Текст', 'Таблица', 'Запрос', 'ЖурналРасчетов' и т.п.)."

    как работать с подобными внешними объектами? примеров подобных не нашел ни на 1 форуме!
  6. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104
    Результат =100 еще и относится к общему объекту метаданных...
    Выведите так:
    Код:
    Сообщить(ТипЗначенияСтр(Пер.Фидер));
    
    
    м.б. у вас объект неопределенного вида
  7. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    "НеизвестныйОбъект"

    Подскажите в каком направлении думать дальше
  8. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104
    Все верно.. Значит это либо реквизит неопределенного типа. Как только он станет определенным, в нем что-то появится... Но тогда должно срабатывать ПустоеЗначение. Либо он периодический. Догадались или дальше подсказать?

    Попробуйте так:
    Код:
    Сообщить(ТипЗначенияСтр(Пер.Фидер.Получить(ТекущаяДата())));
    
    
  9. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Код:
    Сообщить(ТипЗначенияСтр(Пер.Фидер.Получить(ТекущаяДата())));
    
    
    
    после выполнения этого года он выдал что это Справочник, все равно пока непонятно можно пожалуйста маленько поподробней.
  10. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104
    Реквизит - периодический. Может менять значение на дату...

    Поэтому ваш код будет выглядеть так
    Попробуй так:
    Код:
    Процедура Выполнить()   
    Пер = СоздатьОбъект("Справочник.ОбъектыПотребителей");
    Пер.ВыбратьЭлементы(0); 
    КолВсего = 0;
    КолГотово = 0;  
    Пока Пер.ПолучитьЭлемент() =1 Цикл
    Если Пер.ЭтоГруппа() = 0 Тогда
    КолВсего = КолВсего + 1;
    Если Пер.Фидер.Получить(ТекущаяДата()).Выбран() = 0 Тогда   
    КолГотово = КолГотово + 1;   
    КонецЕсли; 
    КонецЕсли; 
    КонецЦикла; 
    Сообщить("кол фидеров "+КолГотово+", всего "+КолВсего+" абонентов");
    КонецПроцедуры
    
    
    
    
  11. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    большое спасибо помогло, вроде все работает! главная запарка была в неопределенности объекта, перепробовал все варианты кроме вашего, определение по дате помогло! еще раз спасибо.

    проверил дважды работает прекрасно! спасибо вам за помощь!
  12. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104
    Пожалуйста, только добавть в отчет еще выбор даты, чтобы можно было смотреть на любой день (для этого периодический реквизит и служит) - так я думаю будет правильнее
  13. TopicStarter Overlay
    ChaFieLd
    Offline

    ChaFieLd

    Регистрация:
    18 май 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Особой нужды в поиске по дате нет, потомучто нужны последние данные. вот еще подсказали немного оптимизированный вариант думаю при больших объемах работать будет быстрее
    Код:
    Пер = СоздатьОбъект("Справочник.ОбъектыПотребителей");
    Пер.ИспользоватьДату(ТекущаяДата());
    ......
    ....
    Если Пер.Фидер.Выбран() = 1 Тогда
    
    
  14. Бухгалтерский угодник
    Online

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.732
    Симпатии:
    432
    Баллы:
    104

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