예제 #1
0
            /// <summary>
            /// Проверить, что справочник, указанный в выражении, существует.
            /// </summary>
            /// <param name="expression">Выражение с именем справочника.</param>
            private void CheckReferenceInExpressionExists(IsblParser.ExpressionContext expression)
            {
                var stringContext = expression.operand()?.@string();

                if (stringContext != null)
                {
                    // Имя справочника в виде строки, например, "ПОЛ".
                    var referenceName = stringContext.GetText().Trim('\'', '"');
                    if (!IsReferenceExists(referenceName, withOldReferences: true))
                    {
                        UsingReferenceEntries.Add(new UsingReferenceEntry {
                            Context = expression, ReferenceName = referenceName
                        });
                    }
                }
                else
                {
                    var variableContext = expression.operand()?.variable();
                    if (variableContext != null)
                    {
                        var variableName = variableContext.GetText();
                        if (mainContext.Application.IsExistConstant(variableName))
                        {
                            // Имя справочника в виде системной константы, например, SYSREF_USERS.
                            var referenceName = mainContext.Application.GetConstantValue(variableName);
                            if (!IsReferenceExists(referenceName, withOldReferences: true))
                            {
                                UsingReferenceEntries.Add(new UsingReferenceEntry {
                                    Context = expression, ReferenceName = referenceName
                                });
                            }
                        }
                    }
                }
            }
            /// <summary>
            /// Получить строковую константу из выражения.
            /// </summary>
            /// <param name="expression">Выражение.</param>
            /// <returns>Строковая константа, либо null, если выражение не является строкой.</returns>
            private static string GetStringOperandValue(IsblParser.ExpressionContext expression)
            {
                var operand = expression.operand();

                if (operand?.@string() == null)
                {
                    return(null);
                }
                return(operand.@string().GetText().Trim('\'', '"'));
            }
 /// <summary>
 /// Получить строковую константу из выражения.
 /// </summary>
 /// <param name="expression">Выражение.</param>
 /// <returns>Строковая константа, либо null, если выражение не является строкой.</returns>
 private static string GetStringOperandValue(IsblParser.ExpressionContext expression)
 {
     return(expression.operand()?.@string()?.GetText().Trim('\'', '"'));
 }