Имя: Пароль:
1C
1C 7.7
v7: Эксель: получить Гражданство (1С77)
,
0 листопад
 
20.04.14
14:13
Надо вывести у сотрудников Гражданство. Сейчас, даже если у сотрудника не заполнено Гражданство, то все равно выводит "РОССИЯ" и код страны 643. Как это побороть? Вот код:

КодГражданства = глСтранаГражданства(Сотрудники);  
ОКСМ = СоздатьОбъект("Справочник.ОКСМ");
Если ОКСМ.НайтиПоКоду(КодГражданства,0) = 1 Тогда
     СтранаГражданства = ОКСМ.ТекущийЭлемент();
     Иначе
     СтранаГражданства = "";
КонецЕсли;  
Иначе
КодГражданства = "";  
СтранаГражданства = "";
КонецЕсли;
    
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,5).Value        = "'"+КодГражданства;
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,6).Value        = "'"+СтранаГражданства;
1 ДенисЧ
 
20.04.14
14:17
отладчик украли?
2 листопад
 
20.04.14
14:17
Вот функция в глоб.модуле:


//******************************************************************************
// СтранаГражданства()
//
// Параметры:
//        ФизЛицо - эл-т спр. Сотрудники
//        ВернутьКод - по умолчанию функция возвращает код страны гражданства, иначе - элемент справочника
//
// Возвращаемое значение
//        Код страны гражданства
//
Функция глСтранаГражданства(ФизЛицо, ВернутьКод = 1)  Экспорт
    
    // найдем Россию в справочнике стран
    СпрСтран = СоздатьОбъект("Справочник.ОКСМ");
    Если СпрСтран.НайтиПоНаименованию("Россия") = 1 Тогда
        Россия =  СпрСтран.ТекущийЭлемент();
        КодРоссии =  Россия.Код;
    Иначе
        Россия = ПолучитьПустоеЗначение("Справочник.ОКСМ");
        КодРоссии =  "643";  // все-таки можно вернуть и 643, даже если страны не заполнены
        Если ВернутьКод = 0 Тогда
            Сообщить("Не найдена Россия в справочнике стран");
        КонецЕсли;
    КонецЕсли;
    
    СтранаПМЖ    = ФизЛицо.Страна;
    Гражданство    = ФизЛицо.Гражданство;
    
    //код страны гражданства определим так: если заполнен реквизит гражданство и он равен 1 или 2, то код 643, иначе - код сраны ПМЖ
    Если ПустоеЗначение(Гражданство) = 0 Тогда
        Если (Число(Гражданство.Код) = 1) или (Число(Гражданство.Код) = 2) Тогда  // гражданин России
            Возврат ?(ВернутьКод = 1,КодРоссии  ,Россия );   // даже если заполнена страна ПМЖ, но при этом в карточке Т2 проставили "гражданин", значит все - таки гражданин России
        КонецЕсли;
    КонецЕсли;
    // гражданство = 3 - не гражданин России или 4 - лицо без гражданства или не задано гражданство вообще
    Если ПустоеЗначение(СтранаПМЖ) = 0 Тогда
        Возврат ?(ВернутьКод = 1, СтранаПМЖ.Код , СтранаПМЖ );
    Иначе
        //Сообщить("У сотрудника "+ФизЛицо+" в карточке Т2 указано, что он не является гражданином России,
        //|однако в форме сотрудника при этом у него не выбрана страна проживания. ");
        Возврат ?(ВернутьКод = 1, КодРоссии ,Россия );
    КонецЕсли;
    

КонецФункции // глСтранаГражданства()
3 Wobland
 
20.04.14
14:21
да выкладывай уже всю обработку и задачу, чего стесняешься, как первокурсница в бане?
4 2S
 
20.04.14
14:35
Сотрудник.страна.код не канает?
5 2S
 
20.04.14
14:36
Листопад, откуда ты?
6 КонецЦикла
 
20.04.14
14:43
// все-таки можно вернуть и 643, даже если страны не заполнены

Буогаг, какая забота о юзверях
7 листопад
 
20.04.14
15:02
(4) УРА! Получилось! СПАСИБКИ!!!
8 2S
 
20.04.14
15:13
(7) ответьте на (5)
9 Дегенератор идей
 
20.04.14
20:37
(8) из Москвы..
10 Дегенератор идей
 
20.04.14
20:40
+(9)мне вот больше интересно что она любит кушать.. :)
11 Дегенератор идей
 
20.04.14
20:42
(10) хотя уже не интересно.. угадал с первой попытки
12 2S
 
20.04.14
20:57
(11) кузнец? )
13 Дегенератор идей
 
20.04.14
20:58
учу пользоваться поиском.. дорого :)
14 Torquader
 
20.04.14
21:08
Такое впечатление, что (0) ЗУП переписывает от начала и до конца.