![]() |
![]() |
![]() |
|
СКД. добавление строк по формуле а+б\с, где а,б,с = обороты по параметру | ☑ | ||
---|---|---|---|---|
0
zladenuw
22.02.13
✎
20:55
|
СКД. добавление строк по формуле а+б\с, где а,б,с = обороты по параметру
Параметр задает справочник разделы. который хранить формулу расчета. Как такое сделать ? |
|||
1
zladenuw
22.02.13
✎
21:01
|
в ТЧ думаю хранить параметр формулы.
в реквизите саму формулу, но как в запросе разобрать формулу ? |
|||
2
zladenuw
22.02.13
✎
21:02
|
запрос к документу. у него две ТЧ
|
|||
3
GenV
22.02.13
✎
21:32
|
Попробуй через внешнюю функцию
|
|||
4
zladenuw
22.02.13
✎
21:37
|
а без нее ? не как ?
|
|||
5
zladenuw
25.02.13
✎
21:45
|
сделал так.
Формула = Алгоритм.Формула; ПараметрыФормулы = Алгоритм.ПараметрыФормулы; Для каждого ПараметрФормулы из ПараметрыФормулы Цикл ТекстЗапроса = "ВЫБРАТЬ | "+ПараметрФормулы.ПараметрИмя+".Первонач |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | СУММА(Влож.Первонач) КАК Первонач, | СУММА(Влож.Корректировка) КАК Корректировка, | Влож.СтатьяВид КАК СтатьяВид | ИЗ | (ВЫБРАТЬ | РасходыБюджета.Первонач КАК Первонач, | СУММА(РасходыБюджета.Коррект) КАК Корректировка, | РасходыБюджета.СтатьяВид КАК СтатьяВид, | ВложенныйЗапрос.Отклонение КАК Отклонение | ИЗ | (ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА ПланированиеБюджетаРасходы.Ссылка.Версия = 2 | ТОГДА ПланированиеБюджетаРасходы.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК Первонач, | СУММА(ВЫБОР | КОГДА ПланированиеБюджетаРасходы.Ссылка.Версия = 3 | ТОГДА ПланированиеБюджетаРасходы.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК Коррект, | ПланированиеБюджетаРасходы.Статья.Вид КАК СтатьяВид | ИЗ | Документ.ПланированиеБюджета.Расходы КАК ПланированиеБюджетаРасходы | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | BIP_Статьи.Ссылка КАК BIP_Статья, | ПОДСТРОКА(BIP_Статьи.КодВЗ, 1, 6) КАК КодFozzy | ИЗ | Справочник.BIP_Статьи КАК BIP_Статьи) КАК BIP_Статьи | ПО ПланированиеБюджетаРасходы.КодFozzy = BIP_Статьи.КодFozzy | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПланированиеБюджетаСтатусы.Ссылка КАК Ссылка, | ПланированиеБюджетаСтатусы.Пользователь КАК Пользователь | ИЗ | Документ.ПланированиеБюджета.Статусы КАК ПланированиеБюджетаСтатусы | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПланированиеБюджетаСтатусы.Ссылка КАК Ссылка, | МИНИМУМ(ПланированиеБюджетаСтатусы.НомерСтроки) КАК НомерСтроки | ИЗ | Документ.ПланированиеБюджета.Статусы КАК ПланированиеБюджетаСтатусы | ГДЕ | ПланированиеБюджетаСтатусы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаСтатусы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаСтатусы.Ссылка.Год = &Год | | СГРУППИРОВАТЬ ПО | ПланированиеБюджетаСтатусы.Ссылка) КАК МинСтрока | ПО ПланированиеБюджетаСтатусы.Ссылка = МинСтрока.Ссылка | И ПланированиеБюджетаСтатусы.НомерСтроки = МинСтрока.НомерСтроки | ГДЕ | ПланированиеБюджетаСтатусы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаСтатусы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаСтатусы.Ссылка.Год = &Год | | СГРУППИРОВАТЬ ПО | ПланированиеБюджетаСтатусы.Ссылка, | ПланированиеБюджетаСтатусы.Пользователь) КАК СтатусыОтветственный | ПО ПланированиеБюджетаРасходы.Ссылка = СтатусыОтветственный.Ссылка | ГДЕ | ПланированиеБюджетаРасходы.Ссылка.Год = &Год | И ПланированиеБюджетаРасходы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаРасходы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаРасходы.ПравилоДДС.Код <> ""000000027"" | И ПланированиеБюджетаРасходы.Сумма <> 0 | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПланированиеБюджетаРасходы.Ссылка.РегионБюджетирования = ЗНАЧЕНИЕ(справочник.РегионыБюджетирования.пустаяСсылка) | ТОГДА ПланированиеБюджетаРасходы.РегионБюджетирования | ИНАЧЕ ПланированиеБюджетаРасходы.Ссылка.РегионБюджетирования | КОНЕЦ, | ПланированиеБюджетаРасходы.Статья.Вид) КАК РасходыБюджета | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | РасходыБюджета.Первонач КАК Первонач, | СУММА(0) КАК Корректировка, | СУММА(РасходыБюджета.Коррект) КАК Отклонение, | РасходыБюджета.СтатьяВид КАК СтатьяВид | ИЗ | (ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА ПланированиеБюджетаРасходы.Ссылка.Версия = 2 | ТОГДА ПланированиеБюджетаРасходы.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК Первонач, | СУММА(ВЫБОР | КОГДА ПланированиеБюджетаРасходы.Ссылка.Версия = 3 | ТОГДА ПланированиеБюджетаРасходы.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК Коррект, | ПланированиеБюджетаРасходы.Статья.Вид КАК СтатьяВид | ИЗ | Документ.ПланированиеБюджета.Расходы КАК ПланированиеБюджетаРасходы | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | BIP_Статьи.Ссылка КАК BIP_Статья, | ПОДСТРОКА(BIP_Статьи.КодВЗ, 1, 6) КАК КодFozzy | ИЗ | Справочник.BIP_Статьи КАК BIP_Статьи) КАК BIP_Статьи | ПО ПланированиеБюджетаРасходы.КодFozzy = BIP_Статьи.КодFozzy | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПланированиеБюджетаСтатусы.Ссылка КАК Ссылка, | ПланированиеБюджетаСтатусы.Пользователь КАК Пользователь | ИЗ | Документ.ПланированиеБюджета.Статусы КАК ПланированиеБюджетаСтатусы | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПланированиеБюджетаСтатусы.Ссылка КАК Ссылка, | МИНИМУМ(ПланированиеБюджетаСтатусы.НомерСтроки) КАК НомерСтроки | ИЗ | Документ.ПланированиеБюджета.Статусы КАК ПланированиеБюджетаСтатусы | ГДЕ | ПланированиеБюджетаСтатусы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаСтатусы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаСтатусы.Ссылка.Год = &Год | | СГРУППИРОВАТЬ ПО | ПланированиеБюджетаСтатусы.Ссылка) КАК МинСтрока | ПО ПланированиеБюджетаСтатусы.Ссылка = МинСтрока.Ссылка | И ПланированиеБюджетаСтатусы.НомерСтроки = МинСтрока.НомерСтроки | ГДЕ | ПланированиеБюджетаСтатусы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаСтатусы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаСтатусы.Ссылка.Год = &Год | | СГРУППИРОВАТЬ ПО | ПланированиеБюджетаСтатусы.Ссылка, | ПланированиеБюджетаСтатусы.Пользователь) КАК СтатусыОтветственный | ПО ПланированиеБюджетаРасходы.Ссылка = СтатусыОтветственный.Ссылка | ГДЕ | ПланированиеБюджетаРасходы.Ссылка.Год = &Год | И ПланированиеБюджетаРасходы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаРасходы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаРасходы.ПравилоДДС.Код <> ""000000027"" | И ПланированиеБюджетаРасходы.Сумма <> 0 | И ПланированиеБюджетаРасходы.Ссылка.Версия = &Версия | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПланированиеБюджетаРасходы.Ссылка.РегионБюджетирования = ЗНАЧЕНИЕ(справочник.РегионыБюджетирования.пустаяСсылка) | ТОГДА ПланированиеБюджетаРасходы.РегионБюджетирования | ИНАЧЕ ПланированиеБюджетаРасходы.Ссылка.РегионБюджетирования | КОНЕЦ, | ПланированиеБюджетаРасходы.Статья.Вид) КАК РасходыБюджета | | СГРУППИРОВАТЬ ПО | РасходыБюджета.Первонач, | РасходыБюджета.СтатьяВид) КАК ВложенныйЗапрос | ПО РасходыБюджета.СтатьяВид = ВложенныйЗапрос.СтатьяВид | | СГРУППИРОВАТЬ ПО | РасходыБюджета.Первонач, | РасходыБюджета.СтатьяВид, | ВложенныйЗапрос.Отклонение) КАК Влож | ГДЕ | ВЫБОР | КОГДА &ИспользоватьРасход | ТОГДА ИСТИНА | КОНЕЦ | И Влож.СтатьяВид = &"+ПараметрФормулы.ПараметрИмя+" | | СГРУППИРОВАТЬ ПО | Влож.СтатьяВид | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | СУММА(Влож.Первонач), | СУММА(Влож.Корректировка), | Влож.СтатьяВид | ИЗ | (ВЫБРАТЬ | СУММА(ДоходыБюджета.Первонач) КАК Первонач, | СУММА(ДоходыБюджета.Коррект) КАК Корректировка, | СУММА(0) КАК Поле1, | ДоходыБюджета.СтатьяВид КАК СтатьяВид | ИЗ | (ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА ПланированиеБюджетаДоходы.Ссылка.Версия = 2 | ТОГДА ПланированиеБюджетаДоходы.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК Первонач, | СУММА(ВЫБОР | КОГДА ПланированиеБюджетаДоходы.Ссылка.Версия = 3 | ТОГДА ПланированиеБюджетаДоходы.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК Коррект, | ПланированиеБюджетаДоходы.Статья.Вид КАК СтатьяВид | ИЗ | Документ.ПланированиеБюджета.Доходы КАК ПланированиеБюджетаДоходы | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | BIP_Статьи.Ссылка КАК BIP_Статья, | ПОДСТРОКА(BIP_Статьи.КодВЗ, 1, 6) КАК КодFozzy | ИЗ | Справочник.BIP_Статьи КАК BIP_Статьи) КАК BIP_Статьи | ПО ПланированиеБюджетаДоходы.КодFozzy = BIP_Статьи.КодFozzy | ГДЕ | ПланированиеБюджетаДоходы.Ссылка.Год = &Год | И ПланированиеБюджетаДоходы.Ссылка.Месяц МЕЖДУ &МесяцН И &МесяцК | И ПланированиеБюджетаДоходы.Ссылка.Проведен = ИСТИНА | И ПланированиеБюджетаДоходы.ПравилоДДС.Код <> ""000000027"" | И ПланированиеБюджетаДоходы.Сумма <> 0 | | СГРУППИРОВАТЬ ПО | ВЫБОР | КОГДА ПланированиеБюджетаДоходы.Ссылка.РегионБюджетирования = ЗНАЧЕНИЕ(справочник.РегионыБюджетирования.пустаяСсылка) | ТОГДА ПланированиеБюджетаДоходы.РегионБюджетирования | ИНАЧЕ ПланированиеБюджетаДоходы.Ссылка.РегионБюджетирования | КОНЕЦ, | ПланированиеБюджетаДоходы.Статья.Вид) КАК ДоходыБюджета | | СГРУППИРОВАТЬ ПО | ДоходыБюджета.СтатьяВид) КАК Влож | ГДЕ | ВЫБОР | КОГДА &ИспользоватьДоход | ТОГДА ИСТИНА | КОНЕЦ | И Влож.СтатьяВид = &"+ПараметрФормулы.ПараметрИмя+" | | СГРУППИРОВАТЬ ПО | Влож.СтатьяВид) КАК "+ПараметрФормулы.ПараметрИмя; Если ПараметрыФормулы.Индекс(ПараметрФормулы)=0 тогда ТекстЗапросаОбщий = ТекстЗапроса; Иначе ТекстЗапросаОбщий2 = ТекстЗапросаОбщий2+", |("+ТекстЗапроса+")"+"КАК "+ПараметрФормулы.ПараметрИмя; КонецЕсли; КонецЦикла; ТекстПодмены = "ВЫБРАТЬ | "; ТекстПараметры = ""; Для каждого ПараметрФормулы из ПараметрыФормулы Цикл Формула = СтрЗаменить(Формула,ПараметрФормулы.ПараметрИмя,ПараметрФормулы.ПараметрИмя+".Первонач"); КонецЦикла; ТекстПараметры = "("+Формула+") КАК "+"Итог"; ТекстПоиска = "ВЫБРАТЬ | "+ПараметрыФормулы[0].ПараметрИмя+".Первонач"; ТекстЗапросаОбщий = СтрЗаменить(ТекстЗапросаОбщий,ТекстПоиска,ТекстПодмены+ТекстПараметры); ТекстЗапросаОбщий =ТекстЗапросаОбщий+ТекстЗапросаОбщий2; Параметр функции сейчас только вид статьи, а нужно добавить число, и статью. Как тогда реализовать проверку ? в запросе или формировать до запрос? |
|||
6
i-rek
25.02.13
✎
22:16
|
(5) жуть какая. выбросить нахрен.
жёсткий приоритет функционала над скоростью, отказаться от запросов вообще. Вспомнить про "вычислить()" и сделать максимально универсальную структуру данных под программируемый калькулятор |
|||
7
zladenuw
25.02.13
✎
22:18
|
(6) а где хранить промежуточные ? дано табличные части документа , шуршать выборкой или запросом все таки ?
|
|||
8
zladenuw
25.02.13
✎
22:19
|
(6) и я бы не сказал что долго.
|
|||
9
zladenuw
25.02.13
✎
22:20
|
то что можно оптимизировать запрос по выборке. думаю да. но это позже. главное доделать возможность формулы
|
|||
10
i-rek
25.02.13
✎
22:21
|
(8) да при чём тут долго ? Я как раз говорю что вы входите в сферу финансовых расчетов.
и не хотите покупать стандартные конструкторы. Стройте свой ! и забудьте про оптимизацию |
|||
11
zladenuw
25.02.13
✎
22:24
|
(10) не я там главный. сказали. вот делаю.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |