Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 апр 2024, 01:46

Получить Номер карты в документ Зарплата к выплате организаций ред.2.5

Автор ahtoxa2222, 24 сен 2018, 06:26

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

ahtoxa2222

Доброго времени суток, новичок прошу помощи;).

Конфигурация ЗУП 2.5, есть регистр сведений (непереодический)ЛицевыеСчетаРаботниковОрганизации, хочу при заполнении в документе зарплата к выплате организаций сотрудника из регистра получить номер карты сотрудника, добавил колонку НомерЛицевогоСчета, добавил к нему событие процедуру ПриИзмененииФизлица.

Процедура ПриИзмененииФизлица(ФизЛицо);

  ВыбКарты = УказываетНомерЛицевогоСчета(Физлицо);
    Если ВыбКарты.Следующий() Тогда
        Карта = НомерЛицевогоСчета.Добавить();
        Карта.НомерЛицевогоСчета = ВыбКарты.НомерЛицевогоСчета;
    КонецЕсли;
КонецПроцедуры


Функция УказываетНомерЛицевогоСчета(ФизЛицо)

Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
                   |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
                   |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо
                   |ИЗ
                   |    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
                   |ГДЕ
                   |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета = &НомерЛицевогоСчета
                    |
                   |СГРУППИРОВАТЬ ПО
                   |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
                   |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо";
                   
                 
   Запрос.УстановитьПараметр("НомерЛицевогоСчета",НомерЛицевогоСчета);
   
   Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
НомерЛицевогоСчета = Выборка.НомерЛицевогоСчета;
Возврат НомерЛицевогоСчета;
КонецЕсли;
КонецФункции
   

При заполнении физлица выходит ошибка
"{Документ.ЗарплатаКВыплатеОрганизаций.Форма.ФормаДокумента.Форма(887)}: Значение не является значением объектного типа (Следующий)
    Если ВыбКарты.Следующий() Тогда"


alexandr_ll

Цитата: ahtoxa2222 от 24 сен 2018, 06:26
Доброго времени суток, новичок прошу помощи;).

Конфигурация ЗУП 2.5, есть регистр сведений (непереодический)ЛицевыеСчетаРаботниковОрганизации, хочу при заполнении в документе зарплата к выплате организаций сотрудника из регистра получить номер карты сотрудника, добавил колонку НомерЛицевогоСчета, добавил к нему событие процедуру ПриИзмененииФизлица.

Процедура ПриИзмененииФизлица(ФизЛицо);

  ВыбКарты = УказываетНомерЛицевогоСчета(Физлицо);
    Если ВыбКарты.Следующий() Тогда
        Карта = НомерЛицевогоСчета.Добавить();
        Карта.НомерЛицевогоСчета = ВыбКарты.НомерЛицевогоСчета;
    КонецЕсли;
КонецПроцедуры


Функция УказываетНомерЛицевогоСчета(ФизЛицо)

Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
                   |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
                   |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо
                   |ИЗ
                   |    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
                   |ГДЕ
                   |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета = &НомерЛицевогоСчета
                    |
                   |СГРУППИРОВАТЬ ПО
                   |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
                   |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо";
                   
                 
   Запрос.УстановитьПараметр("НомерЛицевогоСчета",НомерЛицевогоСчета);
   
   Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
НомерЛицевогоСчета = Выборка.НомерЛицевогоСчета;
Возврат НомерЛицевогоСчета;
КонецЕсли;
КонецФункции
   

При заполнении физлица выходит ошибка
"{Документ.ЗарплатаКВыплатеОрганизаций.Форма.ФормаДокумента.Форма(887)}: Значение не является значением объектного типа (Следующий)
    Если ВыбКарты.Следующий() Тогда"
Ваша функция возвращает строку с последним номером счета сотрудника, поэтому применять метод Следующий() к строке нельзя.

ephes

Может быть, вы хотели сделать примерно так:
Обработка результата функции:
Если НЕ ПустаяСтрока(ВыбКарты) Тогда
    Карта = НомерЛицевогоСчета.Добавить();
    Карта.НомерЛицевогоСчета = ВыбКарты.НомерЛицевогоСчета;
КонецЕсли;

И хвост самой функции:
Если Выборка.Следующий() тогда
        НомерЛицевогоСчета = Выборка.НомерЛицевогоСчета;
Иначе
НомерЛицевогоСчета = "";
КонецЕсли;
Возврат НомерЛицевогоСчета;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск