Вывод в xls из 1С используя шаблон excel (печать упаковочного листа для ОБИ)


Формирование Excel упаковочного листа с штрихкодом для ОБИ,
Натройки печати, макросы, формулы, оформление ячеек берутся из шаблона в формате Excel

Довольно много примеров формирования excel файлов из 1С. Самый простой способ сформировать mxl таблицу и сохранить как xls.

Но если надо выводить на несколько листов, с определенными именами, с формулами связывающими листы между собой, то приходится обращаться непосредственно к excel.

Сразу хочется воспользоваться привычными из 1С методами: вывести секцию на основании заранее оформленного шаблона.

(Самый быстрый вариант заполнения отформатированного excel файла это заполнение шаблона с помощью макроса которому передаются причесанные данные, но для этого надо знать VBA, пожалуста дайте ссылку на такой пример.)

Насколько я знаю в excel секций нет, но есть именованные области.

Вместо задания имен областей в шаблон файла я добавил отдельную закладку «ПараметрыШаблона» и оттуда беру номера начальной строки секции, и количество строк в ней.

параметры шаблона

команда excel ДиапозонИсточник.Copy(ДиапозонПриемник) переносит все оформление и формулы выбранных ячеек, осталось только подставить значения из 1с. чтобы различить постоянный текст и значения для подставновки я использую угловые скобки в которых пишу выражения 1С. Заполнение ячеек в коде 1С выглядит так:

ДобавитьСтрокуПоШаблону(текЛист,ЛистШаблона,СтрокаТаблицыШаблона,ТекСтрокаЛиста,ИсточникДанных)

формулы в шаблоне лучше писать в формате относительных ссылок RC: ReferenceStyle = 0 — тогда можно копировать формулу подсчета суммы в строке из шаблонной строки табличной части.

Когда мы открываем новую книгу на основании шаблона в нее переходят макросы из шаблона:

НоваяКнига = Приложение.Workbooks.Add(ПолноеИмяШаблона)

Если нам нужен только один лист -он уже есть в новой книге, осталось удалить строки шаблона —ширина колонок уже настроенна.

 

 

В прикрепленном архиве лежат:

шрифт Barcode.ttf

обарботка ПакЛист_ОБИ_xls.epf — для 8.2, обычные оформы, проверялась работа на УТ 10.3

Внешняя печатная форма ПакЛист_ОБИ_xls.ert — для 7.7 ТиС 9.2 (компл 4.X)

Шаблон ШаблонПакЛистОБИ.xls

 

Формирование ШтрихКОда взято у Рябочкина Максима http://code128.narod.ru/.

Я не смог по 7.7 отключить вопросы по сохранеию изменений шаблона — буду рад советам, как этот вопрос отключить.

Подскажите, как присвоить имя по умолчанию еще не сохраненному файлу excel?

 

похожий проект: //infostart.ru/public/16466/

8 Comments

  1. tolyan_ekb

    Орфография и стиль изложения не на высоте, к сожалению. В архиве обработки для 1с 8.1 и 7.7 или тоже ошибка в описании?

    Reply
  2. i132

    В архиве обработки для 7.7 и для 8.2 — проверял работу на типовых ТиС 7.7 и УТ 10.3 -вы правы конфигурации на которых работает надо уточнить.

    Reply
  3. makas

    Взял на заметку для своей коллекции!

    Reply
  4. dndw

    каким образом можно загрузить в табличную часть документа «оприходование товаров» из xls, xml или напрямую из базы. Возникла проблема с переносом остатков.

    Reply
  5. i132

    Для загрузки в табличную чать документа 1с их xls, много обработок, например ЗагрузкаДанныхИзТабличногоДокумента.epf с диска ИТС, или поискать на этом сайте.

    если напрямую из базы -воспользуйтесь конвертацией данных, то же есть примеры на инфостерте, например http://infostart.ru/public/170466/

    еще вариант сделайте копию нужного документа в исходной базе и перенесите его 1:1 в новую базу.

    При загрузке подключите мою обработку http://infostart.ru/public/98910/ которая покажет что изменилось в новой базе.

    моя обработка про другое: как из 1с сделать красивый «живой» xls, с макросами и формулами.

    Reply
  6. lola_iv

    Попробуйте Excel.DisplayAlerts = 0;

    Reply
  7. lopatin

    Ширина и высота ячеек(колонок и строк) не сохраняется.. Как бы сделать, так чтобы они сохранялись и копировались из шаблона?

    Reply
  8. lopatin

    Excel поддерживает именованные области, можно Range выделять обращаясь к именованной области. Что позволит отказаться от листа с параметрами шаблона.

    Например можно выделить, шапку в шаблоне задать её имя: Шапка.

    В коде обращаться: ЛистШаблона.Range(«Шапка»)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *