|   |   | 
| 
 | 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) пользователь сам указывает вид товара для загружаемой номенклатуры.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |