Имя: Пароль:
1C
1C 7.7
v7: Проблема с отчетом по справочнику
0 9451523
 
20.06.14
15:08
Уважаемые форумчане
недавно написал свой первый отчет по справочнику.сотрудники , таблица формируется как надо по отделам по дате прихода и тд. и тп. , но возникла необходимость что бы таблица сформировалась по одному конкретному сотруднику. например я добавлю в форму диалога реквизит диалога назовем его к примеру ТабелНом  в который будет вбиваться табельный номер сотрудника и из ходя из этого формироваться отчет только конкретно по этому сотруднику? вот образец кода:
                    
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент;
    |ТабНом = Справочник.Сотрудники.Код;
    |Подразд = Справочник.Сотрудники.Подразделение;
    |Цех =  Справочник.Сотрудники.Цех;
    |Долж =  Справочник.Сотрудники.Должность;
    |Серия =  Справочник.Сотрудники.ДокументСерия;
    |Номер =  Справочник.Сотрудники.ДокументНомер;
    |Наименование = Справочник.Сотрудники.Наименование;
    |ДатаПр =  Справочник.Сотрудники.ДатаПриема;
    |Группировка Сотрудники упорядочить по Сотрудники.Код, Сотрудники.Наименование, Сотрудники.Подразделение, Сотрудники.Цех, Сотрудники.ДокументСерия, Сотрудники.ДокументНомер, Сотрудники.Должность, Сотрудники.ДатаПриема без групп;
    |Условие(ДатаПр в дп);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Сотрудники
        
    Фамилия = "";
    Имя = "";
    Отчество = "";
    ФамилияИмяОтчество = СокрЛП(Запрос.Наименование);
    ПозицияПервогоПробела = Найти(ФамилияИмяОтчество," ");
    Фамилия = Лев(ФамилияИмяОтчество,ПозицияПервогоПробела-1);
    ИмяОтчетсво=Прав(ФамилияИмяОтчество,СтрДлина(ФамилияИмяОтчество)-ПозицияПервогоПробела);
    ПозицияВторогоПробела = Найти(ИмяОтчетсво," ");
    Имя = Лев(ИмяОтчетсво,ПозицияВторогоПробела-1);
    Отчество = Прав(ИмяОтчетсво,СтрДлина(ИмяОтчетсво)-ПозицияВторогоПробела);

прошу сильно не пинать, я только учусь

1С версия для SQL 7.7

С уважением Дамир    
        
        
        
        
        
        
        
        Таб.ВывестиСекцию("Сотрудники");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
1 ТакВотЖе
 
20.06.14
15:12
ну условие добавляй, в чём проблема?
2 9451523
 
20.06.14
15:14
ТакВотЖе я знаю что туплю . подскажи как?
3 ТакВотЖе
 
20.06.14
15:17
|Условие (ТабНом=СокрЛП(ТабельныйНомерРеквизитФормы));
4 Ёпрст
 
20.06.14
15:17
(2)

|ТабельныйНомер  = Справочник.Сотрудники.ТвойРеквизитСТабельнымНумером;
|Условие (ТабельныйНомер   = ИдентификаторРеквизитаСТабельнымНумеромНаФормеОтчета);
5 ТакВотЖе
 
20.06.14
15:19
если же нужно, чтобы запрос формировался и так и так (и по всем и по одному сотруднику), то условие нужно загонять в "Если... КонецЕсли"
6 Chum
 
20.06.14
15:27
Нафига танцы со вводом ТН?
Что мешает выбирать непосредственно элемент справочника Сотрудники?

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

|Условие(Сотрудники = ВыбранныйСотрудник);


вроде все
7 catena
 
20.06.14
15:44
(5)На сколько я помню, в 77 было достаточно в условии поставить В.
8 9451523
 
23.06.14
08:45
Спасибо всем ,все заработало
AdBlock убивает бесплатный контент. 1Сергей