Имя: Пароль:
1C
1С v8
Запрос на выборку документов за определенный период
0 Novi4ek2015
 
31.03.15
11:20
Добрый день!Необходимо написать запрос на выборку документов реализация товаров и услуг за определенный период и сгруппировать их по ответственным лицам. ПОмогите, пожалуйста с чего начать и как лучше описать это.
ВЫБРАТЬ
    РеализацияТоваровУслуг.Период как Период,
    РеализацияТоваровУслуг.Ответственный.Наименование
        
   ИЗ
    Документ.РеализацияТоваровУслуг КАК   РеализацияТоваровУслуг
    
   ГДЕ
    РеализацияТоваровУслуг.Период >= &ДатаНачала
    И РеализацияТоваровУслуг.Период <= &ДатаОкончания
    РеализацияТоваровУслуг.Ответственный= Справочник.Пользователи.Наименование
   Сгруппировать по
    Ответственный
1 Альбатрос
 
31.03.15
11:21
РеализацияТоваровУслуг.Ответственный= Справочник.Пользователи.Наименование - это что?
2 Novi4ek2015
 
31.03.15
11:22
ВЫБРАТЬ
           РеализацияТоваровУслуг.Ссылка
        ИЗ
           Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ГДЕ
           (РеализацияТоваровУслуг.Организация = &Организация) И
           (РеализацияТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата)
        УПОРЯДОЧИТЬ ПО
           РеализацияТоваровУслуг.Дата УБЫВ
3 Novi4ek2015
 
31.03.15
11:23
А как сделать отбор по ответственным лицам?
4 Jonny_Khomich
 
31.03.15
11:23
(3) так же как и по организации сделал
5 salvator
 
31.03.15
11:24
(0) Растолкуй про "сгруппировать по ответственным лицам".
6 Novi4ek2015
 
31.03.15
11:25
ВЫБРАТЬ
           РеализацияТоваровУслуг.Ссылка
        ИЗ
           Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ГДЕ
           (РеализацияТоваровУслуг.Организация = &Организация) И
           (РеализацияТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата) И
           (РеализацияТоваровУслуг.Ответственный = &Ответственный )
        УПОРЯДОЧИТЬ ПО
           РеализацияТоваровУслуг.Ответственный
7 Novi4ek2015
 
31.03.15
11:26
и на основании каждого документа надо создать перемещение.Как лучше?перебрать в цикле?
8 DrShad
 
31.03.15
11:27
ВЫБРАТЬ
           РеализацияТоваровУслуг.Ссылка
        ИЗ
           Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ГДЕ
           (РеализацияТоваровУслуг.Организация = &Организация) И
           (РеализацияТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата)
        УПОРЯДОЧИТЬ ПО
           РеализацияТоваровУслуг.Дата УБЫВ
Итоги По РеализацияТоваровУслуг.ответственный
9 Альбатрос
 
31.03.15
11:28
(7) ну да...
10 Novi4ek2015
 
31.03.15
11:28
Запрос уже работает.
11 salvator
 
31.03.15
11:28
(7) А зачем тебе "группировка по ответственному" была нужна?
12 Альбатрос
 
31.03.15
11:31
(11) Видимо он попутал с отбором
13 Novi4ek2015
 
31.03.15
11:31
мне надо после отбора сделать перемещение на основании этих документов, и у каждого ответственного будет выбираться свой склад
14 D_E_S_131
 
31.03.15
11:38
(13) Тогда "свой склад" лучше тоже получить в запросе.
15 Novi4ek2015
 
