Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Возможно ли задать переменную в вычисляемые поля в схеме СКД , 1С:Предприятие 8.3 (8.3.5.1517) - управляемое приложение          
Gigi Подменю пользователя
сообщение 30.07.20, 11:41
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем привет!
Проблема такая ...
На пример в отчете СКД нам нужны разные расчеты от данных запроса для создания доп. полей с последующим добавлением в поля ресурсы.
И тут вроде бы понятно как это сделать ... во вкладке: "Вычисляемые поля" в столбце: "Путь к данным" создаем на пример поле:
Цитата
"Сумма_ЮрЛица_Начислено_Квтч"

А в столбце "Вырожение" рядом пишем:
Цитата
"ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход".

Потом на следующей строке аналогично создаем:
Цитата
Путь к данным: "Сумма_ЮрЛица_Оплачено_Квтч"
Выражение: "ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход"

Потом
Цитата
Путь к данным: "РАСЧЕТ_ЮрЛица_Задолжность_Квтч"
Выражение: "ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход-ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход"

потом поле: "Сумма_ЮрЛица_Начислено_Руб" и т.д.
Казалось бы можно в таком стиле и все нормально, но в чем проблема .... вернее не проблема а малое неудобство...
Дело в том, что во вкладке "Вычисляемые поля" выше указанный это самый простой пример, а отчеты требуют другие более сложных расчеты. И необходимости создавать слишком много полей расчета и прописывать выражение, текст которой становиться все длиннее и длиннее... И это потому, что полностью приходится. повторять одно и то же ... тот текст выражения, который вроде бы уже был прописан до этого.
Потому ВОПРОС!
МОЖНО ЛИ ТЕКСТ ВЫРАЖЕНИЯ КАК-ТО ЗАПЕРЕМЕНИТЬ?
Т.е. на пример рассмотрим выше указанны простой пример:
Цитата
Путь к данным: "РАСЧЕТ_ЮрЛица_Задолжность_Квтч"
Выражение: "ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход-ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход"

Дело в том что как часть текста выражения:
Цитата
"ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход"

Так и часть:
Цитата
"ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход"

Все это уже было прописано под поля: "Сумма_ЮрЛица_Начислено_Квтч" и "Сумма_ЮрЛица_Оплачено_Квтч"
И зачем этот уже прописанный текст выражений ПОВТОРЯТЬ уже для других полей? На пример для поля: "РАСЧЕТ_ЮрЛица_Задолжность_Квтч".
Что бы этого не делать нельзя ли как-то их запеременить?
На пример вместо:
Цитата
Путь к данным: "РАСЧЕТ_ЮрЛица_Задолжность_Квтч"
Выражение: "ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход-ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход"

Написать:
Цитата
Путь к данным: "РАСЧЕТ_ЮрЛица_Задолжность_Квтч"
Выражение: "Переменная_ЮрЛицаКвтчНачислено-Переменная_ЮрЛицаКвтчОплачено"

Я пробовал так
Цитата
"Сумма_ЮрЛица_Начислено_Квтч-Сумма_ЮрЛица_Оплачено_Квтч"

Не выдает ошибку ... и понятное дело почему..
Вот в чем вопрос ..
Буду признателен!

Batchir Подменю пользователя
сообщение 30.07.20, 14:34
Сообщение #2

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

В схеме компоновки данных есть возможность определения вычисляемого поля. Вычисляемые поля представляют собой дополнительные поля схемы, значения которых будут вычисляться по некоторой формуле. Вычисляемые поля можно создавать для того, чтобы использовать поля из различных наборов данных, выполнять операции над полями наборов данных - объект, и для других целей. В настройках компоновки данных вычисляемое поле будет фигурировать под именем, указанным в пути к данным этого поля. Пользователь сможет работать с вычисляемым полем точно так же, как и с полем набора данных.

Для того чтобы система смогла получить значение вычисляемого поля, необходимо указать выражение вычисляемого поля. Выражение вычисляемого поля описывается на языке выражений компоновки данных. В выражениях вычисляемого поля есть ограничение - в нем нельзя использовать вычисляемые поля. В остальном, ограничений нет - можно использовать все синтаксические конструкции языка выражений, можно использовать поля наборов данных, можно использовать функции общих модулей конфигурации.

Для вычисляемого поля можно определить заголовок, ограничение доступности, выражение представления, выражения упорядочивания, тип значения, доступные значения и оформление также как для полей наборов данных. Кроме того, вычисляемое поле может быть определено как ресурс, для этого необходимо добавить данное поле в список ресурсов и указать выражение, по которому будет вычисляться итог.

Р.S. Информация взята с сайта ИТС.
Как вариант можно написать свою функцию общего модуля и передавать в неё значения в качестве параметров, а она пусть уже считает как Вам хочется.

Сообщение отредактировал Batchir - 30.07.20, 14:36

Спасибо сказали: Gigi,

Bernet Подменю пользователя
сообщение 30.07.20, 20:30
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Gigi @ Сегодня, 12:41 * ,
Если коротко - то использовать некоторое вычисляемое поле как параметр в другом вычисляемом поле - нельзя. Но вы можете вынести её в какой-то общий модуль, сделать экспортную функцию и сделать вызов в выражении вычисления вычисляемого поля, тогда повторяться не нужно будет

Сообщение отредактировал Bernet - 30.07.20, 20:31


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 31.07.20, 11:30
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Bernet @ Вчера, 21:30 * ,
Спасибо за инфу уважаемые друзья...
Ну в принципе, все что изложено выше я знал ... и в том числе по поводу этого:
Цитата(Batchir @ 30.07.20, 15:34) *
можно использовать функции общих модулей конфигурации.

Но, знал кроме как раз вот этого вопроса:
Цитата(Batchir @ 30.07.20, 15:34) *
В выражениях вычисляемого поля есть ограничение - в нем нельзя использовать вычисляемые поля

И я, конечно же, догадывался что именно так ... просто хотел как раз именно сей вопрос и уточнить.
Ну а что касается:
Цитата(Bernet @ 30.07.20, 21:30) *
Но вы можете вынести её в какой-то общий модуль, сделать экспортную функцию и сделать вызов в выражении вычисления вычисляемого поля, тогда повторяться не нужно будет

Не очень согласен ... будет... Ибо даже с применением глобальных экспортных функций все равно в выражениях для разных вычисляемых полей нужно будет указывать одни и те же значения аргументов вызываемой оттуда функций
К примеру, выражение без экспортной функции для конкретного выше изложенного простого примера выглядит так
Цитата
Путь к данным: "РАСЧЕТ_ЮрЛица_Задолежнность_Квтч"
Выражение: "ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход-ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход"

А уже с применением функции вот так:
Цитата
Путь к данным: "РАСЧЕТ_ЮрЛица_Задолежнность_Квтч"
Выражение: "СКД.Задолженность(ЮрЛица_Квтч_Приход,ЮрЛицаИП_Квтч_Приход,ЮрЛица_Квтч_Расход,ЮрЛицаИП_Квтч_Расход)"

Это если на пример создать модуль: "СКД" и там примитивненько прописать так:
Функция НачисленоОплачено(Доля_ЮрЛица,Доля_ЮрЛицаИП)  Экспорт
Возврат  Доля_ЮрЛица+Доля_ЮрЛицаИП;        
КонецФункции

Функция Задолженность(ЮрЛица_Приход,ЮрЛицаИП_Приход,ЮрЛица_Расход,ЮрЛицаИП_Расход)  Экспорт
//==================
Начислено=НачисленоОплачено(ЮрЛица_Приход,ЮрЛицаИП_Приход);
Оплачено=НачисленоОплачено(ЮрЛица_Расход,ЮрЛицаИП_Расход);
//==================
Возврат  Начислено-Оплачено;    
КонецФункции

Функция ПроцентОплаты(ЮрЛица_Приход,ЮрЛицаИП_Приход,ЮрЛица_Расход)  Экспорт
//==================    
Начислено=НачисленоОплачено(ЮрЛица_Приход,ЮрЛицаИП_Приход);
Оплачено=НачисленоОплачено(ЮрЛица_Расход,ЮрЛицаИП_Расход);
//==================    
Если Начислено=0 Тогда    
    Возврат  0;    
Иначе    
    Возврат  Окр(Оплачено/Начислено*100,2);
КонецЕсли;
//==================    
КонецФункции

Т.е. все равно нужно повторять те же "ЮрЛица_Квтч_Приход",ЮрЛица_Квтч_Расход, и т.д. С разницей только в том, что при первом пишешь без функции, а при втором внутри функции. И это из-за ограничения ... которая все таки дает неудобство... хоть и малое.
Хотя, не смотря на это, с применением функций все таки удобнее ... чем например в вырождениях писать вот так:
Цитата
ВЫБОР
КОГДА ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход=0 ТОГДА
0
ИНАЧЕ
Окр((ЮрЛица_Квтч_Расход+ЮрЛицаИП_Квтч_Расход)/(ЮрЛица_Квтч_Приход+ЮрЛицаИП_Квтч_Приход)*100,2)
КОНЕЦ

И конечно тут вместо этого удобнее через функцию... на пример функцию: "ПроцентОплаты".
Так что ладно ... хоть так и то дело.
Всем огромное спасибо! Пока!

Batchir Подменю пользователя
сообщение 03.08.20, 10:45
Сообщение #5

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Вы можете в функцию передать все ваши параметры плюс один дополнительный, например:
Функция ВычислитьСумму(Сумма1, Сумма2, Сумма3, Сумма4, МетодСуммирования) Экспорт
    
    Если МетодСуммирования = 1 Тогда
        Результат = Сумма1 + Сумма2;
    ИначеЕсли МетодСуммирования = 2 Тогда
        Результат = Сумма3 + Сумма4;
    ИначеЕсли МетодСуммирования = 3 Тогда
        Результат = Сумма1 + Сумма2 + Сумма3 + Сумма4;
    Иначе
        Результат = 0;
        // ну и т.д. как душе угодно
    КонецЕсли;
    Возврат Результат;

Конецфункции;


Тогда код в выражениях будет почти всегда один и тот же для облегчения написания, а управлять расчетом будет отдельный параметр

Спасибо сказали: Gigi,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 12:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!