1с сохранить таблицу значений в файл excel программно

 +2 

   

Распечатать

1С 8.x : Как выгрузить Таблицу значение в файл Excel?

Код 1C v 8.х

 Процедура СохранитьТаблицуВФайлExcel(Таблица, ПолноеИмяФайла="", ОткрыватьДиалогВыбораФайла=Истина, ВыгружаемыеКолонки="") Экспорт 

Если ПустаяСтрока(ПолноеИмяФайла) ИЛИ ОткрыватьДиалогВыбораФайла Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Заголовок = "Сохранение документа Excel";
Диалог.Фильтр = "Документ Excel (*.xls)|*.xls";
Диалог.Расширение = "xls";
Диалог.ПолноеИмяФайла = ПолноеИмяФайла;
Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойКаталогФайлов");
Если (Диалог.Выбрать()) И (НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла)) Тогда
ПолноеИмяФайла = Диалог.ПолноеИмяФайла;
Иначе
Возврат;
КонецЕсли;
КонецЕсли;

ФайлНаДиске = Новый Файл(ПолноеИмяФайла);

Попытка
// Загрузка Microsoft Excel
Состояние("Выгрузка данных из 1С в Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
Книга = ExcelПриложение.WorkBooks.Add();
Лист = Книга.WorkSheets(1);
Исключение
Сообщить("Ошибка при загрузке Microsoft Excel."
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

Если ПустаяСтрока(ВыгружаемыеКолонки) Тогда
ТаблицаВыгрузки = Таблица.Скопировать();
Иначе
ТаблицаВыгрузки = Таблица.Скопировать(, ВыгружаемыеКолонки);
КонецЕсли;

Для Кол = 0 По ТаблицаВыгрузки.Колонки.Количество()-1 Цикл
Лист.Cells(1, Кол + 1).Value = ТаблицаВыгрузки.Колонки[Кол].Заголовок;
КонецЦикла;

Попытка

Для Стр = 0 По ТаблицаВыгрузки.Количество()-1 Цикл

Для Кол = 0 По ТаблицаВыгрузки.Колонки.Количество()-1 Цикл

Если ТипЗнч(ТаблицаВыгрузки[Стр][Кол]) = Тип("Число") Тогда
// Установним формат для типа Число
//Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "0,00";
Лист.Cells(Стр + 2, Кол + 1).Value = ТаблицаВыгрузки[Стр][Кол];
Иначе
// Для всех других типов установим формат "Текстовый"
//Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "@";
Лист.Cells(Стр + 2, Кол + 1).Value = Строка(ТаблицаВыгрузки[Стр][Кол]);
КонецЕсли;

КонецЦикла;

КонецЦикла;

ExcelПриложение.DisplayAlerts = False;
Книга.SaveAs(ПолноеИмяФайла);
ExcelПриложение.ActiveWorkbook.Close();
ExcelПриложение.Quit();

Сообщить("Файл выгружен успешно: " + ПолноеИмяФайла);

Исключение

Сообщить("Ошибка записи данных файла :" + ПолноеИмяФайла);
Сообщить(ОписаниеОшибки());
Попытка
ExcelПриложение.Quit();
Исключение
КонецПопытки;

КонецПопытки;

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

  • Главная
  • О сайте
  • Главная
  • Содержание

Рукопашный бой Карташ

Категории

—>

рубрики: Excel | Дата: 15 июня, 2017

Если провести опрос среди программистов 1С на тему «Как сохранить информацию из 1С в файл ексель», то большинство голосов, как мне кажется займет вариант с созданием объекта Excel.Application с последующим заполнением листа с помощью методов и свойств встроенного в Excel языка VBA. Но многие ли из вас помнят вышеупомянутые методы и свойства? А ведь между тем есть способ который позволяет сделать это гораздо проще, только с использованием языка программирования 1С.

Для этого достаточно сформировать ТабличныйДокумент (сделать это можно как с использованием макета табличного документа, так и программно), а потом просто записать его с помощью метода Записать() сразу в файл Excel, благо платформа без проблем позволяет это сделать. Напомню, что синтаксис этого метода выглядит следующим образом

Записать(ИмяФайла, ТипФайлаТаблицы)
ИмяФайла — строка в которой указан путь к файлу;
ТипФайлаТаблицы — тип файла в который мы будем записывать табличный документ.
Платформа 1С предоставляет следующие типы файлов:

  • ANSITXT (ANSITXT)
  • DOCX (DOCX)
  • HTML (HTML)
  • HTML3 (HTML3)
  • HTML4 (HTML4)
  • HTML5 (HTML5)
  • MXL (MXL)
  • MXL7 (MXL7)
  • ODS (ODS)
  • PDF (PDF)
  • TXT (TXT)
  • XLS (XLS)
  • XLS95 (XLS95)
  • XLS97 (XLS97)
  • XLSX (XLSX)

Пример использования

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




&НаСервере
Процедура ЗаписатьТаблицуЗначенийВФайлЕксель(Таблица)

	ТабДок = Новый ТабличныйДокумент;

	КоличествоКолонок = Таблица.Колонки.Количество();

	//Формируем строку с заголовками
	Для Счетчик = 1 По КоличествоКолонок Цикл

		ТекущаяКолонка = Таблица.Колонки[Счетчик - 1];
		ТабДок.Область("R1C" + Счетчик).Текст = ТекущаяКолонка.Имя;

	КонецЦикла;

	//Добавляем строки из таблицы
	НомерСтроки = 2;
	Для каждого СтрокаТаблицы Из Таблица Цикл

		Для НомерКолонки = 1 По КоличествоКолонок Цикл

			ТабДок.Область("R" + НомерСтроки + "C" + НомерКолонки).Текст = Строка(СтрокаТаблицы[НомерКолонки - 1]);

		КонецЦикла;
		НомерСтроки = НомерСтроки + 1;

	КонецЦикла;

	//Записываем табличный документ в файл Excel
	ТабДок.Записать("D:musorTest.xlsx", ТипФайлаТабличногоДокумента.XLSX);

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

В общем то все элементарно. Пусть у нас есть вот такая таблица значений:

Товар Количество
Яблоки 5
Груши 10

После того как прогнал ее через процедуру выше, получил вот такой результат в ексель

Достоинства метода

  • Простота. Не требуется знаний VBA. Доступны синтаксический контроль и отладка кода в процессе написания.
  • Не требуется наличия установленного Excel.

Недостатки метода

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

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

Это может быть удобным для следующих случаев:

  • Для хранения каких-либо настроек у отчётов или обработок;
  • Для тестирования или ведения логов (для временного хранения результата) при выполнении кода или запроса в 1С;
  • Для загрузки/выгрузки данных между информационными базами 1С.

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

Алгоритм

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

  1. Подготавливаем таблицу значений (выгружаем из табличной части, выбираем колонки);
  2. Конвертируем таблицу значений в табличный документ;
  3. Сохраняем табличный документ в MXL.

При загрузке таблицы порядок действий такой:

  1. Читаем из файла табличный документ;
  2. Конвертируем табличный документ в таблицу значений;
  3. Используем эту таблицу значений в своих целях (загружаем в табличную часть).

Соответственно файл для хранения данных таблицы имеет расширение *.mxl.

Табличный документ MXL

Функции и процедуры

Основные функции для реализации поставленной задачи следующие:

  • ПреобразоватьТДвТЗ – Функция преобразования табличного документа в таблицу значений.
  • ПреобразоватьТЗвТД – Функция обратного преобразования таблицы значений в табличный документ.
  • ПрочитатьТЗИзMXL – Читает из файла данные, определяет колонки таблицы и преобразует эти данные в таблицу значений.
  • ЗаписатьТЗВMXL – Преобразует таблицу значений в табличный документ и записывает его в файл.

Пример реализации

Ниже можно скачать обработку с примером реализации данного алгоритма.

Обработка имеет 3 функциональных кнопки:

  • Выгрузить
  • Загрузить
  • Очистить.

Кнопки обработки

Приведём здесь код 1С для всех вышеописанных функций:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Преобразовать табличный документ в таблицу значений.
//
// Параметры:
//	ТабДок - <ТабличныйДокумент> - Исходный табличный документ;
//	СтруктураКолонок - <Структура>, <ТаблицаЗначений> - Структура колонок;
//	НачалоСтрока - <Число> - Строка начала области;
//	НачалоСтолбец - <Число> - Столбец начала области;
//	КонецСтрока - <Число> - Строка конца области;
//	КонецСтолбец - <Число> - Столбец конца области.
//	
// Возвращаемое значение:
//	<ТаблицаЗначений> - Полученная таблица значений.
//
Функция ПреобразоватьТДвТЗ(ТабДок, СтруктураКолонок, Знач НачалоСтрока = Неопределено, Знач НачалоСтолбец = Неопределено, Знач КонецСтрока = Неопределено, Знач КонецСтолбец = Неопределено) Экспорт
 
	// Определение габаритов таблицы
	Если НачалоСтрока = Неопределено И НачалоСтолбец = Неопределено Тогда
		НачалоСтрока = 1;
		НачалоСтолбец = 1;
	КонецЕсли;
 
	Если НачалоСтрока = Неопределено Тогда
		НачалоСтрока = 1;
		Пока НЕ ТабДок.Область(НачалоСтрока, НачалоСтолбец).СодержитЗначение 
		 И НачалоСтрока < ТабДок.ВысотаТаблицы 
		Цикл
			НачалоСтрока = НачалоСтрока + 1;
		КонецЦикла;
	ИначеЕсли НачалоСтолбец = Неопределено Тогда
		НачалоСтолбец = 1;
		Пока НЕ ТабДок.Область(НачалоСтрока, НачалоСтолбец).СодержитЗначение 
		 И НачалоСтолбец < ТабДок.ШиринаТаблицы
		Цикл
			НачалоСтолбец = НачалоСтолбец + 1;
		КонецЦикла;
	КонецЕсли;
 
	КонецСтрока = ?(КонецСтрока = Неопределено, ТабДок.ВысотаТаблицы, КонецСтрока);
	КонецСтолбец = ?(КонецСтолбец = Неопределено, ТабДок.ШиринаТаблицы, КонецСтолбец);
 
	// Преобразование
	ЭтоТаблица = (ТипЗнч(СтруктураКолонок) = Тип("ТаблицаЗначений"));
	ТабЗначений = ПолучитьТаблицуВывода(СтруктураКолонок);
 
	Для ИндексСтроки = НачалоСтрока По КонецСтрока Цикл
		СтрокаТЗ = ТабЗначений.Добавить();
 
		ИндексКолонки = НачалоСтолбец;
		Для Каждого Колонка Из СтруктураКолонок Цикл
			НаименованиеКолонки = ?(ЭтоТаблица, Колонка.Наименование, Колонка.Ключ);
			пИндексКолонки = ?(ЭтоТаблица, Колонка.СтолбецОтчёт, ИндексКолонки);
 
			Если ТабДок.Область(ИндексСтроки, пИндексКолонки).СодержитЗначение Тогда
				СтрокаТЗ[НаименованиеКолонки] = ТабДок.Область(ИндексСтроки, пИндексКолонки).Значение;
			Иначе
				СтрокаТЗ[НаименованиеКолонки] = ТабДок.Область(ИндексСтроки, пИндексКолонки).Текст;
			КонецЕсли;
 
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
	КонецЦикла;
 
	Возврат ТабЗначений;
КонецФункции;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Преобразовать таблицу значений в табличный документ.
//
// Параметры:
//	ТабЗначений - <ТаблицаЗначений> - Исходная таблица значений;
//	ТабДок - <ТабличныйДокумент> - Полученный табличный документ. Если параметр не задан, 
//	 то документ создаётся заново и возвращается функцией;
//	НачалоСтрока - <Число> - Строка начала области;
//	НачалоСтолбец - <Число> - Столбец начала области;
//	ВыводитьЗаголовки - <Булево> - Определяет выводить ли имена колонок или нет.
//	
// Возвращаемое значение:
//	<ТабличныйДокумент> - Полученный табличный документ (возвращает параметр "ТабДок").
//
Функция ПреобразоватьТЗвТД(ТабЗначений, ТабДок = Неопределено, Знач НачалоСтрока = Неопределено, Знач НачалоСтолбец = Неопределено, ВыводитьЗаголовки = Ложь) Экспорт
 
	Если ТабДок = Неопределено Тогда
		ТабДок = Новый ТабличныйДокумент;
	КонецЕсли;
 
	// Определение габаритов таблицы
	НачалоСтрока = ?(НачалоСтрока = Неопределено, 1, НачалоСтрока);
	НачалоСтолбец = ?(НачалоСтолбец = Неопределено, 1, НачалоСтолбец);
 
	// Преобразование
	ИндексСтроки = НачалоСтрока;
	Если ВыводитьЗаголовки Тогда
		ИндексКолонки = НачалоСтолбец;
		Для Каждого Колонка Из ТабЗначений.Колонки Цикл
			ТабДок.Область(ИндексСтроки, ИндексКолонки).Текст = ?(ПустаяСтрока(Колонка.Заголовок), Колонка.Имя, Колонка.Заголовок);
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
		ИндексСтроки = ИндексСтроки + 1;
	КонецЕсли;
 
	Для Каждого Элемент Из ТабЗначений Цикл
		ИндексКолонки = НачалоСтолбец;
		Для Каждого Колонка Из ТабЗначений.Колонки Цикл
			ТабДок.Область(ИндексСтроки, ИндексКолонки).СодержитЗначение = Истина;
			ТабДок.Область(ИндексСтроки, ИндексКолонки).ТипЗначения = Новый ОписаниеТипов(Колонка.ТипЗначения);
			ТабДок.Область(ИндексСтроки, ИндексКолонки).Значение = Элемент[Колонка.Имя];
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
		ИндексСтроки = ИндексСтроки + 1;
	КонецЦикла;
 
	Возврат ТабДок;
КонецФункции;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Читает табличный документ из файла MXL и преобразует его в таблицу значений.
//
// Параметры:
//	ИмяФайла - <Строка> - Путь к файлу MXL;
//	СтруктураКолонок - <Структура>, <ТаблицаЗначений> - Структура колонок. Если этот параметр
//		не задан, то структура колонок формируется из самого табличного документа;
//	ЕстьЗаголовок - <Булево> - Есть ли первая строка с заголовками или нет.
//	
// Возвращаемое значение:
//	<ТаблицаЗначений> - Полученная таблица значений.
//
Функция ПрочитатьТЗИзMXL(ИмяФайла, СтруктураКолонок = Неопределено, ЕстьЗаголовок = Истина) Экспорт
 
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Прочитать(ИмяФайла);
 
	Если СтруктураКолонок = Неопределено И ЕстьЗаголовок Тогда
		СтруктураКолонок = Новый Структура;
		Для ИндексКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
			Обл1 = ТабДок.Область(1, ИндексКолонки);
			Обл2 = ТабДок.Область(2, ИндексКолонки);
			ИмяКолонки = СокрЛП(Обл1.Текст);
			ИмяКолонки = ?(Найти(ИмяКолонки, " ") > 0, СтрЗаменить(ТРег(ИмяКолонки), " ", ""), ИмяКолонки);
			СтруктураКолонок.Вставить(ИмяКолонки, ?(Обл2.СодержитЗначение, Обл2.ТипЗначения, Новый ОписаниеТипов));
		КонецЦикла;
	ИначеЕсли СтруктураКолонок = Неопределено И НЕ ЕстьЗаголовок Тогда
		СтруктураКолонок = Новый Структура;
		Для ИндексКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
			Обл2 = ТабДок.Область(1, ИндексКолонки);
			ИмяКолонки = "К" + Формат(ИндексКолонки, "ЧДЦ=0; ЧН=0; ЧГ=0");
			СтруктураКолонок.Вставить(ИмяКолонки, ?(Обл2.СодержитЗначение, Обл2.ТипЗначения, Новый ОписаниеТипов));
		КонецЦикла;
	КонецЕсли;
 
    Таблица = ПреобразоватьТДвТЗ(ТабДок, СтруктураКолонок, ?(ЕстьЗаголовок, 2, 1), 1);
 
	Возврат Таблица;
КонецФункции;
1
2
3
4
5
6
7
8
9
10
11
12
13
// Сохраняет таблицу значений в файле в виде табличного документа.
//
// Параметры:
//	ИмяФайла - <Строка> - Путь к файлу MXL;
//	ТабЗначений - <ТаблицаЗначений> - Сохраняемая таблица значений;
//	ЕстьЗаголовок - <Булево> - Есть ли первая строка с заголовками или нет.
//
Процедура ЗаписатьТЗВMXL(ИмяФайла, ТабЗначений, ЕстьЗаголовок = Истина) Экспорт
 
	ТабДок = ПреобразоватьТЗвТД(ТабЗначений, Неопределено, 1, 1, ЕстьЗаголовок);
	ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.MXL);
 
КонецПроцедуры;

Целиком скачайте обработку по ссылке ниже.

Смело используйте этот код 1С для реализации своих проектов! Если в коде имеются баги (ошибки), просьба сообщить об этом, написав в комментариях ниже.

Скачать

Я
   picom

03.04.12 — 10:06

На форме обработки есть таблица значений.

Правой кнопкой можно сделать вывод списка и откроется форма как мне надо.

Как эту форму списка открыть программно и сохранить в ексель?

   DrShad

1 — 03.04.12 — 10:10

ТабличныйДокумент.Записать()

   picom

2 — 03.04.12 — 10:13

(1) а как табличный документ сформировать из ТЗ то быстренько?

в обход процедуры построчного вывода..

   Галахад

3 — 03.04.12 — 10:16

Через построитель.

   picom

4 — 03.04.12 — 10:21

Т.е. команду «вывести список» программно не вызвать?

   Maxus43

5 — 03.04.12 — 10:22

(4) нет

   picom

6 — 03.04.12 — 10:23

печалька

   Maxus43

7 — 03.04.12 — 10:25

(6) через построитель то быстро

   picom

8 — 03.04.12 — 10:28

Быстро если уже написан универсальный код, который сам колонки говорит нужные …

У меня его нет (

   Maxus43

9 — 03.04.12 — 10:31

(8) построитель сам всё сделает, ты ему ТЗ скорми просто как источник данных

   Maxus43

10 — 03.04.12 — 10:35

Запрос = Новый Запрос;

   Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 100

   |    Банки.Ссылка,

   |    Банки.Код,

   |    Банки.Наименование

   |ИЗ

   |    Справочник.Банки КАК Банки»;

   
   Результат = Запрос.Выполнить().Выгрузить();

   Постр = Новый ПостроительОтчета;

   Постр.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);

   Постр.Вывести();

   picom

11 — 03.04.12 — 10:39

Постр = Новый ПостроительОтчета;

   Постр.ИсточникДанных = Новый ОписаниеИсточникаДанных(TZ);

   Постр.Вывести();

(10) спасибо, все получилось

   Maxus43

12 — 03.04.12 — 10:42

«TZ» — извращенец)

   picom

