Вход | Регистрация

1С:Предприятие ::

Метки: 

Передать параметры из одной формы в другую

Я
   Alex70
 
02.08.18 - 08:04
Всем привет! Есть две формы, главная и форма выбора файла, на первой есть кнопка загрузить, по ней открывается форма выбора файла, в ней указывается имя файла, номер строки, и номер столбца. Вопрос в том как передать параметры ИЗ формы ВЫБОРА ФАЙЛА в ГЛАВНУЮ форму?
________________________________________
Главная форма
Процедура ЗагрузкаНоменклатурыНажатие(Элемент)
    
    // Очищаем ТЧ

    СписокНоменклатуры.Очистить();
    
    ДругаяФорма = ЭтотОбъект.ПолучитьФорму("ФормаЗагрузкиНоменклатурыИзЭксель");
    Результат = ДругаяФорма.ОткрытьМодально();
    
    НомерЛиста = 1;
    
    Если ПустаяСтрока(ИмяФайла) Тогда 
        Предупреждение("Выберите файл Excel!",, "Внимание!");
        Возврат;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(НомерСтроки) ИЛИ НомерСтроки = 0 Тогда
        Предупреждение("Заполните значение: Номер строки!",, "Внимание!");
        Возврат;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(НомерСтолбца ИЛИ НомерСтолбца = 0) Тогда
        Предупреждение("Заполните значение: Номер столбца!",, "Внимание!");
        Возврат;
    КонецЕсли;
    
    //подключаемся к эксель

    Книга = Неопределено;
    Попытка
        Книга = ПолучитьCOMОбъект(ИмяФайла);
        Книга.Application.DisplayAlerts = False;
    Исключение
        Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    Лист = Неопределено;
    Попытка
        Лист = Книга.WorkSheets(НомерЛиста);
    Исключение
        Предупреждение(ОписаниеОшибки(),, "Внимание !");
        Книга.Application.Quit();
        Возврат;
    КонецПопытки;
    
    ОбластьПоиска = Лист.Cells;
    НачалоЛиста = Лист.Cells(1, 1);
    КоличествоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
    КоличествоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;


    ОбластьНоменклатура = ОбластьПоиска.Find("Номенклатура", НачалоЛиста);
    НомерКолонкиНоменклатура = 0;
    Если ОбластьНоменклатура <> Неопределено Тогда
        НомерКолонкиНоменклатура = ОбластьНоменклатура.Column;
    Иначе
        Сообщить("Не найдена колонка ""Номенклатура""", СтатусСообщения.Важное);
        Книга.Application.Quit();
        Возврат;
    КонецЕсли;
        
    // считываем по строчно тело файла

    Для НС = НомерСтроки по КоличествоСтрок Цикл

    ОбработкаПрерыванияПользователя();//указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break


    НоваяСтрока = СписокНоменклатуры.Добавить();
        ТекущееЗначение = Лист.Cells(НС, НомерСтолбца).Text;
        НоваяСтрока.Номенклатура = ТекущееЗначение;        
    КонецЦикла;
    
    Книга.Application.Quit();
    
КонецПроцедуры
________________________________________
Форма ВЫБОРА ФАЙЛА
Процедура ПолеВводаИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;

    ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    ДиалогВыбораФайла.Фильтр                  = "СписокНоменклатур|*.xls;*.xlsx";
    ДиалогВыбораФайла.Заголовок               = "Выберите файл";
    ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь;
    ДиалогВыбораФайла.ИндексФильтра           = 0;

    Если НЕ ДиалогВыбораФайла.Выбрать() Тогда
        Возврат;
    КонецЕсли;

    ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
КонецПроцедуры


Процедура ЗагрузитьИзФайлаНажатие(Элемент)
    
    //// Очищаем ТЧ

    //СписокНоменклатуры1.Очистить();

    //

    //НомерЛиста = 1;

    //

    //Если ПустаяСтрока(ИмяФайла) Тогда 

    //    Предупреждение("Выберите файл Excel!",, "Внимание!");

    //    Возврат;

    //КонецЕсли;

    //

    //Если НЕ ЗначениеЗаполнено(НомерСтроки) ИЛИ НомерСтроки = 0 Тогда

    //    Предупреждение("Заполните значение: Номер строки!",, "Внимание!");

    //    Возврат;

    //КонецЕсли;

    //

    //Если НЕ ЗначениеЗаполнено(НомерСтолбца ИЛИ НомерСтолбца = 0) Тогда

    //    Предупреждение("Заполните значение: Номер столбца!",, "Внимание!");

    //    Возврат;

    //КонецЕсли;

    //

    //////////////////////////////////////////////////////////////////////


    ////подключаемся к эксель

    //Книга = Неопределено;

    //Попытка

    //    Книга = ПолучитьCOMОбъект(ИмяФайла);

    //    Книга.Application.DisplayAlerts = False;

    //Исключение

    //    Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");

    //    Сообщить(ОписаниеОшибки());

    //    Возврат;

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

    //

    //Лист = Неопределено;

    //Попытка

    //    Лист = Книга.WorkSheets(НомерЛиста);

    //Исключение

    //    Предупреждение(ОписаниеОшибки(),, "Внимание !");

    //    Книга.Application.Quit();

    //    Возврат;

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


    ////    //подключаемся к эксель

    ////Попытка

    ////Excel = Новый COMОбъект("Excel.Application");

    ////Excel.WorkBooks.Open(ИмяФайла);

    ////Состояние("Обработка файла Microsoft Excel...");

    ////Исключение

    ////Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");

    ////Сообщить(ОписаниеОшибки());

    ////Возврат;

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


    ////Попытка

    //////Открываем необходимый лист

    ////Книга.Sheets(1).Select(); // лист 1, по умолчанию

    ////Исключение

    //////Закрываем Excel

    ////Книга.ActiveWorkbook.Close();

    ////Excel = 0;

    ////Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");

    ////ОтменитьТранзакцию();

    ////Возврат;

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


    ////Получим количество строк и колонок.

    ////В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel

    //

    //ОбластьПоиска = Лист.Cells;

    //НачалоЛиста = Лист.Cells(1, 1);

    //КоличествоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

    //КоличествоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;



    //ОбластьНоменклатура = ОбластьПоиска.Find("Номенклатура", НачалоЛиста);

    //НомерКолонкиНоменклатура = 0;

    //Если ОбластьНоменклатура <> Неопределено Тогда

    //    НомерКолонкиНоменклатура = ОбластьНоменклатура.Column;

    //Иначе

    //    Сообщить("Не найдена колонка ""Номенклатура""", СтатусСообщения.Важное);

    //    Книга.Application.Quit();

    //    Возврат;

    //КонецЕсли;

    //    

    //// считываем по строчно тело файла

    //Для НС = НомерСтроки по КоличествоСтрок Цикл // НС указываем с какой строки начинать обработку


    ////Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(КоличествоСтрок = 0,0,((100*НС)/КоличествоСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");


    //ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break


    //НоваяСтрока = СписокНоменклатуры1.Добавить();


    //    //Для НомерКолонкиНоменклатура = НомерСтолбца по СписокНоменклатуры1.Колонки.Количество() Цикл

    //        ////заполняем строку значениями

    //        ТекущееЗначение = Лист.Cells(НС, НомерСтолбца).Text;

    //    //    ИмяКолонки = СписокНоменклатуры1.Колонки[НомерКолонкиНоменклатура-1].Имя;

    //        НоваяСтрока.Номенклатура = ТекущееЗначение;

    //    //КонецЦикла;


    //КонецЦикла;

    //

    //Книга.Application.Quit();

    //

    ////ОбластьПоиска = Лист.Cells;

    ////НачалоЛиста = Лист.Cells(1, 1);

    ////КоличествоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

    ////КоличествоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;

    ////

    ////ОбластьНоменклатура = ОбластьПоиска.Find("Номенклатура", НачалоЛиста);

    ////НомерКолонкиНоменклатура = 0;

    ////Если ОбластьНоменклатура <> Неопределено Тогда

    ////    НомерКолонкиНоменклатура = ОбластьНоменклатура.Column;

    ////Иначе

    ////    Сообщить("Не найдена колонка ""Номенклатура""", СтатусСообщения.Важное);

    ////    Книга.Application.Quit();

    ////    Возврат;

    ////КонецЕсли;


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

Процедура ВыполнитьНажатие(Элемент)
    
    СтруктураЗначений = Новый Структура;
    СтруктураЗначений.Вставить("ИмяФайла", ИмяФайла);
    СтруктураЗначений.Вставить("НомерСтроки", НомерСтроки);
    СтруктураЗначений.Вставить("НомерСтолбца", НомерСтолбца);

    ЭтаФорма.Закрыть(СтруктураЗначений);
КонецПроцедуры
 
  Рекламное место пустует
   Alex70
 
1 - 02.08.18 - 08:06
Ругается что в ГЛАВНОЙ ФОРМЕ не определена переменная ИмяФайла, НомерСтроки, НомерКолонки
   Остап Сулейманович
 
2 - 02.08.18 - 08:08
(1) Ты же возвращаешь структуру. Какая переменная?
Вместо
Если ПустаяСтрока(ИмяФайла) Тогда
пиши
Если ПустаяСтрока(Результат.ИмяФайла) Тогда
и так дальше.
   Alex70
 
3 - 02.08.18 - 08:13
(2) Спасибо огромное)


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует