Работа с Excel

Публикация № 684206

Разработка - Практика программирования

Excel Эксель ячейка выравнивание в ячейке фон ячейки диапазон

Собрал различные полезности для работы с Excel из 1С. Иногда приходится форматировать документ Excel программно из 1С. Так вот, чтобы не искать постоянно на просторах интернета как сделать левое выравнивание в ячейке Excel из 1С и т.п. решил опубликовать это...

СПОСОБ ПОИСКА НАИМЕНОВАНИЙ СВОЙСТВ И МЕТОДОВ VBA EXCEL С ПОМОЩЬЮ ЗАПИСИ МАКРОСОВ

На практике часто случается, что нужно решить какую-либо задачу, иногда довольно тривиальную с точки зрения пользователя Excel (к примеру изменить фон ячейки в Excel, добавить левую границу и т.д.), а решение в сети/документации искать не хочется или не получается, тогда можно попробовать начать запись макроса, выполнить нужную последовательность действий (изменить фон, добавить границу) , после чего записать макрос и открыть код VBA для анализа кода, названий свойств и методов. Такой способ довольно часто помогает быстро решить проблему.

1. Подключение к Excel

Попытка
    Excel = Новый COMОбъект("Excel.Application"); 
Исключение
    Сообщить(ОписаниеОшибки() + "Возможно программа Exсel не установлена на данном компьютере!");
    Возврат Ложь;
КонецПопытки;

//Создание книги
Книга = Excel.WorkBooks.Add();

//Открытие существующей книги  
Книга = Excel.WorkBooks.Open(ПутьКФайлу);

//Выбор рабочего листа по номеру 
Лист = WorkBook.WorkSheets(НомерЛиста);

//Выбор рабочего листа по имени 
Лист = WorkBook.WorkSheets(ИмяЛиста);   

//Сохранение книги
Попытка
	Книга.SaveAs(ПутьКФайлу);
	Книга.Close();
	Excel.Quit();	
Исключение
	Книга.Close();
	Excel.Quit();
КонецПопытки;

При подключении к Excel не забываем закрывать приложение после работы дабы не наплодить кучу ненужных процессов. Они также могут появиться если во время выполнения модуля выскочит ошибка до того как система дойдет до строк, где происходит закрытие Excel.

2. Запись значения в ячейку

ТекущийЛист.Cells(i, j).Value = "2";

Количество листов книги

КоличествоЛистов = Книга.Sheets.Count;

3. Шрифт и размер шрифта 

//Выделение области
Excel.Columns("A:H").Select();

//Размер шрифта
Лист.Cells.Font.Size = 12;

//Тип шрифта                        
Лист.Cells.Font.Name = "Calibri";

//1 — жирный шрифт, 0 — обычный.
Лист.Cells.Font.Bold = 1;

//1 — наклонный шрифт, 0 — обычный.	
Лист.Cells.Font.Italic = 1;

//2 — подчеркнутый, 1 — нет.	
Лист.Cells.Font.Underline = 1;	

4. Ширина колонки

Чтобы скрыть колонку, нужно установить ширину в значение 0.

Лист.Columns(НомерКолонки).ColumnWidth = Ширина;

Получение последней ячейки в используемом диапазоне

Например, при открытии таблицы нам нужно узнать до какой строки и/или до какого столбца присутствуют заполненные ячейки. 

ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

4. Установка фильтра

Лист.Cells.AutoFilter();

 

5. Горизонтальное выравнивание ячейки

ТекущийЛист.Cells(i, j).HorizontalAlignment = -4130;

Режим выравнивания

Константа в Excel

Значение в ISBL

По центру

xlHAlignCenter

-4108

По центру выделения

xlHAlignCenterAcrossSelection

7

Распределенное

xlHAlignDistributed

-4117

С заполнением

xlHAlignFill

5

По значению

xlHAlignGeneral

1

По ширине

xlHAlignJustify

-4130

По левому краю

xlHAlignLeft

-4131

По правому краю

xlHAlignRight

-4152

 

 

6. Вертикальное выравнивание ячейки

ТекущийЛист.Cells(i, j).VerticalAlignment = -4130;

Режим выравнивания

Константа в Excel

Значение в ISBL

По нижнему краю

xlVAlignBottom

-4107

По центру

xlVAlignCenter

-4108

Распределенное

xlVAlignDistributed

-4117

По высоте

xlVAlignJustify

-4130

По верхнему краю

xlVAlignTop

-4160


7. Установка свойства ячейки "переносить по словам"

ТекущийЛист.Cells(i, j).WrapText = True;

 

8. Отключение/включение режима показа предупреждений

ExcelApp.DisplayAlerts = False; // отключение
ExcelApp.DisplayAlerts = True;  // включение

 

9. Формулы

ТекущийЛист.Cells(i, j).Formula = "SUM(A1:A10)";

Для формул с русскими названиями нужно использовать не Formula, а FormulaLocal. Таким образом правильными вариантами написания формул будут:

ТекущийЛист.Cells(i, j).FormulaLocal = "Сумм(A1:A10)";

 

10. Таблица цветов с индексами

//Установка цвета текста ячейки
ТекущийЛист.Cells(i, j).Font.ColorIndex = 8;

//Установка цвета фона ячейки
ТекущийЛист.Cells(i, j).Interior.Color = 49;

//Установка цвета рамки
ТекущийЛист.Cells(i, j).Borders.Color = 8;

 

11. Установка границы ячейки и тип линии границы

Значения константы XlBordersIndex

Тип линии

Значение в Excel

Значение в ISBL

Нет линии

xlLineStyleNone

0

Непрерывная

xlContinuous

1

В виде тире и точек

xlDashDot

4

В виде тире и двойных точек

xlDashDotDot

5

В виде точек

xlDot

8

В виде двойной линии

xlDouble

9

В виде наклонной пунктирной

xlSlantDashDot

13

 

Свойство LineStyle (тип линии) может принимать следующие значения

Расположение линии

Значение в Excel

Значение в ISBL

Линия по диагонали сверху – вниз

xlDiagonalDown

5

Линия по диагонали снизу – вверх

xlDiagonalUp

6

Линия, обрамляющая диапазон слева

xlEdgeLeft

7

Линия, обрамляющая диапазон сверху

xlEdgeTop

8

Линия, обрамляющая диапазон снизу

xlEdgeBottom

9

Линия, обрамляющая диапазон справа

xlEdgeRight

10

Все вертикальные линии внутри диапазона

xlInsideVertical

11

Все горизонтальные линии внутри диапазона

xlInsideHorizontal

12

 

Получение порядкового номера колонки Excel по буквенному обозначению имени

Однажды столкнулся с тем, что нужно было получить буквенное обозначение колонки Excel по её порядковому номеру. Например, для колонки номер 3 буквенное обозначение равно "C". Так вот ниже приведены две замечательные функции, которые вполне справляются с решением данной проблемы. 

// Функция - Имя колонки Excel в номер
//
// Параметры:
//  тИмяКолонки - строка - буквенное обозначение колонки Excel (Пример: A, AB, AAC и т.д.) 
// 
// Возвращаемое значение:
//   - число, порядковый номер колонки
//
Функция ExcelColumnNameToNumber(тИмяКолонки)
   тЛатАлфавит = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  тДлинаНомера = СтрДлина(тИмяКолонки);
 
   тНомерКолонки = 0;
 
   Для тСчет = 1 По тДлинаНомера Цикл
      тПоз = Найти(тЛатАлфавит, Сред(тИмяКолонки, (тДлинаНомера + 1 - тСчет), 1));
      тНомерКолонки = тНомерКолонки + тПоз * Pow(26, тСчет - 1);
   КонецЦикла;
 
   Возврат тНомерКолонки;
КонецФункции

Наоборот, получение буквенного обозначения имени колонки по номеру колонки

// Функция - Номер колонки Excel в буквенное обозначение 
//
// Параметры:
//  тНомерКолонки - число - порядковый номер колонки
// 
// Возвращаемое значение:
//   - строка, буквенное обозначение колонки
// 
Функция NumberToExcelColumnName(Знач тНомерКолонки)
   тЛатАлфавит = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   тИмяКолонки = "";
 
   Пока тНомерКолонки > 0 Цикл
   тОстаток = (тНомерКолонки - 1)%26;
 
   тБуква = Сред(тЛатАлфавит, тОстаток + 1, 1);
      тИмяКолонки = тБуква + тИмяКолонки;
 
      тНомерКолонки = Цел((тНомерКолонки - тОстаток)/26);
   КонецЦикла;
 
   Возврат тИмяКолонки;
КонецФункции
 
 ИСТОЧНИКИ

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. script 226 24.10.17 00:57 Сейчас в теме
Допишите еще один универсальный способ. Через макросы. Включаем запись макроса. Меняем что нужно в таблице. Завершаем макрос. Смотрим код в VB редакторе.
Irwin; Rego1337h; sCHTASS; olololeg; gradi; fokses; Михаська; Lem0n; bajiepka; frkbvfnjh; Sitial; Alias; maxdmt; chebser; olbu; zqzq; Xershi; +17 Ответить
5. arakelyan 390 24.10.17 08:01 Сейчас в теме
7. user662672_explorer2000 185 24.10.17 08:04 Сейчас в теме
(1) Тоже всегда считал этот метод 100% работающим, но когда возникла необходимость программно заменить картинку на листе, то запись макроса вернула пустую процедуру (( пришлось много и долго читать интернет
8. arakelyan 390 24.10.17 08:11 Сейчас в теме
(7) Программно заменить картинку можно напрямую из 1С, однако появляется проблема с её позиционированием. Влить картинку ровно в ячейку Excel только средствами 1С у меня не вышло, пришлось добавлять макрос в VBA. Если тема интересна, могу добавить в статью.
jONES1979; +1 Ответить
9. user662672_explorer2000 185 24.10.17 08:39 Сейчас в теме
(8) Задача у меня такого плана: на листе много картинок высокого качества, из-за чего файл вести очень много. Нужно картинки заменить на картинки с качеством пониже. Как понизить качество я представляю, как картинку забрать с листа тоже, но как ее заменить пока не очень понимаю, еще ищу, благо терпит. Буду благодарен если подскажете
19. splxgf 24.10.17 22:58 Сейчас в теме
(9)
(8) Задача у меня такого плана: на листе много картинок высокого качества, из-за чего файл вести очень много. Нужно картинки заменить на картинки с качеством пониже. Как понизить качество я представляю, как картинку забрать с листа тоже, но как ее заменить пока не очень понимаю, еще ищу, благо терпит. Буду благодарен если подскажете

В экселе есть встроенная функция понижения качества всех картинок или выделенной.
При очень большом желании это можно сделать средствами VBA.
https://infostart.ru/public/19977/
20. user662672_explorer2000 185 25.10.17 06:39 Сейчас в теме
(19) Экселевская функция, к сожалению, не дает нужного результата. Пробовал вручную, файл практически не уменьшается в размерах.
28. splxgf 26.10.17 15:00 Сейчас в теме
(20) Если делали вручную, задавали качество для экрана и применяли ко всем картинкам, то уменьшение размера должно было произойти.
Если нет, то маловероятно что достигнете лучших результатов дополнительными скриптами.
Кстати с заменой картинки проблем нет, делал такой код на экселе, но он сильно зависит от версии.
Находите картинку, забираете ее, запоминаете характеристики (положение, размер), и удаляеете...
Затем вставляете уже сжатую через ActiveSheet.Shapes.AddPicture
23. Mi11er 82 25.10.17 13:23 Сейчас в теме
Вставлю свою пять копеек, так как сам намучался с excel

Объединение яйчеек

Лист.Range("E1:F1").MergeCells = Истина; 


Может уже было, но все же
Цвет фона
Лист.Cells(2,3).Interior.ColorIndex = 42;


ГиперСсылки
Лист.Cells(СтрокаЛиста, 2).Hyperlinks.Add(Лист.Cells(СтрокаЛиста, 2), Выборка.МДО_URLТовара,,"Ссылка на товар с сайта www.___.ru",Выборка.Артикул );


Закрепление областей
Эксель.Application.ActiveWindow.SplitRow = 4;
Эксель.Application.ActiveWindow.FreezePanes = 1;


Ширина колонки
Лист.Columns(7).ColumnWidth = "10";
arakelyan; Михаська; Il; IgorS; +4 Ответить
15. Alias 157 24.10.17 14:51 Сейчас в теме
Из опыта собственной необходимости:
- к пункту 9: формулы можно задавать также через FormulaR1C1 и FormulaR1C1Local, это бывает много удобнее тем что не нужно постоянно менять буквы в формуле -- она одна и та же для всех ячеек, например расчёт НДС по сумме из предыдущей колонки "=ROUND(RC[-1]*1.18, 2)" для всех строк колонки.
- к пункту 10: заливка фона это Ячейка.Interior.ColorIndex
- Ячейка.Locked = False; это отключить защиту ячейки, после чего Лист.Protect("p@ssw0rd") -- защитить лист от изменений.

Всецело присоединяюсь также к комментарию (1).

P.S. И да, спасибо, отличная шпаргалка :)
18. Sitial 24.10.17 18:29 Сейчас в теме
Вставлю свои пять копеек)

Исходные данные:
Excel = Новый COMОбъект("Excel.Application");
ИмяФайлаПолное = ПолучитьИмяВременногоФайла("xlsx");
Книга = Excel.WorkBooks.Open(ИмяФайлаПолное);
Лист1 = Книга.WorkSheets(1);


Странно, что никто не написал про то, чтобы приложение было вообще видно, а не работало как-то там в фоне:
Excel.Application.Visible = Истина;


Вызов функции на листе (на примере функции "ПОИСКПОЗ()", в англ.как "Match"):
// ИмяДляПоиска - то, что ищем
// Лист1.Columns(2) - диапазон поиска
// 0 - первое точное совпадение (может также принимать значения "1" или "-1"
НомерСтроки = Excel.WorksheetFunction.Match(ИмяДляПоиска,Лист1.Columns(2),0);


Поиграем немного с форматом сразу для диапазона ячеек:
Диапазон = Лист1.Range(Лист1.Cells(Строка1,Колонка1), Лист1.Cells(Строка2, Колонка2));
	Диапазон.Font.Italic = 1; // наклонный шрифт
	Диапазон.Font.Bold = 1; // жирный шрифт
	Если Формат = "Текст" Тогда
		Диапазон.NumberFormat = "@"; // текстовый формат
	ИначеЕсли Формат = "Число" Тогда
		Диапазон.NumberFormat = "# ##0,00"; // числовой формат с разделителями групп разрядов
		Диапазон.NumberFormat = "# ##0,00;-# ##0,00;""-"""; // тоже самое, только вместо нуля выводится прочерк + при автосуммировании нет ошибки
	ИначеЕсли Формат = "ЧислоЦелое" Тогда
		Диапазон.NumberFormat = "# ##0;-# ##0;""-"""; // округление до целого
	ИначеЕсли Формат = "ВыделитьЦветом" Тогда
		R = 255;
		G = 255;
		B = 153;
		Диапазон.Interior.Color = ((B*256) + G) * 256 + R; // цвет ячейки
	ИначеЕсли Формат = "ОбщийТекст" Тогда
		Диапазон.Value = ОбщийТекст; // во всех ячейках диапазона устанавливаем данный текст
	КонецЕсли;
Показать


Как получить номер столбца в формате Excel (работает и для колонок вида AAA...ZZZ)
&НаКлиенте
Функция НомерСтолбцаВФорматеExcel(Знач НомерКолонки)
	Алфавит = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	ИмяКолонки = "";
	
	Пока НомерКолонки <> 0 Цикл
		Остаток = (НомерКолонки - 1)%26;
		
		Буква = Сред(Алфавит, Остаток + 1, 1);
		ИмяКолонки = Буква + ИмяКолонки;
		
		НомерКолонки = Цел((НомерКолонки - Остаток)/26);
	КонецЦикла;
	
	Возврат ИмяКолонки;
КонецФункции
Показать


Установка формулы автосуммирования, используя функцию выше:
Диапазон = "" +НомерСтолбцаВФорматеExcel(Колонка1) + (НачальнаяСтрока) + ":" +
					НомерСтолбцаВФорматеExcel(Колонка2) + (КонечнаяСтрока); // Колонка2 = Колонка1 для случая, если это один столбец
		
		Лист1.Cells(Строка, Колонка).FormulaLocal = "=СУММ(" +Диапазон+ ")";
user811769; gradi; rpgshnik; Il; inf012; +5 Ответить
21. frkbvfnjh 593 25.10.17 07:30 Сейчас в теме
(1) Зачем раскрываешь секреты Масонов?! :)
2. Denis Nsk 24.10.17 05:46 Сейчас в теме
Спасибо за Ваши труды!
Лично для меня, полезная шпаргалка.
Flextor74; Garfild12; chebser; arakelyan; +4 Ответить
3. TrinitronOTV 6 24.10.17 05:49 Сейчас в теме
В пункте 11 почему-то нет примера кода на языке 1С
6. arakelyan 390 24.10.17 08:02 Сейчас в теме
(3)Он, был....но таинственным образом куда-то пропал. Добавлю сегодня.
4. ADirks 184 24.10.17 06:38 Сейчас в теме
ещё в шпору

последняя строка
xlLastCell = 11;
LastRow = Sh.Cells(1,1).SpecialCells(xlLastCell).Row;

чтобы не умничал, пытаясь превращать строки в числа и даты (особенно бесит)
Sh.Cells(Row, i).NumberFormat = "@";
Sh.Cells(Row, i).Value = Value;

иногда и это не помогает, тогда так
Sh.Cells(Row, i).Value = "'" + Value;
arakelyan; +1 Ответить
10. kirillkr 28 24.10.17 08:59 Сейчас в теме
Не хватает информации, в каком формате сохранить книгу, которую как раз искал несколько дней назад.
Если Число(Excel.Version) < 12 Тогда
	// Используется Excel 97-2003
	пРасширение = "xls";
	пФорматФайла = -4143;
Иначе
	Если впИспользуемМакросы Тогда
		пРасширение = "xlsm";
		пФорматФайла = 52;
	Иначе
		пРасширение = "xlsx";
		пФорматФайла = 51;
	КонецЕсли;
КонецЕсли;
Показать
arakelyan; +1 Ответить
11. o.nikolaev 202 24.10.17 09:03 Сейчас в теме
Нет:
- добавления картинок, позиционирования на нужной картинке и установке ее свойств;
- запись, чтение очень больших объемов данных в (из) файла Excel;
- работы с диаграммами.
arakelyan; +1 Ответить
35. kembrik 3 23.11.18 18:51 Сейчас в теме
"Универсальное" получение последней строки выглядит так:

Version	= ОбъектExcel.Version;
	
	Версия = Лев(Version, Найти(Version,".") - 1);
	
	Если Версия = "8" тогда
		ФайлСтрок	= ОбъектExcel.Cells.CurrentRegion.Rows.Count;
		ФайлКолонок = Макс(ОбъектExcel.Cells.CurrentRegion.Columns.Count, 13);
	Иначе
		ФайлСтрок	= ОбъектExcel.Cells(1,1).SpecialCells(11).Row;
		ФайлКолонок = ОбъектExcel.Cells(1,1).SpecialCells(11).Column;
	Конецесли;
Показать
12. gorakh 25 24.10.17 09:17 Сейчас в теме
ДокументExcel = ПолучитьCOMОбъект(ИмяФайла);
//Листы :
				    СписокЛистов = Новый СписокЗначений;					
				Для каждого Лист Из ДокументExcel.Sheets Цикл
				        СписокЛистов.Добавить(Лист.Index,Лист.Name);
				КонецЦикла;	

ЛистExcel= ДокументExcel.Sheets(НомерЛистаКниги);
ПоследняяСтрока = ЛистExcel.UsedRange.Rows.Count;
ЛеваяКолонка = ЛистExcel.UsedRange.Column;
ПоследняяКолонка =  ЛистExcel.UsedRange.Columns.Count;
НомерКолонкиСТекстом=ЛистExcel.UsedRange.Find("text").Column;
//Или
НомерКолонкиСТекстом=ЛистExcel.Cells.Find("text").Column;
//Подчищаем за собой память
ДокументExcel.Application.Quit();
Показать
zarucheisky; +1 Ответить
13. sergalei 24.10.17 10:36 Сейчас в теме
Дамп листа в массив.
Значительно ускоряет обработку больших таблиц.

