Имя: Пароль:
1C
1С v8
Как получить данные с составного типа
,
0 Шурик_1985
 
07.02.12
14:31
Здравствуйте!
Ребят помогите решить задачку!!
Имеется реквизит табличной части документа составного типа (два разных справочника 1.СправочникСотрудник и 2 СправочникКонтрагенты).
Задача: если пользователь выбрал один тип справочника т.е СправочникСотрудники, то нужно открыть форму выбора и передав  параметры в глобальный модуль,
а если другой - ничего не делать, вот что я пробовал написать:
[code]
&НаКлиенте
Процедура ТабДокКлиентыПриИзменении(Элемент)
ТЗ = ЭтаФорма.Элементы.Долги.ТекущиеДанные;
Если ТипЗнч(ТЗ.Клиенты)= Тип("СправочникСсылка.Сотрудники") Тогда
     ДанныеСотрудника = "";
     ГМВариантыОтчетов.ПолучитьДанныеСотрудника(ТЗ.Клиенты,ДанныеСотрудника);
     ТЗ.Организация   = ДанныеСотрудника.Организация;
     ТЗ.Подразделение = ДанныеСотрудника.Подразделение;
 ИначеЕсли
     ТипЗнч(ТЗ.Клиенты)= Тип("СправочникСсылка.Сотрудники") Тогда
 КонецЕсли;
КонецПроцедуры

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

[code\]

Спасибо за внимание!
1 Ненавижу 1С
 
гуру
07.02.12
14:33
ну и какрезультат?
2 Шурик_1985
 
07.02.12
14:43
Ошибка коньячно, {Документ.АвансовыйОтчет.Форма.ФормаДокумента(2307)}: Значение не является значением объектного типа (Организация)
     ТЗ.Организация   = ДанныеСотрудника.Организация;

я получаеться передаю группу, я думаю что надо как то обойти родителя, но у вы не знаю как!
3 Fish
 
07.02.12
14:47
У тебя при вызове ф-ции написано:

ГМВариантыОтчетов.ПолучитьДанныеСотрудника(ТЗ.Клиенты,ДанныеСотрудника)

А в самой ф-ции:

Функция ПолучитьДанныеСотрудника (ДанныеСотрудника,Сотрудник)

Точно параметры не перепутаны?
4 Шурик_1985
 
07.02.12
14:56
Fish
Не не точно не перепутаны!
я на это уже обращал внимание
5 Шурик_1985
 
07.02.12
15:02
Уважаемы коллеги программисты не у кого не будет других вариантов???
6 DrShad
 
07.02.12
15:06
(4) уверен?
7 mkanaev
 
07.02.12
15:12
чё ет ты в параметр запроса пустую строку подаёшь а сравниваешь я так понимаю с ссылкой?
8 Fish
 
07.02.12
15:14
(4) Поставь точку останова на строке:
Запрос.УстановитьПараметр("Сотрудник",Сотрудник);

И посмотри, чему равен Сотрудник. Сильно удивишься :)))
9 Fish
 
07.02.12
15:15
У тебя функция ничего не возвращает. Вот и ошибка.
10 Шурик_1985
 
07.02.12
15:39
Все равно результат не та,  при изменении ТЗ.клиента я передаю родителя СправочникаСотрудник в глобальный модуль и уменя результат естественно получаеться пустая строка.
может это следует написать в НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
типа СтандартнаяОбработка = Ложь;
и дальше ? ?
если я реально туплю прошу не судите строго, начинающий:((
11 Fish
 
07.02.12
15:42
(10) Ничего не понял, если честно :))) А по поводу ошибки в (2) я уже тебе написал всё.
12 Шурик_1985
 
07.02.12
16:01
Fish большое спасибо за ответы, постараюсь помозговать:))
13 Шурик_1985
 
08.02.12
08:30
Всем спасибо, вроде получилос, а самоеглавно я понял как это работает!

&НаКлиенте
Процедура ДолгиКлиентыПриИзменении(Элемент)
 ТЗ = ЭтаФорма.Элементы.Долги.ТекущиеДанные;      
 Если ТипЗнч(ТЗ.Клиенты)= Тип("СправочникСсылка.Сотрудники") Тогда
    ДанныеСотрудника = УправлениеНебольшойФирмойСервер.ПолучитьДанныеСотрудника(ТЗ.Клиенты,ДанныеСотрудника);
    Если ДанныеСотрудника<> Неопределено Тогда
        ТЗ.Организация   = ДанныеСотрудника.Организация;
         ТЗ.Подразделение = ДанныеСотрудника.СтруктурнаяЕдиница;  
ИначеЕсли
   ТипЗнч(ТЗ.Клиенты)= Тип("СправочникСсылка.Контрагенты") Тогда
КонецЕсли;
КонецЕсли;
КонецПроцедуры


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