Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 11:53

Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов.

Автор Sanchez, 02 дек 2024, 11:19

0 Пользователей и 1 гость просматривают эту тему.

Sanchez

Добрый день! Имеется функция для получния СтавкаЧас из регистра сведений ОкладыСотрудников

Функция ПолучитьОклад(СотрудникОтбора, ПериодОтбора)Экспорт

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОкладыСотрудниковСрезПоследних.СтавкаЧас КАК СтавкаЧас
|ИЗ
| РегистрСведений.ОкладыСотрудников.СрезПоследних(&ПериодСреза, Сотрудник = &СотрудникОтбора) КАК ОкладыСотрудниковСрезПоследних";

Запрос.УстановитьПараметр("ПериодСреза", ПериодОтбора);
Запрос.УстановитьПараметр("СотрудникОтбора", СотрудникОтбора);

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда

СтавкаЧасСотрудника = 0;

Иначе

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

ВыборкаДетальныеЗаписи.Следующий();

СтавкаЧасСотрудника = ВыборкаДетальныеЗаписи.СтавкаЧас;

КонецЕсли;

Возврат СтавкаЧасСотрудника;


//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


КонецФункции // ПолучитьОклад()

Так же, процедура, которая подставляет СтавкуЧас сотрудника в таблиную часть Документа Начисление зарплаты, СтавкаЧас

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Для каждого СтрокаСотрудника Из ЭтотОбъект.СписокСотрудников Цикл

СтрокаСотрудника.СтавкаЧас = РегистрыСведений.ОкладыСотрудников.ПолучитьОклад(СтрокаСотрудника, ЭтотОбъект.Дата);

КонецЦикла;

КонецПроцедуры

Ошибка следущая
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Ошибка при вызове метода контекста (Выполнить)
{РегистрСведений.ОкладыСотрудников.МодульМенеджера(17)}:РезультатЗапроса = Запрос.Выполнить();
{Документ.НачислениеЗарплаты.МодульОбъекта(6)}:СтрокаСотрудника.СтавкаЧас = РегистрыСведений.ОкладыСотрудников.ПолучитьОклад(СтрокаСотрудника, ЭтотОбъект.Дата);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
{(4, 74)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
РегистрСведений.ОкладыСотрудников.СрезПоследних(&ПериодСреза, Сотрудник <<?>>= &СотрудникОтбора) КАК ОкладыСотрудниковСрезПоследних

Куда мне смотреть и что не так?

Максим75

Sanchez, СтрокаСотрудника.СтавкаЧас = РегистрыСведений.ОкладыСотрудников.ПолучитьОклад(СтрокаСотрудника, ЭтотОбъект.Дата);
здесь у Вас СтрокаСотрудника - это строка табличной части, а Вам надо в ПолучитьОклад передать сотрудника, ну не строку табличной части, а самого сотрудника, что в этой строке "живет"

Sanchez

Максим75, СтрокаСотрудника имеет вот такой тип ДокументТабличнаяЧастьСтрока.НачислениеЗарплаты.СписокСотрудников

Sanchez


Максим75

Sanchez, ну через точку указать где сотрудник хранится в строке.
ну Вы же пишите СтрокаСотрудника.СтавкаЧас (это в строке Вы реквизит СтавкаЧас указываете)
вот так же и смотрите, где сам сотрудник живет.

Sanchez

нашел!
Цитата: Максим75 от 02 дек 2024, 11:31Sanchez, ну через точку указать где сотрудник хранится в строке.
ну Вы же пишите СтрокаСотрудника.СтавкаЧас (это в строке Вы реквизит СтавкаЧас указываете)
вот так же и смотрите, где сам сотрудник живет.
да, я нашел, сразу и не увидел, спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск