При попытке открыть документ Начисление зарплаты и взносов возникает ошибка Недопустимое значение параметра (параметр номер '2'). Исправляем за 5 минут

0. user1024932 61 30.05.20 11:15 Сейчас в теме
Столкнулся с такой ошибкой. Гугл сходу выводит на Инфостарт, где находится подсказка, что для исправления необходимо программно удалить пустую строку из документа, но подробного алгоритма, как это можно сделать, нет. Поэтому оставлю это здесь во имя добра и света.
P.S. "В любой непонятной ситуации - делай копию базы".

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. the1 584 31.05.20 12:51 Сейчас в теме
Все хорошо, но надо заменить на
СтруктураДляПоиска = Новый Структура("Сотрудник ", Справочники.Сотрудники.ПустаяСсылка())

Ибо в документе могут быть другие значимые строки с нулевым результатом
3. user1024932 61 31.05.20 19:42 Сейчас в теме
(1) Я честно говоря сначала запустил в режиме отладки и посмотрел что не заполнено. Результат выбрал потому что код короче.
2. PerlAmutor 106 31.05.20 15:50 Сейчас в теме
Подтверждаю, в ERP 2.4.10.94 та же самая ошибка. Есть аналогичная в производственном блоке при "раскрутке" этапов из ресурсных спецификаций.

В этом случае строку:

		Если ФизическиеЛицаСотрудников <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(СтрокаДанных, ФизическиеЛицаСотрудников[СтрокаДанных[ОписаниеТаблицы.ИмяРеквизитаСотрудник]]);
		КонецЕсли;


Можно заменить на:

		Если ФизическиеЛицаСотрудников <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(СтрокаДанных, Новый Структура("ФизическоеЛицо", ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ФизическиеЛицаСотрудников[СтрокаДанных[ОписаниеТаблицы.ИмяРеквизитаСотрудник]], "ФизическоеЛицо", Неопределено));
		КонецЕсли;

(жалко, что в БСП нет функции аналогичной для соответствий, типа ОбщегоНазначенияКлиентСервер.ЗначениеСоответствия(), где можно было бы указать значение по-умолчанию)

Ну или на:

		Если ФизическиеЛицаСотрудников <> Неопределено Тогда
			СтруктураФизЛица = ФизическиеЛицаСотрудников.Получить(СтрокаДанных[ОписаниеТаблицы.ИмяРеквизитаСотрудник]);

			Если ТипЗнч(СтруктураФизЛица ) = Тип("Структура") Тогда
				ЗаполнитьЗначенияСвойств(СтрокаДанных, СтруктураФизЛица);
			КонецЕсли;
		КонецЕсли;
Показать


Вторым параметром метода ЗаполнитьЗначенияСвойств не могут быть типы: Неопределено, Null, Число, Строка, Дата, Булево.

В качестве альтернативного кода для перезаполнения табличной части документа можно использовать ПостроительЗапроса, который возвращает только строки без пустых ссылок в реквизите Сотрудник:

    ДокОбъект = Док.ПолучитьОбъект();

    Построитель = Новый ПостроительЗапроса;

    ТабличнаяЧастьТЗ = ДокОбъект.Начисления.Выгрузить();

    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличнаяЧастьТЗ);

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

    Построитель.Выполнить();
    СтрокиБезПустыхСотрудников = Построитель.Результат.Выгрузить();
    ДокОбъект.Начисления.Загрузить(СтрокиБезПустыхСотрудников);
Показать
Оставьте свое сообщение
Вопросы с вознаграждением