Функция ПолучитьМассивИзЛистаЭксель(Путь, НомерЛиста)
	
	Попытка
		Эксель = Новый ComОбъект("Excel.Application");
		Эксель.DisplayAlerts = 0;
		Книга = Эксель.Workbooks.Open(Путь);
	Исключение		
		Возврат Неопределено;
	КонецПопытки;
		
	Результат = Эксель.Sheets(НомерЛиста).UsedRange.Value.Выгрузить();
	Эксель.Quit();
	
	Возврат Результат;
	
КонецФункции
Показать
zarucheisky; Новиков; softcom_1c; lishniy; klinval; Михаська; &rew; AtPups000; kare; the1; maxdmt; arakelyan; +12 Ответить
14. maxdmt 27 24.10.17 11:16 Сейчас в теме
(13), подробнее
Функция ПрочитатьЛистExcel(ТЗ = Неопределено, ЛистЭксель = Неопределено, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт
	
	Если ЛистЭксель = Неопределено Тогда
		ЛистЭксель = ПолучитьCOMОбъект(,"Excel.Application");
	КонецЕсли;
	Если ВсегоСтрок = 0 Тогда
		ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row;
	КонецЕсли;
	Если ВсегоКолонок = 0 Тогда
		ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column;
	КонецЕсли;
	Если ТЗ = Неопределено Тогда
		ТЗ =  Новый ТаблицаЗначений;
		Для Счетчик = 1 По ВсегоКолонок Цикл
			ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
		КонецЦикла;
	КонецЕсли;
	Состояние("Заполнение пустой таблицы...");
	Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл
		НоваяСтрока = ТЗ.Добавить();
	КонецЦикла;
	
	Состояние("Выгрузка в массив...");
	Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок));
	Данные = Область.Value.Выгрузить();
	
	Для Счетчик = 0 По ВсегоКолонок-1 Цикл
		Состояние("Загрузка колонки: " + (Счетчик + 1) + " из " + ВсегоКолонок);
		ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);
	КонецЦикла;
	//ЛистЭксель = Неопределено;
	Возврат ТЗ;
КонецФункции
Показать
25. &rew 24 26.10.17 05:43 Сейчас в теме
(13) Да и в принципе зачем держать Ексель открытым занимая без дела ресурсы.
16. ArchLord42 71 24.10.17 15:20 Сейчас в теме
Группировка строк, аналогичная табличному документу

Лист.Range("A1:A3").Rows.Group()


Собственно чтобы сгрупиировать колонки нужно обратиться не к Rows, а к Cols

так же можно настроить способ вывода значка с "+", либо сверху, либо снизу

Лист.Outline.SummaryRow = 0;


0 - вверху
1 - внизу (по умолчанию)

и конечно же имеется аналог метода "ПоказатьУровеньГруппировокСтрок/ПоказатьУровеньГруппировокК­олонок"

Лист.Outline.ShowLevels(УровеньГруппировки)
17. vladismi 161 24.10.17 15:37 Сейчас в теме
Хорошая шпаргалка.
Плюс!
22. premierex 25.10.17 08:21 Сейчас в теме
(0)
чтобы не искать постоянно на просторах интернета
достаточно в редакторе VBA открыть Object Browser (F2). Он содержит описание объектов MS Office, значения констант VBA, а также встроенную справочную систему. Видимо не зря шутка появилась, что программер нажимает F1, когда других возможностей что-то узнать о программе уже не осталось )))
zarucheisky; Rego1337h; +2 Ответить
26. ADirks 184 26.10.17 09:34 Сейчас в теме
(22) так то да, но быстрее в шпаргалку посмотреть. Задачи то обычно весьма однотипные.
37. zarucheisky 26.11.18 18:18 Сейчас в теме
(22) мало того, оно позволяет посмотреть объктную модель класса COM, доступного для данного пользователя.
24. waol 269 25.10.17 18:32 Сейчас в теме
как говорится - на полку в качестве справочного пособия
27. niki295 22 26.10.17 10:20 Сейчас в теме
29. rpgshnik 2372 02.11.17 05:20 Сейчас в теме
Статья хорошая, в закладки.
Предлагаю автору, обновить статью добавив выдержки из комментарий, очень полезно и информативно будет.
arakelyan; +1 Ответить
30. arakelyan 390 07.11.17 11:21 Сейчас в теме
(29)Добавлю обязательно, занят немного на работе. Я ещё не все свои мысли изложить успел)
rpgshnik; +1 Ответить
31. soba 10.12.17 18:02 Сейчас в теме
1С вроде как сечас рекомендует нативные методы платформы. Много юзеров сейчас без exel на компе
32. fly_men 11.12.17 13:11 Сейчас в теме
Флаг чтобы убрать режим защищенного просмотра в сохраненном файле:

Excel.FileValidation = 1;
33. hasp_x 154 09.01.18 15:07 Сейчас в теме
Как можно отключить макросы на время загрузки в Excel?
34. Perfolenta 23.11.18 16:42 Сейчас в теме
а я уже больше 10 лет пользуюсь своей внешней компонентой, которая позволяет "как в 1С" создать шаблон-макет документа Эксель, а потом выводить секции вместе с нужными формулами и значениями опять же "как в 1С"...
https://infostart.ru/public/564876/
как по мне, так гораздо удобней, чем писать на VBA
38. starik-2005 2212 27.11.18 14:14 Сейчас в теме
А стоит написать статью о том, как выгрузить табличные документы в Excel на разные листы средствами платформы (ну мало ли нет на сервере 1С офиса от мелкомягких)? Или такая статья уже есть?
39. ImHunter 202 27.11.18 14:48 Сейчас в теме
(38) Возможно, стандартная запись платформы ТабДока в Excel так и делает. При этом в ТабДоке должны быть именованные области строк. Чтение, по-крайней мере, подобным образом происходит - в ТабДоке присутствует несколько областей по именам листов.
40. starik-2005 2212 27.11.18 17:02 Сейчас в теме
(39)
Возможно, стандартная запись платформы ТабДока в Excel так и делает.
Стандартная запись текДока так НЕ делает, но в 1С запись не ограничивается только объектом ТабличныйДокумент...
41. noon 10 18.09.20 10:39 Сейчас в теме
Не нашел тут вроде, копирование диапазона ячеек:
исходныйДиапазон.Copy( диапазонВставки );
Может кому полезно будет.
Оставьте свое сообщение

См. также

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    25317    itriot11    26    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    28090    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    24759    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    19049    kuzyara    33    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37572    unichkin    74    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    17280    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    8595    Sibars    19    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

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

24.10.2019    7277    DmitryKotov    6    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    30589    tormozit    100    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    34197    Yashazz    50    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    12238    budidich    28    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    51989    rpgshnik    63    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    78222    tormozit    131    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    50568    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    29173    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    25751    YPermitin    80    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    48697    tormozit    41    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    31924    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    85572    ids79    49    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    36580    avalakh    22    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    45045    tormozit    74    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    24616    json    14    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    61805    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    36391    ids79    27    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16130    m-rv    2    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    26394    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19795    SeiOkami    50    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    48200    ids79    17    

Excel vs 1С: битва с неожиданным исходом Промо

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    36684    bolefirenko    117    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    53685    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    25415    dmurk    145    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

16.05.2019    44016    YPermitin    30    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20389    m-rv    17    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    35745    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    27610    ellavs    90    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    31702    YPermitin    53    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30891    m-rv    21    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    40365    Смешной 1С    28    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    22408    Vladimir Litvinenko    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    28356    itriot11    34    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    40551    ids79    9    

Запись одной книги Excel на нескольких листах средствами 1С (без внешних компонент)

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Пользователи часто просят сохранить им стопиццот отчетов в один файл Excel, чтобы отчеты были в одном файле. Ну или клиент хочет счет, накладную и счет-фактуру получить в одном документе. 1С умеет это делать без всяких там COM-объектов. Давайте разберемся, куда нажимать и что крутить.

14.01.2019    22438    starik-2005    27    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    76701    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    27171    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    42070    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    37640    ids79    42    

Из Excel в 1С запросом Промо

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

... ну, конечно, не прям так типовым языком запросов, а расширенным языком запросов. Речь пойдет о том, как "залить" данные в таблицы 1С и не пилить при этом бесконечного количества наколеночных обработок.

14.08.2018    20131    m-rv    5