Здравствуйте. Есть такой код
```1c
    ТекЛист.Cells(ВсегоСтрок,8).Formula = "="+Формат(Отчет.ПределСреднейЗП,"ЧДЦ=2; ЧРД=.; ЧГ=0")+"/D"+ВсегоСтрок;
```

Произошла исключительная ситуация (0x800a03ec)
{ВнешнийОтчет.ФактЗатраты.Форма.ФормаОтчета.Форма(698)}: ТекЛист.Cells(ВсегоСтрок,8).Formula = "="+Формат(Отчет.ПределСреднейЗП,"ЧДЦ=2; ЧРД=.; ЧГ=0")+"/D"+ВсегоСтрок;
{ВнешнийОтчет.ФактЗатраты.Форма.ФормаОтчета.Форма(38)}: ВЭксель(ТабДок,Отчет.ТЧ_Сумм.Количество());

по причине:
Произошла исключительная ситуация (0x800a03ec)

Что может быть?
---
планового назначения допустим у меня по 30.06.2021, а я ставлю по 29.06.2021
не знаю, вот так попробуйте:

```1c
    Запрос.УстановитьПараметр("период", Новый Граница(КонецДня(Период), ВидГраницы.Включая));
```
, либо давайте вашу обработку сюда - надо весь код посмотреть.
---
тогда можно или оставить этот код, или изменить текст запроса на этот:

```1c
    | ВЫБОР
    | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    | ТОГДА isNull(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение,0)
    | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.ДействуетДо < &период
    | ТОГДА 0
    | ИНАЧЕ isNull(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение,0)
    | КОНЕЦ КАК ТарифОклад
```
---
значит попадает null. При левом соединении это возможно.
Попробуйте так:

```1c
    Пока Результат.Следующий() Цикл
    Если ТипЗнч(Результат.ТарифОклад) <> Тип("Число") Тогда
    Сообщить("Ошибка получения данных по Сотруднику: "+Результат.Сотрудник+"; ТипДанных = "+ТипЗнч(Результат.ТарифОклад));
    Продолжить;
    КонецЕсли;
    Рез = Рез + Результат.ТарифОклад;

    КонецЦикла;
```
---
Код ошибки 0x800A03EC означает NAME_NOT_FOUND; Excel не может такую ячейку.
---
Что может быть?

перем Отчет.ПределСреднейЗП = 10;
перем ВсегоСтрок = 15;

"="+Формат(Отчет.ПределСреднейЗП,"ЧДЦ=2; ЧРД=.; ЧГ=0")+"/D"+ВсегоСтрок;

А что будет, если в эксель такую формулу отправить: =10.00/D15 ?
---
ошибка и что сделать ЧРД = ,;?
---
Вы пишите в Эксел формулу в которой используете Функцию 1С - Формат...
---
это у меня формулы в обработке 1с, которая формирует документ в экселе
---
ничего, вы же строку отправляете, и так хорошо зайдет. ЧГ=0 и всё.
---
а почему тогда ошибка
---
либо точка, как разделитель не нравится Экселю, либо в ячейке, на которую делится "ПределЗП" = 0;
---
Вообще меня заинтересовал вопрос: Зачем формат числа в формуле?
---
формат не в формуле, а посредством Формат получается форматированная строка числа.
---
мне бы лучше написать, саму формулу, если знаете, т.е. правильную формулу
---
форматирование дробной части числа через точку это только в 1С. Excel число понимает только через запятую
---
Excel число понимает только через запятую От системных настроек винды зависит.
---
он по умолчанию указан как? Вот у меня большие сомнения, что туда кто-то лазит и меняет на точку.
---
Он это что?
---
разделитель дробной и целой части
---
он по умолчанию указан как? Зависит от региона.
---
регион (формат) Русский указан? Запятая?
---
так правильно подумали в (5).
Форматная строка будет такой: "ЧДЦ=2; ЧРД=.; ЧГ=0"
---
Подскажите ещ плиз по другому вопросу, но в той же обработке

```1c
    Запрос.УстановитьПараметр("Сотрудник",Сотрудник);
    Запрос.УстановитьПараметр("период",Период);

    Рез = 0;
    Результат = Запрос.Выполнить().Выбрать();
    Сообщить("Результат запроса: " + Результат.ТарифОклад);

    Пока Результат.Следующий() Цикл
    Рез = Рез + Результат.ТарифОклад;

    КонецЦикла;
    Возврат Рез;
```

Результат выполняется, нормально, но на одном сотруднике, заканчивается с ошибкой "Преобразование значения к типу Число не может быть выполнено", хотя он проходит две суммы (оклад и премия) по этому сотруднику, но после выскакивает ошибка
---
Рез = Рез + Результат.ТарифОклад;
ошибка выскакивает здесь?
Тогда в ТарифОклад не число.
---
а почему?, по запросу через отладчик видно что число, и где его менять в базе что ли? Так у других то нормально
---
приведите полный текст ошибки и код запроса.
---
```1c
    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ПлановыеНачисленияСрезПоследних.Сотрудник КАК Сотрудник,
    | ПлановыеНачисленияСрезПоследних.Начисление КАК Начисление,
    | ВЫБОР
    | КОГДА ПлановыеНачисленияСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
    | ИЛИ ПлановыеНачисленияСрезПоследних.ДействуетДо > КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
    | И &Период <> ДАТАВРЕМЯ(1, 1, 1)
    | ТОГДА ПлановыеНачисленияСрезПоследних.Используется
    | ИНАЧЕ ЛОЖЬ
    | КОНЕЦ КАК Используется
    |ПОМЕСТИТЬ ВТПлановыеНачисленияСрезПоследних
    |ИЗ
    | РегистрСведений.ПлановыеНачисления.СрезПоследних(&Период, Сотрудник = &Сотрудник) КАК ПлановыеНачисленияСрезПоследних
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ПлановыеНачисленияСрезПоследних.Сотрудник КАК Сотрудник,
    | ПлановыеНачисленияСрезПоследних.Начисление КАК Начисление,
    | Начисления.РеквизитДопУпорядочивания КАК Порядок,
    | ЕСТЬNULL(НачисленияПоказатели.Показатель, ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)) КАК ОсновнойПоказатель
    |ПОМЕСТИТЬ ВТПлановыеНачисленияСотрудниковСПоказателем
    |ИЗ
    | ВТПлановыеНачисленияСрезПоследних КАК ПлановыеНачисленияСрезПоследних
    | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК Начисления
    | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
    | ПО Начисления.Ссылка = НачисленияПоказатели.Ссылка
    | И (НачисленияПоказатели.ОсновнойПоказатель)
    | ПО ПлановыеНачисленияСрезПоследних.Начисление = Начисления.Ссылка
    |ГДЕ
    | ПлановыеНачисленияСрезПоследних.Используется
    |
    |ИНДЕКСИРОВАТЬ ПО
    | Сотрудник,
    | Порядок,
    | Начисление
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ПлановыеНачисленияСотрудников.Сотрудник КАК Сотрудник,
    | ПлановыеНачисленияСотрудников.Порядок КАК Порядок
    |ПОМЕСТИТЬ ВТПорядокОсновныхНачислений
    |ИЗ
    | ВТПлановыеНачисленияСотрудниковСПоказателем КАК ПлановыеНачисленияСотрудников
    |
    |ИНДЕКСИРОВАТЬ ПО
    | Сотрудник,
    | Порядок
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВТПлановыеНачисленияСотрудниковСПоказателем.Сотрудник КАК Сотрудник,
    | ВТПлановыеНачисленияСотрудниковСПоказателем.Начисление КАК Начисление,
    | ВТПлановыеНачисленияСотрудниковСПоказателем.ОсновнойПоказатель КАК ОсновнойПоказатель,
    | ВЫБОР
    | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    | ТОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение
    | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.ДействуетДо < &период
    | ТОГДА ЛОЖЬ
    | ИНАЧЕ ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение
    | КОНЕЦ КАК ТарифОклад
    |ИЗ
    | ВТПорядокОсновныхНачислений КАК ВТПорядокОсновныхНачислений
    | ЛЕВОЕ СОЕДИНЕНИЕ ВТПлановыеНачисленияСотрудниковСПоказателем КАК ВТПлановыеНачисленияСотрудниковСПоказателем
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(&Период, ) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних
    | ПО ВТПлановыеНачисленияСотрудниковСПоказателем.Сотрудник = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Сотрудник
    | И ВТПлановыеНачисленияСотрудниковСПоказателем.ОсновнойПоказатель = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Показатель
    | ПО ВТПорядокОсновныхНачислений.Сотрудник = ВТПлановыеНачисленияСотрудниковСПоказателем.Сотрудник
    | И ВТПорядокОсновныхНачислений.Порядок = ВТПлановыеНачисленияСотрудниковСПоказателем.Порядок";

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

    Рез = 0;
    Результат = Запрос.Выполнить().Выбрать();
    Сообщить("Результат запроса: " + Результат.ТарифОклад);

    Пока Результат.Следующий() Цикл
    Рез = Рез + Результат.ТарифОклад;

    КонецЦикла;
    Возврат Рез;
```
---
ВЫБОР
                   | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                   | ТОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.Значение
                   | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.ДействуетДо < &период
                   | ТОГДА ЛОЖЬ
                   | ИНАЧЕ ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.Значение
                   | КОНЕЦ КАК ТарифОклад
Пояснения нужны?
---
ВЫБОР
                   | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                   | ТОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.Значение
                   | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.ДействуетДо < &период
                   | ТОГДА ЛОЖЬ
                   | ИНАЧЕ ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.Значение
                   | КОНЕЦ КАК ТарифОклад
Вы там булево с цифрами попутали :)
---
и как быть?
---
вместо Ложь указать 0
---
NULL или прямо 0
---
в данном поле числовые значения ожидаются. Значит 0
---
NULL или прямо 0
это вообще два разных сущности :)
---
)))) понял, спасибо!
---
не помогло, если дату планового назначения меняю на меньшее вместо 30.хх.ххх, ставлю 29.хх.ххх, тогда нормально! ошибки нет
---
значит попадает null. При левом соединении это возможно.
Попробуйте так:

```1c
    Пока Результат.Следующий() Цикл
    Если ТипЗнч(Результат.ТарифОклад) <> Тип("Число") Тогда
    Сообщить("Ошибка получения данных по Сотруднику: "+Результат.Сотрудник+"; ТипДанных = "+ТипЗнч(Результат.ТарифОклад));
    Продолжить;
    КонецЕсли;
    Рез = Рез + Результат.ТарифОклад;

    КонецЦикла;
```
---
Тип данных NULL, помогло спасибо!
---
тогда можно или оставить этот код, или изменить текст запроса на этот:

```1c
    | ВЫБОР
    | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    | ТОГДА isNull(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение,0)
    | КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.ДействуетДо < &период
    | ТОГДА 0
    | ИНАЧЕ isNull(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение,0)
    | КОНЕЦ КАК ТарифОклад
```
---
как костыль - Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТОГДА ЛОЖЬ", 0)
---
не помогло, тоже самое
---
вы вообще в код не умеете, что ли?
Да, я ошибся с цитатой, нужно вместо "Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТОГДА ЛОЖЬ", 0)", вот это: Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТОГДА ЛОЖЬ", "Тогда 0"). Посыпаю голову пеплом...
Извините, но у вас там и обработки опубликованы и рейтинг есть.
---
не помогло, я так и сделал, даже делал просто прям в запросе тогда 0
---
так, я уже потерялся в сообщениях.
Можно чётко еще раз проблему озвучить и попытки её решения?
---
у меня есть запрос, он пробегает по тарифам сотрудников, по большинству все работает, а вот по одному сотруднику, у него добавлена еще одна фиксированная доплата, после обхода первых двух (оклад, премия) возникает ошибка про число.
Если я в регистреСведений плановые назначения удаляю эту выплату, то этот сотрудник проходит тоже (и все работает), также могу изменить дату действия этого планового назначения допустим у меня по 30.06.2021, а я ставлю по 29.06.2021, так тоже все работает, а если ничего не менять, то не получается. То что предлагали с 0, пробовал не получается.
---
планового назначения допустим у меня по 30.06.2021, а я ставлю по 29.06.2021
не знаю, вот так попробуйте:

```1c
    Запрос.УстановитьПараметр("период", Новый Граница(КонецДня(Период), ВидГраницы.Включая));
```
, либо давайте вашу обработку сюда - надо весь код посмотреть.
---
у этого сотрудника, есть еще третья фиксированная выплата, я ее удалил и все заработало (но это в тестовой базе), а почему запрос не включает ее в обход? Ее тоже нужно учитывать, но почему запрос не учитывает ее?
---
но почему запрос не учитывает ее
потому что:
```1c
    ТОГДА ЛОЖЬ
```
---
еще,
Вот этот код:
Сообщить("Результат запроса: " + Результат.ТарифОклад);
бессмысленный. Данные еще не получены обходом выборки.
---
ага
---
Может стиль ссылок другой?