テーブルで計算式を入れる時

 いつも大変お世話になっております。

先日も投稿して、アドバイス頂いておりました。

https://developer.cybozu.io/hc/ja/community/posts/115010339006-%E8%AB%8B%E6%B1%82%E3%82%A2%E3%83%97%E3%83%AA

まだ行き詰まったので、アドバイスいただきたく投稿させていただきました。

①小計=購入単価×年換算係数×契約数 (年換算係数(1 or 12))

にしたいですが、テーブルの外にある「購入単価」をどうやってテーブルの中の計算式に入れたらいいのかわからなくて・・

②また、「年換算係数」をレコード追加するときに、レコード作成者が記入できないようにしたいですが(今は一応1or 12が入りますが、レコード作成者の記入画面でも数値を入力することができてしまって)、どんな思考で考えればよろしいでしょうか?アドバイスよろしくお願い致します。

(function() {
“use strict”;
kintone.events.on([‘app.record.create.submit’,‘app.record.edit.submit’], function(event){
var record = event.record;
record.Table.value.forEach(function(element, index){
if (record[‘単位’][‘value’] === ‘1ユーザー/月’) {
record.Table.value[index].value.年換算係数.value = 12;

}else {

record.Table.value[index].value.年換算係数.value = 1;
}

record.Table.value[index].value.小計.value = Number(element.value.年換算係数.value) * Number(element.value.契約数.value);
});
return event;
});
})();

玲香様

お世話になっております。
cstapの江田と申します。

1について、サブテーブル外のフィールドについてもフィールドコードを設定することで計算に用いることができます。
https://help.cybozu.com/ja/k/user/set_autocalc.html
小計の計算式を「購入単価*年換算係数*契約数」とするのであれば、購入単価のフィールドコードを「購入単価」と設定すれば計算できます。

2について、年換算係数はレコードごとに1つの値に定まると思えるのですが、そのような認識で宜しかったでしょうか?
もしそのようでしたら、サブテーブル外に年換算係数のフィールドを設置しては如何でしょうか。
サブテーブルに含まれないフィールドであれば容易に入力不可に設定できます。

サンプルコードを書いてみました。
ご参考になればと思います。

(function() {
"use strict";
kintone.events.on(['app.record.create.show','app.record.edit.show'], function(event){
var record = event.record;
record.年換算係数.disabled = true;
return event;
});
kintone.events.on(['app.record.create.change.単位','app.record.edit.change.単位'], function(event){
var record = event.record;
if (record['単位']['value'] === '1ユーザー/月') {
record.年換算係数.value = 12;
}else {
record.年換算係数.value = 1;
}
return event;
});
})();

玲香さん、江田さん

横から失礼します。

江田さんからコード例がありましたので、私からプラグインを使った例を。

有償ですが、計算式プラグイン項目検証プラグインを使った例です。

Excel の計算式のような設定で、対応できます。

 

・操作例

 

 

 

・計算式プラグインの設定例

・項目検証プラグインの設定例

 

江田篤史 様

いつもお世話になっております。

アドバイスとサンプルコードまでサポートしていただき、本当にありがとうございます。求めていた形で出来ました。

本当にありがとうございました。とても感謝しております。

 

 

 

rex0220

いつも大変お世話になっております。

rex0220さんの作っていらっしゃるプラグイン本当にすばらしいです。

ちょっと時間かかるかもしれないですが、上司と相談しながら、未解決のアプリはぜひ購入も含め、検討させていただきます。

いつもアドバイスいただき、本当にありがとうございます。