|   |   | 
| 
 | УФ: помогите с запросом!!! | ☑ | ||
|---|---|---|---|---|
| 0
    
        dft2014 15.04.16✎ 11:22 | 
        8.3
 У нас есть понятие осн.договор и доп.соглашение. Но вводятся в программу они одним видом документа - "ДоговорРаботыУслуги". Чтобы их как-то различать между собой, в документе "ДоговорРаботыУслуги" добавили реквизит "ОсновнойДоговор": если этот реквизит не заполнен, то мы понимаем, что это и есть осн.договор. Если заполнен, то мы видим, что это доп.соглашение к такому-то осн.договору. Задача: На форме документа "ДоговорРаботыУслуги" добавлена кнопка, которая заполняет табличную часть всеми Актами, у которых одинаковый основной договор. Подскажите, почему если добавляю условие на осн.договор, то запрос не срабатывает. Без этого условия, все ок! Но мне надо отобрать именно по определенному осн.договору. Вот запрос: &НаСервере Процедура ЗаполнитьАктамиНаСервере() ЭтаФорма.Объект.ВсеАкты.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | АктПриемкиВыполненныхРаботОказанныхУслуг.Ссылка КАК Акт, | АктПриемкиВыполненныхРаботОказанныхУслуг.ДатаАктаС КАК ДатаАктаС, | АктПриемкиВыполненныхРаботОказанныхУслуг.ДатаАктаПо КАК ДатаАктаПо |ИЗ | Документ.АктПриемкиВыполненныхРаботОказанныхУслуг КАК АктПриемкиВыполненныхРаботОказанныхУслуг |ГДЕ | АктПриемкиВыполненныхРаботОказанныхУслуг.Сотрудник = &Ссылка // вот это условие( | И ТИПЗНАЧЕНИЯ(АктПриемкиВыполненныхРаботОказанныхУслуг.Договор) = ТИП(Документ.ДоговорРаботыУслуги) | И АктПриемкиВыполненныхРаботОказанныхУслуг.Договор.ОсновнойДоговор = &ОсновнойДоговор"; // вот это условие) Запрос.УстановитьПараметр("Ссылка", Объект.Сотрудник); Запрос.УстановитьПараметр("ОсновнойДоговор", Объект.ОсновнойДоговор); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НовСтр = Объект.ВсеАкты.Добавить(); ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаДетальныеЗаписи); //при условии что имена полей ТЧ и выборки совпадают КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ЗаполнитьАктами(Команда) ЗаполнитьАктамиНаСервере(); КонецПроцедуры | |||
| 1
    
        dimaldinho 15.04.16✎ 11:24 | 
        // вот это условие( - тут два условия     | |||
| 2
    
        dft2014 15.04.16✎ 11:28 | 
        (1) Два условия, т.к. в Акте, реквизит договор - составной: 
 - ДоговорРаботыУслуги - ДоговорАвторскогоЗаказа Поэтому я вставила условие: ТИПЗНАЧЕНИЯ(АктПриемкиВыполненныхРаботОказанныхУслуг.Договор) = ТИП(Документ.ДоговорРаботыУслуги) | |||
| 3
    
        FIXXXL 15.04.16✎ 11:50 | 
        (2) это лишнее     | |||
| 4
    
        dft2014 15.04.16✎ 12:04 | 
        (3) Даже если убираю это условие, то запрос все равно не срабатывает.     | |||
| 5
    
        FIXXXL 15.04.16✎ 12:06 | 
        (4) ну проверь, что в параметры передаешь     | |||
| 6
    
        dimaldinho 15.04.16✎ 12:13 | 
        + к (5) убери оба условия, добавь в выбранные поля
 АктПриемкиВыполненныхРаботОказанныхУслуг.Договор.ОсновнойДоговор выполни запрос в консоли, посмотри, что выходит | |||
| 7
    
        dft2014 15.04.16✎ 13:15 | 
        В консоли, запрос из (0) отрабатывает верно!     | |||
| 8
    
        dft2014 15.04.16✎ 13:16 | 
        +(7) даже с этими двумя условиями!!!     | |||
| 9
    
        FIXXXL 15.04.16✎ 13:28 | 
        (8) отладчик в руки и (5)     | |||
| 10
    
        dft2014 15.04.16✎ 13:43 | 
        (9) отладчиком не заходит в цикл почему-то, а параметры передаются верные!     | |||
| 11
    
        ks_83 15.04.16✎ 13:59 | 
        это  убираем
 ТИПЗНАЧЕНИЯ(АктПриемкиВыполненныхРаботОказанныхУслуг.Договор) = ТИП(Документ.ДоговорРаботыУслуги) а это АктПриемкиВыполненныхРаботОказанныхУслуг.Договор.ОсновнойДоговор = &ОсновнойДоговор"; меняем на следующее ВЫРАЗИТЬ(АктПриемкиВыполненныхРаботОказанныхУслуг.Договор КАК Документ.ДоговорРаботыУслуги).ОсновнойДоговор = &ОсновнойДоговор"; | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |