|
Преобразование значения к типу Число не может быть выполнено Ёпрст, Fedor-1971, Niveus, Telcher, Anilad, Ногаминебить, phabeZ, Mankubus, b_ru, Fish, Калиостро, MWWRuza, Михаил Козлов, reloc, rbcvg, Хряк, comp2006, kir-g, sikuda, craxx, spiller26, privetik, toypaul, mikecool, BOOL, ndrv, Kigo_Kigo, mgreat, DimVad, PLUT, Климов Сергей, Irbis, KJlag, Гипервизор, Мультук, zenik, orakool, Lama12, Злопчинский, Ненавижу 1С, vbus, SleepyHead, CepeLLlka, mTema32, Толич, Radion, 1cVandal, Franchiser, shuhard, Лодырь, PR, ads55, Builder, Волшебник, Dirk Diggler, RomaH, vicof, ДенисСмирнов, maxar, nick86, trad, Rovan, MAG, Vstur, Homer, Indian
| ☑ | ||
|---|---|---|---|---|
|
0
Anilad
11.02.26
✎
11:13
|
ЧИтаю книгу 1С:Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы. Издание 3-е. При расчете з/п выдает следующую ошибку:
Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: Преобразование значения к типу Число не может быть выполнено {ОбщийМодуль.ПроведениеРасчетов.Модуль(35)}:ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт; {Документ.НачисленияСотрудникам.МодульОбъекта(42)}:ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления, [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка] Текст программы общего модуля: Процедура РассчитатьНачисления(НаборЗаписейРегистра , ТребуемыйВидРасчета, СписокСотрудников) Экспорт Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение; // Рассчитать первичные записи Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма, | НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия | КАК Факт, | НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки |ИЗ | РегистрРасчета.Начисления.ДанныеГрафика(Регистратор = | &Регистратор И | ВидРасчета = &ВидРасчета И Сотрудник В (&СписокСотрудников)) | КАК НачисленияДанныеГрафика"; Запрос.УстановитьПараметр("Регистратор", Регистратор); Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета); Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников); ВыборкаРезультата = Запрос.Выполнить().Выбрать(); Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл СтруктураНомер = Новый Структура("НомерСтроки"); СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки; ВыборкаРезультата.Сбросить(); Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда Если ВыборкаРезультата.Норма = 0 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Вид расчета: Оклад – Нет рабочих дней в заданном периоде"; Сообщение.Сообщить(); ЗаписьРегистра.Результат = 0; Иначе // Рассчитать оклад по фактическому периоду и исходным данным ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Выполнен расчет " + ЗаписьРегистра.Регистратор + " – " + ЗаписьРегистра.ВидРасчета + " – " + ЗаписьРегистра.Сотрудник; Сообщение.Сообщить(); КонецЕсли; КонецЕсли; КонецЦикла; // Рассчитать вторичные записи ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НачисленияБазаНачисления.РезультатБаза КАК База, | НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки |ИЗ | РегистрРасчета.Начисления.БазаНачисления(&ИзмеренияОсновного, | &ИзмеренияБазового, , Регистратор = | &Регистратор И ВидРасчета = &ВидРасчета И | Сотрудник В (&СписокСотрудников)) | КАК НачисленияБазаНачисления"; Измер = Новый Массив(1); Измер[0] = "Сотрудник"; Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер); Запрос.УстановитьПараметр("ИзмеренияБазового", Измер); Запрос.УстановитьПараметр("Регистратор", Регистратор); Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета); Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников); ВыборкаРезультата = Запрос.Выполнить().Выбрать(); КонецЕсли; КонецПроцедуры Модуль Документа: Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр Начисления Движения.Начисления.Записывать = Истина; Для Каждого ТекСтрокаНачисления Из Начисления Цикл Движение = Движения.Начисления.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета; Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала; Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания); Движение.ПериодРегистрации = Дата; Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала; Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания); Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник; Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы; Движение.ИсходныеДанные = ТекСтрокаНачисления.Начислено; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Записываем движения регистров Движения.Начисления.Записать(); // Получим список всех сотрудников, содержащихся в документе Запрос = Новый Запрос( "ВЫБРАТЬ РАЗЛИЧНЫЕ | НачисленияСотрудникамНачисления.Сотрудник |ИЗ | Документ.НачисленияСотрудникам.Начисления КАК | НачисленияСотрудникамНачисления | |ГДЕ | НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент"); Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка); // Сформируем список сотрудников ТаблЗнач = Запрос.Выполнить().Выгрузить(); МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку("Сотрудник"); // Вызов процедуры РассчитатьНачисления из общего модуля ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников); Движения.Начисления.Записать( , Истина); ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников); Движения.Начисления.Записать( , Истина); КонецПроцедуры Подскажите, пж, в чем проблема |
|||
|
1
mikecool
11.02.26
✎
11:14
|
Null, Неопределено - выбирай на вкус
|
|||
|
2
Гипервизор
11.02.26
✎
11:17
|
(0) Вот тут у вас типа математика типа с числами:
(ИсходныеДанные / Норма) * Факт Вот и проверьте тип этих значений в отладчике. |
|||
|
3
mikecool
11.02.26
✎
11:24
|
моя ставка ВыборкаРезультата - пусто
|
|||
|
4
Anilad
11.02.26
✎
11:28
|
(3) пишет, что ВыборкаРезультата число со значением 20
|
|||
|
5
Anilad
11.02.26
✎
11:31
|
(2) везде тип число
|
|||
|
6
PLUT
гуру
11.02.26
✎
11:31
|
(4) ЗаписьРегистра.ИсходныеДанные какое значение? (в строке 35 по коду ашипки из (0))
|
|||
|
7
Anilad
11.02.26
✎
11:38
|
В общем гайс, оказалось, что я одному сотруднику неправильно написал период расчета зп. У меня зп рассчитывалась за 2026 год, а я ему поставил 2025))))) ахахахахах. 2 час с этой фигней возился лол
|
|||
|
8
Гипервизор
11.02.26
✎
11:44
|
(7) Малоинформативно.
|
|||
|
9
Anilad
11.02.26
✎
11:46
|
(8) какая тебе информация нужна?
|
|||
|
10
Гипервизор
11.02.26
✎
11:51
|
(9) Как связан неправильный период расчёта с ошибкой преобразования значения к типу Число?
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |