Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Достать из КИ Организации WebСайт и Email

Достать из КИ Организации WebСайт и Email
Я
   Александр43
 
25.07.19 - 09:26
Есть запрос, который вытаскивает все типы из контактной информации (КИ). Необходимо достать WebСайт и Email организации по типу данных, с привязкой к определенной организации.
Еще новичок в 1с, поэтому испытываю некоторые трудности. В параметрах "Тип" нужно использовать массив, чтобы в дальнейшем через выборку реализовать поиск нужной информации. Пожалуйста разъясните, как правильно сделать массив и выборку. Или может это можно сделать как-то проще?




Запрос.Текст = "ВЫБРАТЬ
                         |  КонтактнаяИнформация.Тип КАК Тип,
                         |  КонтактнаяИнформация.Представление КАК Представление
                         |ИЗ
                         |  РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                         |ГДЕ
                         |  КонтактнаяИнформация.Объект = &Организация
                         |  И КонтактнаяИнформация.Тип В(&Типы)
                         |ИТОГИ ПО
                         |  Тип" ;
        
        
         Запрос.УстановитьПараметр("Организация", Организация);
         Запрос.УстановитьПараметр("Тип",  );
         Результат = Запрос.Выполнить();
 
 
   МимохожийОднако
 
1 - 25.07.19 - 09:29
Посмотри какой тип значения у параметра Тип в твоём запросе. Его и добавить в массив.
   Александр43
 
2 - 25.07.19 - 09:42
(1) МассивТипыДанных = Новый Массив;
         МассивТипыДанных.Добавить(Тип("Перечисления.ТипыКонтактнойИнформации.ЭлектроннойПочты"));
         МассивТипыДанных.Добавить(Тип("Перечисления.ТипыКонтактнойИнформации.ВебСтраница"));
         
         Запрос.Текст = "ВЫБРАТЬ
                         |  КонтактнаяИнформация.Тип КАК Тип,
                         |  КонтактнаяИнформация.Представление КАК Представление
                         |ИЗ
                         |  РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                         |ГДЕ
                         |  КонтактнаяИнформация.Объект = &Организация
                         |  И КонтактнаяИнформация.Тип В(&Типы)
                         |ИТОГИ ПО
                         |  Тип" ;
         
        
         Запрос.УстановитьПараметр("Организация", Организация);
         Запрос.УстановитьПараметр("Тип", МассивТипыДанных);
         Результат = Запрос.Выполнить();
Т.е получается как-то так?
   МимохожийОднако
 
3 - 25.07.19 - 09:46
(2) Ну так и проверь )
   МимохожийОднако
 
4 - 25.07.19 - 09:47
Возможно правильнее как-то так  МассивТипыДанных.Добавить(Перечисления.ТипыКонтактнойИнформации.ЭлектроннойПочты);
   Александр43
 
5 - 25.07.19 - 09:58
(4) А выборка такая будет? Или что-то не так делаю?
Пока Выборка.Следующий() Цикл
            
            ВебСтраница = "";
            АдресЭлектроннойПочты = "";
            ВыборкаКИ = Выборка.Выбрать();
         Пока ВыборкаКИ.Следующий() Цикл
                ВебСтраница = ВебСтраница + ВыборкаКИ.Представление;
                АдресЭлектроннойПочты = АдресЭлектроннойПочты + ВыборкаКИ.Представление;
         КонецЦикла;
   МимохожийОднако
 
6 - 25.07.19 - 10:00
(5) Отладчиком пользоваться умеешь? Консоль запросов? Быстрее посмотреть у себя, чем гадать на форуме. Не надо стесняться. Сначала на консоли отладь. Потом воткни запрос в код обработки и смотри отладчиком.
   Александр43
 
7 - 25.07.19 - 10:57
(6) Данные получает, ноо их заменяет потом на последние полученные данные. Тоесть я получил данные веб страницы, а они потом заменились Майлом
 Пока Выборка.Следующий() Цикл
            ВебСтраница = "";
            АдресЭлектроннойПочты = "";
            ВыборкаКИ = Выборка.Выбрать();
             Пока ВыборкаКИ.Следующий() Цикл
                ВебСтраница = ВебСтраница + ВыборкаКИ.Представление;
                АдресЭлектроннойПочты = АдресЭлектроннойПочты + ВыборкаКИ.Представление;
             КонецЦикла;    
                    
         КонецЦикла;
   catena
 
8 - 25.07.19 - 11:18
(7)А зачем два цикла? А зачем обнулять переменный на каждой итерации? А зачем писать одно и то же в две разные переменные? А где проверка - майл это или веб?
   Александр43
 
9 - 25.07.19 - 12:05
(8) Еще только обучаюсь и не все нюансы знаю, по этому сюда и написал, чтобы помогли разобраться
   Александр43
 
10 - 25.07.19 - 12:08
(8) Научите пожалуйста, как правильно это реализовать
   catena
 
11 - 25.07.19 - 12:32
(10)По предыдущим вопросам все исправил?
   Александр43
 
12 - 25.07.19 - 12:47
(11) Если я убираю 2 цикл, то данные вообще тогда не находит. Пока так и осталось

Запрос.Текст = "ВЫБРАТЬ
                         |  КонтактнаяИнформация.Тип КАК Тип,
                         |  КонтактнаяИнформация.Представление КАК Представление
                         |ИЗ
                         |  РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                         |ГДЕ
                         |  КонтактнаяИнформация.Объект = &Организация
                         |  И КонтактнаяИнформация.Тип В(&Типы)
                         |ИТОГИ ПО
                         |  Тип" ;
         Запрос.УстановитьПараметр("Организация", Организация);
         Запрос.УстановитьПараметр("Типы", МассивТипыДанных);
         Результат = Запрос.Выполнить();
         Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
         Пока Выборка.Следующий() Цикл
            ВебСтраница = "";
            АдресЭлектроннойПочты = "";
            ВыборкаКИ = Выборка.Выбрать();
             Пока ВыборкаКИ.Следующий() Цикл
                ВебСтраница = ВебСтраница + ВыборкаКИ.Представление;
                АдресЭлектроннойПочты = АдресЭлектроннойПочты + ВыборкаКИ.Представление;
             КонецЦикла;    
       
         КонецЦикла;
   catena
 
13 - 25.07.19 - 12:49
(12)Прошу прощения, я не увидела, что там итоги. Тогда еще вопрос: Для чего в запросе итоги?
   hhhh
 
14 - 25.07.19 - 12:51
(12) а где тип тут проверяете?
если выборка.тип = хрензнаетчему тогда
ВебСтраница = ВыборкаКИ.Представление;
   Александр43
 
15 - 25.07.19 - 13:09
(13) Мне в пакет нужно вывести Сайт и Mail, конкретной организации. Запрос их по типу данных находит и выводит
   hhhh
 
16 - 25.07.19 - 13:12
(15) тогда в чем вопрос? если выводит?
   catena
 
17 - 25.07.19 - 13:13
(15)Я задачу еще из первого поста поняла. Итоги как в этом помогают?
   Александр43
 
18 - 25.07.19 - 14:00
(16) С запросом я сам разбираюсь, проблемы с Выборкой, не умею ее правильно оформлять, поэтому столько ошибок и далее получается охинеяя. Мне бы какой-нибудь пример, как оформить правильно, чтобы дальше самому по сидеть и по разбираться.
   catena
 
19 - 25.07.19 - 14:43
(18) нормально у тебя выборка оформлена. У тебя проблема с логикой и переменными. Запиши по-русски, как должно работать, а поттм уже на одинэсовский пепеводи.
   Александр43
 
20 - 25.07.19 - 15:00
(19) Я непонимаю, как сделать проверку то что Mail это Mail, а то если я даже оставлю одну переменную Mail адрес, то при повторном заходе в цикл, он Mail заменит Сайтом, так и выведет.
   catena
 
21 - 26.07.19 - 04:48
(20) Тебе в (14) сказали, как.

Если ВыборкаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.ЭлектроннойПочты Тогда
                АдресЭлектроннойПочты = ВыборкаКИ.Представление;
Иначе
                ВебСтраница = ВыборкаКИ.Представление;
КонецЕсли;
   ДенисЧ
 
22 - 26.07.19 - 07:24
Ну ты хотя бы Митичкина прочти... Или на худой конец Радченко...
Чего гадать-то?
   Александр43
 
23 - 26.07.19 - 15:11
(21) Спасибо, разобрался и всё работает. Если не трудно, то подскажите как сделать чтобы переменная не заменялась при условии если сайтов указано больше 2х. Чтобы по выходу в макете отображались все сайты и страницы
   Has
 
24 - 26.07.19 - 16:20
(23) как вариант - добавлять строку в макет (или туда, откуда ты там потом выводишь) при каждом получении из Выборка

зы: и зачем тогда разные переменные?
   Александр43
 
25 - 26.07.19 - 16:42
(24) Ну да можно и одну переменную, но вроде строку нельзя в макет добавлять (могу ошибаться). Но если сделать одну переменную, он же сплошняком будет выводить всю информацию? Хотелось бы чтобы если переменная содержит уже сайт, в нее еще добавлялись другие сайты, при этом чтобы самый первый сайт не пропадал. А то у меня сейчас получается когда  1 сайт нашелся, он заменяется 2 сайтом и по итогу 2 на макет уходит.
   Has
 
26 - 26.07.19 - 16:52
    ТабДокумент = Новый ТабличныйДокумент;
    //ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИнвентаризацияТоваровНаСкладе_ИНВ3";

    
    Макет = ПолучитьМакет("НазваниеМакетаОтчета");
    
    //{вывод шапки отчета

    ОбластьМакета = Макет.ПолучитьОбласть("ОтчетШапка");
    //ОбластьМакета.Параметры.Заполнить(Шапка);

    ОбластьМакета.Параметры.НазваниеПечатнойФормы = "Отчет о ...";
    ОбластьМакета.Параметры.ЗаПериод = мойОбщийМодуль.Сформировать_ОписаниеПериода(ДатаНачПериода,ДатаКонПериода);
    //ОбластьМакета.Параметры.   =   ;    

    
    ТабДокумент.Вывести(ОбластьМакета);
    //}

    
    //{вывод шапки таблицы

    ОбластьМакета = Макет.ПолучитьОбласть("ТаблицаШапка");
    //ОбластьМакета.Параметры.Заполнить(ШапкаТаблицы);

    //ОбластьМакета.Параметры. = ;

    
    ТабДокумент.Вывести(ОбластьМакета);
    //}    

    
    
    //{вывод СтрокаДанных таблицы

    
    
    ОбластьМакета = Макет.ПолучитьОбласть("ТаблицаСтрокаДанных");
    
    тзДляВывода_КолСтрок=тзДляВывода.Количество();
    
    Для ш=0 По тзДляВывода_КолСтрок-1 Цикл
        
        //    Состояние(""+ш, Окр(ш/КолСтрок*100,0));    

        //Для ш=1 По 1     Цикл //отладка

        стр_тзДляВывода = тзДляВывода.Получить(ш);
        
        
        //ОбластьМакета.Параметры.НомерПоПорядку  = ш+1;

        //ОбластьМакета.Параметры. = ;

        
        ОбластьМакета.Параметры.Заполнить(стр_тзДляВывода);
        
        ТабДокумент.Вывести(ОбластьМакета);
        
    КонецЦикла;
    //}

    
    
    //{вывод ТаблицаПодвал

    
    ОбластьМакета = Макет.ПолучитьОбласть("ТаблицаПодвал");
    
    //ОбластьМакета.Параметры.ИтогоКоличествоОборотДт = тзДляВывода.Итог("КоличествоОборотДт");

    
    
    ТабДокумент.Вывести(ОбластьМакета);
    
    //}

    
    //{вывод ОтчетПодвал

    
    ОбластьМакета = Макет.ПолучитьОбласть("ОтчетПодвал");
    
    //ОбластьМакета.Параметры. = ;

    
    ТабДокумент.Вывести(ОбластьМакета);
    
    //}

    
    //{ Зададим параметры макета

    ТабДокумент.АвтоМасштаб = Истина;
    ТабДокумент.ПолеСверху = 10;
    ТабДокумент.ПолеСлева  = 10;
    ТабДокумент.ПолеСнизу  = 10;
    ТабДокумент.ПолеСправа = 10;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    //ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

    ТабДокумент.ТолькоПросмотр=Истина;
    ТабДокумент.ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ТаблицаШапка");
    
    //{колонтитулы

    //верхний

    ТабДокумент.ВерхнийКолонтитул.Выводить=Истина;
    НачальнаяСтраница = 1 ;
    ТабДокумент.ВерхнийКолонтитул.ТекстСлева="";
    //ТабДокумент.ВерхнийКолонтитул.ТекстВЦентре="["+Склад+"] ["+тОписаниеПериода+"]";

    ТабДокумент.ВерхнийКолонтитул.ТекстСправа="[&Дата] [&Время]";
    //ТабДокумент.ВерхнийКолонтитул.Шрифт    

    
    //нижний

    ТабДокумент.НижнийКолонтитул.Выводить=Истина;
    ТабДокумент.НижнийКолонтитул.ТекстВЦентре="[&НомерСтраницы] из [&СтраницВсего]";
    //}

    
    //}

    ТабДокумент.Показать();



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