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

Хранилище

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

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



> Внешняя обработка (Выборка документов)          
bodka Подменю пользователя
сообщение 06.09.11, 12:39
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 76
Спасибо сказали: 36 раз
Рейтинг: 0

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


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

Flexy Подменю пользователя
сообщение 06.09.11, 12:47
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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


Сообщение отредактировал Flexy - 06.09.11, 12:53

bodka Подменю пользователя
сообщение 06.09.11, 12:59
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 76
Спасибо сказали: 36 раз
Рейтинг: 0

Цитата(Flexy @ 06.09.11, 11:47) *
Может как-то так?:
Для каждого Реквизит Из ДокументСсылка.Метаданные().Реквизиты Цикл
    Сообщить(Реквизит.Представление());
КонецЕсли;


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



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


Не получается обойти выборку (
Пока ВыборкаДок.Следующий() Цикл
) Или как надо?

alex040269 Подменю пользователя
сообщение 06.09.11, 13:02
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

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


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

Для Каждого ВидДок Из Метаданные.Документы Цикл 
    Сообщить(ВидДок);
        Выборка = Документы[ВидДок.Имя].Выбрать();
КонецЦикла;


Сообщение отредактировал alex040269 - 06.09.11, 13:06


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

logist Подменю пользователя
сообщение 06.09.11, 13:06
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: bodka,

Fynjy Подменю пользователя
сообщение 06.09.11, 13:27
Сообщение #6

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

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

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

А
"ВЫБРАТЬ Ссылка
ИЗ Журнал.ЖурналСНужнымиДоками" = оптимальнее ...


Signature

bodka Подменю пользователя
сообщение 06.09.11, 13:56
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 76
Спасибо сказали: 36 раз
Рейтинг: 0

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

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

logist Подменю пользователя
сообщение 06.09.11, 14:32
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bodka @ 06.09.11, 14:56) *
А вот если мне еще нужно указывать сумму по документу, а в запрос не дает добавить СуммаДокумента (поле не найдено) Этот реквизит не в каждом документе ведь есть. Как эту проблему решить?

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

p.s. по-моему тема для раздела "сделайте мне"... если не будет конкретных вопросов - то она туда и переедет.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 06.09.11, 14:49
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

И дайте нормальное название темы!

MATEVI Подменю пользователя
сообщение 06.09.11, 14:59
Сообщение #10

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

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

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

        КонецЦикла;

Спасибо сказали: bodka,

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


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

 

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