7.7 Выборка элементов

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

  1. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Мне немного не понятно как сделать выборку степени (либо только доктор, либо кандидат). Подскажите плиз, кто сможет, буду очень благодарен:
    имеется справочник ученая степень :
    Посмотреть вложение 9335
    поле УченаяСтепень (где элементы "Доктор наук" и "Кандидат наук") имеет тип перечисление.ученаястепень
    в отчете вывожу поля ФИО, Звание, Ставка и Степень (со справочника УченаяСтепень), в поле уч.степень как видно на рисунке показываются кандадаты, доктора медицинских, биологических и т.д. наук:
    Посмотреть вложение 9336
    Для выборки я на форму ставлю поле для ввода и указываю ему тип "перечисление.ученая степень" (только только элементы: доктор наук и кандидат наук).
    Что мне нужно написать, чтобы при выборе в поле для ввода (либо доктор наук либо кандидат наук (!)) показывались соответствующие записи в отчете?

    p.s. если не сложно и возможно ли, то как мне добавить в данный отчет поле только "доктор наук" и "кандидат наук" заместо доктор математических, биологически, медициан и т.д. наук.

    Вложения:

    • F1.png
      F1.png
      Размер файла:
      19,2 КБ
      Просмотров:
      24
    • F2.png
      F2.png
      Размер файла:
      6,3 КБ
      Просмотров:
      11
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Как-то все сумбурно и непонятно.

    Единственное, что могу сказать, что любой отчет строится на какой-нибудь выборке (или запрос, или перебор).

    Имеется цикл, в котором по одной добавляются секции. Вот и нужно в данном цикле проверять, стоит ли выводить данную секцию.

    Если есть запрос, то его можно сразу ограничить нужными фильтрами.

    А вот по перечислениям ничего не понял...
  3. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    это я понимаю...
    мне хотябы просто вывести в отчет как-то со справочника "ученаястепень" поле уч.степень (как на картинке первой). а дальше уже выборку легко будет сделать. но всего этого у меня не получается, поэтому и нужен совет, помощь Ваша
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ну так можно попробовать мастер отчетов. Простейшие отчеты (как вывод справочника) он соберет самостоятельно.
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Поставьте группировку в запросе по полю "Ученая степень"
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    по представленным скринам выходит, что в отчет выводится поле справочника Наименование, а вам, насколько я поняла, надо поле УченаяСтепень. Что вам мешает в модуль формирования отчета внести данное изменение? не думаю, что много исправлений будет
  7. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    как мне это внести?

    Код:
    Таб.НоваяКолонка("УченаяСтепень","справочник.УченаяСтепень");
    ...
    КадрДанные=СоздатьОбъект("Справочник.КадровыеДанные");
    Таб.ВыбратьСтроки();
    Пока Таб.ПолучитьСтроку()=1 Цикл
    КадрДанные.ИспользоватьВладельца(Таб.ФИО);
    КадрДанные.ВыбратьЭлементы();
    Таб.УченаяСтепень=КадрДанные.УченаяСтепень;
    КонецЦикла;
    
    Что мне нужно изменить, чтобы выводилось поле "ученая степень" со справочника, а не поле Наименование?
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Прикрепите полностью ваш отчет чтобы видеть картину целиком
  9. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    и еще прикрепите скрин структуры справочника
  10. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    код отчета полностью (откинул кусок текста в середине, который никак не относится к данной проблеме):
    Код:
    Процедура Сформировать()
    перем пд;
    Таб=СоздатьОбъект("ТаблицаЗначений");
    Если Подр=1 Тогда
    Таб.НоваяКолонка("Подразделение","Справочник.Подразделения");
    КонецЕсли;
    СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
    ПрикДл=СоздатьОбъект("Справочник.ПриказыДлительногоДействия");
    Таб.НоваяКолонка("ФИО","Справочник.Сотрудники");
    Таб.НоваяКолонка("Должность","Справочник.Должности");
    Таб.НоваяКолонка("Ставка","Число",4,2);
    Таб.НоваяКолонка("УченаяСтепень","справочник.УченаяСтепень");
    Таб.НоваяКолонка("Степень","Перечисление.УченаяСтепень");
    Таб.НоваяКолонка("ДоплатаУС","Число",8,0);
    Таб.НоваяКолонка("УченоеЗвание","Перечисление.УченоеЗвание");
    Таб.НоваяКолонка("ДоплатаУЗ","Число",8,0);
    Таб.НоваяКолонка("Всего","Число",8,0);
    Таб.НоваяКолонка("ИстФин","Справочник.ИсточникиФинансирования");
    Таб.НоваяКолонка("Совместитель","Справочник.ВнутренниеСовместители");
    
    СпрСотрудники1= СоздатьОбъект("Справочник.Сотрудники"); 
    СпрРазовыеВыплаты = 0;
    СпрСотрудники1.НайтиПоНаименованию("РазовыеВыплаты");   
    Если (СпрСотрудники1.Выбран() = 1) Тогда
    СпрРазовыеВыплаты = СпрСотрудники1.ТекущийЭлемент();
    КонецЕсли;	
    СпрУволенные = 0;
    СпрСотрудники1.НайтиПоНаименованию("Уволенные");
    Если (СпрСотрудники1.Выбран() = 1) Тогда
    СпрУволенные = СпрСотрудники1.ТекущийЭлемент();
    КонецЕсли;	 
    Ном = 1;
    СпрСотрудники1= 0;
    
    СпрСотр.ИспользоватьДату(ДатаОт);
    СпрСотр.ПорядокНаименований();
    СпрСотр.ВыбратьЭлементы();
    Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
    
    //    ОТКИНУЛ КУСОК КОДА, КОТОРЫЙ НИКАК НЕ ОТНОСИТСЯ К ДАННОЙ ПРОБЛЕМЕ
    
    Если пр=1 Тогда
    Сообщить(СпрСотр.Наименование);
    Таб.НоваяСтрока();
    Таб.ФИО=СпрСотр.ТекущийЭлемент();
    Таб.Должность=?(ПустоеЗначение(ПрикДл.Приказ.ВнСовместитель)=1,СпрСотр.Должность,ПрикДл.Приказ.ВнСовместитель.Должность.Получить(ДатаОт));
    Таб.Ставка=?(ПустоеЗначение(ПрикДл.Приказ.ВнСовместитель)=1,СпрСотр.Ставка,ПрикДл.Приказ.ВнСовместитель.Ставка.Получить(ДатаОт));
    Таб.ДоплатаУС=?(ПрикДл.Приказ.Вид.Код="4",Таб.Ставка*ПрикДл.Приказ.Процент*Константа.МТ.Получить(ДатаОт),0);
    Таб.ДоплатаУЗ=?(ПрикДл.Приказ.Вид.Код="5",Таб.Ставка*ПрикДл.Приказ.Процент*Константа.МТ.Получить(ДатаОт),0);
    Таб.Всего=Таб.ДоплатаУС+Таб.ДоплатаУЗ;
    Таб.ИстФин=ПрикДл.Приказ.ИсточникФинансирования;
    Таб.Совместитель=ПрикДл.Приказ.ВнСовместитель;
    Если Подр=1 Тогда
    Таб.Подразделение=?(ПустоеЗначение(ПрикДл.Приказ.ВнСовместитель)=1,СпрСотр.Подразделение,ПрикДл.Приказ.ВнСовместитель.Подразделение.Получить(ДатаОт));
    КонецЕсли;	
    КонецЕсли;	
    КонецЕсли;	
    КонецЦикла;	
    КонецЦикла;
    Если Подр=1 Тогда
    Таб.Свернуть("ФИО,Должность,Ставка,ИстФин,Совместитель,Подразделение,УченаяСтепень,Степень,УченоеЗвание","ДоплатаУС,ДоплатаУЗ,Всего");
    Иначе
    Таб.Свернуть("ФИО,Должность,Ставка,ИстФин,Совместитель,УченаяСтепень,Степень,УченоеЗвание","ДоплатаУС,ДоплатаУЗ,Всего");
    КонецЕсли;
    
    КадрДанные=СоздатьОбъект("Справочник.КадровыеДанные");
    Таб.ВыбратьСтроки();
    Пока Таб.ПолучитьСтроку()=1 Цикл
    КадрДанные.ИспользоватьВладельца(Таб.ФИО);
    КадрДанные.ВыбратьЭлементы();
    Таб.УченаяСтепень=КадрДанные.УченаяСтепень;
    Таб.УченоеЗвание=КадрДанные.УченоеЗвание;			
    КонецЦикла;	   
    
    ТабД=СоздатьОбъект("Таблица");
    ТабД.ВывестиСекцию("Заголовок");
    ТабД.ПовторятьПриПечатиСтроки(3,3);
    ТабД.ВывестиСекцию("Шапка");
    Если Подр=1 Тогда
    Таб.Сортировать("Подразделение,ФИО,Ставка");
    Иначе
    Таб.Сортировать("ФИО,Ставка");
    КонецЕсли;
    Таб.ВыбратьСтроки();
    Пока Таб.ПолучитьСтроку()=1 Цикл
    Если Подр=1 Тогда
    Если Таб.Подразделение<>пд Тогда
    ТабД.ВывестиСекцию("Подразделение");
    КонецЕсли;	
    пд=Таб.Подразделение
    КонецЕсли;
    ТабД.ВывестиСекцию("Строка");
    КонецЦикла;
    КС=ТабД.КоличествоСтраниц();
    ТабД.Показать("Доплаты за степень и звание");
    КонецПроцедуры
    ДатаОт=ТекущаяДата();
    СтрОрг=Перечисление.СтруктураОрганизации.ОсновнойСостав;
    Подр=1;
    
    
    внешний вид:
    Посмотреть вложение 9341

    справочник "Ученая степень"
    Посмотреть вложение 9342
    внешний вид:
    Посмотреть вложение 9343

    Вложения:

    • F3.png
      F3.png
      Размер файла:
      23,9 КБ
      Просмотров:
      8
    • F4.png
      F4.png
      Размер файла:
      23,5 КБ
      Просмотров:
      15
    • F1.png
      F1.png
      Размер файла:
      19,2 КБ
      Просмотров:
      4
  11. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у вас УченаяСтепень берется из Справочника КадровыеДанные, потому и выводится что там есть

    надо по этому значению искать в справочнике УченаяСтепень соответствующее значение степени и уже его выводить в отчет

    Вроде так...
  12. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    так вот как это написать, осуществить? я никак не пойму как это реализовать кодом
    подскажите плиз
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Как ученая степень отражается в справочнике сотрудников?
    Покажите скин справочника сотрудников. Реквизит периодический или нет?
  14. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    В справочнике сотрудники нету ученой степени, она есть в подчиненном справочнике Кадровые данные. (тип справочник.ученаястепень). Отражается как поле наименование справочника ученаястепени (т.е. доктор математ, биологи и т.д. наук). реквизит не периодический
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Все.. понял схему...

    Так у вас же все готово... Таб степенью/званием заполнили...
    Ну и накладывайте условие при выводе в отчет
  16. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    как это сделать??
    мне ведь нужно вывести только "доктор наук" и "кандидат наук", а выводится поле наименование где математ биоло и другие науки показаны.

    какое условие нужно добавить при выборке ? подскажите
    это то мне и нужно. что бы можно было выбрать только по
    "доктор наук" и "кандидат наук"
  17. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    попробуйте так
    Код:
    КадрДанные=СоздатьОбъект("Справочник.КадровыеДанные");
    СпрУчСт= СоздатьОбъект("Справочник.УченаяСтепень");
    
    Таб.ВыбратьСтроки();
    Пока Таб.ПолучитьСтроку()=1 Цикл
    КадрДанные.ИспользоватьВладельца(Таб.ФИО);        
    КадрДанные.ВыбратьЭлементы();       
    //Таб.УченаяСтепень=КадрДанные.УченаяСтепень;    
    Таб.УченаяСтепень = СпрУчСт.НайтиПоНаименованию(КадрДанные.УченаяСтепень);   
    Таб.УченоеЗвание=КадрДанные.УченоеЗвание;                
    КонецЦикла;    
    
    
    
  18. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Tiger86, не работает. выводится пустое поле

    если вывести не получается отдельно поле, то может быть как-нибудь можно сделать выборку, например, если я в поле для ввода выбираю "Доктор наук", то должны вывестить все доктора (любых наук)?

    может быть как-нибудь можно сделать выборку по первому слову? например, если доктор наук, то вывести те элементы, где встречается слово доктор. Без разницы как, главное чтобы можно было выборать одних докторов или кандидатов.
  19. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    посмотрите отладчиком, что конкретно передается в параметрах, раз ошибки нет - это уже какой-то результат, проверяйте значения (может я в названиях объектов где ошиблась - вам то это виднее должно быть)
  20. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    я не пойму, а почему мы ссылаемся на справочник кадрДанные.УченаяСтепень (НайтиПоНаименованию(КадрДанные.УченаяСтепень))? так же опять будет выводиться поле Наименование, а не уч.степень, которое мне нужно.

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