レコードでルックアップに社員番号を入力して、フィールドの元番号(フィールド名:元)を取得します。
そのレコード内でサブテーブルを作成して、サブテーブルの中のルックアップ
にフィールドの元番号と同じ番号をサブテーブルのルックアップ(フィールド名:部署番号)に
同じように入れて、自動取得させたいです。
決められた数字をサブテーブルのルックアップにて自動取得させることが
できるようになったのですが、フィールドの元番号と同じ数字をいれようと
すると、うまく取得できません。
(function() {
“use strict”;
var record = kintone.app.record.get();
// 新規登録・編集画面
kintone.events.on([‘app.record.create.show’,‘app.record.edit.show’,‘app.record.edit.change.社員番号’], function(event) {
var record = event.record;
var subtable = record[‘日報明細’].value;
var moto=recod[‘moto’].value;
for (var i = 0; i < subtable.length; i++) {
subtable[i].value[‘部署番号’].value=moto; //←motoを"31"とすると取得できます。
subtable[i].value[‘部署番号’].lookup = true;}
return event;
});
// 「明細」サブテーブルの変更イベント(行追加削除を拾う)
kintone.events.on([‘app.record.create.change.日報明細’, ‘app.record.edit.change.日報明細’], function(event) {
var row = event.changes.row;
var moto=recod[‘元’].value;
row.value[‘部署番号’].value = moto; //←motoを"31”とすると取得できます。
row.value[‘部署番号’].lookup = true;
return event;
});
})();
どのように書けば、取得できるか、よろしくお願いいたします。
基本的には、recordがrecodになっている誤字によるものと思われます。
以下だとどうなりますか?
(function () {
"use strict";
// var record = kintone.app.record.get(); ←不要なので削除
// 新規登録・編集画面
kintone.events.on(['app.record.create.show', 'app.record.edit.show', 'app.record.edit.change.社員番号'], function (event) {
var record = event.record;
var subtable = record['日報明細'].value;
// var moto = recod['moto'].value;
var moto = record['moto'].value; // recod → record
for (var i = 0; i < subtable.length; i++) {
subtable[i].value['部署番号'].value = moto; //←motoを"31"とすると取得できます。
subtable[i].value['部署番号'].lookup = true;
}
return event;
});
// 「明細」サブテーブルの変更イベント(行追加削除を拾う)
kintone.events.on(['app.record.create.change.日報明細', 'app.record.edit.change.日報明細'], function (event) {
var record = event.record; // 必要
var row = event.changes.row;
// var moto = recod['元'].value;
var moto = record['元'].value; // recod → record
row.value['部署番号'].value = moto; //←motoを"31”とすると取得できます。
row.value['部署番号'].lookup = true;
return event;
});
})();
どうもありがとうございました。
サブテーブルの行追加時のイベントは成功しました。
スペルをよく見直したいと思います。
そして、基本的なところも見ていただき、勉強になりました。
自分で見直してみたのですが、
社員番号がルックアップでした。
そのため、app.record.edit.change.<フィールドコード>には使用できませんでした。
社員番号のルックアップによって、元番号が表示されます
そして、元番号と連動させたいルックアップの部署番号はテーブル上にあります。
そのため、イベント発生がテーブルの行追加、行削除ボタンがクリックされたタイミングに
なってしまうので、社員番号入力とともに、ルックアップで値がコピーされる元番号をテーブル上の部署番号に入力するのは難しそうだ
だと思いました。
https://developer.cybozu.io/hc/ja/articles/202166270
そのため、社員番号が入力されたタイミングで部署番号を入力する方法は他にあるでしょうか?
重ねての質問になってしまい、申し訳ございませんが、よろしくお願いいたします。
社員番号のルックアップで部署番号がセットされるのであれば、
部署番号のchangeイベントを設定すれば、
社員番号のルックアップ時に部署番号のchangeイベントが走るかと思われます。
画像がなく、わかりにくく、申し訳ございませんでした。
使用したい画面のリンクを作成いたしました。
社員番号を入力すると、元番号がセットされるので、
元番号のchangeイベントを設定してみました。
2段目以下のテーブルは動いたのですが、1段目のテーブルは社員番号を入力しても、部署番号は動きませんでした。
状況をうまく説明できず、お手数をおかけします。
すみません現在の状況がわからず、
元番号のchangeイベントは走るが、30行ほどある日報明細のうち1行目だけ設定されない
というような状況でしょうか?
現在のソースコードは貼れますか?
説明をうまくできず、お手数をおかけした申し訳ございません。
日報を新規作成で作成して、
社員番号(ルックアップ)を入力→元番号がセットされる(フィールド)
その下にサブテーブルの空の日報明細が1行あります。その報明細の中に部署番号(ルックアップ)があります。
その後、サブテーブルを増やして日報を入力していきます。
社員番号入力後に増加させたサブテーブルの2段目以降は、部署番号が入力できるようになりました。
(function() {
"use strict;
kintone.events.on([‘app.record.criate.show’,‘app.record.edit.show’,‘app.record.edit.chane.元’],funciton(event){
var record=event.record;
var subtable=record[‘日報明細’].value;
var moto=record[‘元’].value;
subtable[0].value[‘部署番号’].value=moto;
subtable[0].value[‘部署番号’].lookup=true;
return event;
});
kintone.events.on([‘app.record.create.change.日報明細’,‘app.record.edit.change.日報明細’],funciton(event){
var record=event.record;
var row=event.changes.row;
var moto=record[‘元’].value;
row.value[‘部署番号’].value=moto;
row.value[‘部署番号’]=lookup=true.
return event;
});
})();
現在ののソースコードです。
何度もお手数をおかけします。
よろしくお願いいたします。
内容理解できました。
新規作成時のchangeイベントは、app.record.create.changeですので、
3行目に、app.record.create.change.元 を設定してあげれば動くかと思われます。
(function () {
"use strict";
kintone.events.on(['app.record.create.change.元', 'app.record.edit.change.元'], function (event) {
var record = event.record;
var subtable = record['日報明細'].value;
var moto = record['元'].value;
for (var i = 0; i < subtable.length; i++) {
subtable[i].value['部署番号'].value = moto;
subtable[i].value['部署番号'].lookup = true;
}
return event;
});
kintone.events.on(['app.record.create.change.日報明細', 'app.record.edit.change.日報明細'], function (event) {
var record = event.record;
var row = event.changes.row;
var moto = record['元'].value;
row.value['部署番号'].value = moto;
row.value['部署番号'] = lookup = true;
return event;
});
})();
ありがとうございます。
サブレコードの1段目のルックアップから自動で取得できました。
changeイベントを、もう一度、勉強し直したいと思います。
説明が下手で、ご迷惑をおかけしました。
本当にありがとうございました。
system
(system)
クローズされました:
2025 年 8 月 20 日午前 1:35
11
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。