|   |   | 
| 
 | Сравнение объекта в документе с регистром сведений | ☑ | ||
|---|---|---|---|---|
| 0
    
        cdsven 23.11.18✎ 11:14 | 
        Добрый день. Имеется обработка, которая должна сравнивать данные из документа с данными из регистра сведений.  Пожалуйста помогите разобраться в данной проблеме.
 При выполнении выдает ошибку: {Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(1575)}: Значение не является значением объектного типа (Состав) Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.Состав.ФизическоеЛицо.Выгрузить()); &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, МестоВыплаты, ЗарплатныйПроект, ИскомыеСтроки, ФизическоеЛицо, Состав, Объект) Запрос = Новый Запрос; Запрос.Текст = ("ВЫБРАТЬ | КадроваяИсторияСотрудников.ФизическоеЛицо КАК ФизическоеЛицо, | КадроваяИсторияСотрудников.Организация КАК Организация, | КадроваяИсторияСотрудников.Подразделение КАК Подразделение, | КадроваяИсторияСотрудников.Сотрудник КАК Сотрудник |ПОМЕСТИТЬ ВТСотрудники |ИЗ | РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников |ГДЕ | КадроваяИсторияСотрудников.ФизическоеЛицо В (&ФизическоеЛицо) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо, | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.НомерЛицевогоСчета КАК НомерЛицевогоСчета, | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ЗарплатныйПроект КАК ЗарплатныйПроект, | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.Банк КАК Банк |ПОМЕСТИТЬ ВТЛицевыеСчета |ИЗ | РегистрСведений.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.СрезПоследних КАК ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудники КАК ВТСотрудники | ПО ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо = ВТСотрудники.ФизическоеЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МестаВыплатыЗарплатыСотрудников.ФизическоеЛицо КАК ФизическоеЛицо, | ЕСТЬNULL(МестаВыплатыЗарплатыСотрудников.МестоВыплаты, ЕСТЬNULL(МестаВыплатыЗарплатыПодразделений.МестоВыплаты, МестаВыплатыЗарплатыОрганизаций.МестоВыплаты)) КАК МестоВыплаты |ПОМЕСТИТЬ ВТМестаВыплаты |ИЗ | ВТСотрудники КАК ВТСотрудники | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаВыплатыЗарплатыСотрудников КАК МестаВыплатыЗарплатыСотрудников | ПО (МестаВыплатыЗарплатыСотрудников.ФизическоеЛицо = ВТСотрудники.ФизическоеЛицо) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаВыплатыЗарплатыОрганизаций КАК МестаВыплатыЗарплатыОрганизаций | ПО (МестаВыплатыЗарплатыОрганизаций.Организация = ВТСотрудники.Организация) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаВыплатыЗарплатыПодразделений КАК МестаВыплатыЗарплатыПодразделений | ПО (МестаВыплатыЗарплатыПодразделений.Подразделение = ВТСотрудники.Подразделение) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТСотрудники.ФизическоеЛицо КАК ФизическоеЛицо, | ВТМестаВыплаты.МестоВыплаты КАК МестоВыплаты, | ВТЛицевыеСчета.НомерЛицевогоСчета КАК НомерЛицевогоСчета, | ВТЛицевыеСчета.ЗарплатныйПроект КАК ЗарплатныйПроект, | ВТЛицевыеСчета.Банк КАК Банк |ИЗ | ВТСотрудники КАК ВТСотрудники | ЛЕВОЕ СОЕДИНЕНИЕ ВТМестаВыплаты КАК ВТМестаВыплаты | ПО ВТСотрудники.ФизическоеЛицо = ВТМестаВыплаты.ФизическоеЛицо | ЛЕВОЕ СОЕДИНЕНИЕ ВТЛицевыеСчета КАК ВТЛицевыеСчета | ПО ВТСотрудники.ФизическоеЛицо = ВТЛицевыеСчета.ФизическоеЛицо"); Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.Состав.ФизическоеЛицо.Выгрузить()); Выборка = Запрос.Выполнить().Выбрать(); пока Выборка.Следующий() Цикл Если объект.ЗарплатныйПроект <> Выборка.МестоВыплаты тогда Отказ = Истина; Сообщить("Карта не используется!" + Выборка.ФизическоеЛицо); ИначеЕсли ИскомыеСтроки = Объект.Зарплата.НайтиСтроки("ФизическоеЛицо", Выборка.ФизическоеЛицо) тогда Для каждого ИскомаяСтрока из ИскомыеСтроки Цикл Если ИскомаяСтрока.НомерЛицевогоСчета <> Выборка.НомерЛицевогоСчета Тогда Отказ = Истина; Сообщить("Карта не используется!" + ИскомаяСтрока.НомерЛицевогоСчета); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; //Возврат; КонецПроцедуры | |||
| 1
    
        AllJoke 23.11.18✎ 11:19 | 
        Смотрите отладчиком что такое Состав. И использовать надо ВыгрузитьКолонку();
 Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.Состав.ФизическоеЛицо.ВыгрузитьКолонку(<ТутВашаКолонка>)); | |||
| 2
    
        Lexey_ 23.11.18✎ 11:19 | 
        (0) так тебе ж платформа уже помогла: "Значение не является значением объектного типа (Состав)"     | |||
| 3
    
        AllJoke 23.11.18✎ 11:21 | ||||
| 4
    
        cdsven 23.11.18✎ 12:17 | 
        (1) посмотрел отладчиком, пишет тип неопределенно     | |||
| 5
    
        catena 23.11.18✎ 12:26 | 
        (4)У Неопределено не может быть реквизита ФизическоеЛицо. Проблема решена.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |