Имя: Пароль:
1C
1С v8
Перенос данных
0 Масянька
 
16.07.12
11:13
День добрый!
Почему при программном заполнении справочника выдает ошибку: "Значение не является значением объектного типа "Наименование"."
Наименование собирается из нескольких значений.
Что меня сбивает с толку - до возникновения ошибки уже обработаны около 20 записей. И тут выдает ошибку....
Почему?

Спасибо.
1 Amra
 
16.07.12
11:14
Телепаты в отпуске
2 Aleksey
 
16.07.12
11:14
пожалуйста
3 Масянька
 
16.07.12
11:15
(1) Все сразу?
4 echo77
 
16.07.12
11:16
код в студию и готовьте 300 рублей
5 Любопытная
 
16.07.12
11:16
Отладчик? В строку видимо не строка пытается записаться. Скорее всего ничего не собралось и переменная, значение которой пишется в Наименование имеет значение Неопределено
6 Klesk
 
16.07.12
11:16
спецсимволы? )
7 zippygrill
 
16.07.12
11:18
(0) послушай Любопытная, она правду говорит
8 Масянька
 
16.07.12
11:19
Процедура ЗаполнениеСправочникаКонтейнеры()

   Выборка = Открыта.Справочники.Контейнеры.Выбрать();
   
   Пока Выборка.Следующий() Цикл
       Если СтрДлина(СокрЛП(Выборка.Наименование)) > 0 Тогда
           // проверяем правильность номера контейнера
           Если ПроверкаНомераКонтейнера(Выборка.Наименование) = 0 Тогда
               // преобразуем номер контейнера
               ПозицияПробела        = Найти(СокрЛП(Выборка.Наименование), " ");
               ПерваяЧастьНомера    = СокрЛП(Сред(Выборка.Наименование, 1, ПозицияПробела));
               ВтораяЧастьНомера    = СокрЛП(Сред(Выборка.Наименование, ПозицияПробела));
               НомерКонтейнера    = ПерваяЧастьНомера + ВтораяЧастьНомера;
               // ищем контейнер в справочнике - по номеру
               Если Справочники.элКонтейнеры.НайтиПоКоду(НомерКонтейнера) = Справочники.элКонтейнеры.ПустаяСсылка() Тогда
                   BIC = Справочники.элКонтейнеровладельцы.НайтиПоКоду(ПерваяЧастьНомера);
                   
                   // установим соответствие типов контейнеров
                   СтарыйТип    = СокрЛП(Выборка.ТипКонтейнера.Наименование);
                   НовыйТип    = УстановкаСоответствияТиповКонтейнеров(СтарыйТип);
                   
                   НовыйЭлемент = Справочники.элКонтейнеры.СоздатьЭлемент();
                   НовыйЭлемент.Код    = НомерКонтейнера;
                   НовыйЭлемент.Наименование = СокрЛП(BIC.Код) + " " + СокрЛП(ВтораяЧастьНомера) +  " " + СокрЛП(НовыйТип.Наименование);
                   НовыйЭлемент.BIC    = BIC;
                   НовыйЭлемент.СерийныйНомер = ВтораяЧастьНомера;
                   НовыйЭлемент.ВидКонтейнера = НовыйТип;
                                       
                   Попытка
                       НовыйЭлемент.Записать();    
                       Сообщить("Добавлен в справочник контейнер номер - " + Выборка.Наименование + " .");
                   Исключение
                       Сообщить("Не удалось записать элемент справочника ""Контейнеры"" - " + Выборка.Наименование + ", с кодом - " + Выборка.Код);
                   КонецПопытки;
               Иначе
                   Сообщить("Не добавлен в справочник контейнер номер - " + Выборка.Наименование + " - контейнер с таким номером уже есть в справочнике.");
               КонецЕсли;
           Иначе
               Сообщить("Не добавлен в справочник контейнер номер - " + Выборка.Наименование + " - не правильный номер.");
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   
   Контейнеры = 1;
   
КонецПроцедуры
9 andrewks
 
16.07.12
11:20
видимо, проблема здесь:
НовыйТип    = УстановкаСоответствияТиповКонтейнеров(СтарыйТип);
10 Любопытная
 
16.07.12
11:20
И в каком месте на наименование-то ругается? Оно ж тут в каждой строке практически)
11 Klesk
 
16.07.12
11:21
отладчик
12 Масянька
 
16.07.12
11:22
НовыйЭлемент.Наименование
13 andrewks
 
16.07.12
11:22
(10) строк много, а кандидатом только одна может быть
14 andrewks
 
16.07.12
11:31
хотелось бы услышать комментарий автора про название ветки
15 Жан Пердежон
 
16.07.12
11:32
(12) в отладчике: Отладка - Остановка по ошибке...
и смотришь значения всех выражений в строке
16 hhhh
 
16.07.12
11:39
(12) похоже в переменной НовыйТип у вас бредовое значение.
17 Масянька
 
16.07.12
11:40
(14) Из одной БД переносятся данные в другую БД.
18 wade25
 
16.07.12
11:45
Смотри свойства полей "Наименование" в 2ух базах.
19 Масянька
 
16.07.12
11:50
А как выйти теперь из отладки? :(((((
20 andrewks
 
16.07.12
11:51
[debug mode off]
21 Сияющий Асинхраль
 
16.07.12
11:54
Я бы для начала проверил вот эту строчку:
СтарыйТип    = СокрЛП(Выборка.ТипКонтейнера.Наименование);
т.е. надо проверить на заполненность значение Выборка.ТипКонтейнера, потому что если он пуст, то и старый тип и новый не определен, а наименование от неопределенного ТипКонтейнера будет выдавать ошибку
22 Сияющий Асинхраль
 
16.07.12
11:57
+(21) Кстати в этом случае СокрЛП(НовыйТип.Наименование) как раз скорее всего будет выдавать ошибку...
23 Масянька
 
16.07.12
11:57
Спасибо всем.
Копаю.......
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn