8.х Выборка по всем документам

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Peroman, 17 фев 2016.

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Всем доброго времени суток.

    Платформа: 1С:Предприятие 8.3 (8.3.6.2390)
    Конфигурация: Управление торговлей, редакция 11.2 (11.2.2.106)

    Каким образом, можно сделать выборку по всем видам документов?
    Т.е. мне необходимо организовать цикл, с выборкой по всем видам документам,
    в цикле задать условие : если документов данного вида ноль, то идем дальше если же нет, то уже перебрать документы данного вида и в них обратиться к реквизитам.
  2. web.num
    Online

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    908
    Симпатии:
    4
    Баллы:
    29
    метаданные
  3. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Код:
        Для каждого ДокументСписок Из Метаданные.Документы Цикл
           
        КонецЦикла;
    
    А как мне сделать выборку уже по самим документам, данного вида?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Сформировать текст запроса :)
    Структура текста запроса очень сильно стандартизована.....
  5. web.num
    Online

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    908
    Симпатии:
    4
    Баллы:
    29
    Код:
    Для Каждого ТекДок Из СписокДокументов Цикл
            Запрос.Текст = "ВЫБРАТЬ
                            |    Док.Ссылка.Дата КАК Дата,
                            |    Док.Ссылка КАК Ссылка
                            |ИЗ
                            |    Документ." + ТекДок + " КАК Док
                            |ГДЕ
                            |    Проведен
                            |" + ?(Не(МетаДокументы[ТекДок].Реквизиты.Найти("Организация") = Неопределено ИЛИ Организация = Неопределено), "И Организация = &Организация", "") + "
                            |    И Дата МЕЖДУ &НачПериода И &КонПериода
    КОнецЦикла
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Вот за такую конструкцию:

    | Док.Ссылка.Дата КАК Дата

    сервер SQL спасибо точно не скажет......
  7. web.num
    Online

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    908
    Симпатии:
    4
    Баллы:
    29
    ага = ДатаДок
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    эээээ......

    |Док.Дата КАК Дата
  9. web.num
    Online

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    908
    Симпатии:
    4
    Баллы:
    29
    Я про это же = КАК ДатаДок
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Еще раз:

    | Док.Ссылка.Дата КАК Дата

    и

    |Док.Дата КАК Дата

    Псевдоним - одинаковый и он не при чем :)
  11. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Честно говоря, я не особо понял, что к чему
    Если так:
    Код:
        Для каждого ДокументСписок Из Метаданные.Документы Цикл
            Для каждого Документ Из ДокументСписок Цикл
                
            КонецЦикла;
        
    То не сработает, ошибка выходит:
    Код:
    {Форма.Форма.Форма(11)}: Итератор для значения не определен
            Для каждого Документ Из ДокументСписок Цикл
  12. web.num
    Online

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    908
    Симпатии:
    4
    Баллы:
    29
    Честно, если скажу - то выполню вашу работу за вас, извините, думайте сами, это всего лишь имена переменных и итераторов (их хоть *опой назови - будут работать)
  13. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Сделал так:

    Код:
        ТекстЗапроса = "ВЫБРАТЬ    Документы.Ссылка ИЗ    (";
        Для Каждого Документ Из Метаданные.Документы Цикл
            ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ " + Документ.Имя + ".Ссылка КАК Ссылка, " +
            Документ.Имя + ".Дата КАК Дата    ИЗ Документ." + Документ.Имя + " КАК " + Документ.Имя +
            " ГДЕ " + Документ.Имя + ".Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ) ОБЪЕДИНИТЬ ВСЕ ";
        КонецЦикла;
        ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ NULL, NULL ) КАК Документы ГДЕ НЕ Документы.Ссылка ЕСТЬ NULL УПОРЯДОЧИТЬ ПО Документы.Дата";
        НачДата = Объект.НачДата;
        КонДата = Объект.КонДата;
        Запрос = Новый Запрос(ТекстЗапроса);
        Запрос.УстановитьПараметр("НачПериода", НачДата);
        Запрос.УстановитьПараметр("КонПериода", КонДата);
    
    Но не могу сообразить, как теперь в запрос, добавить отбор, только тех документов, которые имеют реквизит "Организация"
  14. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Данное решение может вывалится в ошибку попытки использования более 256 таблиц в одном запросе.
    Реквизиты объектов - это такие же объекты метаданных, как и документы.
    Книги/курсы по общим вопросам программирования/конфигурирования 1С содержат ответы на ваши вопросы.

Поделиться этой страницей