13 — 03.04.12 — 10:43

А как потом обратиться к полученному табличному полю с целью его записи ?

   Maxus43

14 — 03.04.12 — 10:49

Постр.Вывести(ТабДок);

   picom

15 — 03.04.12 — 11:51

Подскажите пожалуйста еще, как удалить 3 пустые строки сверх и пустую первую колонку.

   Maxus43

16 — 03.04.12 — 11:56

Постр.ВыводитьШапкуТаблицы = Ложь;

З.ы. издеваешся?) СП открой хоть немного

  

picom

17 — 03.04.12 — 12:17

(16) сори, туплю

Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену… по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший

Автор cobra77777, 23 июн 2014, 19:27

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте!

Как выгрузить таблицу значений в excel ?



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

если помогло нажмите: Спасибо!


Вывести таблицу значений в excel можно через преобразование ее к табличному документу. Сделать это быстро можно через построитель отчета. Примерно так:


    ТабДок = Новый ТабличныйДокумент;

        Построитель = Новый ПостроительОтчета();

    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТестоваяТаблица);
    Построитель.ВыводитьЗаголовокОтчета = Ложь;
    Построитель.Вывести(ТабДок );

    ИмяФайла = "C:UsersAbisSoftDesktoptest.xls";

    ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS97);
    ЗапуститьПриложение(ИмяФайла);

