8.х ОБМЕН Импорт справочников и документов из Excel

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Tasya, 23 сен 2013.

  1. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Добрый день!
    Платформа 8.2 клиент-серверный вариант.
    Использую стандартную загрузку ЗагрузкаДанныхИзТабличногоДокумента82.epf. Выдает ошибку

    Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {Справочник.itilprofТипыАктивов.МодульОбъекта(9)}: Ошибка при вызове метода контекста (ПередЗаписьюВидаОбъекта): Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ПередЗаписьюВидаОбъекта (). Объект не загружен.

    Такая же ситуация происходит при использовании Универсального обмена данными в формате XML (2.1.5).
    При использовании файлового варианта - обработки работают.
    Подскажите, пожалуйста, как быть?
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    это означает, что у вас ошибка в обработчике ПередЗаписью справочника - попытка передать или объект справочника или таблицу значения в серверный модуль.
    Решается либо установкой галки "Клиент" в свойствах модуля, либо переписыванием кривого кода.

    а вообще, такие вещи выявляются еще на этапе тестирования конфигурации на клиент-серверной базе - многие грешат отсутствием такого тестирования, после чего выплывают вот такие косяки
  3. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    В 1С я новичок, поэтому переписыванием кода пока рано заниматься. Хочу попробовать установить галку Клиент.
    В справочнике itilprofТипыАктивов открыла модуль объекта - там единственная процедура ПередЗаписью, вот только как вызвать свойства этого модуля.
    С общими модулями все понятнее (правой клавищей - свойства - галка)
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    может вам сначала книжечку про азы работы с клиент-серверным вариантом посмотреть?
  5. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    галку надо ставить у модуля, в котором находится процедура ПередЗаписьюТипаОбъекта()

    это что за конфигурация такая добрая? не итилиум случайно?
  6. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Да, это 1C:ITIL
  7. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Нашла модуль, в котором находится процедура ПередЗаписьюВидаОбъекта (), проставила галку Клиент, попробовала обработку - выдало другие ошибки
    {Справочник.itilprofТипыАктивов.МодульОбъекта(9,2)}: Переменная не определена (УправлениеСвойствами)
    <<?>>УправлениеСвойствами.ПередЗаписьюВидаОбъекта(ЭтотОбъект, "Справочник__itilprofКонфигурационныеЕдиницы");


    Что-то не так..(((
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    тогда берете телефон производителя, звоните в их ТП и объясняете им, что они редиски, после чего они выпускают обновление (у вас, кстати, последняя версия?) и у вас наступает счастье
  9. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Версия последняя. Они редиски еще те. Здесть имеется уже сконфигурированный ODBC импорт всех справочников и документов с настройкой запуска по расписанию. Вот только в клиент-серверном варианте он не работает, а работает только в файловом.
    На что ТП ответила: Доработка импорта ODBC для клиент-серверного варианта не увенчалась успехом, в связи с особенностями работы серверной ОС. Может быть это в принципе нереализуемо либо труднореализуемо. Так или иначе в ближайшей перспективе это дорабатывать не планируется. В вашем случае выгружать в файловую а потом уже ее переносить на сервер.

    Вот я и пытаюсь найти обработки загрузки из excel. Может вы посоветуете какие-нибудь?
  10. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    извращенцы они :)

    есть типовая обработка загрузки справочников и документов их excel, на ИТС живет, немного поразбираться - и сможете импортировать почти все

    только боюсь это тоже не поможет, поскольку, как я понимаю, они вообще не рассчитывали на клиент-серверную базу, учитывая на чем валятся ошибки

    блин, стормозил, вы же этим и пытаетесь :)

    вариант есть, но он злой - писать обработку, которая будет делать загрузку на сервере приложений (не в интерфейсе)
  11. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Боюсь, что придется прибегнуть к злому варианту и шаг за шагом писать обработку.
    Может есть какие-то ресурсы, где можно почерпнуть более глубокие знания по программированию на 1С 8.2 касательно данной обработки?
    Вопрос стоит срочный, и перелапачивать кучу всего времени особо нет.

    Буду весьма благодарна))
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    начните с книги Радченко, в течении 1-2 дней азы освоить можно, всю ее вам не нужно для этой обработки читать, сами выберите главы для прочтения и посмотрите код. Думаю быстро разберетесь - было бы желание
  13. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Хорошо, спасибо! Я уже заканчиваю ее читать, думала, что есть что-то еще. Буду разбираться.
  14. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    для написания обработки для закачки инфы думаю вам должно хватить, а так ресурсов много, тут на форуме есть соответствующая ветка
  15. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Попыталась создать свою обработку. Начала с малого: выгрузить из excel пару элементов в справочник.
    Обработку запускаю в управляемом приложении. При загрузке отрабатывает исключение Сообщить("Код:" + Структура.Код); в процедуре СозданиеСправочниковКЕ().
    В этой процедуре после каждой строки ставила Сообщить ("1"), сообщение показывало везде, кроме процедуры СправочникКЕ.Записать();

    Подскажите, пожалуйста, что я не так сделала?

    Код:
    &НаКлиенте
    Процедура ЗагрузитьРабочиеМеста(Команда)
    Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(Путь);
    ExcelЛист = Excel.Sheets(1);
    Исключение
    
    КонецПопытки;
    
    Структура = Новый Структура;
    Для ТекущаяСтрока = 2 По 6 Цикл
    
    Код = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 1).Value);
    КЕ = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 3).Value);
    
    Структура.Очистить();
    Структура.Вставить("Код", Код);
    Структура.Вставить("КЕ", КЕ);
    
    СозданиеСправочниковКЕ(Структура);
    КонецЦикла;
    
    КонецПроцедуры
    
    
    &НаСервере
    Процедура СозданиеСправочниковКЕ(Структура);
    
    попытка
    СправочникКЕ = Справочники.itilprofКонфигурационныеЕдиницы.СоздатьЭлемент();
    СправочникКЕ.Код    = Структура.Код;
    СправочникКЕ.Наименование  = Структура.КЕ;
    СправочникКЕ.Владелец    = Справочники.itilprofТипыАктивов.НайтиПоНаименованию("Лицензия");
    СправочникКЕ.ЕдиницаИзмерения  = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
    
    СправочникКЕ.Записать();
    
    исключение
    Сообщить("Код:" + Структура.Код);
    КонецПопытки;
    
    КонецПроцедуры
    
  16. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    во первых на сервере нету Сообщить()

    а ошибку искать отладчиком... точку остановки на сообщить() ... и при попадании вычислить ОписаниеОшибки()
  17. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Сообщить() нет не только на сервере :)

    используйте объект СообщениеПользователю - он отработает и на сервере и на клиенте

    Код:
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Шеф, у нас проблемы!";
    Сообщение.Сообщить();
  18. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Отлично, спасибо!
    Ошибка была "Значение поля Код не уникально". Все исправила, все работает.
    А что значит на сервере нету Сообщить()?
    Процедура Сообщить("Код:" + Структура.Код) у меня отрабатывала и при ошибке выдавала все коды.
  19. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    она на сервере в неуправляемых формах работает
  20. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Добрый день!
    Добралась до импорта документов.
    Все поля импортируются, написать код не составило труда.
    Есть проблема с импортом дополнительных реквизитов, которые пользователь создает сам в управляемом приложении.
    Они созданы на основании Плана вида характеристик.

    Как к ним обратиться программно?
Похожие темы
  1. kes
    Ответов:
    4
    Просмотров:
    4.391
  2. Benjamin
    Ответов:
    2
    Просмотров:
    4.023
  3. chehonte
    Ответов:
    2
    Просмотров:
    501
  4. skurser
    Ответов:
    1
    Просмотров:
    646
  5. Протасова_КА
    Ответов:
    7
    Просмотров:
    6.108
Загрузка...

Поделиться этой страницей