8.х 1С и Excel

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

  1. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Необходимо написать обработку выгружающую номенклатуру в файл Excel, но проблема в том, чтоб мой выходной файл Excel был идентичен файлу образцу(в нем есть логотип фирмы, группировки строк, отборы, формат ячеек и т.д.). Возможно ли перенести хотя бы часть файла образца в мой файл, используя файл образец в качестве макета, если да, то как это можно реализовать.
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Теоретически схема работы такова: создаем файл с расширением (.xls). Записываем в него заранее сохраненный макет (хранить будем в хранилище значения, либо где нибудь на диске/внутрикорпоративном сервере - зависит от ваших обстоятельств). Далее открываем данный файл через СОМ объект и начинаем его нашпиговывать нашими данными. Смотрим, что из этого получилось. К сожалению сейчас мне дико лень искать толковое руководство по работе из 1С с Excel`ем поэтому за данной информацией отправляю Вас к Яндексу, либо к поиску по данному форуму.

    Вот например:
    http://www.1c-pro.ru/index.php?showtopic=11851&hl=
  3. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
  4. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    А про "создаем файл с расширением (.xls). Записываем в него заранее сохраненный макет (хранить будем в хранилище значения, либо где нибудь на диске/внутрикорпоративном сервере - зависит от ваших обстоятельств)" можно по подробней рассказать
  5. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Вот здесь есть примеры выгрузки, загрузки из ХранилищаЗначения.

    http://www.1c-pro.ru/index.php?showtopic=11902&hl=

    Либо просто копируйте свой макет откуда нибудь.

  6. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Спасиб, Подскажите плиз как сгруппировать строки в excel
    видел делают так Лист1.Range(ТвойДиапазон).Rows.Group(); , я пишу Лист.Range(2,4).Rows.Group() но у меня чет не выходит, пишет Ошибка метода контекста (Range)
  7. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Написал что типа такого
    BegCell = Лист.Cells(1,1);
    EndCell = Лист.Cells(4,1);
    Лист.Range(BegCell,EndCell).Rows.Group();

    Вроде работает... Осталось назначить имя группировке и свернуть подскажите плиз как это сделать и вверх ногами чет получилась т.е. когда она развернута минус внизу, а должен быть вверху
    Может кто знает как при чтении из Эксель узнать строка является группировкой или нет и как ее разгруппировать.
  8. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Подскажите плиз как выбрать номенклатуру иерархически плюс чтоб оно еще была и с ценой.
    выбираю так
    ВЫБРАТЬ
    | Номен.Наименование КАК Наименование,
    | ЦеныНоменклатуры.Цена
    |ИЗ
    | Справочник.Номенклатура КАК Номен
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    | ПО (ЦеныНоменклатуры.Номенклатура = Номен.Ссылка)
    |
    |УПОРЯДОЧИТЬ ПО
    | Номен.ЭтоГруппа ИЕРАРХИЯ,
    | Наименование
    а вот как оставит номенклатуру и группу(родителя) для которых установлена цена не знаю
  9. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    В экселе строки сгруппированы и развернуты, необходимо их свернуть, чтоб еще раз сгруппировать - подскажите плиз как свернуть группировку из 1с для строк экселя сделать
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    сразу скажу я не читал что там писали.. а чем тебя не устраивает просто сохранении копии документа как excell соответственно со всеми группировками и логотипами и цветами...и ...
  11. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Подскажите плиз алгоритм по которому можно было бы выводить справочник номенклатура в эксель в точно в таком же виде, т.е. чтоб было сохранение древовидной структуры... группы справочника - это группировка строк в экселе.
  12. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    открываешь справочник.. право кнопкой вывести сисок... щелкаешь в открывшемся окне... затем ФАЙЛ (в левом верхнем углу) там сохранить копию.... выбираешь внизу тип файла msexcel 97 и все)
  13. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Спасибо, дело в том, что номенклатура из запроса получается...
    Вот думаю может как-то деревозначений задействовать, как добавить строки приблизительно догадываюсь, а вот как найти нижний уровень, определить количество различных уровней и обходить дерево по уровням не знаю, может кто подскажет
  14. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    выводи по группировкам.... Выбрать(ОбходРезультатаЗапроса.ПоГРуппировкам).. количество груперовок = Уровням...
    как только пошел след группировку Уровень = Уровень + 1;
  15. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Может кто знает где прописан в 1С этот алгоритм - открываешь справочник.. право кнопкой вывести список...Выводить в Табличный документ... Получается Табличный документ с группировками как мне надо... Может кто встречал
  16. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Подскажите плиз, если в экселе строки группированы, можно ли загрузить их в 1с, и надо ли их разгруппировать перед загрузкой, если да, то как это сделать.
  17. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Разгрупировывать не надо.
    Значение будет лежать в одной из ячеек сгруппированных.
    Допустим у нас сгруппированны ячейки А1,А2,А3
    Так вот, значение будет лежать в одной из них, либо сразу во всех.
    Т.е.
    Можно так
    Код:
    Dim i As Integer
    Dim BufStr As String
    Dim NujnoeZnachenie As Double
    For i = 1 To 3
    BufStr = Range("A" & i).Value
    If BufStr <> "" Then
    NujnoeZnachenie = Range("A" & i).Value
    Exit For
    End If
    Next i
    
    Ну это на бэйсике VBA - в 1Совский код транслировать сможете сами
  18. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Может кто подскажет, как сделать копирование из 1с, части файла экселя и вставки его в другой файл эксель
  19. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Варианта два
    1 - тупо по ячейкам переносить значения
    2 -
    2.1 - выделяем в ExcelFile1 область.
    2.2 - Копируем ее в буфер обмена.
    2.3 - в книге 2 позиционируемся на нужную позицию
    2.4 - вставляем из буфера обмена
    Код:
    Range("A1:B3").Select
    Selection.Copy
    Windows("Книга2").Activate
    ActiveSheet.Paste
    
    
    Настоятельно рекомендую освоить технологию записи макросов. Много вопросов будете решать "мимо" форума ;)
  20. TopicStarter Overlay
    konst
    Offline

    konst Опытный в 1С

    Регистрация:
    17 мар 2009
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Вывожу в цикле строки в эксель, в каждой строке есть 4 колонки - ном-ра, цена, заявка и сумма. Проблема в том, что никак не могу в колонку самма записать формулу, которая было заявку умножала
    бы на цену, причем заявка заполняется не из 1с, а пользователем в экселе. Как вставить формулу знаю Лист.Cells(НомерСтроки,НомерКолонки).Formula, а вот алгоритм формулы никак придумать не могу
    Подскажите плиз как такое можно реализовать.

    Пишу так Лист.Cells(2,11).Formula = "=ЕСЛИ(ТипЦен="+Сч+";R"+(НомерСтроки)+"C"+(2+Сч+1)+"*R"+(НомерСтроки)+"C"+(Заявка)+";0)"; возникает ошибка почему-то, хотя если Лист.Cells(2,11).Value = "ЕСЛИ(ТипЦен="+Сч+";R"+(НомерСтроки)+"C"+(2+Сч+1)+"*R"+(НомерСтроки)+"C"+(Заявка)+";0)"; и в самом экселе поставить впреди = все в порядке... считает

    ТипЦен - имя ячейки, показывает какую из множества цен брать
    Сч - счетчик в цикле это хочу сделать

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