Консультация № 187187
27.02.2013, 16:42
162.09 руб.
0 9 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Конфигурация 1С Версия 7.7
ОС ВинХР
Имеется ТаблицаЗначений со следующими полями:
Дат Ч 2 0
Врем Ч 2 0
Град1 Ч 2 0
Град2 Ч 2 0
Град3 Ч 2 0
То есть 2-3 градусы за пред годы

Не получается связать график с ТаблицойЗначаний

Как программно вывести в Htm документ картинку графика?

Htm делается с помощью вывода текста 1С

График желательно родной 1С, без применения посторонних программ

Обсуждение

Неизвестный
28.02.2013, 16:57
общий
Насколько я правильно понял - HTML надо сделать программно из 1С 7.7?
В 1С формируем диаграмму, которую потом надо сохранить в HTML, верно?
Неизвестный
01.03.2013, 01:32
общий
01.03.2013, 19:12
Да
Либо диаграмма формируется средствами НТМ, тогда неважно, кем формируется НТМ.
Либо 1С формирует диаграмму в виде графического файла, который вставляется в НТМ.

Но я до этого не дошел, у меня не получилось установить связь между вставленной в таблицу диаграммой.
Неизвестный
02.03.2013, 22:50
общий
Для решения Вашей задачи необходим Excel
Неизвестный
03.03.2013, 03:27
общий
Помогите установить связь между графиком 1С и ТаблицейЗначений
Неизвестный
05.03.2013, 22:54
общий
это ответ
Здравствуйте, Пресняков Владимир Иванович!

Пример высылаю.

Логика вывода в печатную форму следующая.
1. В печатный макет вставляем Диаграмму (меню Таблица - Вставить рисунок - Диаграмма).
2. Правой кнопкой щелкаем по Диаграмме, открываем Свойства (не путать с "Объект 1С.V7.Диаграмма")
3. На закладке Тест пишем вызов процедуры, которой будем заполнять свойства диаграммы. В моем примере это ВывестиДиаграмму(Т.ТекущийОбъект, ТЗ), где первый параметр - ссылка на объект Диаграмма, а второй - таблица значений с данными.
4. Создаем процедуру заполнения диаграммы (в моем примере ВывестиДиаграмму).
5. В основной процедуре (в моем примере Сформировать) просто выводим секцию с Диаграммой в печатную форму и показываем ее. Здесь уже с самой диаграммой делать не надо, только убедиться что в переменной ТЗ (в моем примере) содержится таблица с данными.

Листинг смотрите в Приложении или в файле График77_Тест.zip

Приложение:
//--------------------------------------------------------
Функция СоздатьТЗ()

ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Дат", "Число", 2, 0);
ТЗ.НоваяКолонка("Врем", "Число", 2, 0);
ТЗ.НоваяКолонка("Град1", "Число", 2, 0);
ТЗ.НоваяКолонка("Град2", "Число", 2, 0);
ТЗ.НоваяКолонка("Град3", "Число", 2, 0);

// Тестовое заполнение
Для Ном=1 По 5 Цикл
ТЗ.НоваяСтрока();
ТЗ.Дат = Ном;
ТЗ.Врем = 0;
ТЗ.Град1 = Ном * 5;
ТЗ.Град2 = Ном * 10;
ТЗ.Град3 = Ном * 20;
КонецЦикла;

Возврат ТЗ;

КонецФункции

//--------------------------------------------------------
Процедура ВывестиДиаграмму(Диаграмма, ТЗ)

Диаграмма.Обновление(0);

Для Серия = 1 По 3 Цикл

ЗначСерии = "Град " + Серия;
Состояние("Построение графика: "+ЗначСерии);
Диаграмма.УстановитьИмяСерии(Серия, ЗначСерии);


ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл

Точка = ТЗ.НомерСтроки;


ЗначТочки = "День " + Формат(ТЗ.Дат, "Ч(0)2") + " Ч " + Формат(ТЗ.Врем, "Ч(0)2");
Значение = Число(Шаблон("[ТЗ.Град" + Серия + "]"));


Состояние("Построение графика: "+ЗначСерии+" "+ЗначТочки);
Если Серия = 1 Тогда
Диаграмма.УстановитьИмяТочки(Точка, ""+ЗначТочки);
КонецЕсли;

Диаграмма.УстановитьЗначение(Точка, Серия, Значение, ""+ЗначСерии+" "+ЗначТочки+": "+Значение);

КонецЦикла;

КонецЦикла;

Диаграмма.Обновление(1);

КонецПроцедуры

//*******************************************
Процедура Сформировать()

ТЗ = СоздатьТЗ();

Т = СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("График");
Т.ВывестиСекцию("График");
Т.ТолькоПросмотр(1);
Т.Показать("График", "");

КонецПроцедуры
Прикрепленные файлы:
5
Неизвестный
06.03.2013, 07:54
общий
Спасибо, это именно то, что нужно!
А можно программно (не руками) в конце работы результат сохранить в файле t.xls ?
Неизвестный
06.03.2013, 10:42
общий
Да, конечно можно. Причем не только в XLS, но и сразу в HTM.
Вместо команды
Код:
Т.Показать("График", "");
(или до/после нее) вставить команду
Код:
Т.Записать("t.xls","XLS")

или
Код:
Т.Записать("t.htm","HTM")


Пожалуйста :)
Неизвестный
06.03.2013, 13:27
общий
Здорово!
Все получилось!!!
Как программно из 1С открыть и закрыть t.xls в Эксель я знаю
А как программно из Экселя записать t.xls как t.htm?
При Т.Записать("t.htm","HTM") не записывается картинка графика
Неизвестный
06.03.2013, 22:24
общий
Вот как программно из Экселя записать t.xls как t.htm - это я, пожалуй, не отвечу. Это скорее вопрос к знатокам Excel.
В HTM до этого сохранять не было необходимости, поэтому команду не проверял. Судя по всему, действительно выгружает без картинки. Что конечно жаль - было бы удобно.
Форма ответа