8.х Функция ТипЗнч и COMОбъект (Excel)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Alehan, 12 сен 2007.

  1. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Значение переменной "Источник" имеет тип "СправочникСсылка.Теплоисточники". Как преобразовать его в тип "Строка". Причем оно должно в дальнейшем передаться в Excel.
    Если так:
    ТекЛист.Cells(1,1).Value = Источник;
    то выдает ошибку:
    "Ошибка при установке значения атрибута контекста (Value): Произошла исключительная ситуация (0x800a03ec)"
    Думаю надо как-то использовать функцию ТипЗнч, но не знаю как. Помогите пожалуйста.
  2. alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    656
    Симпатии:
    1
    Баллы:
    29
    Ссылку ты никак не передашь в строку. Тебе нужно вытаскивать реквизиты этой ссылки справочника. Скорее всего тебе нужно наименование.

    Если ты в цикле перебираешь значения справочника тогда будет так

    ВыборкаСпр = Справочники.Теплоисточники.Выбрать()
    Инд1 = 0;
    Инд2 = 0;
    Пока ВыбокаСпр.Следующий() Цикл
    Объект = ВыборкаСпр.ПолучитьОбъект()
    Инд1 = Инд1 + 1;
    Инд2 = Инд2 + 1;
    ТекЛист.Cells(Инд1, Инд2).Value = Объект.Наименование;
    КонецЦикла;

    Если это элемент формы тогда так
    ТекЛист.Cells(1, 1).Value = ЭлементыФормы.Источник.Наименование;
  3. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Это элемент формы. пробовал так:
    ТекЛист.Cells(1, 1).Value = ЭлементыФормы.Источник.Наименование;
    Выдает ошибку:
    Поле объекта не обнаружено (Наименование)
  4. alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    656
    Симпатии:
    1
    Баллы:
    29
    А этот реквизит в табличной части находится или в шапке документа? Попробуй после Источник поставить ".Значение.Наименование"
  5. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Я разобрался. У меня данные которые передаются в Excel выбираются из ТЗ. Надо было при занесении данных из Шапки в ТЗ писать не
    Стр.Источник = Источник;
    а
    Стр.Источник = Строка(ЭлементыФормы.Источник.Значение);

    Теперь еще такой вопрос:
    Что надо написать в месте где ???, чтобы после внесения данных происходило автоматическое сохранение файла Excel?
    Эксель = Новый COMОбъект("Excel.Application");
    templ=Путь+"\Данные.xls";
    Книга=Эксель.Workbooks.Open(templ);
    ТекЛист=Книга.WorkSheets(1);
    ... (занесение данных)
    ???
    Эксель.Quit();
  6. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    А теперь данные из Excel в 1С.
    Значение в ячейке имеет тип "Строка".
    Как преобразовать его в тип "СправочникСсылка.Теплоисточники".
  7. PaNo
    Offline

    PaNo

    Регистрация:
    11 сен 2007
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Методом НайтиПоНаименованию(<Наименование>, <Точное соответствие>, <Родитель>, <Владелец>) найти в справочнике строку из экселя.

    По поводу сохранения: Эксель.ActiveWorkbook.SaveAS(templ)
    Незабыть закрыть листы: Эксель.WorkBooks.close(); перед Quit

    Чтобы показать лист- Эксель.Visible=1;
  8. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    По поводу сохранения: Эксель.ActiveWorkbook.SaveAS(templ)
    А как сделать чтобы не выводилось сообщение о подтверждении сохранения?
  9. AlexeyTiRe
    Offline

    AlexeyTiRe

    Регистрация:
    27 фев 2007
    Сообщения:
    44
    Симпатии:
    0
    Баллы:
    1
    Имеестя в виду сообщение - вопрос о замене существующего файла? Если да, то можно просто удалить файл перед записью.
  10. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    А как я его удалю если я с ним работаю, т.е.
    Эксель = Новый COMОбъект("Excel.Application");
    templ=Путь+"\Данныеxls";
    Книга=Эксель.Workbooks.Open(templ);
  11. PaNo
    Offline

    PaNo

    Регистрация:
    11 сен 2007
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    SaveAs() - СохранитьКак, Save() - соответственно, сохранить. Вероятно тебе нужен обычный сейв.
  12. TopicStarter Overlay
    Alehan
    Offline

    Alehan

    Регистрация:
    6 сен 2007
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Во вот так и надо, спасибо. Теперь буду знать.