|
v8: Загрузка из Ексель. Откуда-то берется пустая ссылка. | ☑ | ||
---|---|---|---|---|
0
Solitar
15.04.12
✎
21:49
|
Написал загрузчик номенклатуры из Екселя в 1С. Загружается Номенклатура поставщика и Номенклатура. Все грузит нормально. Но в 1 случае из 5000 (примерно, может и из 10000) после загрузки появляется пустая ссылка в номенклатуре. (делаю ТИИ, т.к. УТ начинает сильно тормозить). Но, в номенклатуре поставщика данная позиция есть, а ссылка на номенклатуру пустая.
Заново гружу ту строку, которая не загрузилась, и она появляется в номенклатуре. Грешу на одновременную загрузку с нескольких компов. Мб еще есть варианты? |
|||
1
andrewks
15.04.12
✎
21:54
|
отсюда невидно, что и где там у тебя
"Грешу на одновременную загрузку с нескольких компов. " чушь |
|||
2
SnarkHunter
15.04.12
✎
21:54
|
Вариант: кривые руки...
|
|||
3
Лефмихалыч
15.04.12
✎
21:54
|
что значит "появляется пустая ссылка в номенклатуре" и откуда вдруг " одновременную загрузку с нескольких компов"?
чего-то ты недоговариваешь |
|||
4
andrewks
15.04.12
✎
22:00
|
да, и для чего ТиИ при пустой ссылке?
|
|||
5
Solitar
15.04.12
✎
22:12
|
Товар = Справочники.Номенклатура.СоздатьЭлемент();
Товар.Наименование = СокрЛП(Наименование); Товар.Артикул = Артикул; Товар.Родитель = ГруппаНоменклатуры; Товар.ГодИздания = СокрЛП(ГодИздания); Товар.ЕдиницаИзмерения = Объект.ЕдиницаИзмерения; Товар.ВидНоменклатуры = Объект.ВидНоменклатуры; //остальные реквизиты заполняю Попытка Товар.Записать() Исключение Сообщить ("В строке № "+ НомПервойСтроки +" введены неккоректные данные!" + Символы.ПС +"Проверьте данные в этой строке!"); КонецПопытки; ТоварПоставщика = Справочники.НоменклатураПоставщиков.СоздатьЭлемент(); ТоварПоставщика.Наименование = Товар.Наименование; ТоварПоставщика.Владелец = Объект.Контрагент; ТоварПоставщика.Артикул = Артикул; ТоварПоставщика.Номенклатура = Товар.Ссылка; ТоварПоставщика.Родитель = Объект.ГруппаНоменклатурыПоставщика; ТоварПоставщика.Упаковка = Товар.ЕдиницаИзмерения; ТоварПоставщика.Записать(); (3) (4) После загрузки номенклатуры в УТ 11 начали криво отображаться папки с номенклатурой или же программа начинает жостко тормозить при обращении к номенклатуре. Проверка логической целостности. Справочники. Номенклатура.Таблица Reference79 содержит записи с пустым идентификатором в количестве - 3. Записи удалены. Проверка логической целостности. Справочник.НоменклатураПоставщиков.Реквизит.Номенклатура Тематическое и поурочное планирование по основам безопасности жизнедеятельности. Объект, на который ссылается значение, отсутствует. Создан новый объект. Справочник.Номенклатура и 2 такие же записи. |
|||
6
Solitar
15.04.12
✎
22:13
|
загружать номенклатуру могут с нескольких компов, но с разных ексель файлов.
|
|||
7
Terve-R-
15.04.12
✎
23:03
|
(5) жесть
|
|||
8
Terve-R-
15.04.12
✎
23:05
|
стесняюсь спросить, а сколько уже в базе насоздавалось дубликатов?
|
|||
9
Лефмихалыч
15.04.12
✎
23:16
|
ставлю дайм - количество номенклатурПоставщиков без ссылки на номенклатуру равно количеству сообщений "В строке введены неккоректные данные"
|
|||
10
Solitar
16.04.12
✎
07:54
|
(9) да. ты знаешь в чем проблема?)
(8) дубликатов нет. есть проверка на существование. ВЫБРАТЬ ПЕРВЫЕ 1 Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Наименование = &Наименование И Номенклатура.Артикул = &Артикул Если РезультатЗапроса.ПУстой () то создаются позиции. |
|||
11
Любопытная
16.04.12
✎
08:12
|
(5) Так ты ТоварПоставщика записываешь с пустой ссылкой в случае ошибки. Посмотри внимательно на свой код
|
|||
12
Solitar
16.04.12
✎
08:18
|
(11) да, на это внимание не обратил. Но сообщение об ошибке не выходит.
|
|||
13
Любопытная
16.04.12
✎
08:19
|
(12) Программно создаешь, пофиг ему, записывает и все.
|
|||
14
Solitar
16.04.12
✎
08:20
|
(13) я это понял, тогда бы каждый раз, когда появляется пустая ссылка в базе, он должен был выдавать ошибку. но ниразу еще её не выдал.
|
|||
15
Любопытная
16.04.12
✎
08:22
|
(14) Так и что теперь непонятно?
|
|||
16
Solitar
16.04.12
✎
08:25
|
почему тогда не выводилось сообщение ?
Попытка Товар.Записать() Исключение Сообщить ("В строке № "+ НомПервойСтроки +" введены неккоректные данные!" + Символы.ПС +"Проверьте данные в этой строке!"); КонецПопытки; |
|||
17
andrewks
16.04.12
✎
08:26
|
(16) а с чего бы ему не записаться-то?
|
|||
18
Любопытная
16.04.12
✎
08:28
|
(16) Как это не выводилось? Ты в (9) сказал, что количество пустых ссылок равно количеству этих самых сообщений
|
|||
19
Solitar
16.04.12
✎
08:30
|
ТИИ показывает эти пустые ссылки.
|
|||
20
Любопытная
16.04.12
✎
08:32
|
(19) Денис! У тебя есть проверка на номенклатуре, но нет проверки на номенклатуре поставщика! Включай мозг уже)
|
|||
21
Solitar
16.04.12
✎
08:41
|
(20) )))
в реквизите "Номенклатура" у элемента справочника НоменклатураПоставщика делать проверку на пустую ссылку? и все равно я не совсем понял откуда берется при ТИИ Проверка логической целостности. Справочники. Номенклатура.Таблица Reference79 содержит записи с пустым идентификатором в количестве - 3. Записи удалены. Проверка логической целостности. Справочник.НоменклатураПоставщиков.Реквизит.Номенклатура Тематическое и поурочное планирование по основам безопасности жизнедеятельности. Объект, на который ссылается значение, отсутствует. Создан новый объект. Справочник.Номенклатура Ведь я не записываю новый элемент, а следовательно он никак не может попасть в справочник номенклатура. И почему при ТИИ пишет название номенклатуры на которую ссылается? Оно все таки где то есть? |
|||
22
Solitar
16.04.12
✎
08:41
|
мб Товар.Ссылка что то кривое... надо проверить.
|
|||
23
Любопытная
16.04.12
✎
08:49
|
(22) Ты меня не понимаешь совсем что ли?
Смотри: ты пытаешься записать товар, но он не записывается. Ты выдаешь ошибку и идешь дальше на основании незаписанного(!!!) объекта создавать объект в другой справочник. У тебя есть все поля исходного объекта, ими ты заполняешь ТоварыПоставщика, но ссылки но т.к. Товары не записан, ты получаешь в ТоварПоставщика.Номенклатура пустую ссылку. Вот и все, что непонятно? |
|||
24
Любопытная
16.04.12
✎
08:51
|
Сделай первой в своем ексель-файле косячную строку и прогони обработку отладчиком. Сразу поймешь что к чему
|
|||
25
alxxsssar
16.04.12
✎
08:51
|
Так у тебя номенклатура записывается через попытку, а НоменклатураПоставщика - нет, даже если не запишется номенклатура, то номенклатураПоставщика создается и записывается. Перенеси Исключение и КонецПопытки ниже, в самый конец фрагмента в (5)
|
|||
26
Solitar
17.04.12
✎
23:56
|
огромное спасибо за советы!
решил перестраховаться и в исключения перетащил Товар.Записать() и полностью создание и запись Номенклатуры Поставщика. Вроде пока что все грузит без проблем. |
|||
27
hhhh
18.04.12
✎
00:04
|
(26) вот это очень подозрительная строчка
Товар.ЕдиницаИзмерения = Объект.ЕдиницаИзмерения; почему эти единицы равны? |
|||
28
Solitar
18.04.12
✎
00:16
|
(27) пользователь сам указывает вид товара для загружаемой номенклатуры.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |