7.7 отчет по сотрудникам

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

  1. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте уважаемые пользователи.
    Конфигурация Зарплата+Кадры, редакция 2.3 (7.70.293)
    Отчет по сотрудникам, не могу сделать так, чтобы последовательность в печатной форме была такая же как и в списке "Сотрудники". В чем проблема?

    [​IMG]

    Вложения:

  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Добавьте в запрос группировку по сотрудникам с упорядочиванием по наименованию (или коду если вам надо таб. номер)
  3. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Без изменений, все так же
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Чудес не бывает... Выкладывайте что сделали
  5. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Вот! по прежнему выдает по алфавиту. а не как в списке Сотрудники

    Вложения:

  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Тьфу! Я то понял что нужно наоборот: как в форме списка справочника! Тогда в данном случае запрос не годится. Нужно использовать цикл по списку и метод НайтиЭлемент для получения текущего элемента и вывода реквизитов в таблицу
  7. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Вообще без запроса что ли?
    Пока СпрСотрудников.ПолучитьЭлемент()=1 Цикл
    Сообщить(СпрСотрудников.ТекущийЭлемент());
    // На этом уровне он нормально выдает Сотрудников как в списке, т.е. не по алфавиту.
    СписокФизЛиц.ДобавитьЗначение(СпрСотрудников.ТекущийЭлемент());
    КонецЦикла;
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Разумеется... В цикле пробегаем по СпискуЗначений, получаем элемент справочника, выводим..
  9. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Это не срабатывает только со справочниками? потому что при запросе к документам, он выдает в печатной форме список сотрудников как надо, т.е в порядке в котором они выбраны в списке "Сотрудники"
    :unsure:
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Тут все дел в алгоритме запроса..
    Как строится запрос?
    Выбираются элементы из справочника. По порядку. И заносятся в результат запроса согласно условия. Т.е. сначала попадет в результат Антошин (он же первый), потом Васечкин, ну и последним Пупкин. И не важно что в списке значений у вас Пупкин стоит первым..
  11. dedalx7
    Offline

    dedalx7 Опытный в 1С

    Регистрация:
    20 май 2009
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    В принципе, запрос работает быстрее чем Объект(насколько я понимаю), поэтому как мне кажется можно было бы заменить этот кусок кода:

    Код:
    Пока Запрос.Группировка(1) = 1 Цикл    
    Пока Запрос.Группировка(2) = 1 Цикл 
    н = н+1; 
    ТабельныйНомер = Запрос.ТабельныйНомер;
    Наименование = Запрос.Сотрудник;
    Должность = Запрос.Должность;
    Ставка = Запрос.Ставка; 
    Тариф = Запрос.Тариф;
    Таб.ВывестиСекцию("Сформировать");   
    КонецЦикла;      
    КонецЦикла;
    
    На следующий:

    Код:
    Для Индекс = 1 По СписокФизЛиц.РазмерСписка() Цикл 
    Запрос.вНачалоВыборки();
    Если Запрос.Получить(СписокФизЛиц.ПолучитьЗначение(Индекс),) = 1 Тогда
    Пока Запрос.Группировка(2) = 1 Цикл 
    н = н+1; 
    ТабельныйНомер = Запрос.ТабельныйНомер;
    Наименование = Запрос.Сотрудник;
    Должность = Запрос.Должность;
    Ставка = Запрос.Ставка; 
    Тариф = Запрос.Тариф;
    Таб.ВывестиСекцию("Сформировать");   
    КонецЦикла; 		    
    КонецЕсли;      
    КонецЦикла;
    
    Таким образом, не надо обращаться к базе лишних "стопицот" раз, а просто оперировать тем что уже загружено в память. Все что измениться - порядок прохода по запросу: получаете Сотрудника из списка, получаете его группировку по запросу.

    Вроде так.
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Можно. Но не забывайте что список элементов уже готов. И позиционирование на элемент не отнимает времени, а запрос отнимает.... Поэтому потимальнее сразу цикл по списку с применением НайтиЭлемент
  13. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Код:
     
    Для Индекс = 1 По Сотрудники.РазмерСписка() Цикл                
    Если СпрСотрудников.НайтиЭлемент(СписокФизЛиц) = 0 Тогда      
    н = н+1; 
    //ТабельныйНомер = СпрСотрудников.ТабельныйНомер;
    //	Наименование = СпрСотрудников.Сотрудник;
    Должность = СпрСотрудников.Должность;
    Ставка = СпрСотрудников.Ставка; 
    Тариф = СпрСотрудников.Тариф;
    Таб.ВывестиСекцию("Сформировать");   
    КонецЕсли;      
    КонецЦикла;  
    
    
    В печатной форме выдает там где Должность, Ставка - НеизвестныйОбъект, а Тариф везде "0". Что делаю не так? Без запроса гораздо быстрее работает!
  14. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Все дело в том что Ставка и Тариф - реквизит периодический. Воспользуйтесь методом Получить

    Код:
    Ставка=СпрСотрудников.Ставка.Получить(ТекущаяДата());
    
    
  15. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    а как же быть с Наименованием и Табельным номером? Ошибку выдает "Поле агрегатного объекта не обнаружено (ТабельныйНомер)"
  16. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Табельный номер это КОД.

    Код:
    ТабельныйНомер=СпрСотрудников.Код;
    
    
  17. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Пустую ячейку выдает
  18. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Что-то не так у вас. Код НЕ МОЖЕТ быть пустым. Попробуйте так:
    Код:
    ..
    ТабельныйНомер=СпрСотрудников.Код;
    Сообщить(СпрСотрудников.Код);
    ..
    
    
    что покажет?
  19. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    пустота :unsure:
  20. Бухгалтерский угодник
    Offline

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

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

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