31.03.15
12:55
Запрос = Новый Запрос;
    Запрос.Текст = "
         |ВЫБРАТЬ
             |     РеализацияТоваровУслуг.Ссылка
             |ИЗ
             |     Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
             |ГДЕ
             |     (РеализацияТоваровУслуг.Организация = &Организация) И
             |     (РеализацияТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата) И
             |     (РеализацияТоваровУслуг.Ответственный = &Ответственный )
             |УПОРЯДОЧИТЬ ПО
             |        РеализацияТоваровУслуг.Ответственный
             |        ";
            
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("НачДата", НачалоПериода);
    Запрос.УстановитьПараметр("КонДата", КонецПериода);
    Запрос.УстановитьПараметр("Ответственный", Ответственный);
    

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.Ссылка)
    КонецЦикла;
    
    Для Каждого ВыборкаДетальныеЗаписи.Следующий() из РезультатЗапроса  Цикл
        ДокументПеремещениеТоваров = Документы.ПеремещениеТоваров.СоздатьДокумент();
        ДокументПеремещениеТоваров.Дата                            = ТекущаяДата();
        ДокументПеремещениеТоваров.Организация                    = Организация;
        ДокументПеремещениеТоваров.Ответственный                 = Ответственный;
        ДокументПеремещениеТоваров.СкладОтправитель                = Справочники.Склады.НайтиПоНаименованию("Розничный");
                
        Если   ДокументПеремещениеТоваров.Организация= Справочники.Организации.НайтиПоНаименованию("Организация")и   ДокументПеремещениеТоваров.Ответственный= Справочники.Пользователи.НайтиПоНаименованию("Иванов")  Тогда
                ДокументПеремещениеТоваров.СкладПолучатель= Справочники.Склады.НайтиПоНаименованию("Иванов");
        КонецЕсли;
                
        ДокументПеремещениеТоваров.ПолучитьФорму().Открыть();
            
    КонецЦикла;
16 Novi4ek2015
 
31.03.15
12:57
Запрос выбирает все реализации товаров и услуг за определенный период по определенному ответственному лицу.
На основании каждого выбранного документа создается перемещение. Но у меня создается только один документ. Как сделать, чтобы для каждой реализации создавался документ перемещение?
17 salvator
 
31.03.15
12:59
Для Каждого ВыборкаДетальныеЗаписи.Следующий() из РезультатЗапроса  Цикл

Штаа?..
18 Novi4ek2015
 
31.03.15
13:04
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ДокументПеремещениеТоваров = Документы.ПеремещениеТоваров.СоздатьДокумент();
19 Альбатрос
 
31.03.15
13:05
(16) Сомневаюсь, что даже один создается... Где .записать()?
20 Альбатрос
 
31.03.15
13:05
Ааа...Ты форму открываешь... красота какая ))))
21 Novi4ek2015
 
31.03.15
13:15
Документ Записать есть, просто не скопировал.
Проблема в том что товары не заполняются.
                Для каждого стр из Товары Цикл
                НовСтр = ДокументПеремещениеТоваров.Товары.Добавить();
                ЗаполнитьЗначенияСвойств(НовСтр,стр);
        КонецЦикла;
22 Альбатрос
 
31.03.15
13:17
ДокументПеремещениеТоваров.Товары.Загрузить(ВыборкаДетальныеЗаписи.Ссылка.Товары.Выгрузить())
23 Альбатрос
 
31.03.15
13:18
Ну и скорей всего перебором заполнять надо, т.к. наверное имена колонок не будут совпадать. Проверь.
24 Novi4ek2015
 
31.03.15
13:20
Альбатрос, спасибо большое. Еще один вопрос,Как прописать,что дата документа перемещение товаров , была равна дата реализации - минута.
ДокументПеремещениеТоваров.Дата = Дата-60;
Дату, не распознает.
25 D_E_S_131
 
31.03.15
13:23
(24) Не делай как в (22) написано! Христом богом прошу! Выбери данные для ТЧ так же этим запросом, а то потом привыкнешь и будут нехорошим словом, заканчивающимся на "кодер", называть.
26 Альбатрос
 
31.03.15
13:27
(25) Поясни
27 Novi4ek2015
 
31.03.15
13:27
(25) Попробую.
28 Альбатрос
 
31.03.15
13:29
(24) ну так наверное ВыборкаДетальныеЗаписи.Ссылка.Дата
29 Novi4ek2015
 
31.03.15
13:32
А я бес ссылки пробовал, вот....
Спасибо, большое.
30 D_E_S_131
 
31.03.15
14:02
(26) Чего пояснить? Как выбрать запросом данные из ТЧ?