8.х Форма выбора данных из таблицы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sergey-911, 5 окт 2010.

  1. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток уважаемые.
    Есть справочник. Его заполнение планируется организовать путем формы добавления данных. Тут все понятно. Для этого создаем новый объект конфигурации - справочник, затем создаем форму "ФормаЭлемента", позволяющую добавлять данные. А дальше необходимо дать пользователю возможность из БД MS SQL сервер выбирать данные аналогичного справочника. Для этого на форме добавления данных делаю кнопку "Добавить". При нажатии на нее должна отображаться форма с таблицей, отображающая таблицу БД MS SQL, с кнопкой "Выбрать запись". Пользователь ищет нужную запись таблицы, нажимает "Выбрать запись" и большинство реквизитов в форме добавления "ФормаЭлемента" должны быть заполнены запросом из БД MS SQL. Как подключиться к MS SQL, отобразить нужные данные в таблице формы я знаю. Как открыть форму при нажатии на кнопку "Выбрать запись" - тоже найду по форуму.
    У меня вопрос вот какого плана. В каком объекте конфигурации 1С создать данную форму выбора данных. Ведь в 1С нельзя создать отдельно форму, как в др. визуальных языках программирования. Я предполагаю, что форму выбора данных будет правильней создать в этом же справочнике - "ФормаВыбора". Правильно ли это?
    В каком объектеправильно создавать формы, которые не являются частью справочника? А также формы, которые должны быть самостоятельными - т.е. не относятся ни к справочникам, ни к отчетам, ни к т.п.
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Отдельную форму создать можно. Смотрите в дереве метаданных - > общие формы.
    Другое дело - насколько необходимо создавать отдельную форму. Если у вас из внешней БД заполняется только один справочник, то логичнее все же форму создать в нем я думаю.
  3. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    А я бы использовал
    Код:
    ТаблицаЗначений.ВыбратьСтроку
    
    :)
  4. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Спасибо Stack_G, отличный вариант! :angry:

    Для примера, вдруг пригодится кому:
    Код:
    ИмяФайла = "C:\Program Files\TelSpr\ZapKniga.mdb";
    СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
    + ИмяФайла + ";Jet OLEDB:Database Password=";	
    // Создание объекта установки связи с источником данных
    Connection = Новый COMОбъект("ADODB.Connection");
    // Подключение к источнику данных	
    Попытка
    Connection.Open(СтрокаПодключения);
    Исключение
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/сообщить')">		Сообщить(ОписаниеОшибки() );</span>
    Возврат;
    КонецПопытки;
    // Создание объекта выполнения команды
    Command = Новый COMОбъект("ADODB.Command");
    // Указание активного соединения
    Command.ActiveConnection = Connection;
    // Определение текста команды
    Command.CommandText = "SELECT * FROM vw_Munits";
    // Определение типа команды
    Command.CommandType = 1;
    //188 Глава 5
    // Создание объекта набора записей
    RS = Новый COMОбъект("ADODB.RecordSet");
    // Выполнение и получение набора данных
    RS = Command.Execute();
    
    //Коолонки таблицы значений
    ТаблицаЗначений = Новый ТаблицаЗначений;
    Для НомерКолонки = 0 По RS.Fields.Count-1 Цикл
    НазваниеКолонки = RS.Fields.Item(НомерКолонки).Name;
    ТаблицаЗначений.Колонки.Добавить(НазваниеКолонки);
    КонецЦикла;
    
    //Строки таблицы значений
    Пока RS.EOF() = 0 Цикл 
    НоваяСтрока = ТаблицаЗначений.Добавить();
    Для НомерКолонки = 0 По RS.Fields.Count-1 Цикл
    НазваниеКолонки = RS.Fields.Item(НомерКолонки).Name;
    Значение = RS.Fields(НазваниеКолонки).Value;
    НоваяСтрока[НазваниеКолонки] = Значение; 
    КонецЦикла;
    RS.MoveNext();
    КонецЦикла;	
    
    //Выбор строки
    Строка = ТаблицаЗначений.ВыбратьСтроку("Выберите строку тыблицы");
    
    //Вывод результата
    Для НомерКолонки = 0 По ТаблицаЗначений.Колонки.Количество() - 1 Цикл
    ВыбраннаяСтрока = Строка[НомерКолонки];       
    Сообщить(ВыбраннаяСтрока);
    КонецЦикла;	
    
    

Поделиться этой страницей