Имя: Пароль:
1C
1С v8
HELP: добраться до лицевых счетов ФЛ
,
0 листопад
 
02.05.14
23:07
Надо добраться до лицевых счетов физ.лица. Не получается, ничего не выводит и иошибок не дает (((  Вот код:


ш_СчетФЛ = ПолучитьНомерЛС(Выборка.ФИОРаботника);

Функция ПолучитьНомерЛС(ФизЛицо)
    
    Запрос = Новый Запрос;
    Запрос.Текст =        
    "ВЫБРАТЬ
    |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета
    |ИЗ
    |    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
    |ГДЕ
    |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", ФизЛицо);
    
    Результат = Запрос.Выполнить().Выбрать();
    
    Результат.Следующий();
    Если Результат.НомерЛицевогоСчета <> Неопределено Тогда
        Возврат Результат.НомерЛицевогоСчета;
    Иначе
        Сообщить("У сотрудника " + ФизЛицо + " лицевой счет не заполнен!");
        Стр = "";
        Возврат Стр;
    КонецЕсли;
    
КонецФункции
1 Torquader
 
02.05.14
23:08
Результат.Следующий() возвращает успешность выборки элемента.
2 листопад
 
02.05.14
23:10
(1) А как тогда?
У этих ФЛ, на которых я тестирую, есть лицевые счета.
3 Фокусник
 
02.05.14
23:10
(0) здесь Выборка.ФИОРаботника видимо "строка" находится, а нужно ссылку на физ.лицо передавать в функцию.
4 ice777
 
02.05.14
23:11
Выборка.ФИОРаботника <> ФизЛицо

где-то так ;)
5 Torquader
 
02.05.14
23:12
(3) А - это я не заметил.
(2) Отладчиком пользоваться умеем ?

P.S. пойду собаку погуляю - посмотрим, что можно сделать.
6 листопад
 
02.05.14
23:13
(3) Да, Выборка.ФИОРаботника - строку возвращает. А как дальше тогда?
7 листопад
 
02.05.14
23:14
(4) Мне надо не ФИО, а его лицевой счет вытянуть...
8 Фокусник
 
02.05.14
23:15
(6) что ещё есть в Выборка? Нет ли там ссылки на физ.лицо?
9 ice777
 
02.05.14
23:15
(7) думай мозгом. наводка- типы.
10 neo_matrix_123
 
02.05.14
23:16
Пока ВыборкаЛицевойСчет.Следующий() Цикл
            
            Ном = Ном + 1;
            ОбластьСтрока.Параметры.Ном = Ном;
            
            ФИОФизЛица = ПолучитьФамилиюФизЛица(ВыборкаЛицевойСчет.ФизЛицо);
            Если ФИОФизЛица <> Неопределено Тогда
            ОбластьСтрока.Параметры.Фамилия = СокрЛП(ФИОФизЛица.Фамилия);
            ОбластьСтрока.Параметры.Имя = СокрЛП(ФИОФизЛица.Имя);
            ОбластьСтрока.Параметры.Отчество = СокрЛП(ФИОФизЛица.Отчество);
            КонецЕсли;

            ОбластьСтрока.Параметры.НомерЛС = ВыборкаЛицевойСчет.НомерЛицевогоСчета;
            ОбластьСтрока.Параметры.Сумма = ВыборкаЛицевойСчет.Сумма;
                
            
        КонецЦикла;
11 листопад
 
02.05.14
23:19
(8) Вот мой полный код:


Функция СформироватьЗапросДляПечатиТрудовогоДоговора()
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("СправочникСсылка", СсылкаНаОбъект);
    Запрос.УстановитьПараметр("Физлицо", СсылкаНаОбъект.Физлицо);
    Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация);
    Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.ДатаДоговора);
    
    
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК Физлицо,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.Должность,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо.Наименование КАК НаименованиеФизлица,
    |    ФизическиеЛица.Комментарий
    |ПОМЕСТИТЬ ВТОтветственноеЛицо
    |ИЗ
    |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
    |            &ДатаДокумента,
    |            ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
    |                И СтруктурнаяЕдиница = &Организация) КАК ОтветственныеЛицаОрганизацийСрезПоследних
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
    |        ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФизическиеЛица.Ссылка";
    Запрос.Выполнить();
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтветственноеЛицоОрганизации.Должность КАК ДолжностьРуководителя,
    |    ТрудовойДоговор.НомерДоговора КАК НомерДок,
    |    ТрудовойДоговор.ДатаДоговора КАК ДатаДок,
    |    ТрудовойДоговор.Организация.НаименованиеПолное КАК ПолноеНазваниеОрганизации,
    |    ЕСТЬNULL(ФИООтветственныхЛиц.Фамилия + "" "" + ФИООтветственныхЛиц.Имя + "" "" + ФИООтветственныхЛиц.Отчество, ОтветственноеЛицоОрганизации.НаименованиеФизлица) КАК ФИОРуководителя,
    |    ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, ТрудовойДоговор.Физлицо.Наименование) КАК ФИОРаботника,
    //+(
    |    ТрудовойДоговор.ФизЛицо КАК ФизЛицо,
    |    ТрудовойДоговор.ФизЛицо.ДатаРождения КАК ДатаРожд,
    |    ТрудовойДоговор.ФизЛицо.МестоРождения КАК МестоРожд,
    |    ТрудовойДоговор.ФизЛицо.СтраховойНомерПФР КАК НомерПФР,
    //+)
    |    ТрудовойДоговор.ДатаОкончания КАК ДатаУвольнения,
    |    ТрудовойДоговор.ДатаНачала КАК ДатаПриема,
    |    ТрудовойДоговор.Должность.Наименование КАК Должность,
    |    ТрудовойДоговор.ЗанимаемыхСтавок,
    |    ТрудовойДоговор.ИспытательныйСрок,
    |    ТрудовойДоговор.ПодразделениеОрганизации.Наименование КАК Подразделение,
    |    ВЫБОР
    |        КОГДА ТрудовойДоговор.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    |            ТОГДА ""основной работе""
    |        ИНАЧЕ ""совместительству""
    |    КОНЕЦ КАК ВидЗанятости,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
    |    ВЫРАЗИТЬ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
    |    АдресРегистрации.Представление КАК АдресРегистрации,
    |    ТелефонДомашний.Представление КАК Телефоны,
    |    КонтактнаяИнформация.Представление КАК АдресОрганизации,
    |    ТелефонОрганизации.Представление КАК ТелефоныОрганизации,
    |    ТрудовойДоговор.Организация.Наименование КАК НазваниеОрганизации,
    //    |    ТрудовойДоговор.Организация.ИНН + ""/"" + ТрудовойДоговор.Организация.КПП КАК ИНН,  //-
    //+(
    |    ТрудовойДоговор.Организация.ИНН КАК ИНН,
    |    ТрудовойДоговор.Организация.КПП КАК КПП,
    //+)
    |    ТрудовойДоговор.ГрафикРаботы.ВидГрафика КАК ВидГрафика,
    |    ТрудовойДоговор.ГрафикРаботы.ДлительностьРабочейНедели КАК ДлительностьРабочейНедели,
    |    ТрудовойДоговор.ВидРасчета,
    |    ТрудовойДоговор.ТарифнаяСтавка,
    |    ТрудовойДоговор.ВалютаТарифнойСтавки.Наименование КАК ВалютаТарифнойСтавки,
    |    ТрудовойДоговор.ПерсональныеНадбавки.(
    |        Ссылка,
    |        НомерСтроки,
    |        Надбавка КАК Надбавка,
    |        Показатель1
    //    |    )
    //+(
    |    ),
    |    ТрудовойДоговор.Организация.ОсновнойБанковскийСчет.Наименование КАК БСНаименование,
    |    ТрудовойДоговор.Организация.ОсновнойБанковскийСчет.НомерСчета КАК БСНомерСчета,
    |    ТрудовойДоговор.Организация.ОсновнойБанковскийСчет.Банк.Наименование КАК БанкаНаим,
    |    ТрудовойДоговор.Организация.ОсновнойБанковскийСчет.Банк.КоррСчет КАК КСНаименование,
    |    ТрудовойДоговор.Организация.ОсновнойБанковскийСчет.Банк.Код КАК бБИК
    //+)
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК ТрудовойДоговор
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТОтветственноеЛицо КАК ОтветственноеЛицоОрганизации
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
    |                &ДатаДокумента,
    |                Физлицо В
    |                    (ВЫБРАТЬ
    |                        Ответственные.Физлицо
    |                    ИЗ
    |                        ВТОтветственноеЛицо КАК Ответственные)) КАК ФИООтветственныхЛиц
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаДокумента, Физлицо = &Физлицо) КАК ФИОФизЛиц
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&ДатаДокумента, Физлицо = &Физлицо) КАК ПаспортныеДанныеФизЛицСрезПоследних
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресРегистрации
    |        ПО ТрудовойДоговор.Физлицо = АдресРегистрации.Объект
    |            И (АдресРегистрации.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ТелефонДомашний
    |        ПО ТрудовойДоговор.Физлицо = ТелефонДомашний.Объект
    |            И (ТелефонДомашний.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонФизЛица))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |        ПО ТрудовойДоговор.Организация = КонтактнаяИнформация.Объект
    |            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ТелефонОрганизации
    |        ПО ТрудовойДоговор.Организация = ТелефонОрганизации.Объект
    |            И (ТелефонОрганизации.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонОрганизации))
    |ГДЕ
    |    ТрудовойДоговор.Ссылка = &СправочникСсылка";
    
    Возврат Запрос.Выполнить();
    
КонецФункции


Функция Печать() Экспорт
    
    Выборка = СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
    ш_СчетФЛ = ПолучитьНомерЛС(Выборка.ФИОРаботника);
    
КонецФункции
12 листопад
 
02.05.14
23:21
Еще уточнение: эту внешнюю печ.форму я делаю к справочнику "Сотрудники".
13 Фокусник
 
02.05.14
23:23
Если я правильно в телефоне рассмотрел код, то нужно:
ш_СчетФЛ = ПолучитьНомерЛС(СсылкаНаОбъект.Физлицо)
14 neo_matrix_123
 
02.05.14
23:28
(13) +1
15 листопад
 
02.05.14
23:29
(13) Да!!! СПАСИБО!!! Все получилось!!!