Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 08:22
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Нужна помощь новичку с отбором  (Прочитано 2871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SupremeMax

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-26
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте! Я начинающий программист (всего месяц), работаю в версии 8.2, требуется ваша неоценимая помощь! Имеется ИЕРАРХИЧЕСКИЙ справочник "Сотрудники", состоящий из 2х групп: Работающие и Уволенные. Справочник состоит из 4х колонок: Код, Наименование(имеется ввиду ФИО сотрудника), Дата рождения, Процент премии. Мне необходимо выполнить отбор по Дате рождения, т.е. в соответствующих полях я назначаю интервал дат, в соответствии с которым при нажатии кнопки "Вывести" на печать будет выведен список сотрудников, чьи даты рождения входят в назначенный пользователем интервал. Для того, чтобы лучше понять мой вопрос, в прикрепленных файлах имеются картинки. Я вписывал следующий код:

Процедура ВывестиНажатие(Элемент)
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.Сотрудники.ПолучитьМакет("Печать");
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    //Шапка
    Область = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Область);
    ДатаРождения = СправочникСписок.Отбор.ДатаРождения;
     Если ДатаРождения.Использование = Истина Тогда
         СтруктураОтбора = Новый Структура("ДатаРождения", ДатаРождения.Значение);
         КонецЕсли;
        Выборка = Справочники.Сотрудники.ВыбратьИерархически(С,По1,СтруктураОтбора,"возр");
    Группа = Макет.ПолучитьОбласть("Группа");
    Элемент = Макет.ПолучитьОбласть("Элемент");
    Пока Выборка.Следующий()= Истина Цикл
        Если Выборка.ЭтоГруппа Тогда
        Область = Макет.ПолучитьОбласть("Группа");
    Группа.Параметры.Код = Выборка.Код;
    Группа.Параметры.Наименование = Выборка.Наименование;
   Группа.Параметры.ДатаРождения = Выборка.ДатаРождения;
   Группа.Параметры.ПроцентПремии = Выборка.ПроцентПремии;
   ТабДок.Вывести(Группа);
Иначе
    Область = Макет.ПолучитьОбласть("Элемент");
    Элемент.Параметры.Код = Выборка.Код;
    Элемент.Параметры.Наименование = Выборка.Наименование;
   Элемент.Параметры.ДатаРождения = Выборка.ДатаРождения;
   Элемент.Параметры.ПроцентПремии = Выборка.ПроцентПремии;
   ТабДок.Вывести(Элемент);
   КонецЕсли;

    КонецЦикла;

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();

КонецПроцедуры

При нажатии кнопки "Вывести" в режиме исполния мне выдается следующая ошибка:

{Справочник.Сотрудники.Форма.ФормаСписка.Форма(159)}: Ошибка при вызове метода контекста (ВыбратьИерархически): Несоответствие типов (параметр номер '1')
Выборка = Справочники.Сотрудники.ВыбратьИерархически(С,По1,"возр");
по причине:
Несоответствие типов (параметр номер '1')

Подскажите, пожалуйста, что я делаю непарвильно?


Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Ну, во-первых:

СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
ВыбратьИерархически (SelectHierarchically)
Синтаксис:
ВыбратьИерархически(<Родитель>, <Владелец>, <Отбор>, <Порядок>)


а у вас параметры подставляются абы как. Вместо Родителя и Владельца подставляются ваши даты.

Ну а в во-вторых, подобным отбором можно отобрать только данные с определенным реквизитом, по интервалу отобрать не получится. Например, выбрать Сотрудников с датой рождения 10.12.1980 можно, а Сотрудников с датой рождения с 01.12.1980 по 31.12.1981 придется отбирать запросом:

	Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.ЭтоГруппа,
| Сотрудники.Код,
| Сотрудники.Наименование,
| Сотрудники.ДатаРождения,
| Сотрудники.ПроцентПремии
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ДатаРождения между &С и &По1
|
|УПОРЯДОЧИТЬ ПО
| ДатаРождения
|
    |ИТОГИ ПО
    | Ссылка ИЕРАРХИЯ";

Запрос.УстановитьПараметр("С",С);
Запрос.УстановитьПараметр("По1",По1);
Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 480
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal