Работа с Excel

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

Приемы и методы разработки

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

В экселе есть встроенная функция понижения качества всех картинок или выделенной.
При очень большом желании это можно сделать средствами VBA.
https://infostart.ru/public/19977/
20. user662672_explorer2000 203 25.10.17 06:39 Сейчас в теме
(19) Экселевская функция, к сожалению, не дает нужного результата. Пробовал вручную, файл практически не уменьшается в размерах.
28. splxgf 26.10.17 15:00 Сейчас в теме
(20) Если делали вручную, задавали качество для экрана и применяли ко всем картинкам, то уменьшение размера должно было произойти.
Если нет, то маловероятно что достигнете лучших результатов дополнительными скриптами.
Кстати с заменой картинки проблем нет, делал такой код на экселе, но он сильно зависит от версии.
Находите картинку, забираете ее, запоминаете характеристики (положение, размер), и удаляеете...
Затем вставляете уже сжатую через ActiveSheet.Shapes.AddPicture
23. Mi11er 89 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 168 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. И да, спасибо, отличная шпаргалка :)
e.kogan; Serj1C; +2 Ответить
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 = "=СУММ(" +Диапазон+ ")";
e.kogan; levante90; user811769; gradi; rpgshnik; Il; inf012; +7 Ответить
21. frkbvfnjh 625 25.10.17 07:30 Сейчас в теме
(1) Зачем раскрываешь секреты Масонов?! :)
2. Denis Nsk 24.10.17 05:46 Сейчас в теме
Спасибо за Ваши труды!
Лично для меня, полезная шпаргалка.
Flextor74; Garfild12; chebser; arakelyan; +4 Ответить
3. TrinitronOTV 9 24.10.17 05:49 Сейчас в теме
В пункте 11 почему-то нет примера кода на языке 1С
6. arakelyan 425 24.10.17 08:02 Сейчас в теме
(3)Он, был....но таинственным образом куда-то пропал. Добавлю сегодня.
4. ADirks 186 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;
e.kogan; arakelyan; +2 Ответить
10. kirillkr 28 24.10.17 08:59 Сейчас в теме
Не хватает информации, в каком формате сохранить книгу, которую как раз искал несколько дней назад.
Если Число(Excel.Version) < 12 Тогда
	// Используется Excel 97-2003
	пРасширение = "xls";
	пФорматФайла = -4143;
Иначе
	Если впИспользуемМакросы Тогда
		пРасширение = "xlsm";
		пФорматФайла = 52;
	Иначе
		пРасширение = "xlsx";
		пФорматФайла = 51;
	КонецЕсли;
КонецЕсли;
Показать
e.kogan; arakelyan; +2 Ответить
11. o.nikolaev 204 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;
	Конецесли;
Показать
36. пользователь 23.11.18 18:55
Сообщение было скрыто модератором.
...
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) + " из " + ВсегоКолонок);
		ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);
	КонецЦикла;
	//ЛистЭксель = Неопределено;
	Возврат ТЗ;
КонецФункции
Показать
42. e.kogan 1868 18.03.21 13:27 Сейчас в теме
(14) а вот между Range и UsedRange есть разница...
25. &rew 31 26.10.17 05:43 Сейчас в теме
(13) Да и в принципе зачем держать Ексель открытым занимая без дела ресурсы.
16. ArchLord42 77 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; RomanMartynenko; +2 Ответить
26. ADirks 186 26.10.17 09:34 Сейчас в теме
(22) так то да, но быстрее в шпаргалку посмотреть. Задачи то обычно весьма однотипные.
37. zarucheisky 26.11.18 18:18 Сейчас в теме
(22) мало того, оно позволяет посмотреть объктную модель класса COM, доступного для данного пользователя.
24. waol 284 25.10.17 18:32 Сейчас в теме
как говорится - на полку в качестве справочного пособия
27. niki295 23 26.10.17 10:20 Сейчас в теме
29. rpgshnik 2732 02.11.17 05:20 Сейчас в теме
Статья хорошая, в закладки.
Предлагаю автору, обновить статью добавив выдержки из комментарий, очень полезно и информативно будет.
arakelyan; +1 Ответить
30. arakelyan 425 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 156 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 2527 27.11.18 14:14 Сейчас в теме
А стоит написать статью о том, как выгрузить табличные документы в Excel на разные листы средствами платформы (ну мало ли нет на сервере 1С офиса от мелкомягких)? Или такая статья уже есть?
39. ImHunter 228 27.11.18 14:48 Сейчас в теме
(38) Возможно, стандартная запись платформы ТабДока в Excel так и делает. При этом в ТабДоке должны быть именованные области строк. Чтение, по-крайней мере, подобным образом происходит - в ТабДоке присутствует несколько областей по именам листов.
40. starik-2005 2527 27.11.18 17:02 Сейчас в теме
(39)
Возможно, стандартная запись платформы ТабДока в Excel так и делает.
Стандартная запись текДока так НЕ делает, но в 1С запись не ограничивается только объектом ТабличныйДокумент...
41. noon 10 18.09.20 10:39 Сейчас в теме
Не нашел тут вроде, копирование диапазона ячеек:
исходныйДиапазон.Copy( диапазонВставки );
Может кому полезно будет.
Оставьте свое сообщение

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

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

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020    4694    Eugen-S    23    

