Имя: Пароль:
1C
1С v8
Помогите с кодом обработки
0 VladB
 
11.04.18
18:18
Привет всем. Помогите ветерану с кодом обработки.
Конфигурация ЗУП 3.1.6.6, платформа 8.3.11.3034
Ни разу не доводилось писать на 8.3. Нужно обработкой пройти по
табличной части "НачисленнаяЗарплатаИВзносы" документа "ОтражениеЗарплатыВБухучете" и в поле "Подразделение" этой ТЧ заменить
элементы справочника "ПодразделенияОрганизаций" на их родителей.
Справочник "ПодразделенияОрганизаций" двухуровневый, нумерация
"В пределах подчинения владельцу".
Вот такой код сочинил:

&НаСервере
Процедура Команда1НаСервере()
    Сообщить("Выполняю");//для отладки
    Док=ВыбДок.ПолучитьОбъект();//ОтражениеЗарплатыВБухучете
    Сообщить(Док.Номер);//для отладки
    Подр=Справочники.ПодразделенияОрганизаций;
    Для Каждого Стр Из Док.НачисленнаяЗарплатаИВзносы Цикл
        ПодрС=Стр.Подразделение.Ссылка;
        ПодрСПолнКод=ПодрС.ПолныйКод();
        Сообщить(ПодрСПолнКод);//для отладки
        Если Подр.НайтиПоКоду(ПодрСПолнКод,Истина)=1  Тогда
            ПодрО=Подр.ПолучитьОбъект();
            Если ПодрО.Уровень()=2 Тогда
                ПодрРод=ПодрО.Родитель.Ссылка;
                Сообщить(ПодрРод.Наименование);
                Стр.Подразделение=ПодрРод;
                Сообщить("Новый "+ПодрРод.Наименование);
            КонецЕсли;
        Иначе
            Сообщить("Не найден "+ПодрСПолнКод);
        КонецЕсли;
    КонецЦикла;
    
    Док.Записать();
    
КонецПроцедуры

При попытке выполнить пишет ошибку:

{ВнешняяОбработка.ЗаменаПодразделений_ОтражениеЗП.Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (ПолныйКод)
        ПодрСПолнКод=ПодрС.ПолныйКод();
по причине:
Элемент не выбран!

Какой элемент не выбран? Куда не выбран?

Когда это сообщение закрываю, в окне сообщений внизу пишет:

Выполняю
00ЗК-000001 (это номер документа)
000000014/000000016
Не найден 000000014/000000016
и далее по каждой строке ТЧ номер кода и не найден

Если она видит номер кода, то какого ляда пишет про ошибку
и почему его не ищет?
Как правильно написать код? Помогите кто может!!
Готов принять любую ругань (критику) в свой адрес.
1 Cyberhawk
 
11.04.18
18:30
НайтиПоКоду не ищет по полному коду
2 Cyberhawk
 
11.04.18
18:31
А если даже и ищет, то что за сравнение с единичкой?
3 Cyberhawk
 
11.04.18
18:32
СП тебе в помощь
4 Михаил Козлов
 
11.04.18
18:34
Можно воспользоваться штатной обработкой группового изменения реквизитов с произвольным алгоритмом типа:
Для Каждого Стр Из Объект.НачисленнаяЗарплатаИВзносы Цикл
    стр.Подразделение = стр.Подразделение.Родитель;
КонецЦикла;
5 Мандалай
 
11.04.18
18:56
ПодрСПолнКод=ПодрС.ПолныйКод();
Ты глянь этот метод, может он на клиенте выполняется, а ты на сервере вертишься.
6 Мандалай
 
11.04.18
18:58
Фу блин, вечер уже.
У тебя точно ПодрС = подразделение?
Может Неопределено?
Поставь проверку на тип переменной ПодрС.
7 VladB
 
11.04.18
19:30
Похоже (4), ты прав дорогой. Спасибо большое. Всё получилось.