Думал сначало возможно нужно установить значение переменных в 0, но всеравно не помогает, не пойму почему так. Ругается на строчку в разделе // Расчет СальдоКонецН. Может сможет кто-нибудь подсказать

```1c
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

    ТабДок = Новый ТабличныйДокумент;
    Печать(ТабДок, ПараметрКоманды);
    ТабДок.Показать("Печать");

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

    &НаСервере
    Процедура Печать(ТабДок, СсылкаНаДокумент)

    //Получить макет
    Макет = Документы.НачислениеЗПСотрудника.ПолучитьМакет("Макет");

    //Получение областей из макета
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапкаТаблицыНач = Макет.ПолучитьОбласть("ШапкаТаблицыНач");
    ОбластьСтрокаТаблицыНач = Макет.ПолучитьОбласть("СтрокаТаблицыНач");
    ОбластьПодвалНач = Макет.ПолучитьОбласть("ПодвалНач");
    ОбластьШапкаТаблицыУд = Макет.ПолучитьОбласть("ШапкаТаблицыУд");
    ОбластьСтрокаТаблицыУд = Макет.ПолучитьОбласть("СтрокаТаблицыУд");
    ОбластьПодвалУд = Макет.ПолучитьОбласть("ПодвалУд");

    //Заполнение параметров и вывод областей в табличный документ

    //шапка

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НачислениеЗПСотрудника.Организация.Наименование КАК Организация,
    | НачислениеЗПСотрудника.Поликлиника.Наименование КАК Поликлиника,
    | НачислениеЗПСотрудника.Сотрудник.Наименование КАК Сотрудник,
    | НачислениеЗПСотрудника.ПериодДок.Наименование КАК ПериодДок,
    | НачислениеЗПСотрудника.ПериодДатаНачала КАК ПериодДатаНачала,
    | НачислениеЗПСотрудника.ПериодДатаКонца КАК ПериодДатаКонца
    |ИЗ
    | Документ.НачислениеЗПСотрудника КАК НачислениеЗПСотрудника
    |ГДЕ
    | НачислениеЗПСотрудника.Ссылка = &СсылкаНаДокумент";

    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

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

    ОбластьШапка.Параметры.Организация = ВыборкаДетальныеЗаписи.Организация;
    ОбластьШапка.Параметры.Поликлиника = ВыборкаДетальныеЗаписи.Поликлиника;
    ОбластьШапка.Параметры.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
    ОбластьШапка.Параметры.ПериодДок = Формат(ВыборкаДетальныеЗаписи.ПериодДок,"ДФ=MMMM.yyyy");
    ОбластьШапка.Параметры.ПериодДатаНачала = Формат(ВыборкаДетальныеЗаписи.ПериодДатаНачала,"ДФ=dd.MM.yyyy");
    ОбластьШапка.Параметры.ПериодДатаКонца = Формат(ВыборкаДетальныеЗаписи.ПериодДатаКонца, "ДФ=dd.MM.yyyy");

    ТабДок.Вывести(ОбластьШапка);
    КонецЦикла;

    //шапка таблицы Нач

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

    Запрос.УстановитьПараметр("Дата",СсылкаНаДокумент.Дата );
    Запрос.УстановитьПараметр("Организация", СсылкаНаДокумент.Организация);
    Запрос.УстановитьПараметр("Поликлиника", СсылкаНаДокумент.Поликлиника);
    Запрос.УстановитьПараметр("Сотрудник", СсылкаНаДокумент.Сотрудник);

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

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

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

    ОбластьШапкаТаблицыНач.Параметры.СальдоНачало = ВыборкаДетальныеЗаписи.СуммаЗПОстаток;
    СальдоНачало = ВыборкаДетальныеЗаписи.СуммаЗПОстаток;

    ТабДок.Вывести(ОбластьШапкаТаблицыНач);
    КонецЦикла;

    //Строка таблицы Начисления

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НачислениеЗПСотрудникаНачисленияЗП.Отделение.Наименование КАК Отделение,
    | НачислениеЗПСотрудникаНачисленияЗП.Должность.Наименование КАК Должность,
    | НачислениеЗПСотрудникаНачисленияЗП.СуммаН КАК Сумма
    |ИЗ
    | Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
    |ГДЕ
    | НачислениеЗПСотрудникаНачисленияЗП.Ссылка.Ссылка = &СсылкаНаДокумент
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | НачислениеЗПСотрудникаНачисленияДополнительные.Отделение.Наименование,
    | НачислениеЗПСотрудникаНачисленияДополнительные.Должность.Наименование,
    | НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН
    |ИЗ
    | Документ.НачислениеЗПСотрудника.НачисленияДополнительные КАК НачислениеЗПСотрудникаНачисленияДополнительные
    |ГДЕ
    | НачислениеЗПСотрудникаНачисленияДополнительные.Ссылка.Ссылка = &СсылкаНаДокумент";

    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

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

    ОбластьСтрокаТаблицыНач.Параметры.Отделение = ВыборкаДетальныеЗаписи.Отделение;
    ОбластьСтрокаТаблицыНач.Параметры.Должность = ВыборкаДетальныеЗаписи.Должность;
    ОбластьСтрокаТаблицыНач.Параметры.СуммаНачисления = ВыборкаДетальныеЗаписи.Сумма;
    //

    ТабДок.Вывести(ОбластьСтрокаТаблицыНач);

    КонецЦикла;

    //подвал нач

    // Запрос для суммы НачисленияЗП.СуммаН
    СуммаНачисленияЗП = 0;

    ЗапросНачисленияЗП = Новый Запрос;
    ЗапросНачисленияЗП.Текст =
    "ВЫБРАТЬ
    | СУММА(НачислениеЗПСотрудникаНачисленияЗП.СуммаН) КАК СуммаНачисленияЗП
    |ИЗ
    | Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
    |ГДЕ
    | НачислениеЗПСотрудникаНачисленияЗП.Ссылка = &СсылкаНаДокумент";

    ЗапросНачисленияЗП.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

    Если ВыборкаНачисленияЗП.Следующий() Тогда
    СуммаНачисленияЗП = ВыборкаНачисленияЗП.СуммаНачисленияЗП;
    КонецЕсли;

    // Запрос для суммы НачисленияДополнительные.СуммаН
    СуммаНачисленияДополнительные = NULL;
    СальдоКонецН = NULL;

    ЗапросНачисленияДополнительные = Новый Запрос;
    ЗапросНачисленияДополнительные.Текст =
    "ВЫБРАТЬ
    | СУММА(НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН) КАК СуммаНачисленияДополнительные
    |ИЗ
    | Документ.НачислениеЗПСотрудника.НачисленияДополнительные КАК НачислениеЗПСотрудникаНачисленияДополнительные
    |ГДЕ
    | НачислениеЗПСотрудникаНачисленияДополнительные.Ссылка.Ссылка = &СсылкаНаДокумент";

    ЗапросНачисленияДополнительные.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

    Если ВыборкаНачисленияДополнительные.Следующий() Тогда
    СуммаНачисленияДополнительные = ВыборкаНачисленияДополнительные.СуммаНачисленияДополнительные;
    КонецЕсли;

    // Расчет СальдоКонецН
    СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку

    // Вывод результата
    ОбластьПодвалНач.Параметры.СальдоКонецН = СальдоКонецН;
    ТабДок.Вывести(ОбластьПодвалНач);

    //шапка таблицы Уд

    ТабДок.Вывести(ОбластьШапкаТаблицыУд);

    //Строка таблицы Уд

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НачислениеЗПСотрудникаУдержания.Удержание.Наименование КАК ВидОперации,
    | НачислениеЗПСотрудникаУдержания.СуммаУ КАК СуммаУ,
    | НачислениеЗПСотрудникаУдержания.Отделение.Наименование КАК ОтделениеУ,
    | НачислениеЗПСотрудникаУдержания.Должность.Наименование КАК ДолжностьУ
    |ИЗ
    | Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
    |ГДЕ
    | НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | НачислениеЗПСотрудникаВыплатыУдержанияБелые.ВыпУд,
    | НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып,
    | NULL,
    | NULL
    |ИЗ
    | Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые";

    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

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

    ОбластьСтрокаТаблицыУд.Параметры.ОтделениеУ = ВыборкаДетальныеЗаписи.ОтделениеУ;
    ОбластьСтрокаТаблицыУд.Параметры.ДолжностьУ = ВыборкаДетальныеЗаписи.ДолжностьУ;
    ОбластьСтрокаТаблицыУд.Параметры.ВидОперации = ВыборкаДетальныеЗаписи.ВидОперации;
    ОбластьСтрокаТаблицыУд.Параметры.СуммаУдержания = ВыборкаДетальныеЗаписи.СуммаУ;
    //

    ТабДок.Вывести(ОбластьСтрокаТаблицыУд);

    КонецЦикла;

    //подвал уд

    // Запрос для суммы выплат
    ЗапросСуммаВыплат = Новый Запрос;
    ЗапросСуммаВыплат.Текст =
    "ВЫБРАТЬ
    | СУММА(НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып) КАК СуммаВып
    |ИЗ
    | Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые
    |ГДЕ
    | НачислениеЗПСотрудникаВыплатыУдержанияБелые.Ссылка.Ссылка = &СсылкаНаДокумент";

    ЗапросСуммаВыплат.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

    Если ВыборкаСуммаВыплат.Следующий() Тогда
    СуммаВыплат = ВыборкаСуммаВыплат.СуммаВып;
    КонецЕсли;

    // Запрос для суммы удержаний
    ЗапросСуммаУдержаний = Новый Запрос;
    ЗапросСуммаУдержаний.Текст =
    "ВЫБРАТЬ
    | СУММА(НачислениеЗПСотрудникаУдержания.СуммаУ) КАК СуммаУ
    |ИЗ
    | Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
    |ГДЕ
    | НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент";

    ЗапросСуммаУдержаний.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

    РезультатЗапросаСуммаУдержаний = ЗапросСуммаУдержаний.Выполнить();

    ВыборкаСуммаУдержаний = РезультатЗапросаСуммаУдержаний.Выбрать();

    Если ВыборкаСуммаУдержаний.Следующий() Тогда
    СуммаУдержаний = ВыборкаСуммаУдержаний.СуммаУ;
    КонецЕсли;

    // Подвал уд
    СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
    СальдоКонец = СальдоНачало + СальдоКонецН - СальдоКонецУ;

    ОбластьПодвалУд.Параметры.СальдоКонец = СальдоКонец;
    ОбластьПодвалУд.Параметры.СальдоКонецУ = СальдоКонецУ;
    ТабДок.Вывести(ОбластьПодвалУд);

    КонецПроцедуры
```
---
фигасе забавно

тогда перед строкой
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку

добавляете такое
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли

Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
---
Думал Поставь точку останова. Посмотри на тип и значение переменной перед выполнением этой операции. Пойми, как пременная приняла такое значение.
---
Такое нужно самому понять.
в качестве подсказки, используй в запросах ЕстьNULL
---
поставте вместо
СальдоКонецН = NULL;

вот это
СальдоКонецН = 0;

и больше не балуйтесь NULL
---
Пробовал, ничего не меняет
---
соответственно и в
СуммаНачисленияДополнительные = NULL;

тоже нужно 0 ставить а не нулл
---
Да, я так и сделал. Ничего не поменяло
---
тогда следующую строчку запроса
| СУММА(НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН) КАК СуммаНачисленияДополнительные

изменить на
| СУММА(isnull(НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН,0)) КАК СуммаНачисленияДополнительные
---
Аналогично, туже самую ошибку поменял. Хотя так же дописал ЕстьNull ко всем запросом с суммой
---
фигасе забавно

тогда перед строкой
СальдоКонецН = СуммаНачисленияЗП + СуммаНачисленияДополнительные; //Ругается на данную строчку

добавляете такое
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли

Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли
---
Если СуммаНачисленияЗП = NULL тогда
СуммаНачисленияЗП = 0
КонецЕсли

Если СуммаНачисленияДополнительные = NULL тогда
СуммаНачисленияДополнительные = 0
КонецЕсли

Появился прогресс теперь ругается на строчку

```1c
    // Подвал уд
    СальдоКонецУ = СуммаВыплат + СуммаУдержаний;
```

Добавил следующую строчку кода и всё заработало, спасибо большое:

```1c
    Если СуммаВыплат = NULL тогда
    СуммаВыплат = 0
    КонецЕсли;

    Если СуммаУдержаний = NULL тогда
    СуммаУдержаний = 0
    КонецЕсли;
```
---
ну тут аналогично.
Проверить что переменная СальдоКонецУ первоначально не инициализировано NULL (1с не умеет преобразовывать NULL к числу)
и перед этой строкой

// Подвал уд
СальдоКонецУ = СуммаВыплат + СуммаУдержаний;

поставить блоки
Если СуммаВыплат = NULL тогда
СуммаВыплат =0
конецесли

Если СуммаУдержаний = NULL тогда
СуммаУдержаний = 0
конецесли

Вместо стравнения типа "СуммаВыплат = NULL" можно использовать "ЗначениеЗаполнено(СуммаВыплат)=ложь", оно универсальнее