8.х Сотрудник по ФизЛицу.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем krion, 10 дек 2008.

  1. TopicStarter Overlay
    krion
    Offline

    krion

    Регистрация:
    10 дек 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Дано.
    1С 8.1 ЗУП. Файл Сервер.
    1 программист, в 1С мало понимающий... (я).

    Задача.
    Выгрузить в EXEL зарплатную ведомость.

    Для выполнения задачи использую внешнюю обработку "Универсальные печатные формы".
    Пытаюсь выгрузить из документа: "Зарплата к выплате организаций".
    Все бы хорошо, но в выгрузке надо прилепить реквезит из справочника "Сотрудников". Каково же было мое удивление, что в документ оказывается прописывается ФизЛицо. Полазив по 1С, я нашел функцию НайтиПоНаименованию(), но что будет если у двух сотрудников полностью совпадут ФИО? Как я понял, он всегда будет подставлять одного сотрудника, значит реквезит который мне надо притянуть будет не тот.

    Как я понимаю выхода у меня 2:
    1. Либо тащить нужный мне реквезит в справочник "Физические Лица". (Почему то мне кажется не совсем верный вариант)
    2. Научиться искать Сотрудника, но у меня не хватает входных данных...

    хотя есть еще 3-й вариант, выгружать в EXEL откуда то из другого документа.
    Из знакомых мне, я нашел "Расходный кассовый ордер", но там такая же ситуация.

    Прошу помощи.
    Спасибо за потраченное на меня время. :)
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    На одно физ лицо может быть несколько сотрудников.
    Уточните версию конфигурации.
  3. TopicStarter Overlay
    krion
    Offline

    krion

    Регистрация:
    10 дек 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    1С:Предприятие 8.1 (8.1.12.101)

    Зарплата и Управление Персоналом, редакция 2.5 (2.5.11.2)
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Алгоритм примерно такой:
    Находим текущего актуального сотрудника по физлицу в организации, по которой идет документ. Все очень просто :)
  5. TopicStarter Overlay
    krion
    Offline

    krion

    Регистрация:
    10 дек 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    А если в этой Организации (а у меня одна организация) существуют 2 пользователя полных тески. Пока в данный момент таких нет, но они могут появиться.
    Как тогда быть?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Искать нужно не по наименованию, а по ссылке.
  7. TopicStarter Overlay
    krion
    Offline

    krion

    Регистрация:
    10 дек 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    А для этого есть специальная функция (я ее не нашел)?
    Или надо написать свою?!
    Пробовал написать, но у меня не получилось перебирать справочник.
    Как я уже писал выше я не являюсь программистом 1С.

    Код:
    СТ = Справочники.СотрудникиОрганизаций.СоздатьЭлемент();
    СТ.ВыбратьЭлементы();
    Пока СТ.ПолучитьЭлемент()=1 Цикл
    Если ФизЛицо = СТ.ФизЛицо Тогда
    Результат = СТ;
    break;
    КонецЕсли;
    КонецЦикла;
    
    
    ФизЛицо - есть входной параметр функции, тип ссылка.

    Увы на меня возложили задачи по написание некоторых отчетов в 1С. Поэтому я не по доброй воле так сказать :) Занимаюсь этим, собственно поэтому прошу помощи на форуме а не перелистываю книги в поиска ответа, но это не значит что я совсем не искал, просто похоже плохо искал...
  8. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Если не хотите использовать запрос, тогда так:
    Код:
    НайденныйСотр = Справочники.СотрудникиОрганизаций.ПустаяСсылка();
    Сотр = Справочники.СотрудникиОрганизаций.Выбрать(,,Новый Структура("ФизЛицо", ФизЛицо));
    Пока Сотр.Следующий() Цикл
    Если Сотр.Актуальность Тогда
    НайденныйСотр = Сотр.Ссылка;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если ЗначениеЗаполнено(НайденныйСотр) Тогда
    //Тут работаем с найденной ссылкой
    КонецЕсли;
    
    
  9. TopicStarter Overlay
    krion
    Offline

    krion

    Регистрация:
    10 дек 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    на строке "Пока Сотр.Следующий() Цикл"
    Вываливается ошибка SDBL:
    Ожидается CAST, идентификатор или константа (pos=483)
  10. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    А какой релиз платформы установлен? На всякий случай проверьте, что "ФизЛицо" корректно заполнено перед этим кодом.
    А лучше вообще запросом пользуйтесь, типа:
    Код:
    НайденныйСотр = Справочники.СотрудникиОрганизаций.ПустаяСсылка();
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    СотрудникиОрганизаций.Ссылка
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |ГДЕ
    |    СотрудникиОрганизаций.Физлицо = &ФизЛицо
    |    И СотрудникиОрганизаций.Актуальность = ИСТИНА";
    Запрос.УстановитьПараметр("ФизЛицо",ФизЛицо);
    Сотр = Запрос.Выполнить().Выбрать();
    Пока Сотр.Следующий() Цикл
    НайденныйСотр = Сотр.Ссылка;
    Прервать;
    КонецЦикла;
    Если ЗначениеЗаполнено(НайденныйСотр) Тогда
    //Тут работаем с найденной ссылкой
    КонецЕсли;
    
    
    
    Но ФизЛицо, все равно, на заполнение проверьте
  11. TopicStarter Overlay
    krion
    Offline

    krion

    Регистрация:
    10 дек 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    увы, проблема была именно в голове...
    ФизЛицо не правильно в функцию передавал.

    Огромное спасибо. Вроде получилось все. :)

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