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

Хранилище

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

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



> Як знайти дату найпершого документа на видалення , (для всіх типів документів)          
alex-l1904 Подменю пользователя
сообщение 05.05.23, 8:21
Сообщение #1

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

Доброго дня,
якщо треба знайти серед всіх типів документів дату найпершого з поміткою на видалення,
пропоную варіант рішення.

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

        КонецЕсли
    
    КонецЦикла;
    
    ТекстЗапроса = ТекстЗапроса + "
                            |ВЫБРАТЬ
                            |    &текДата; // ";

           ТекстЗапроса = ТекстЗапроса + "
          | ВЫБРАТЬ
          |    МИНИМУМ(ТаблДат.Дата) КАК Дата
          |ИЗ
          |    ТаблДат КАК ТаблДат";
          
    ЗапросПервогоДокумента.Текст =     ТекстЗапроса;
    ЗапросПервогоДокумента.УстановитьПараметр("текДата", ТекущаяДата());
    
    Выб = ЗапросПервогоДокумента.Выполнить().Выбрать();
    Выб.Следующий();
    
    ДатаПервого = Выб.Дата;


може хто запропонує як покращити ?

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

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

Я би замість

"ВЫБРАТЬ
|    МИНИМУМ(Док.Дата) КАК Дата
| Поместить ТаблДат
|ИЗ
|    Документ."+Имя+" КАК Док
|
|ГДЕ
|    Док.ПометкаУдаления  И  Док.Дата < &текДата
|    
|
|ОБЪЕДИНИТЬ ВСЕ "


написав би щось таке

"ВЫБРАТЬ ПЕРВЫЕ 1
|   Дата
|ИЗ
|   Документ."+Имя+" КАК Док
|ГДЕ
|   Док.ПометкаУдаления И Док.Дата < &текДата
|УПОРЯДОЧИТЬ ПО
|   Дата
|
|ОБЪЕДИНИТЬ"


Після того, як це все згенерується в якусь змінну, можно зобити щось типу такого:

"ВЫБРАТЬ ПЕРВЫЕ 1
|   Дата
|ИЗ
|(
|   "+ПеременнаяСЗапросомВыше+"
|)
|УПОРЯДОЧИТЬ ПО
|   Дата"


Сообщение отредактировал Vofka - 05.05.23, 12:10

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


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

 

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