|
отбор в регистре сведений через comconnector | ☑ | ||
---|---|---|---|---|
0
rmullakhmetov
30.05.16
✎
09:43
|
Добрый день, работаю с 1с ЗУП 2.5 через comconnector из C#
Работаю с документом ОтпускаОрганизаций из табличной часть РаботникиОрганизации получил информацию о сотрудниках Не получается получить руководителя подразделения в котором находится сотрудник dynamic объктОтбора = conn1C.Справочники.ПодразделенияОрганизаций.НайтиПоКоду(строка.Сотрудник.ТекущееПодразделениеОрганизации.Код).ПолучитьОбъект(); dynamic отбор = conn1C.NewObject("Структура"); отбор.Вставить("СтруктурнаяЕдиница", объктОтбора.Ссылка); отбор.Вставить("ОтветственноеЛицо", conn1C.Перечисления.ОтветственныеЛицаОрганизаций.Руководитель); dynamic руководитель = conn1C.РегистрыСведений.ОтветственныеЛицаОрганизаций.Выбрать(отбор); на последней строке при выполнении получаю ошибку "System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта." что делаю не так? |
|||
1
itlikbez
30.05.16
✎
09:45
|
А если вместо:
отбор.Вставить("СтруктурнаяЕдиница", объктОтбора.Ссылка); поставить отбор.Вставить("СтруктурнаяЕдиница", объктОтбора); ? |
|||
2
itlikbez
30.05.16
✎
09:48
|
conn1C.Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Сотрудник.ТекущееПодразделениеОрганизации.Код);
|
|||
3
rmullakhmetov
30.05.16
✎
10:01
|
тоже самое :(
|
|||
4
rmullakhmetov
30.05.16
✎
10:04
|
если выполнять без указания отбора просто так
dynamic руководитель = conn1C.РегистрыСведений.ОтветственныеЛицаОрганизаций.Выбрать(); то отрабатывает, судя по всему косяк при создании отбора, подобная вещь с регистром в 1с бухгалтерии работает |
|||
5
alle68
30.05.16
✎
10:07
|
Зачем объект получать, если достаточно ссылки? Надо исправить.
|
|||
6
rmullakhmetov
30.05.16
✎
10:14
|
это уже метод тыка, от непонимая процесса
написал вот так dynamic объктОтбора = conn1C.Справочники.ПодразделенияОрганизаций.НайтиПоКоду(строка.Сотрудник.ТекущееПодразделениеОрганизации.Код);//.ПолучитьОбъект(); logger.Info(объктОтбора.Наименование); dynamic отбор = conn1C.NewObject("Структура"); отбор.Вставить("СтруктурнаяЕдиница", объктОтбора.Ссылка); отбор.Вставить("ОтветственноеЛицо", conn1C.Перечисления.ОтветственныеЛицаОрганизаций.Руководитель); dynamic руководитель = conn1C.РегистрыСведений.ОтветственныеЛицаОрганизаций.Выбрать(отбор); ошибка та же "Ссылка на объект не указывает на экземпляр объекта." так тоже пробовал отбор.Вставить("СтруктурнаяЕдиница", объктОтбора); |
|||
7
hhhh
30.05.16
✎
10:29
|
(6) а где проверка на заполненность этого объктОтбора ??
не проверяете, нашло не нашло, так наобум суете в отбор. |
|||
8
hhhh
30.05.16
✎
10:31
|
(6) вот здесь
dynamic объктОтбора = conn1C.Справочники.ПодразделенияОрганизаций.НайтиПоКоду(строка.Сотрудник.ТекущееПодразделениеОрганизации.Код)//.ПолучитьОбъект(); у вас нет точки с запятой |
|||
9
hhhh
30.05.16
✎
10:37
|
(8) + чудеса, миста сама убрала скобку после ".Код"
как так может быть? |
|||
10
rmullakhmetov
30.05.16
✎
10:38
|
объктОтбора проверяю
вот эта строка logger.Info(объктОтбора.Наименование); выдает наименование подразделения точка с запятой есть, код валится ниже в этой строке dynamic руководитель = conn1C.РегистрыСведений.ОтветственныеЛицаОрганизаций.Выбрать(отбор); |
|||
11
itlikbez
30.05.16
✎
10:41
|
(10) См. сюда
строка.Сотрудник |
|||
12
itlikbez
30.05.16
✎
10:42
|
(11) А потом см. (2)
|
|||
13
rmullakhmetov
30.05.16
✎
10:54
|
в общем написал в 1с такой код
Процедура Кнопка1Нажатие(Элемент) // Вставить содержимое обработчика. сотрудник = справочники.СотрудникиОрганизаций.НайтиПоКоду("0047"); мойОтбор = Новый Структура; мойОтбор.Вставить("СтруктурнаяЕдиница", сотрудник.ТекущееПодразделениеОрганизации.Ссылка); мойОтбор.Вставить("ОтветственноеЛицо", Перечисления.ОтветственныеЛицаОрганизаций.Руководитель); СрезПоследних = РегистрыСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(ТекущаяДата(), мойОтбор); Если СрезПоследних.Количество() >= 1 Тогда сообщить(СрезПоследних[0].ФизическоеЛицо.Наименование); конецесли; КонецПроцедуры код работает переношу его в с# для работы через comconnector dynamic мойОтбор = conn1C.NewObject("Структура"); мойОтбор.Вставить("СтруктурнаяЕдиница", строка.Сотрудник.ТекущееПодразделениеОрганизации.Ссылка); мойОтбор.Вставить("ОтветственноеЛицо", conn1C.Перечисления.ОтветственныеЛицаОрганизаций.Руководитель); dynamic руководитель = conn1C.РегистрыСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(dateFrom + " 00:00:00", мойОтбор); и не работает, всяко разно изголяюсь передаю ссылку и не ссылку и не работает, возможно какое-то глючано платформы |
|||
14
hhhh
30.05.16
✎
11:04
|
мойОтбор.Вставить("СтруктурнаяЕдиница", Сотрудник.ТекущееПодразделениеОрганизации);
|
|||
15
hhhh
30.05.16
✎
11:06
|
(13) не пишите
сотрудник.ТекущееПодразделениеОрганизации.Ссылка это работает в 10 раз медленнее чем сотрудник.ТекущееПодразделениеОрганизации и одно и то же на самом деле. или тогда пишите сотрудник.ТекущееПодразделениеОрганизации.Ссылка.Ссылка.Ссылка.Ссылка чтобы уж наверняка. |
|||
16
rmullakhmetov
30.05.16
✎
12:04
|
спасибо за информацию )
и за юмор! |
|||
17
rmullakhmetov
30.05.16
✎
12:39
|
обновил платформу, ничего не изменилось
есть еще идеи? |
|||
18
alle68
30.05.16
✎
14:23
|
(13) Здесь ссылка из другой базы: мойОтбор.Вставить("СтруктурнаяЕдиница", строка.Сотрудник.ТекущееПодразделениеОрганизации);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |