Преобразование значения к типу Число не может быть выполнено
Думал сначало возможно нужно установить значение переменных в 0, но всеравно не помогает, не пойму почему так. Ругается на строчку в разделе // Расчет СальдоКонецН. Может сможет кто-нибудь подсказать
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок, ПараметрКоманды);
ТабДок.Показать("Печать");
КонецПроцедуры
&НаСервере
Процедура Печать(ТабДок, СсылкаНаДокумент)
//Получить макет
Макет = Документы.НачислениеЗПСотрудника.ПолучитьМакет("Макет");
//Получение областей из макета
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТаблицыНач = Макет.ПолучитьОбласть("ШапкаТаблицыНач");
ОбластьСтрокаТаблицыНач = Макет.ПолучитьОбласть("СтрокаТаблицыНач");
ОбластьПодвалНач = Макет.ПолучитьОбласть("ПодвалНач");
ОбластьШапкаТаблицыУд = Макет.ПолучитьОбласть("ШапкаТаблицыУд");
ОбластьСтрокаТаблицыУд = Макет.ПолучитьОбласть("СтрокаТаблицыУд");
ОбластьПодвалУд = Макет.ПолучитьОбласть("ПодвалУд");
//Заполнение параметров и вывод областей в табличный документ
//шапка
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗПСотрудника.Организация.Наименование КАК Организация,
| НачислениеЗПСотрудника.Поликлиника.Наименование КАК Поликлиника,
| НачислениеЗПСотрудника.Сотрудник.Наименование КАК Сотрудник,
| НачислениеЗПСотрудника.ПериодДок.Наименование КАК ПериодДок,
| НачислениеЗПСотрудника.ПериодДатаНачала КАК ПериодДатаНачала,
| НачислениеЗПСотрудника.ПериодДатаКонца КАК ПериодДатаКонца
|ИЗ
| Документ.НачислениеЗПСотрудника КАК НачислениеЗПСотрудника
|ГДЕ
| НачислениеЗПСотрудника.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьШапка.Параметры.Организация = ВыборкаДетальныеЗаписи.Организация;
ОбластьШапка.Параметры.Поликлиника = ВыборкаДетальныеЗаписи.Поликлиника;
ОбластьШапка.Параметры.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
ОбластьШапка.Параметры.ПериодДок = Формат(ВыборкаДетальныеЗаписи.ПериодДок,"ДФ=MMMM.yyyy");
ОбластьШапка.Параметры.ПериодДатаНачала = Формат(ВыборкаДетальныеЗаписи.ПериодДатаНачала,"ДФ=dd.MM.yyyy");
ОбластьШапка.Параметры.ПериодДатаКонца = Формат(ВыборкаДетальныеЗаписи.ПериодДатаКонца, "ДФ=dd.MM.yyyy");
ТабДок.Вывести(ОбластьШапка);
КонецЦикла;
//шапка таблицы Нач
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленнаяЗПОстатки.СуммаЗПОстаток КАК СуммаЗПОстаток
|ИЗ
| РегистрНакопления.НачисленнаяЗП.Остатки(
| &Дата,
| Организация = &Организация
| И Поликлиника = &Поликлиника
| И Сотрудник = &Сотрудник) КАК НачисленнаяЗПОстатки";
Запрос.УстановитьПараметр("Дата",СсылкаНаДокумент.Дата );
Запрос.УстановитьПараметр("Организация", СсылкаНаДокумент.Организация);
Запрос.УстановитьПараметр("Поликлиника", СсылкаНаДокумент.Поликлиника);
Запрос.УстановитьПараметр("Сотрудник", СсылкаНаДокумент.Сотрудник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьШапкаТаблицыНач.Параметры.СальдоНачало = ВыборкаДетальныеЗаписи.СуммаЗПОстаток;
СальдоНачало = ВыборкаДетальныеЗаписи.СуммаЗПОстаток;
ТабДок.Вывести(ОбластьШапкаТаблицыНач);
КонецЦикла;
//Строка таблицы Начисления
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗПСотрудникаНачисленияЗП.Отделение.Наименование КАК Отделение,
| НачислениеЗПСотрудникаНачисленияЗП.Должность.Наименование КАК Должность,
| НачислениеЗПСотрудникаНачисленияЗП.СуммаН КАК Сумма
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
|ГДЕ
| НачислениеЗПСотрудникаНачисленияЗП.Ссылка.Ссылка = &СсылкаНаДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачислениеЗПСотрудникаНачисленияДополнительные.Отделение.Наименование,
| НачислениеЗПСотрудникаНачисленияДополнительные.Должность.Наименование,
| НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияДополнительные КАК НачислениеЗПСотрудникаНачисленияДополнительные
|ГДЕ
| НачислениеЗПСотрудникаНачисленияДополнительные.Ссылка.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьСтрокаТаблицыНач.Параметры.Отделение = ВыборкаДетальныеЗаписи.Отделение;
ОбластьСтрокаТаблицыНач.Параметры.Должность = ВыборкаДетальныеЗаписи.Должность;
ОбластьСтрокаТаблицыНач.Параметры.СуммаНачисления = ВыборкаДетальныеЗаписи.Сумма;
//
ТабДок.Вывести(ОбластьСтрокаТаблицыНач);
КонецЦикла;
//подвал нач
// Запрос для суммы НачисленияЗП.СуммаН
СуммаНачисленияЗП = 0;
ЗапросНачисленияЗП = Новый Запрос;
ЗапросНачисленияЗП.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаНачисленияЗП.СуммаН) КАК СуммаНачисленияЗП
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
|ГДЕ
| НачислениеЗПСотрудникаНачисленияЗП.Ссылка = &СсылкаНаДокумент";
ЗапросНачисленияЗП.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапросаНачисленияЗП = ЗапросНачисленияЗП.Выполнить();
ВыборкаНачисленияЗП = РезультатЗапросаНачисленияЗП.Выбрать();
Если ВыборкаНачисленияЗП.Следующий() Тогда
СуммаНачисленияЗП = ВыборкаНачисленияЗП.СуммаНачисленияЗП;
КонецЕсли;
// Запрос для суммы НачисленияДополнительные.СуммаН
СуммаНачисленияДополнительные = NULL;
СальдоКонецН = NULL;
ЗапросНачисленияДополнительные = Новый Запрос;
ЗапросНачисленияДополнительные.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН) КАК СуммаНачисленияДополнительные
|ИЗ
| Документ.НачислениеЗПСотрудника.НачисленияДополнительные КАК НачислениеЗПСотрудникаНачисленияДополнительные
|ГДЕ
| НачислениеЗПСотрудникаНачисленияДополнительные.Ссылка.Ссылка = &СсылкаНаДокумент";
ЗапросНачисленияДополнительные.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапросаНачисленияДополнительные = ЗапросНачисленияДополнительные.Выполнить();
ВыборкаНачисленияДополнительные = РезультатЗапросаНачисленияДополнительные.Выбрать();
Если ВыборкаНачисленияДополнительные.Следующий() Тогда
СуммаНачисленияДополнительные = ВыборкаНачисленияДополнительные.СуммаНачисленияДополнительные;
КонецЕсли;
// Расчет СальдоКонецН
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку
// Вывод результата
ОбластьПодвалНач.Параметры.СальдоКонецН = СальдоКонецН;
ТабДок.Вывести(ОбластьПодвалНач);
//шапка таблицы Уд
ТабДок.Вывести(ОбластьШапкаТаблицыУд);
//Строка таблицы Уд
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗПСотрудникаУдержания.Удержание.Наименование КАК ВидОперации,
| НачислениеЗПСотрудникаУдержания.СуммаУ КАК СуммаУ,
| НачислениеЗПСотрудникаУдержания.Отделение.Наименование КАК ОтделениеУ,
| НачислениеЗПСотрудникаУдержания.Должность.Наименование КАК ДолжностьУ
|ИЗ
| Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
|ГДЕ
| НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачислениеЗПСотрудникаВыплатыУдержанияБелые.ВыпУд,
| НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып,
| NULL,
| NULL
|ИЗ
| Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьСтрокаТаблицыУд.Параметры.ОтделениеУ = ВыборкаДетальныеЗаписи.ОтделениеУ;
ОбластьСтрокаТаблицыУд.Параметры.ДолжностьУ = ВыборкаДетальныеЗаписи.ДолжностьУ;
ОбластьСтрокаТаблицыУд.Параметры.ВидОперации = ВыборкаДетальныеЗаписи.ВидОперации;
ОбластьСтрокаТаблицыУд.Параметры.СуммаУдержания = ВыборкаДетальныеЗаписи.СуммаУ;
//
ТабДок.Вывести(ОбластьСтрокаТаблицыУд);
КонецЦикла;
//подвал уд
// Запрос для суммы выплат
ЗапросСуммаВыплат = Новый Запрос;
ЗапросСуммаВыплат.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып) КАК СуммаВып
|ИЗ
| Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые
|ГДЕ
| НачислениеЗПСотрудникаВыплатыУдержанияБелые.Ссылка.Ссылка = &СсылкаНаДокумент";
ЗапросСуммаВыплат.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапросаСуммаВыплат = ЗапросСуммаВыплат.Выполнить();
ВыборкаСуммаВыплат = РезультатЗапросаСуммаВыплат.Выбрать();
Если ВыборкаСуммаВыплат.Следующий() Тогда
СуммаВыплат = ВыборкаСуммаВыплат.СуммаВып;
КонецЕсли;
// Запрос для суммы удержаний
ЗапросСуммаУдержаний = Новый Запрос;
ЗапросСуммаУдержаний.Текст =
"ВЫБРАТЬ
| СУММА(НачислениеЗПСотрудникаУдержания.СуммаУ) КАК СуммаУ
|ИЗ
| Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
|ГДЕ
| НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент";
ЗапросСуммаУдержаний.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
РезультатЗапросаСуммаУдержаний = ЗапросСуммаУдержаний.Выполнить();
ВыборкаСуммаУдержаний = РезультатЗапросаСуммаУдержаний.Выбрать();
Если ВыборкаСуммаУдержаний.Следующий() Тогда
СуммаУдержаний = ВыборкаСуммаУдержаний.СуммаУ;
КонецЕсли;
// Подвал уд
СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
СальдоКонец = СальдоНачало + СальдоКонецН - СальдоКонецУ;
ОбластьПодвалУд.Параметры.СальдоКонец = СальдоКонец;
ОбластьПодвалУд.Параметры.СальдоКонецУ = СальдоКонецУ;
ТабДок.Вывести(ОбластьПодвалУд);
КонецПроцедуры
ПоказатьПо теме из базы знаний
- 1C: Управляющий. Мой опыт установки и настройки обмена
- Ошибки в ЦУП и способы решения
- Исправление ошибки "Преобразование значения к типу Число не может быть выполнено" в 1С:Розница 2.3
- Устранение ошибки работы отчета "Штатное расписание (Т-3)" (ЗУП 3.1.27.129 / 3.1.28.35)
- Исправление ошибки отчета "Штатное расписание (Т-3)"
Найденные решения
(9)фигасе забавно
тогда перед строкой
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку
добавляете такое
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли
Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
тогда перед строкой
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку
добавляете такое
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли
Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(9)фигасе забавно
тогда перед строкой
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку
добавляете такое
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли
Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
тогда перед строкой
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку
добавляете такое
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли
Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
(10)
Появился прогресс теперь ругается на строчку
Добавил следующую строчку кода и всё заработало, спасибо большое:
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли
Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
СуммаНачисленияЗП = 0
КонецЕсли
Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
Появился прогресс теперь ругается на строчку
// Подвал уд
СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
Добавил следующую строчку кода и всё заработало, спасибо большое:
Если СуммаВыплат = NULL тогда
СуммаВыплат = 0
КонецЕсли;
Если СуммаУдержаний = NULL тогда
СуммаУдержаний = 0
КонецЕсли;
(11) ну тут аналогично.
Проверить что переменная СальдоКонецУ первоначально не инициализировано NULL (1с не умеет преобразовывать NULL к числу)
и перед этой строкой
// Подвал уд
СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
поставить блоки
Если СуммаВыплат = NULL тогда
СуммаВыплат =0
конецесли
Если СуммаУдержаний = NULL тогда
СуммаУдержаний = 0
конецесли
Вместо стравнения типа "СуммаВыплат = NULL" можно использовать "ЗначениеЗаполнено(СуммаВыплат)=ложь", оно универсальнее
Проверить что переменная СальдоКонецУ первоначально не инициализировано NULL (1с не умеет преобразовывать NULL к числу)
и перед этой строкой
// Подвал уд
СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
поставить блоки
Если СуммаВыплат = NULL тогда
СуммаВыплат =0
конецесли
Если СуммаУдержаний = NULL тогда
СуммаУдержаний = 0
конецесли
Вместо стравнения типа "СуммаВыплат = NULL" можно использовать "ЗначениеЗаполнено(СуммаВыплат)=ложь", оно универсальнее
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот