Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Внешняя обработка (Выборка документов)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
bodka
&НаСервере
Функция ЗаполнитьТабДок(ТабДок)
    ТабДок.Очистить();
    
    ЭтотОбъект=РеквизитФормыВЗначение("Объект");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    
    
    ОблШапка = Макет.ПолучитьОбласть("Шапка");
    ОблЭлемент = Макет.ПолучитьОбласть("Элемент");
    ОблШапка.Параметры.ДатаОтчета = Формат(ТекущаяДата(),"ДЛФ=DD");
    ТабДок.Вывести(ОблШапка);
    
    Выборка = Документы.ПоступлениеТоваров.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        ОблЭлемент.Параметры.Дата = Формат(Выборка.Дата,"ДЛФ=DD");
        ОблЭлемент.Параметры.Номер = Выборка.Номер;
        ОблЭлемент.Параметры.Ссылка = Выборка.Ссылка;
        ОблЭлемент.Параметры.СуммаДокумента = Выборка.СуммаДокумента;
        ТабДок.Вывести(ОблЭлемент);
    
КонецЦикла;
        
КонецФункции


Вот... По одному конкретному документу я знаю как сделать выборку. А как сделать выборку по Метаданные.Документы и вывести допустим все имена док. я не знаю. Будьте так добры, подскажите
Flexy
Тьфу.Пардон.Смотрел на один код, а скопировал другой.
Делал раньше как-то так:
Для К = 0 По Метаданные.Документы.Количество() - 1 Цикл
     Документ = Метаданные.Документы.Получить(К);
     Имя = Документ.Имя;
     ВыборкаДок = Документы[Имя].Выбрать();
     // дальше обход выборки и удаление
КонецЦикла;
bodka
Цитата(Flexy @ 06.09.11, 11:47) необходимо зарегистрироваться для просмотра ссылки
Может как-то так?:
Для каждого Реквизит Из ДокументСсылка.Метаданные().Реквизиты Цикл
    Сообщить(Реквизит.Представление());
КонецЕсли;


Ошибка: Переменная не определена (ДокументСсылка)
Для каждого Реквизит Из <<?>>ДокументСсылка.Метаданные().Реквизиты Цикл (Проверка: Сервер)



Цитата(Flexy @ 06.09.11, 11:47) необходимо зарегистрироваться для просмотра ссылки
Тьфу.Пардон.Смотрел на один код, а скопировал другой.
Делал раньше как-то так:
Для К = 0 По Метаданные.Документы.Количество() - 1 Цикл
     Документ = Метаданные.Документы.Получить(К);
     Имя = Документ.Имя;
     ВыборкаДок = Документы[Имя].Выбрать();
     // дальше обход выборки и удаление
КонецЦикла;


Не получается обойти выборку (
Пока ВыборкаДок.Следующий() Цикл
) Или как надо?
alex040269
Цитата(bodka @ 06.09.11, 13:39) необходимо зарегистрироваться для просмотра ссылки
&НаСервере
Функция ЗаполнитьТабДок(ТабДок)
    ТабДок.Очистить();
    
      
    ЭтотОбъект=РеквизитФормыВЗначение("Объект");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    
    
    ОблШапка = Макет.ПолучитьОбласть("Шапка");
    ОблЭлемент = Макет.ПолучитьОбласть("Элемент");
    ОблШапка.Параметры.ДатаОтчета = Формат(ТекущаяДата(),"ДЛФ=DD");
    ТабДок.Вывести(ОблШапка);
    
    Выборка = Документы.ПоступлениеТоваров.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        ОблЭлемент.Параметры.Дата = Формат(Выборка.Дата,"ДЛФ=DD");
        ОблЭлемент.Параметры.Номер = Выборка.Номер;
        ОблЭлемент.Параметры.Ссылка = Выборка.Ссылка;
        ОблЭлемент.Параметры.СуммаДокумента = Выборка.СуммаДокумента;
        ТабДок.Вывести(ОблЭлемент);
    
КонецЦикла;
        
КонецФункции


Вот... По одному конкретному документу я знаю как сделать выборку. А как сделать выборку по Метаданные.Документы и вывести допустим все имена док. я не знаю. Будьте так добры, подскажите

Для Каждого ВидДок Из Метаданные.Документы Цикл 
    Сообщить(ВидДок);
        Выборка = Документы[ВидДок.Имя].Выбрать();
КонецЦикла;
logist
    Запрос=Новый Запрос;
    Запрос.Текст="";
    
    ТЗ_выборкаДок = "
    |ВЫБРАТЬ Ссылка, Дата, ПометкаУдаления, Проведен
    |ИЗ Документ.";
    
    ТЗ_объединение = "
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |";
    
        Д=0;
        Для Каждого Документ Из Метаданные.Документы Цикл    
            Д=Д+1;
            Если Д<>1 Тогда
                Запрос.Текст=Запрос.Текст + ТЗ_объединение + ТЗ_выборкаДок + Документ.Имя;
            Иначе
                Запрос.Текст=Запрос.Текст + ТЗ_выборкаДок + Документ.Имя;
            КонецЕсли;
            
        КонецЦикла;

        Доки = Запрос.Выполнить().Выбрать();
        Пока Доки.Следующий() Цикл
             <...>
Fynjy
Цитата(logist @ 06.09.11, 14:06) необходимо зарегистрироваться для просмотра ссылки
    Запрос=Новый Запрос;
    Запрос.Текст="";
    
    ТЗ_выборкаДок = "
    |ВЫБРАТЬ Ссылка, Дата, ПометкаУдаления, Проведен
    |ИЗ Документ.";
    
    ТЗ_объединение = "
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |";
    
        Д=0;
        Для Каждого Документ Из Метаданные.Документы Цикл    
            Д=Д+1;
            Если Д<>1 Тогда
                Запрос.Текст=Запрос.Текст + ТЗ_объединение + ТЗ_выборкаДок + Документ.Имя;
            Иначе
                Запрос.Текст=Запрос.Текст + ТЗ_выборкаДок + Документ.Имя;
            КонецЕсли;
            
        КонецЦикла;

        Доки = Запрос.Выполнить().Выбрать();
        Пока Доки.Следующий() Цикл
             <...>

А
"ВЫБРАТЬ Ссылка
ИЗ Журнал.ЖурналСНужнымиДоками" = оптимальнее ...
bodka
А вот если мне еще нужно указывать сумму по документу, а в запрос не дает добавить СуммаДокумента (поле не найдено) Этот реквизит не в каждом документе ведь есть. Как эту проблему решить?
Запрос=Новый Запрос;
    Запрос.Текст="";
    
    ТЗ_выборкаДок = "
    |ВЫБРАТЬ Ссылка, Дата, ПометкаУдаления, Номер, СуммаДокумента
    |ИЗ Документ.";
    
    ТЗ_объединение = "
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |";
    
        Д=0;
        Для Каждого Документ Из Метаданные.Документы Цикл    
            Д=Д+1;
            Если Д<>1 Тогда
                Запрос.Текст=Запрос.Текст + ТЗ_объединение + ТЗ_выборкаДок + Документ.Имя;
            Иначе
                Запрос.Текст=Запрос.Текст + ТЗ_выборкаДок + Документ.Имя;
            КонецЕсли;
            
        КонецЦикла;

        Доки = Запрос.Выполнить().Выбрать();
        Пока Доки.Следующий() Цикл
            
            ОблЭлемент.Параметры.Дата = Доки.Дата;
            ОблЭлемент.Параметры.Ссылка = Доки.Ссылка;
               ОблЭлемент.Параметры.Номер = Доки.Номер;
                
            ТабДок.Вывести(ОблЭлемент);
logist
Цитата(bodka @ 06.09.11, 14:56) необходимо зарегистрироваться для просмотра ссылки
А вот если мне еще нужно указывать сумму по документу, а в запрос не дает добавить СуммаДокумента (поле не найдено) Этот реквизит не в каждом документе ведь есть. Как эту проблему решить?

Добавьте после получения документа проверку наличия реквизита, и соответственно подправьте запрос.

p.s. по-моему тема для раздела "сделайте мне"... если не будет конкретных вопросов - то она туда и переедет.
Vofka
И дайте нормальное название темы!
MATEVI
    Запрос=Новый Запрос;
    Запрос.Текст="";
    
    ТЗ_выборкаДокРекв = "
    |ВЫБРАТЬ Ссылка, Дата, ПометкаУдаления, Номер";
    
    ТЗ_выборкаИз = "
    |ИЗ Документ.";
    
    ТЗ_объединение = "
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |";
    
        Д=0;
        Для Каждого Документ Из Метаданные.Документы Цикл    
            Д=Д+1;            
            ДопРекв  = ?(НЕ (Документ.Реквизиты.Найти("СуммаДокумента") = Неопределено),", СуммаДокумента",", NULL");            
            Если Д<>1 Тогда
                Запрос.Текст=Запрос.Текст + ТЗ_объединение + ТЗ_выборкаДокРекв + ДопРекв + ТЗ_выборкаИз + Документ.Имя;
            Иначе
                Запрос.Текст=Запрос.Текст + ТЗ_выборкаДокРекв + ДопРекв + ТЗ_выборкаИз + Документ.Имя;
            КонецЕсли;
            
        КонецЦикла;

        Доки = Запрос.Выполнить().Выбрать();
        Пока Доки.Следующий() Цикл
            
                Сообщить(Доки.Ссылка);

        КонецЦикла;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.