helpf.pro
Регистрация

v8: Сравнение объекта в документе с регистром сведений

cdsven
23.11.2018 11:07Прочитано: 90

Добрый день. Имеется обработка, которая должна сравнивать данные из документа с данными из регистра сведений.  Пожалуйста помогите разобраться в данной проблеме.

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

Код 1C v 8.3
 {Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(1575)}: Значение не является значением объектного типа (Состав)

Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.Состав.ФизическоеЛицо.Выгрузить());
Код 1C v 8.3
 &НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, МестоВыплаты, ЗарплатныйПроект, ИскомыеСтроки, ФизическоеЛицо, Состав, Объект)
Запрос = Новый Запрос;
  Запрос.Текст = ("ВЫБРАТЬ
                  | КадроваяИсторияСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
                  | КадроваяИсторияСотрудников.Организация КАК Организация,
                  | КадроваяИсторияСотрудников.Подразделение КАК Подразделение,
                  | КадроваяИсторияСотрудников.Сотрудник КАК Сотрудник
                  |ПОМЕСТИТЬ ВТСотрудники
                  |ИЗ
                  | РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
                  |ГДЕ
                  | КадроваяИсторияСотрудников.ФизическоеЛицо В (&ФизическоеЛицо)
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
                  | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
                  | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ЗарплатныйПроект КАК ЗарплатныйПроект,
                  | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.Банк КАК Банк
                  |ПОМЕСТИТЬ ВТЛицевыеСчета
                  |ИЗ
                  | РегистрСведений.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.СрезПоследних КАК ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних
                  | ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудники КАК ВТСотрудники
                  | ПО ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо = ВТСотрудники.ФизическоеЛицо
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  | МестаВыплатыЗарплатыСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
                  | ЕСТЬNULL(МестаВыплатыЗарплатыСотрудников.МестоВыплаты, ЕСТЬNULL(МестаВыплатыЗарплатыПодразделений.МестоВыплаты, МестаВыплатыЗарплатыОрганизаций.МестоВыплаты)) КАК МестоВыплаты
                  |ПОМЕСТИТЬ ВТМестаВыплаты
                  |ИЗ
                  | ВТСотрудники КАК ВТСотрудники
                  | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаВыплатыЗарплатыСотрудников КАК МестаВыплатыЗарплатыСотрудников
                  | ПО (МестаВыплатыЗарплатыСотрудников.ФизическоеЛицо = ВТСотрудники.ФизическоеЛицо)
                  | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаВыплатыЗарплатыОрганизаций КАК МестаВыплатыЗарплатыОрганизаций
                  | ПО (МестаВыплатыЗарплатыОрганизаций.Организация = ВТСотрудники.Организация)
                  | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаВыплатыЗарплатыПодразделений КАК МестаВыплатыЗарплатыПодразделений
                  | ПО (МестаВыплатыЗарплатыПодразделений.Подразделение = ВТСотрудники.Подразделение)
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  | ВТСотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
                  | ВТМестаВыплаты.МестоВыплаты КАК МестоВыплаты,
                  | ВТЛицевыеСчета.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
                  | ВТЛицевыеСчета.ЗарплатныйПроект КАК ЗарплатныйПроект,
                  | ВТЛицевыеСчета.Банк КАК Банк
                  |ИЗ
                  | ВТСотрудники КАК ВТСотрудники
                  | ЛЕВОЕ СОЕДИНЕНИЕ ВТМестаВыплаты КАК ВТМестаВыплаты
                  | ПО ВТСотрудники.ФизическоеЛицо = ВТМестаВыплаты.ФизическоеЛицо
                  | ЛЕВОЕ СОЕДИНЕНИЕ ВТЛицевыеСчета КАК ВТЛицевыеСчета
                  | ПО ВТСотрудники.ФизическоеЛицо = ВТЛицевыеСчета.ФизическоеЛицо");
Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.Состав.ФизическоеЛицо.Выгрузить());
Выборка = Запрос.Выполнить().Выбрать();
пока Выборка.Следующий() Цикл
Если объект.ЗарплатныйПроект <> Выборка.МестоВыплаты тогда    
Отказ = Истина;
Сообщить("Карта не используется!" + Выборка.ФизическоеЛицо);

ИначеЕсли  
 
ИскомыеСтроки = Объект.Зарплата.НайтиСтроки("ФизическоеЛицо", Выборка.ФизическоеЛицо) тогда
Для каждого ИскомаяСтрока из ИскомыеСтроки Цикл
Если ИскомаяСтрока.НомерЛицевогоСчета <> Выборка.НомерЛицевогоСчета Тогда
Отказ = Истина;
Сообщить("Карта не используется!" + ИскомаяСтрока.НомерЛицевогоСчета);

КонецЕсли;
КонецЦикла;
КонецЕсли;

КонецЦикла;


  //Возврат;


КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
АВП
23.11.2018 16:24Ответ № 1

Трудно судить незная конфигурации, но предположу, что Состав - это не Объект. По крайней мере из переданных параметров в процедуру следует, что Состав не входит в объект. Либо у вас задвоены имена (есть Объект.Состав и есть параметр Состав)

Код 1C v 8.3
 Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, МестоВыплаты, ЗарплатныйПроект, ИскомыеСтроки, ФизическоеЛицо, Состав, Объект)   
АВП
23.11.2018 16:28Ответ № 2

Вызывает сомнение и сама процедура, потому что стандартный обработчик выглядит так:

Код 1C v 8.3
 Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)   
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.