Недостаток в том, что работает только в толстом клиенте.


Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


сделал через таблицу значений (ТЗ) выгрузку в excel, но выгружается только ОТЧЕСТВО (Результат.xls и КОД прикреплён). Где подправить?


i = 1;

Для Каждого Стр из ТЗ Цикл

Лист.Cells (i,1).Value = Стр.СтраховойНомер;
Лист.Cells (i,2).Value = Стр.Фамилия;
Лист.Cells (i,3).Value = Стр.Имя;
Лист.Cells (i,4).Value = Стр.Отчество;

КонецЦикла;


Для размышления тебе…

i = 1;

Для Каждого Стр из ТЗ Цикл
i = i + 1;
Лист.Cells (i,1).Value = Стр.СтраховойНомер;
Лист.Cells (i,2).Value = Стр.Фамилия;
Лист.Cells (i,3).Value = Стр.Имя;
Лист.Cells (i,4).Value = Стр.Отчество;

КонецЦикла;

Добавлено: 29 июн 2014, 03:39


(Только не спрашивай почему вывод у тебя получается лесенкой = )) )

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


Да спасибо. Всё выгрузилось только в ШАХМАТНОМ ПОРЯДКЕ (см.Результат.xls), а как сделать в нормальном варианте (см.внизу) ?

Страховой номер  Фамилия   Иия    Отчество
111-222-333 44   Иванов    Иван   Иванович

и т.д.

Добавлено: 30 июн 2014, 09:03


Куда копать может кто подскажет ?


Нет, не спросил, почему лесенкой… спросил, почему в ШАХМАТНОМ ПОРЯДКЕ :ooifh::D :D

Народная мудрость: Программу встречают по интерфейсу


Тема уже совсем не актуальна.


Понравилась статья? Поделить с друзьями:
  • 1с сохранить ведомость в excel
  • 1с сохранить в excel на клиенте
  • 1с сохранить excel с листами
  • 1с сохранение табличного документа в файл excel
  • 1с сохранение печатной формы в word