|
v7: проблема с функцией | ☑ | ||
---|---|---|---|---|
0
Irina3gger
15.05.19
✎
17:22
|
Всем привет, у меня тут проблема адская.
Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); СоздатьОбъект("Регистр.АктОбъемРабот"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период С НачПер По ОконПер; |ТекДок = Регистр.Обороты.ТекущийДокумент; |Документы = Регистр.Обороты.Документ; |СуммаДог = Регистр.Обороты.СуммаДог; |СуммаДопСогл = Регистр.Обороты.СуммаДопСогл; |СуммаАкта = Регистр.Обороты.СуммаАкта; |_Объект = Регистр.Обороты.Объект; |Объект = Регистр.Обороты.Объект.Наименование; |Код = Регистр.Обороты.Объект.Код; |Заказчик = Регистр.Обороты.Объект.Заказчик; |Отдел = Регистр.Обороты.Объект.Отдел; |Стадия = Регистр.Обороты.Объект.Стадия; |Примеч = Регистр.Обороты.Объект.Прим; |Условие (Стадия.Код <> Строка(1)); |Гип = Регистр.Обороты.Объект.Гип; |ИстФин = Регистр.Обороты.Объект.ИстФин; |Назначение = Регистр.Обороты.Объект.Назначение; |Район = Регистр.Обороты.Объект.Район; |Вотчет = Регистр.Обороты.Объект.Вотчет; |ПризнакПодпис = Регистр.Обороты.ПризнакПодпис; |Группировка Отдел Упорядочить По Отдел.Код; |Группировка Документы Упорядочить По Документы.ДатаДок; |Группировка Вотчет Упорядочить По Вотчет.Код; |Группировка Объект Упорядочить По Объект.Код; |Группировка ТекДок; |Функция ОбщСуммаДог = Приход(СуммаДог); |Функция СуммаДопСогл = Приход(СуммаДопСогл); |" ; Если ПустаяСтрока(ВНаим) <> 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Найти(Врег(Объект), Врег(СокрЛП(Внаим))) > 0);"; КонецЕсли; Если ПустаяСтрока(ВНаим1) <> 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Найти(Врег(Объект), Врег(СокрЛП(Внаим1))) > 0);"; КонецЕсли; Если ТекИстФин.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(ИстФин = ТекИстФин);"; КонецЕсли; Если ТекЗаказчик.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Заказчик = ТекЗаказчик);"; КонецЕсли; Если ТекНазнач.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Назначение = ТекНазнач);"; КонецЕсли; Если ТекРайон.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Район = ТекРайон);"; КонецЕсли; Если ТекОтдел.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие(Отдел = ТекОтдел);"; КонецЕсли; Если ВывАрхив = 1 Тогда ТекстЗапроса = ТекстЗапроса+"Условие (ТекДок.Объект.Архив = Перечисление.Признак.Да);"; КонецЕсли; Запрос.Выполнить(ТекстЗапроса); Таб.ВывестиСекцию("Маст"); Таб.ВывестиСекцию("Шапка"); Номер = 0; Прим = ""; Пока Запрос.Группировка(1) = 1 Цикл Таб.ВывестиСекцию("Отдел"); _СуммаДог = 0; Пока Запрос.Группировка(2) = 1 Цикл Пока Запрос.Группировка(3) = 1 Цикл Пока Запрос.Группировка(4) = 1 Цикл Прим = ""; СуммаДопСогл = Запрос.СуммаДопСогл; КолПодпис = 0; КолНеПодпис = 0; ДатаНеПодписАкт = ""; ДатаПодписАкт = ""; Пока Запрос.Группировка(5) = 1 Цикл Если Запрос.Документы.Вид() = "ДоговорНаПроектирование" Тогда СуммаДопСогл = Запрос.СуммаДог; ДатаНачПлан = Запрос.Документы.НачПроект; ДатаОконПлан = Запрос.Документы.ОконПроект; КонецЕсли; Если Запрос.Документы.Вид() = "ДопСоглашение" Тогда Если Запрос.Документы.Сумма <> 1 Тогда СуммаДопСогл = Запрос.Документы.Сумма; КонецЕсли; //ДогДатаС = Запрос.Документы.ДатаСоставления; //ДогДатаПо = Запрос.Документы.ДатаПолучения; ДатаНачПлан = Запрос.Документы.НачПроект; ДатаОконПлан = Запрос.Документы.ОконПроект; Прим = "Доп. согл " + Запрос.Документы.НомерДоговора; КонецЕсли; КонецЦикла; Если ПустаяСтрока(Стоим) <> 1 Тогда Если Число(СуммаДопСогл) > Число(Стоим) Тогда //Сообщить("1"); Номер = Номер + 1; Таб.ВывестиСекцию("Данные"); _СуммаДопСогл = _СуммаДопСогл + СуммаДопСогл; КонецЕсли; Иначе //Сообщить("2"); Номер = Номер + 1; Таб.ВывестиСекцию("Данные"); _СуммаДопСогл = _СуммаДопСогл + СуммаДопСогл; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; //Таб.ВывестиСекцию("Итог"); Таб.Опции(0,0,5); Таб.ПовторятьПриПечатиСтроки(4,6); Таб.Показать();; КонецПроцедуры Процедура ПриОткрытии() ОконПер = ПолучитьДатуТА(); КонецПроцедуры вот код, у меня вместо того чтоб выводить последние ДопСоглашение, показывает все. подскажите как исправить? |
|||
1
bolder
15.05.19
✎
17:29
|
(0) Вылавливать надо во 2 группировке, там отсортировано по дате.
|
|||
2
Irina3gger
15.05.19
✎
17:35
|
(1) даже если убрать группировку по дате все равно вытягивает все ДопСоглашения, а не только последнее
|
|||
3
bolder
15.05.19
✎
17:37
|
(2) Ну правильно, ограничения то нет.
|
|||
4
Irina3gger
15.05.19
✎
17:41
|
(3) а как его сделать? а то я понятия не имею как, я только учусь
|
|||
5
Builder
15.05.19
✎
17:44
|
(4) А что значит "последние ДопСоглашение" ????
Ну и текст запроса, конечно, не айс.... |
|||
6
bolder
15.05.19
✎
17:47
|
(4) При проходе 2 группировки ставить условие , что документ один: так как Документы отсортированы должны быть по документы.датадок убыв, будет последний.
|
|||
7
Irina3gger
15.05.19
✎
17:49
|
(5) у объекта строительства есть Договор и Доп соглашение, договор один , а вот ДоСоглашений много, и в них меняются данные, и надо чтоб данные показывали из последнего допа
|
|||
8
Irina3gger
15.05.19
✎
17:49
|
(6) т.е. убрать эту группировку?
|
|||
9
Irina3gger
15.05.19
✎
17:54
|
(6) как поставить условие что документ один?
|
|||
10
big
16.05.19
✎
08:20
|
Пока Запрос.Группировка(5,-1) = 1 Цикл // будет идти по убыванию
... ... Если Запрос.Документы.Вид() = "ДопСоглашение" Тогда Прервать; КонецЕсли; КонецЦикла; как-то так наверное |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |