Задано неправильное имя атрибута структуры при проведении документа.
Здравствуйте, коллеги.
Имеется документ, который считывает данные файла с расширением
После считывания, данные были успешно добавлены в табличную часть, но при проведении документа вылезает ошибка.
Имеется предположение причина тому , что сотрудника нет в системе.
Ваше мнение?
Спасибо заранее.
Имеется документ, который считывает данные файла с расширением
.html
После считывания, данные были успешно добавлены в табличную часть, но при проведении документа вылезает ошибка.
{Документ.ПриходУход2.МодульОбъекта(30)}: Ошибка при вызове метода контекста (Свойство)
Если ПредДанные.Свойство(Назв) Тогда
по причине:
Задано неправильное имя атрибута структуры
Задано неправильное имя атрибута структуры
Имеется предположение причина тому , что сотрудника нет в системе.
Ваше мнение?
Спасибо заранее.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Процедура ОбработкаПроведения(Отказ, Режим)
ПервЧисНастМесяца = НачалоМесяца(Дата);
ПослЧисНастМесяца = КонецМесяца(Дата);
ПредМесяц = ДобавитьМесяц(Дата,-1);
СледМесяц = ДобавитьМесяц(Дата,1);
ПервЧисСледМесяца = НачалоМесяца(СледМесяц);
ПослЧисПРедМесяца = КонецМесяца(ПредМесяц);
Нов = СортировкаДанных();
ПредДанные = Новый Структура();
Колво=0;
ТабПосещений = Новый ТаблицаЗначений();
ТабПосещений.Колонки.Добавить("Сотрудник");
ТабПосещений.Колонки.Добавить("Часы");
ТабПосещений.Колонки.Добавить("Дата");
ТабПосещений.Колонки.Добавить("Отдел");
ТабПосещений.Колонки.Добавить("ДатаД");
Для Сч = 0 По Нов.Количество()-1 Цикл
Назв = УдалитьПробелы(Строка(Нов[сч].Сотрудник));
ФИО = Нов[сч].Сотрудник;
Если ФИО <> Справочники.Сотрудники.ПустаяСсылка() И Лев(СокрЛП(ФИО),18) <> "<Объект не найден>" Тогда
Отдел = ФИО.ПолучитьОбъект().Должность;
Если Отдел = Справочники.Должность.НайтиПоНаименованию("Отдел дизайна") ИЛИ Отдел = Неопределено ИЛИ Отдел = Справочники.Должность.ПустаяСсылка() ИЛИ Отдел = "" Тогда
Если Колво<>0 Тогда
Имя = Строка(Нов[сч-1].Сотрудник);
ДобавитьВРегистр(ПредДанные,Имя,Колво);
Колво = 0;
КонецЕсли;
Иначе
Если ПредДанные.Свойство(Назв) Тогда
СчПразд = 0;
Если Нов[сч].ТипДействия = Перечисления.ОперацияСТурникетом.Пришел И НачалоДня(Нов[сч].ВремяСессии) = ПервЧисСледМесяца Тогда
ИначеЕсли Нов[сч].ТипДействия = Перечисления.ОперацияСТурникетом.Пришел Тогда
ПредДанные[Назв].Время = Нов[сч].ВремяСессии;
ПредДанные[Назв].ТипДействия = Нов[сч].ТипДействия;
ПредДанные[Назв].Бейдж = Нов[сч].НомерБейджика;
ИначеЕсли Нов[сч].ТипДействия = Перечисления.ОперацияСТурникетом.Ушел И ПредДанные[Назв].ТипДействия=Перечисления.ОперацияСТурникетом.Пришел Тогда
МассивПр = НайтиВсеПраздники();
Если МассивПр <> Неопределено Тогда
Если Отдел <> Справочники.Должность.НайтиПоНаименованию("Плановый отдел") Тогда
Для сч2 = 0 По МассивПр.Количество()-1 Цикл
Если НачалоДня(Нов[сч].ВремяСессии) = МассивПр[сч2] Тогда
СчПразд = 1;
Прервать;
ИначеЕсли НачалоДня(ПредДанные[Назв].Время) = МассивПр[сч2] Тогда
Если НайтиТретьюСмену(ПредДанные[Назв].Время) = 1 Тогда
СчПразд = 0;
Иначе
СчПразд = 1;
Прервать;
КонецЕсли;
ИначеЕсли НачалоДня(ПредДанные[Назв].Время) = МассивПр[сч2]+60 * 60 * 24 Тогда
Если НайтиТретьюСмену(ПредДанные[Назв].Время) = 1 Тогда
СчПразд = 1;
Иначе
СчПразд = 0;
КонецЕсли;
Иначе
СчПразд = 0;
КонецЕсли;
КонецЦикла;
Иначе
КонецЕсли;
КонецЕсли;
Если СчПразд = 1 Тогда
ЧасКол = НайтиРазностьДат(ПредДанные[Назв].Время,Нов[сч],1);
Колво = Колво+ЧасКол;
НовСтр = ТабПосещений.Добавить();
НовСтр.Сотрудник = Справочники.Сотрудники.НайтиПоНаименованию(Строка(Нов[сч-1].Сотрудник));
Если НовСтр.Сотрудник <> Справочники.Сотрудники.ПустаяСсылка() Тогда
НовСтр.Отдел = НовСтр.Сотрудник.ПолучитьОбъект().Должность;
КонецЕсли;
Если ЧасКол < 0 Тогда
НовСтр.Часы = 0;
Иначе
НовСтр.Часы = ЧасКол;
КонецЕсли;
Если НайтиТретьюСмену(Нов[сч-1].ВремяСессии)= 1 Тогда
НовСтр.ДатаД = Нов[сч-1].ВремяСессии - 3600*24;
Иначе
НовСтр.ДатаД = Нов[сч-1].ВремяСессии;
КонецЕсли;
НовСтр.Дата = Формат(НовСтр.ДатаД,"ДЛФ=Д");
Иначе
Колво = Колво+НайтиРазностьДат(ПредДанные[Назв].Время,Нов[сч],0);
ЧасКол1 = НайтиРазностьДат(ПредДанные[Назв].Время,Нов[сч],0);
НовСтр = ТабПосещений.Добавить();
НовСтр.Сотрудник = Справочники.Сотрудники.НайтиПоНаименованию(Строка(Нов[сч-1].Сотрудник));
Если НовСтр.Сотрудник <> Справочники.Сотрудники.ПустаяСсылка() Тогда
НовСтр.Отдел = НовСтр.Сотрудник.ПолучитьОбъект().Должность;
КонецЕсли;
Если ЧасКол1 < 0 Тогда
НовСтр.Часы = 0;
Иначе
НовСтр.Часы = ЧасКол1;
КонецЕсли;
Если НайтиТретьюСмену(Нов[сч-1].ВремяСессии)= 1 Тогда
НовСтр.ДатаД = Нов[сч-1].ВремяСессии - 3600*24;
Иначе
НовСтр.ДатаД = Нов[сч-1].ВремяСессии;
КонецЕсли;
НовСтр.Дата = Формат(НовСтр.ДатаД,"ДЛФ=Д");
КонецЕсли;
ПредДанные[Назв].Время = Нов[сч].ВремяСессии;
ПредДанные[Назв].ТипДействия = Нов[сч].ТипДействия;
ПредДанные[Назв].Бейдж = Нов[сч].НомерБейджика;
КонецЕсли;
Иначе
Если Колво<>0 Тогда
Имя = Строка(Нов[сч-1].Сотрудник);
//ДобавитьВРегистр(ПредДанные,Имя,Колво);
ТабПосещений.Добавить();
Колво = 0;
СчПразд = 0;
КонецЕсли;
ПредДанные.Вставить(Назв,Новый Структура());
ПредДанные[Назв].Вставить("ТипДействия",Нов[сч].ТипДействия);
ПредДанные[Назв].Вставить("Время",Нов[сч].ВремяСессии);
ПредДанные[Назв].Вставить("Бейдж",Нов[сч].НомерБейджика);
СчПразд = 0;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТабПосещений.Сортировать("Сотрудник Возр,Дата Возр");
ТабПосещений.Свернуть("Сотрудник,Дата","Часы");
Хранилище = Новый ХранилищеЗначения(ТабПосещений, Новый СжатиеДанных(9));
Константы.ВременноеХранилище.Установить(Хранилище);
КонецПроцедуры
Показать
(4)
Проблема с переменной Назв, т.к. это ключ, то он должен задаваться по правилам
а он как видно выгружается, может пробел или цифра впереди
Назв = УдалитьПробелы(Строка(Нов[сч].Сотрудник));
Проблема с переменной Назв, т.к. это ключ, то он должен задаваться по правилам
Ключ устанавливаемого элемента. Ключ должен соответствовать правилам, установленным для идентификаторов:
Первым символом ключа должна быть буква или символ подчеркивания (_).
Каждый из последующих символов может быть буквой, цифрой или символом подчеркивания (_).
Первым символом ключа должна быть буква или символ подчеркивания (_).
Каждый из последующих символов может быть буквой, цифрой или символом подчеркивания (_).
а он как видно выгружается, может пробел или цифра впереди
(11)
Вот этот код
к ошибке не приводит
а этот
приводит
как и этот
Вот этот код
Назв = "КакоеТоСвойство";
ПредДанные = Новый Структура();
ПредДанные.Свойство(Назв)
к ошибке не приводит
а этот
Назв = "1234КакоеТоСвойство";
ПредДанные = Новый Структура();
ПредДанные.Свойство(Назв)
приводит
как и этот
Назв = "";
ПредДанные = Новый Структура();
ПредДанные.Свойство(Назв)
(3)Такая ошибка вылезла именно сегодня.
В предыдущих проводках, которые делаются раз в месяц не было такой ошибки.
Суть в чем: выгружается файл с базы проходной.
В 1с есть документ "Приходуход". Данные загружаются через выгруженный файл.
Потом я делаю проводку и на его основе я создаю табеля учета рабочего времени.
В предыдущих проводках, которые делаются раз в месяц не было такой ошибки.
Суть в чем: выгружается файл с базы проходной.
В 1с есть документ "Приходуход". Данные загружаются через выгруженный файл.
Потом я делаю проводку и на его основе я создаю табеля учета рабочего времени.
(5) А раньше могло работать если выполнялось только это
А сейчсас ушло в ИНАЧЕ
А там пустая структура без единого ключа ПредДанные
И ясно что выскакивает ошибка при попытке обратиться к несуществующим ключам структуры
Если Отдел = Справочники.Должность.НайтиПоНаименованию("Отдел дизайна") ИЛИ Отдел = Неопределено ИЛИ Отдел = Справочники.Должность.ПустаяСсылка() ИЛИ Отдел = "" Тогда
Если Колво<>0 Тогда
Имя = Строка(Нов[сч-1].Сотрудник);
ДобавитьВРегистр(ПредДанные,Имя,Колво);
Колво = 0;
КонецЕсли;
Иначе
А сейчсас ушло в ИНАЧЕ
А там пустая структура без единого ключа ПредДанные
И ясно что выскакивает ошибка при попытке обратиться к несуществующим ключам структуры
Вы сами писали этот код?
Что-то мне подсказывает что нет, раз вы не видите вот этого
Что-то мне подсказывает что нет, раз вы не видите вот этого
ПредДанные.Вставить(Назв,Новый Структура());
ПредДанные[Назв].Вставить("ТипДействия",Нов[сч].ТипДействия);
ПредДанные[Назв].Вставить("Время",Нов[сч].ВремяСессии);
ПредДанные[Назв].Вставить("Бейдж",Нов[сч].НомерБейджика);
(17) Вы поставить точку остановки и посмотрите какое значение передается в переменной Назв. Скорее всего у вас или не определено или наименование, например с тире или другим каким то не допустимым символов
Вот тут отладку сделаейте
{Документ.ПриходУход2.МодульОбъекта(30)}: Ошибка при вызове метода контекста (Свойство)
Если ПредДанные.Свойство(Назв) Тогда
по причине:
Задано неправильное имя атрибута структуры
Задано неправильное имя атрибута структуры
Вот тут отладку сделаейте
{Документ.ПриходУход2.МодульОбъекта(30)}: Ошибка при вызове метода контекста (Свойство)
Если ПредДанные.Свойство(Назв) Тогда
по причине:
Задано неправильное имя атрибута структуры
Задано неправильное имя атрибута структуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот