|
Результат запроса возращает неопределенно ↓ (Волшебник 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
|
все заработало
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |