{}const=>[]async()letfn</>var
1C開発

1Cコードのよくあるエラーと、それらを苦労せずに読む方法

コンフィギュレーターの赤い線は、判決ではありません。最も一般的な1Cエラーを分析し、それらをオープンブックとして読むことを学び、1つのタイプミスを探すのに半日を費やすのをやめます。

К

Kodik

著者

1分で読める

1Cコンフィギュレーターを開いたことがあるなら、メッセージウィンドウにこれらの神秘的な赤い線が表示されているのを見たことがあるはずです。1Cのエラーメッセージは、別の芸術形式です。必要なものを正確に伝えることもあれば、30分間グーグル検索することもあります。最も一般的なエラーを分析し、それらをすばやく読み取ることを学び、それらを恐れるのをやめましょう。

1.「変数が定義されていません」

おそらく、初心者にとって最も古典的な間違いです。 それは次のようになります:

{Обработка.МояОбработка.Форма.ФормаОбработки.Форма(12,15)}: Переменная не определена (МояПеременная)

部分ごとに分析しましょう。中括弧内には、エラーが発生したモジュールへのパスがあります。(12,15) は、この行の12行目と15位を意味します。つまり、プラットフォームは文字通り、どこを見るべきかを指差しています。次に、説明自体が続きます。宣言されておらず、値が割り当てられていない変数を参照しました。

どうすればいいですか? 変数名に誤字脱字がないか確認してください。これが一番の原因です。また、変数が参照される前に宣言されていること、スコープが一致していること、つまり、プロシージャ内で宣言された変数が別のプロシージャで表示されないことを確認してください。

🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

2.「オブジェクトフィールドが見つかりません」

{Обработка.МояОбработка(45,8)}: Поле объекта не обнаружено (НесуществующееПоле)

このエラーは、存在しない属性、プロパティ、または列を参照しようとしたときに発生します。たとえば、「取引先」ディレクトリへのリンクを受け取り、Адресという名前のプロパティであるにもかかわらず、Контрагент.Адрессを2つの「c」で書き込みました。または、値の表を操作していて、追加するのを忘れた列を参照している場合です。

ライフハック: コンフィギュレーターで、オブジェクトの利用可能なすべてのプロパティとメソッドを表示するには、コンテキストヒント(Ctrl+Пробел)を使用します。これにより、デバッグ時間を節約できます。

3.「オブジェクトメソッドが見つかりません」

{ОбщийМодуль.МойМодуль(78,4)}: Метод объекта не обнаружен (ПолучитьДанные)

前のものと似ていますが、メソッドに関連しています。このオブジェクトにない関数またはプロシージャを呼び出しています。典型的な原因:オブジェクトのタイプを混同した(たとえば、オブジェクトの参照メソッドを呼び出した、またはその逆)、メソッド名に入力した、またはクライアントでサーバーメソッドを呼び出そうとした。

注意! このエラーは、クライアントとサーバーのコンテキストに分割されている管理フォームでは特に危険です。メソッドは完全に存在する可能性がありますが、コンパイル ディレクティブのために利用できない可能性があります。

4.「値がオブジェクトタイプの値ではありません」

{Документ.РеализацияТоваров.МодульОбъекта(22,1)}: Значение не является значением объектного типа (Получить)

初心者にとって最も混乱を招くエラーの1つです。これは、メソッドを呼び出すか、サポートされていない値のプロパティを参照しようとしていることを意味します。典型的な例は、期待されるオブジェクトの代わりにНеопределеноを受け取り、それを使用してチェーンをさらに操作しようとすることです。

コードを提示してください:

Справочники.Контрагенты.НайтиПоКоду("001").ПолучитьОбъект().Наименование

コード「001」の要素が存在しない場合、ПолучитьОбъект()Неопределеноを返し、Наименованиеへの呼び出しは失敗します。

解決策: 呼び出しチェーンを続行する前に、常にНеопределеноまたは空のリンクで結果を確認してください。

5. 「出力する情報が多すぎます」

{Форма.ФормаДокумента(1,1)}: Слишком много информации для вывода на клиенте

このエラーは、管理されたフォームで大量のデータを扱うユーザーに頻繁に表示されます。プラットフォームは、サーバーとクライアント間で送受信されるデータの量を制限します。フォームのプロパティに100万行の値のテーブルをアップロードしようとした場合、このエラーが発生します。

出口: データのバッチ処理メカニズム、フォーム上の値の表の代わりに動的リストを使用するか、データ処理をサーバーに移動して、結果のみをクライアントに提供します。

6.「手順を機能として扱う」

{Обработка.Загрузка(33,12)}: Обращение к процедуре как к функции (МояПроцедура)

経験豊富な開発者でさえも捕らえるクラシック。1C には明確な区別があります。プロシージャは値を返さず、関数は値を返します。Результат = МояПроцедура() を書き、МояПроцедураФункция ではなく Процедура として宣言した場合、プラットフォームはこのエラーを返します。

修正: ПроцедураФункция に変更して Возврат を追加するか、結果の割り当てを削除します。

7.「アクセス権の侵害」

{Документ.ЗаказКлиента.МодульОбъекта(5,3)}: Нарушение прав доступа!

このエラーはコードではなく、役割と権限に関するものです。現在のユーザーは、権限のないアクションを実行しようとしています。読み取り、書き込み、ドキュメントの実行、ディレクトリの変更など、これらはすべて構成の役割を介して構成されます。

よくあるケース: 開発者は完全な権限でテストしますが、通常のユーザーには十分な権限がありません。常にエンドユーザーの役割で動作を確認してください!

8.「コンテキストメソッドの呼び出しエラー」

{ОбщийМодуль.РаботаСФайлами(112,5)}: Ошибка при вызове метода контекста (Записать): Запись не верна

これはラッパーエラーです。プラットフォームは、組み込みメソッドの実行中に問題が発生したことを報告します。重要な情報は、コロンの後の括弧内にあります。ここではさらに読む必要があります。理由は、別のユーザーによるレコードのブロック、コードの一意性の違反、未入力の必須フィールド、またはデータベースレベルの制限である可能性があります。

呼び出しスタックの読み方

コードの奥深くでエラーが発生した場合、プラットフォームは呼び出しスタックを表示します。これは、実行が通過したプロシージャと関数のチェーンです。上から下に読む必要があります。一番上の行はエラーが発生した場所であり、次の各行は1つ上のレベルの呼び出しコードです。

通常、原因は最下位の関数自体ではなく、間違ったパラメータが渡されたチェーンの途中にあります。

ヒント: 一目でエラー全体を理解しようとしないでください。まず、エラーテキストを読み、次に行と位置を見つけ、次にコンテキストを見てください。このポイントにどのようなデータが来るか。デバッガー(コンフィギュレーターのF5)を使用し、ブレークポイントを設定して変数の値を確認します。

1Cエラーを読むための一般原則

1Cのエラーは、中括弧内のモジュールへのパス、丸括弧内の行番号と位置、説明の後の括弧内のエラーの種類と追加情報のいくつかの部分で構成されています。この構造に慣れると、エラーを読むことはストレスではなく、仕事の一部のルーチンになります。

3つのルールを覚えておいてください。

第一に、 行番号ではなく、常にエラーテキストから始めてください。テキストはコンテキストを提供します。

2つ目: エラーが不明な場合は、デバッガーを介してすべての関連変数のデータ型を確認してください。

第三に、 エラーが常に再現されない場合は、データが期待値と異なる条件を探します。おそらく、どこかでНеопределеноまたは特定の値の代わりに空のリンクが来るでしょう。

プログラミングの旅を始めたばかりで、1Cだけでなく、他の言語やテクノロジーも理解したい場合は、アプリケーションをチェックしてください コディックPython、JavaScript、HTML、CSSなどの構造化されたコースが、初心者向けにわかりやすい言葉で書かれています。質問がある場合や、志を同じくする人と話したい場合は、私たちの Telegramチャンネル 2000人以上の開発者が経験を共有し、お互いの成長を支援するサポートを受けています。

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要