Обзор полезных методов БСП 3.1.4. Часть 2

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

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

27.04.2021    16706    rayastar    7    

Обзор полезных методов БСП 3.1.4

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

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021    42706    rayastar    51    

Звуковое управление в 1С 8.3

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    7327    velemir    33    

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

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

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

27.01.2016    86027    Serginio    116    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    9067    comol    31    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    21178    user5300    20    

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

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

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

27.01.2020    67087    ids79    27    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Инструменты администратора БД Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    67803    user700211_a.straltsou    30    

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

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

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

15.01.2020    44364    John_d    22    

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

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

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

30.12.2019    36105    kuzyara    38    

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

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

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

24.10.2019    8077    DmitryKotov    6    

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

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

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

15.01.2019    35587    itriot11    27    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

Печатные формы БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Постоянно приходится вспоминать, как добавить механизм печати (БСП) в новый документ. Поэтому решил написать шпаргалку.

10.10.2019    31018    John_d    21    

Полезные процедуры и функции для программиста

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

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

07.10.2019    40103    HostHost    41    

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

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

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

01.10.2019    53814    Yashazz    56    

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

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

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

10.12.2016    41218    unichkin    74    

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

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

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

06.09.2019    104903    rpgshnik    77    

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

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

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

05.09.2019    78920    ids79    56    

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

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

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

17.08.2019    45615    ids79    22    

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

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

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

15.10.2018    36291    tormozit    106    

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

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

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

08.08.2019    155277    ids79    75    

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

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

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

02.08.2019    61730    avalakh    27    

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

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

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

26.07.2019    107387    ids79    17    

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

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

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

20.09.2012    82973    tormozit    131    

Обработчики событий при записи объектов. Зачем и что за чем?

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

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    115290    AlbinaAAA    49    

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

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

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

17.07.2019    48985    ids79    27    

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

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

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

04.07.2019    22649    SeiOkami    53    

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

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

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

11.07.2007    54640    tormozit    51    

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

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

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

25.06.2019    77169    ids79    28    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    56847    YPermitin    55    

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

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

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

16.05.2019    64791    YPermitin    31    

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

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

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

10.09.2017    51436    tormozit    74    

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

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

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

25.04.2019    18086    m-rv    3    

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

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

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

16.04.2019    23436    m-rv    18    

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

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

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

11.04.2019    41984    bolefirenko    122    

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

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

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

07.04.2019    42934    ellavs    131    

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

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

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

28.03.2019    32217    ellavs    90    

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

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

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

03.02.2019    66422    ids79    11    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата Кадровый учет v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    149136    GeterX    136    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С

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

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    45256    ids79    46    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Инструментарий разработчика Методология v8 1cv8.cf Бесплатно (free)

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    94105    stas_ganiev    86    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

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

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

23.08.2018    49024    Rain88    49    

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

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

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

14.08.2018    21931    m-rv    5    

Тестер: частые вопросы

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

Ошибкам бой - тесты норма жизни!

25.07.2018    31644    grumagargler    31