/// <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('\'', '"')); }