&НаСервере
Функция ПолучитьДанныеПоДокументу(TableName)
// Получаем номенклатуру для выгрузки
Запрос = Новый Запрос("ВЫБРАТЬ
| ИнвентаризацияНоменклатура.Штрихкод КАК Штрихкод,
| ИнвентаризацияНоменклатура.Факт КАК Количество,
| ИнвентаризацияНоменклатура.Товар.Артикул КАК Артикул,
| ИнвентаризацияНоменклатура.Товар.ПолноеНаименование КАК ПолноеНаименование
|ИЗ
| Документ.Инвентаризация.Номенклатура КАК ИнвентаризацияНоменклатура
|ГДЕ
| ИнвентаризацияНоменклатура.Ссылка = &Ссылка");
Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Массив = Новый Массив;
// Заполняем таблицу данными выборки
Пока Выборка.Следующий() Цикл
Массив.Добавить("INSERT INTO [" + TableName + "] VALUES ("""+Выборка.Штрихкод+""","""+Выборка.Количество+""","""+ Выборка.Артикул+""","""+Выборка.ПолноеНаименование+""")");
КонецЦикла;
Возврат Массив;
КонецФункции
&НаКлиенте
Процедура СохранитьВФайл(Команда)
ИмяФайлаЭксель = "D:\Export.xls"; // Имя создаваемого файла
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "(Excel*.xls)|*.xls";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда
МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
Для Каждого ИмяФайла Из МассивФайлов Цикл
//Файл = Новый Файл(ИмяФайла);
ИмяФайлаЭксель = ИмяФайла;
КонецЦикла;
Иначе
Предупреждение(НСтр("ru = 'Файл(ы) не выбран!'; en = 'File(s) not selected!'"));
КонецЕсли;
// Собираем строку подключения
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;
|Data Source="+ИмяФайлаЭксель+";
|Extended Properties=""Excel 8.0;HDR=No;"";";
// Создаем объект ADOX.Catalog
Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = СтрокаПодключения;
// Создаем таблицу и добавляем в неё два столбца
Table = Новый COMОбъект("ADOX.Table");
Table.Name = "Inventory";
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "Barcode";
Column.Type = 202;
Table.Columns.Append(Column);
Table.Columns.Append("Fact");
Table.Columns.Append("Article");
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "Description";
Column.Type = 202;
Table.Columns.Append(Column);
// Присоединяем таблицу
Для сч = 0 По Catalog.Tables.Count - 1 Цикл
Если Catalog.Tables.Item(сч).Name = Table.Name Тогда
Catalog.Tables.Delete(Table.Name);
Прервать;
КонецЕсли;
КонецЦикла;
Catalog.Tables.Append(Table);
// Создаем соединение
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения);
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandType = 1;
ТЗ = ПолучитьДанныеПоДокументу(Table.Name);
Для сч = 0 По ТЗ.Количество() - 1 Цикл
Command.CommandText = ТЗ[сч];
Command.Execute();
КонецЦикла;
Table = Неопределено;
Catalog = Неопределено;
// Закрываем соединение
Command = Неопределено;
Connection.Close();
Connection = Неопределено;
КонецПроцедуры
Функция ПолучитьДанныеПоДокументу(TableName)
// Получаем номенклатуру для выгрузки
Запрос = Новый Запрос("ВЫБРАТЬ
| ИнвентаризацияНоменклатура.Штрихкод КАК Штрихкод,
| ИнвентаризацияНоменклатура.Факт КАК Количество,
| ИнвентаризацияНоменклатура.Товар.Артикул КАК Артикул,
| ИнвентаризацияНоменклатура.Товар.ПолноеНаименование КАК ПолноеНаименование
|ИЗ
| Документ.Инвентаризация.Номенклатура КАК ИнвентаризацияНоменклатура
|ГДЕ
| ИнвентаризацияНоменклатура.Ссылка = &Ссылка");
Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Массив = Новый Массив;
// Заполняем таблицу данными выборки
Пока Выборка.Следующий() Цикл
Массив.Добавить("INSERT INTO [" + TableName + "] VALUES ("""+Выборка.Штрихкод+""","""+Выборка.Количество+""","""+ Выборка.Артикул+""","""+Выборка.ПолноеНаименование+""")");
КонецЦикла;
Возврат Массив;
КонецФункции
&НаКлиенте
Процедура СохранитьВФайл(Команда)
ИмяФайлаЭксель = "D:\Export.xls"; // Имя создаваемого файла
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "(Excel*.xls)|*.xls";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда
МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
Для Каждого ИмяФайла Из МассивФайлов Цикл
//Файл = Новый Файл(ИмяФайла);
ИмяФайлаЭксель = ИмяФайла;
КонецЦикла;
Иначе
Предупреждение(НСтр("ru = 'Файл(ы) не выбран!'; en = 'File(s) not selected!'"));
КонецЕсли;
// Собираем строку подключения
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;
|Data Source="+ИмяФайлаЭксель+";
|Extended Properties=""Excel 8.0;HDR=No;"";";
// Создаем объект ADOX.Catalog
Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = СтрокаПодключения;
// Создаем таблицу и добавляем в неё два столбца
Table = Новый COMОбъект("ADOX.Table");
Table.Name = "Inventory";
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "Barcode";
Column.Type = 202;
Table.Columns.Append(Column);
Table.Columns.Append("Fact");
Table.Columns.Append("Article");
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "Description";
Column.Type = 202;
Table.Columns.Append(Column);
// Присоединяем таблицу
Для сч = 0 По Catalog.Tables.Count - 1 Цикл
Если Catalog.Tables.Item(сч).Name = Table.Name Тогда
Catalog.Tables.Delete(Table.Name);
Прервать;
КонецЕсли;
КонецЦикла;
Catalog.Tables.Append(Table);
// Создаем соединение
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения);
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandType = 1;
ТЗ = ПолучитьДанныеПоДокументу(Table.Name);
Для сч = 0 По ТЗ.Количество() - 1 Цикл
Command.CommandText = ТЗ[сч];
Command.Execute();
КонецЦикла;
Table = Неопределено;
Catalog = Неопределено;
// Закрываем соединение
Command = Неопределено;
Connection.Close();
Connection = Неопределено;
КонецПроцедуры
Комментариев нет:
Отправить комментарий