Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проблема с отбором документов

Проблема с отбором документов
Я
   1Слайт
 
09.06.20 - 13:45
Выдает ошибку
{Отчет.АктОбУничтожении.Форма.ФормаОтчета.Форма(129)}: Ошибка при вызове метода контекста (Выбрать)
                        Документ = Документы.АрхивныйДокумент.Выбрать(,,ДецНомерСтруктура);
по причине:
Недопустимое значение параметра (параметр номер '3')

ТаблицаДецНомера = Новый ТаблицаЗначений;
            ТаблицаДецНомера.Колонки.Добавить("Номер", Новый ОписаниеТипов ("Число",,,,,,), ,);
            ТаблицаДецНомера.Колонки.Добавить("ДецНомер", Новый ОписаниеТипов ("СправочникСсылка.НомераДок"), ,);
            Запрос4 = Новый Запрос;
            Запрос4.Текст ="ВЫБРАТЬ
                    | СписокНомеров.Номер КАК Номер,
                    | СписокНомеров.ДецНомер КАК ДецНомер
                    | ПОМЕСТИТЬ СписокНомеров
                    | ИЗ
                    | &ТаблицаДецНомера КАК СписокНомеров
                    |;
                    |////////////////////////////////////////////////////////////////////////////////
                    |ВЫБРАТЬ
                    | СписокНомеров.Номер КАК Номер,
                    | СписокНомеров.ДецНомер КАК ДецНомер
                    |ИЗ
                    | СписокНомеров КАК СписокНомеров";
            Запрос4.УстановитьПараметр("ТаблицаДецНомера", ТаблицаДецНомера);
            
            Для каждого Значение из Отчет.Документы Цикл
                  НоваяСтр = ТаблицаДецНомера.Добавить();
                  ЗаполнитьЗначенияСвойств(НоваяСтр,Значение);
            КонецЦикла;
              
            Если Запрос4.Выполнить().Пустой() Тогда
                Сообщить("Пусто");
            Иначе
                Выборка4 = Запрос4.Выполнить().Выбрать();  
                ДецНомерСтруктура = Новый Структура;
                ДецНомерСтруктура.Вставить("Номер", Выборка4.ДецНомер);
                 Сообщить(ДецНомерСтруктура);
                Пока Выборка4.Следующий() Цикл
                    Для Каждого Значения Из ДецНомерСтруктура Цикл
                        Документ = Документы.АрхивныйДокумент.Выбрать(,,ДецНомерСтруктура);
                        Сообщить(Документ.Наименование);
                    КонецЦикла;    
                КонецЦикла;
            КонецЕсли;
   Ненавижу 1С
 
1 - 09.06.20 - 13:55
а зачем ту туда структуру суешь?
   ДенисЧ
 
2 - 09.06.20 - 13:57
(1) А что предлагаешь? Просто по "Номер" отбор так не сделать...
   1Слайт
 
3 - 09.06.20 - 13:58
ребят, вопрос снят, заказчик изменил задачу
спасибо)
   Ненавижу 1С
 
4 - 09.06.20 - 14:00
(2) Да, согласен, но " В качестве полей для отбора могут задаваться только поля "Дата" и реквизиты документа, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или в значение "Индексировать с доп. упорядочиванием".
То есть "Номер" не подходит. Хотя какя-то недоговоренность есть в терминах: поле, атрибут, реквизит, свойство...
   1Слайт
 
5 - 09.06.20 - 14:05
сморите, документ я нахожу, в нет есть 2 Табл. части Проекты и Темы
как эти значения мне вытащить?
Снова создавать таблицу значений?
Если Запрос4.Выполнить().Пустой() Тогда
                Сообщить("Пусто");
            Иначе
                Выборка4 = Запрос4.Выполнить().Выбрать();  
                Пока Выборка4.Следующий() Цикл
                        Документ = Документы.АрхивныйДокумент.НайтиПоРеквизиту("ДецНомер", Выборка4.ДецНомер);
                        Сообщить(Документ.Проекты);
                КонецЦикла;
            КонецЕсли;
   ДенисЧ
 
6 - 09.06.20 - 14:06
Если Запрос4.Выполнить().Пустой() Тогда
                Сообщить("Пусто");
            Иначе
                Выборка4 = Запрос4.Выполнить().Выбрать();

А зачем два раза?
   1Слайт
 
7 - 09.06.20 - 14:11
(6) что два раза?
   Ненавижу 1С
 
8 - 09.06.20 - 14:12
возможно ты все усложняешь и все это вообще в одном запросе надо делать

но так тоже можно:

ТЗПроекты = Документ.Проекты.Выгрузить();
   Ненавижу 1С
 
9 - 09.06.20 - 14:13
(7) 2 раза запрос выполняешь методом Выполнить()
кстати это может привести к результату, когда их результаты будут разные
   1Слайт
 
10 - 09.06.20 - 14:13
(8) допускаю, возможно все и усложняю)
   1Слайт
 
11 - 09.06.20 - 14:17
(9) я же для проверки пусто или нет
   Ненавижу 1С
 
12 - 09.06.20 - 14:20
(11)

РезультатЗапроса = Запрос4.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
                Сообщить("Пусто");
            Иначе
                Выборка4 = РезультатЗапроса.Выбрать();
   1Слайт
 
13 - 09.06.20 - 14:21
ок) как тут пишут новички - я только учусь))
   1Слайт
 
14 - 09.06.20 - 14:25
(8) в одном запросе не получилось(возможно не доразобралась)
основная цель отчет : пользователь выбирает несколько документов(в таблицу значений), нужно из этих документов вытащить необходимую инфу, вот например проекты и темы хранятся тоже в таблицах, вот с этими со всеми таблицами и возникли у меня сложности, просто через запрос не получается, как с обычными реквизитами(опыта маловато)
   Ненавижу 1С
 
15 - 09.06.20 - 14:26
А вообще можно и не выделять отдельно случай пустого запроса - просто цикл не выполнится ни разу:

Пока Выборка4.Следующий() Цикл
   Ненавижу 1С
 
16 - 09.06.20 - 14:28
(14) достаточно передать список документов как параметр в запрос
   1Слайт
 
17 - 09.06.20 - 14:32
(8) кстати. выдает мне не значения, а ТаблицаЗначений
   1Слайт
 
18 - 09.06.20 - 14:39
(16)
вот пробовала запросом
выдает ошибку: в запросе, формирующем временную таблицу, не могут выбираться вложенные таблицы <<?>>АрхивныйДокумент.Экземпляры.(

ВЫБРАТЬ
    АрхивныйДокумент.ДецНомер КАК ДецНомер,
    АрхивныйДокумент.Дата КАК Дата,
    АрхивныйДокумент.Наименование КАК Наименование,
    АрхивныйДокумент.КолвоПодл КАК КолвоПодл,
    АрхивныйДокумент.КолЛистов КАК КолЛистов,
    АрхивныйДокумент.Экземпляры.(
        Номер КАК Номер
    ) КАК Экземпляры,
    АрхивныйДокумент.Проекты.(
        КодПроекта КАК КодПроекта
    ) КАК Проекты,
    АрхивныйДокумент.ТемыШифры.(
        НазваниеТемыШифр КАК НазваниеТемыШифр
    ) КАК ТемыШифры
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.АрхивныйДокумент КАК АрхивныйДокумент
ГДЕ
    АрхивныйДокумент.ДецНомер  = &ДецНомер
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ.ДецНомер КАК ДецНомер,
    ВТ.Дата КАК Дата,
    ВТ.Наименование КАК Наименование,
    ВТ.КолвоПодл КАК КолвоПодл,
    ВТ.КолЛистов КАК КолЛистов,
    ВТ.Экземпляры.(
        Номер КАК Номер
    ) КАК Экземпляры,
    ВТ.Проекты.(
        КодПроекта КАК КодПроекта
    ) КАК Проекты,
    ВТ.ТемыШифры.(
        НазваниеТемыШифр КАК НазваниеТемыШифр
    ) КАК ТемыШифры
ИЗ
    ВТ КАК ВТ
   Ненавижу 1С
 
19 - 09.06.20 - 14:54
(17) естественно, там же табличная часть
(18) лучше начать с чего мы хотим (что дано более-менее понятно)
   1Слайт
 
20 - 09.06.20 - 14:58
(14) вот тут
   Eiffil123
 
21 - 09.06.20 - 17:40
(3) вообще некорректно так темы закрывать. если вопрос решился - нужно хотя бы решение привести
   1Слайт
 
22 - 10.06.20 - 09:05
(21) так тема и не закрыта, изменились условия
   Ненавижу 1С
 
23 - 10.06.20 - 09:09
20) нет, что с данными этими делать, просто их списком выбрать и все?
   1Слайт
 
24 - 10.06.20 - 09:15
(23) да, проекты и темы мне нужно просто в строчку через запятую записать в ячейку макета
   1Слайт
 
25 - 10.06.20 - 09:16
и еще есть номера экземпляров, тоже таблица, но их занесу в отчетную таблицу
   Ненавижу 1С
 
26 - 10.06.20 - 09:22
ну хорошо, несколькими запросами, например, один из них:

ВЫБРАТЬ
    АрхивныйДокументПроекты.КодПроекта КАК КодПроекта
ИЗ
    Документ.АрхивныйДокумент.Проекты КАК АрхивныйДокументПроекты
ГДЕ
    АрхивныйДокументПроекты.Ссылка  В (&СписокДокументов)
   1Слайт
 
27 - 10.06.20 - 10:04
(26) Спасибо огромное!!!
немного подкорректировала
поняла ошибку, я напрямую к ДецНомеру обращалась, надо было через таблицу и ссылку
теперь остальное доработаю)

ВЫБРАТЬ
    АрхивныйДокументПроекты.КодПроекта КАК КодПроекта
ИЗ
    Документ.АрхивныйДокумент.Проекты КАК АрхивныйДокументПроекты
ГДЕ
    АрхивныйДокументПроекты.Ссылка.ДецНомер  В (&СписокДокументов)
   Ненавижу 1С
 
28 - 10.06.20 - 11:23
(27) будем надеяться, что данный запрос не в цикле
   1Слайт
 
29 - 10.06.20 - 11:45
(28) не))))


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.