Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 01:51

Данные в общий модуль и обратно

Автор Seolkin, 28 сен 2012, 12:47

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

Seolkin

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

Вот есть у меня общий модуль "КнигаЭкселя"

Функция ПолучитьКнигу(Книга, Лист, ВсегоСтрок)Экспорт
Попытка
Эксель=Создать Новый ComОбъект(Excel.Application);
Исключение
Сообщить(ОписаниеОшибки);
Возврат;
КонецПопытки
Книга=Эксель.WorkBooks.Open("N:\Пароли от почты\Пароли.xls");
Лист=Книга.WorkSheets("Лист3");
ВсегоСтрок=Лист.Cells(1,1).SpecialCells.Row;
КонецФункции


И предположим у меня справочник "Пароли почты" с необходимыми реквизитами и кнопкой "Запустить", по нажатию которой забираются все необходимые данные из общего модуля. А как сделать так, что бы он в начале передавал необходимые данные общему модулю, а потом забирал другие данные?

к примеру:
Книга=Эксель.WorkBooks.Open("N:\Пароли от почты\Пароли.xls");
Лист=Книга.WorkSheets("Лист3");

тут могут быть разные пути к файлам экселя и соответственно разные имена листов. Можно ли как-то в начале передавать общему модулю путь к книге и имя листа, а потом забирать "Книга", "Лист" и "Всего строк"?

Я прекрасно понимаю, что этот код очень глупый, но хочу сделать именно таким путём.

Slin

почему нет?
введите дополнительные параметры к функции, в которых будете передавать необходимые данные
skype: slin-dev

Seolkin

Цитироватьвведите дополнительные параметры к функции, в которых будете передавать необходимые данные
Мысль ясна, спасибо, но не совсем понял как это сделать, можете пример написать (Ну или хотя бы подскажите куда копать)

Slin

Функция ПолучитьКнигу(ПутьКниги, ИмяЛиста, Книга, Лист, ВсегоСтрок)Экспорт
    Попытка
        Эксель= Новый ComОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки
    Книга=Эксель.WorkBooks.Open(ПутьКниги);
    Лист=Книга.WorkSheets(ИмяЛиста);
    ВсегоСтрок=Лист.Cells(1,1).SpecialCells.Row;
КонецФункции
skype: slin-dev

Seolkin

Спасибо большое, не думал что так всё просто будет. Я думал надо будет через "получить форму". :bleh: Только Он в вашем коде в общем модуле ругается на "Возврат", требует какие-то параметры к нему. Если этот код использовать в модуле формы - то отлично работает.

{ОбщийМодуль.КнигаЭкселя.Модуль(7,9)}: Ожидается выражение
Возврат<<?>>; (Проверка: Сервер)


Я так понимаю, что из-за того что ругается он не может получить "Всего строк"

Код модуля в форме справочника "БланкиПользователей"
&НаКлиенте
Процедура Команда1(Команда)
ПутьКниги="N:\new___УВЦ\IP и пароли\Пароли от почты @MTKP.xls";
ИмяЛиста="Лист3";
КнигаЭкселя.ПолучитьКнигу(ПутьКниги);
КнигаЭкселя.ПолучитьКнигу(ИмяЛиста);
Сообщить(КнигаЭкселя.ПолучитьКнигу(ВсегоСтрок));
КонецПроцедуры


Припопытке использовать код, появляется надпись, что переменная "ВсегоСтрок не определена"...

Если я спрашиваю уж совсем элементарные вещи, то можете пожалуйста дать ссылку, где можно нормально изучить "Общий модуль"?
А то я ничего не нашёл на этот счёт, только описания нескольких примеров.

Slin

так как это функция, следует использовать не
Возврат;a хотя бы
Возврат "";или заменить ее на процедуру

Добавлено: 28 сен 2012, 23:38


Использовать нужно примерно так
&НаКлиенте
Процедура Команда1(Команда)
    ПутьКниги="N:\new___УВЦ\IP и пароли\Пароли от почты @MTKP.xls";
    ИмяЛиста="Лист3";
    Книга = 0; Лист = 0; ВсегоСтрок = 0;
    КнигаЭкселя.ПолучитьКнигу(ПутьКниги, ИмяЛиста,  Книга, Лист, ВсегоСтрок );
    Сообщить(ВсегоСтрок);
КонецПроцедуры
skype: slin-dev

Seolkin

Теперь всё полностью понял))) Большое спасибо=)))

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск