Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Фильтр данных выгрузки через список в ТИС 7.7          
inna.innainna84 Подменю пользователя
сообщение 02.05.16, 7:52
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Помогите пожалуйста хочу отфильтровать выгрузку данных через список докуметов т.е. -----ВыбМЛ.
КонецПроцедуры
//*******************************************
Процедура ОбработкаПодбора(Эл,Кон)        
    Если Эл.Вид()="МАРШРУТНЫЙЛИСТ" Тогда
        Если ВыбМЛ.Принадлежит(Эл.ТекущийДокумент()) = 1 Тогда
            Сообщить("Этот Документ уже присутствует в списке");      
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
        ВыбМЛ.ДобавитьЗначение(Эл.ТекущийДокумент(), "МЛ № "+Эл.ТекущийДокумент().НомерДок+ "("+Эл.ТекущийДокумент().ДатаДок+")"+Эл.ТекущийДокумент().Менеджер);       

    КонецЕсли;
КонецПроцедуры
              
//*******************************************

Процедура ЗаполнитьПоБыбМЛ()
    
ТТ.УдалитьСтроки();  
    
    ТТ.НоваяКолонка("МаршрутныйЛист", "Строка", 25, ," Документ");
    ТТ.НоваяКолонка("АвтомобильВодитель", "Строка", 30,,"Автомобиль/Водитель");
    ТТ.НоваяКолонка("Клиент", "Строка",50,,"Клиент (тип)");
    ТТ.НоваяКолонка("Заявка");
    
    ТТ.НоваяКолонка("НомерЗаявки");
    ТТ.НоваяКолонка("Вес","Число", 10,3);
    ТТ.НоваяКолонка("Пробег","Число", 10,2);
    ТТ.НоваяКолонка("Приезд", "Строка", 10);
    ТТ.НоваяКолонка("Время","Число", 10,0);    

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)    
    |ОбрабатыватьДокументы Проведенные;
    |Период с Дата1 по Дата2;
    |ТекДок = Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент;
    |Экспедитор = Документ.МАРШРУТНЫЙЛИСТ.Экспедитор;
        |НомерЗаявкиТА=Документ.МАРШРУТНЫЙЛИСТ.НомерЗаявкиТА;
    |Клиент = Документ.МАРШРУТНЫЙЛИСТ.Клиент;
    |Заявка = Документ.МАРШРУТНЫЙЛИСТ.Заявка;
    |Вес = Документ.МАРШРУТНЫЙЛИСТ.Заявка.Вес;
    |Группировка Клиент без групп;
    |Группировка Заявка;
    |Условие(ТекДок в ВыбМЛ);
    |"//}}ЗАПРОС
;
    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Пока Запрос.Группировка("Клиент")=1 Цикл
    Пока Запрос.Группировка("Заявка")=1 Цикл
    
        ТТ.НоваяСтрока();
                   ТТ.МаршрутныйЛист = ""+Запрос.ТекДок.НомерДок+ " от "+Запрос.ТекДок.ДатаДок;
           ТТ.АвтомобильВодитель = ""+Запрос.ТекДок.Автомобиль.Наименование+" / "+Запрос.ТекДок.Водитель.Наименование;
            ТТ.Клиент =Запрос.Клиент.Наименование;
        ТТ.Заявка =Запрос.Заявка;
        ТТ.Вес =Запрос.Вес;                             
        ТТ.НомерЗаявки =Запрос.НомерЗаявкиТА;
        
    КонецЦикла;    
КонецЦикла;            
    
  
КонецПроцедуры    // ЗаполднитьПоБыбМЛ


//**************************************
              
Процедура ВыгрузитьКонтрагентов()            
    
    ТекстВыгрузки=СоздатьОбъект("Текст");
    СтрокаТекста="";
    ДокЗапрос = Анализатор.СоздатьДокумент();
    ArrayOfDEX_Import = ДокЗапрос.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import");
    
    // Цикл по выборке
    // Для примера используем один эдемент
    
        
    Запрос=СоздатьОбъект("Запрос");
    
    ТекстЗапроса="
        |ПЕРИОД С Дата1 По Дата2;
        |Контрагент = Справочник.Контрагенты.ТекущийЭлемент;
        |Группировка Контрагент без групп упорядочить по Контрагент.Наименование;
           |";  
      
        СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
             
                  ** Если глФильтрПо ВыбМЛ *** сюда

          Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Контрагент,,,СписокКонтрагентов,,,,,")=0 Тогда
            Возврат;
        КонецЕсли;
           
        
        Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
            Предупреждение("Запрос по Партиям не выполнился!");
            Возврат;
        КонецЕсли;  
        
         ТекстВыгрузки.ДобавитьСтроку(СтрокаТекста);
      
         Пока Запрос.Группировка("Контрагент")=1 Цикл  
             
    DEX_Import = ArrayOfDEX_Import.СоздатьПодчиненныйЭлемент("DEX_Import");
    
    Comp_Id = DEX_Import.СоздатьПодчиненныйЭлемент("Comp_Id");
    Comp_Id.Значение = Запрос.Контрагент.Код;
    СтрокаТекста=СокрЛП(Строка(Comp_Id))+";";
    
    Comp_Name = DEX_Import.СоздатьПодчиненныйЭлемент("Comp_Name");
    Comp_Name.Текст =Запрос.Контрагент. Наименование;
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Comp_Name))+";";
    
    Address = DEX_Import.СоздатьПодчиненныйЭлемент("Address");
    Address.Текст =Запрос.Контрагент.ПочтовыйАдрес;
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Address))+";";
    
    lat = DEX_Import.СоздатьПодчиненныйЭлемент("lat");
    lat.Значение =Запрос.Контрагент.Широта1; // Широта, если известна
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(lat))+";";
    
        
    lng = DEX_Import.СоздатьПодчиненныйЭлемент("lng");
    lng.Значение =Запрос.Контрагент.Долгота1; // Долгота, если известна
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(lng))+";";
    
    
    TimeWork_Beg = DEX_Import.СоздатьПодчиненныйЭлемент("TimeWork_Beg");
    TimeWork_Beg.Текст = СокрЛП(Запрос.Контрагент.ВремяРаботыНачало);
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(TimeWork_Beg))+";";
    
    TimeWork_End = DEX_Import.СоздатьПодчиненныйЭлемент("TimeWork_End");
    TimeWork_End.Текст = СокрЛП(Запрос.Контрагент.ВремяРаботыКонец);
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(TimeWork_End))+";";  
    
    TimeBreak_Beg = DEX_Import.СоздатьПодчиненныйЭлемент("TimeBreak_Beg");
    TimeBreak_Beg.Текст = СокрЛП(Запрос.Контрагент.ВремяОбедаНачало);
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(TimeBreak_Beg))+";";
    
    TimeBreak_End = DEX_Import.СоздатьПодчиненныйЭлемент("TimeBreak_End");
    TimeBreak_End.Текст = СокрЛП(Запрос.Контрагент.ВремяОбедаКонец);
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(TimeBreak_End))+";";  

    
    //Unload_Time = DEX_Import.СоздатьПодчиненныйЭлемент("Unload_Time");
//    Unload_Time.Текст = СокрЛП(ВремяРазгрузки);
    
    
    ProductGroup_Id = DEX_Import.СоздатьПодчиненныйЭлемент("ProductGroup_Id");
    ProductGroup_Id.Значение = 0; // Группа товаров
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(ProductGroup_Id))+";";
    
    
    CompGroup_Id = DEX_Import.СоздатьПодчиненныйЭлемент("CompGroup_Id");
    CompGroup_Id.Значение = 0; // Группа товаров
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(CompGroup_Id))+";";
    
    НомерЗаявкиТА="НЕТ"+"-"+(Запрос.Контрагент.КодСоответствия+ДатаМаршрутов);
    Request_Num = DEX_Import.СоздатьПодчиненныйЭлемент("Request_Num");
    Request_Num.Значение = НомерЗаявкиТА; // Группа товаров
    СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Request_Num))+";";
    
    //Qty = DEX_Import.СоздатьПодчиненныйЭлемент("Qty");
    //Qty.Значение = Количество;
    
//    QtyW = DEX_Import.СоздатьПодчиненныйЭлемент("QtyW");
    //QtyW.Значение = Масса;
    
    
    //Объем = 0;
    //QtyV = DEX_Import.СоздатьПодчиненныйЭлемент("QtyV");
    //QtyV.Значение = Объем;  
    ТекстВыгрузки.ДобавитьСтроку(СтрокаТекста);
    КонецЦикла;                                                                                              


        СтрРез = "";

    
    //"c:\response.xml";
    //Текст = СоздатьОбъект("Текст");
    //Текст.ДобавитьСтроку("Session_Ident="+ИДСессии+"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml&Comps=<?xml version='1.0'?>");
       ///Текст.ДобавитьСтроку(ПреобразоватьСтрокуВУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML));
    //              
    //ИмяФайлаЗапроса = "c:\query.txt";
    //Текст.Записать(ИмяФайлаЗапроса);

    ПараметрыЗапроса = "Session_Ident="+ИДСессии+
        "&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml&Comps=<?xml version=""1.0""?>" +
        ПреобразоватьСтрокуВУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML);
    
        
    Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_Import_Request_JSON", ПараметрыЗапроса, 2, СтрРез, 1);
    
    РезультатЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
    
    
КонецПроцедуры

Домовик Подменю пользователя
сообщение 04.05.16, 11:55
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

... не могу разобрать код в нижней процедуре....

вопрос не понятен. ключевое условие в запросе есть:
    |Условие(ТекДок в ВыбМЛ);


в процедуре ЗаполнитьПоБыбМЛ() почему-то не пользуетесь Запрос.Выгрузить(ТТ).
Также для наглядности ТТ(таблицу значений) временно вынесите как элемент на форму. и будете видеть содержание таблицы, которую вам сформирует запрос.

читайте о методах Выгрузить() для запроса, Загрузить для таблиц значений.

korol1091 Подменю пользователя
сообщение 04.05.16, 15:57
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 49
Спасибо сказали: 9 раз
Рейтинг: 0

Нужно еще передать параметр "ВыбМЛ" в запрос
Запрос.УстановитьПараметр("ВыбМЛ", ВыбМЛ);


И условие сделать таким
| Условие ТекДок в (&ВыбМЛ);

Спасибо сказали: Домовик,

Домовик Подменю пользователя
сообщение 04.05.16, 20:17
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

это семерка.

korol1091 Подменю пользователя
сообщение 04.05.16, 21:43
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 49
Спасибо сказали: 9 раз
Рейтинг: 0

LOL
Я работаю в 77 и 8 - у меня уже шарики за ролики заходят

nysysimara Подменю пользователя
сообщение 05.05.16, 6:58
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Цитата(inna.innainna84 @ 02.05.16, 7:52) *
|Условие(ТекДок в ВыбМЛ);

Для базы ДБФ этот запрос отработает правильно
SQL не понимает такого условия

два варианта решения:
1) Запрос.ВключитьSQL(0)
но время выполнения может увеличится в разы

2) заменить на
|Условие(ВыбМЛ.Принадлежит(ТекДок)=1);


не помню что отработает быстрее, попробуйте

Сообщение отредактировал nysysimara - 05.05.16, 6:59


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 14:27
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!