|
|
|
Результат запроса возращает неопределенно ↓ (Волшебник 02.12.2024 11:10) |
☑ | ||
|---|---|---|---|---|
|
0
Sanchez2114
02.12.24
✎
11:10
|
Добрый день! Имеется функция для получния СтавкаЧас из регистра сведений ОкладыСотрудников
Функция ПолучитьОклад(СотрудникОтбора, ПериодОтбора)Экспорт
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОкладыСотрудниковСрезПоследних.СтавкаЧас КАК СтавкаЧас
|ИЗ
| РегистрСведений.ОкладыСотрудников.СрезПоследних(&ПериодСреза, Сотрудник = &СотрудникОтбора) КАК ОкладыСотрудниковСрезПоследних";
Запрос.УстановитьПараметр("ПериодСреза", ПериодОтбора);
Запрос.УстановитьПараметр("СотрудникОтбора", СотрудникОтбора);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
СтавкаЧасСотрудника = 0;
Иначе
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
СтавкаЧасСотрудника = ВыборкаДетальныеЗаписи.СтавкаЧас;
КонецЕсли;
Возврат СтавкаЧасСотрудника;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецФункции // ПолучитьОклад()
Так же, процедура, которая подставляет СтавкуЧас сотрудника в таблиную часть Документа Начисление зарплаты, СтавкаЧас
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для каждого СтрокаСотрудника Из ЭтотОбъект.СписокСотрудников Цикл
СтрокаСотрудника.СтавкаЧас = РегистрыСведений.ОкладыСотрудников.ПолучитьОклад(СтрокаСотрудника, ЭтотОбъект.Дата);
КонецЦикла;
КонецПроцедуры
Ошибка следущая Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине: Ошибка при вызове метода контекста (Выполнить) {РегистрСведений.ОкладыСотрудников.МодульМенеджера(17)}:РезультатЗапроса = Запрос.Выполнить(); {Документ.НачислениеЗарплаты.МодульОбъекта(6)}:СтрокаСотрудника.СтавкаЧас = РегистрыСведений.ОкладыСотрудников.ПолучитьОклад(СтрокаСотрудника, ЭтотОбъект.Дата); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: {(4, 74)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. РегистрСведений.ОкладыСотрудников.СрезПоследних(&ПериодСреза, Сотрудник <<?>>= &СотрудникОтбора) КАК ОкладыСотрудниковСрезПоследних Куда мне смотреть и что не так? |
|||
|
1
Гипервизор
02.12.24
✎
11:09
|
А сообщение об ошибке вообще не наводит на мысли?
|
|||
|
2
Волшебник
02.12.24
✎
11:10
|
проверьте тип СписокСотрудников и убедитесь, что СтрокаСотрудника не является ссылкой на справочник Сотрудники
|
|||
|
3
СвинТуз
02.12.24
✎
11:11
|
Нефиг строку в параметр запроса загонять
|
|||
|
4
Волшебник
02.12.24
✎
11:13
|
Можно ещё вызвать: РегистрыСведений.ОкладыСотрудников.ПолучитьПоследнее(<КонецПериода>, <Отбор>)
А уж если используете запрос, так сделайте один запрос на всю табличную часть |
|||
|
5
Sanchez2114
02.12.24
✎
11:14
|
(3) не понял, объясните
|
|||
|
6
СвинТуз
02.12.24
✎
11:14
|
МаркетингЦен = РегистрыСведений.МаркетингЦен;
Отбор = Новый Структура; Отбор.Вставить("Контрагент", Строка.Контрагент); ТекущиеЦеныКонкурентов = МаркетингЦен.СрезПоследних(ТекущаяДата(), Отбор); Все равно г...но Запрос в цикле замаскированный. |
|||
|
7
Волшебник
02.12.24
✎
11:16
|
(6) У профессионалов запросы в цикле не тормозят. У автора наверняка единственное ведущее измерение с индексом. Всё будет работать быстро.
|
|||
|
8
СвинТуз
02.12.24
✎
11:16
|
ЭтотОбъект.СписокСотрудников - это табличная часть
СтрокаСотрудника - это строка табличной части ==> СотрудникОтбора это СтрокаСотрудника |
|||
|
9
СвинТуз
02.12.24
✎
11:17
|
(7)
Это привычка ))) |
|||
|
10
Волшебник
02.12.24
✎
11:17
|
(9) вредная
|
|||
|
11
СвинТуз
02.12.24
✎
11:19
|
(10)
Видел лекцию. Уважаемый человек ставил опыты. Сделал вывод. Сказки все про оптимизацию. За исключением случаев составного типа в набитом регистре накопления. |
|||
|
12
СвинТуз
02.12.24
✎
11:20
|
Но это же любовь к искусству
|
|||
|
13
СвинТуз
02.12.24
✎
11:22
|
(0)
В целом. Не нужная функция. Запрос в цикле. С ошибкой. Для начала норм. |
|||
|
14
Sanchez2114
02.12.24
✎
11:22
|
ничего не понятно но очень интересено)
|
|||
|
15
СвинТуз
02.12.24
✎
11:24
|
Ясно.
Вскрытие не помогло. Больной был еще жив. Дальше сам. Зашивать не будем. |
|||
|
16
Sanchez2114
02.12.24
✎
11:24
|
(2) ДокументТабличнаяЧастьСтрока.НачислениеЗарплаты.СписокСотрудников
|
|||
|
17
Sanchez2114
02.12.24
✎
11:26
|
СписокСотрудников =
ДокументТабличнаяЧастьСтрока.НачислениеЗарплаты.СписокСотрудников |
|||
|
18
Волшебник
02.12.24
✎
11:26
|
(16) да-да, продолжайте
|
|||
|
19
Волшебник
02.12.24
✎
11:27
|
(17) ну и? мыслишка-то появилась?
|
|||
|
20
Sanchez2114
02.12.24
✎
11:30
|
(19) т.е я правильно понимаю, что я передаю строку табличной части, а надо передать именно самого Сотрудника? или нет?
|
|||
|
21
Волшебник
02.12.24
✎
11:31
|
(20) Нет. Надо передать список всех сотрудников в один запрос.
|
|||
|
22
Sanchez2114
02.12.24
✎
11:31
|
все
|
|||
|
23
Волшебник
02.12.24
✎
11:33
|
![]() |
|||
|
24
Sanchez2114
02.12.24
✎
11:33
|
СтрокаСотрудника.Сотрудник надо передать было, спасибо
|
|||
|
25
Волшебник
02.12.24
✎
11:35
|
(24)
![]() |
|||
|
26
Sanchez2114
02.12.24
✎
11:44
|
все заработало
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |