/// <summary>
        /// Вспомогательный метод заполнения кортежей OpenPositionValues, ClosePositionValues и OtherPositionValues данными
        /// </summary>
        /// <param name="positions"></param>
        /// <param name="currentProp"></param>
        /// <param name="isDanger">Дополнительный параметр, указывает 'опасено' ли это поле для редактирования</param>
        /// <param name="valueList">Список свойст из таблици представления 'SafePositionEdit'. В этом методе в 'valueList' добавляется всегда
        /// однин элемент (новая строка в таблице представления 'SafePositionEdit'). Но при этом считается статистика</param>
        private static void FillProrertyList(IEnumerable<PositionItem> positions, PropertyInfo currentProp, bool isDanger,  List<SystemProperty> valueList)
        {
            var positionItems = positions as PositionItem[] ?? positions.ToArray();

            //Содержит человеко-понятное имя свойства из атрибута
            var propTitle = currentProp.Name;
            try
            {
                var attrDisplName = currentProp.CustomAttributes.SingleOrDefault(x => x.AttributeType == typeof (DisplayNameAttribute));
                if (attrDisplName != null) propTitle = (string) attrDisplName.ConstructorArguments[0].Value;
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("FillProrertyList() - {0} {1}", Resource.TextUnableReadAttributeDisplayName, propTitle), ex);
            }

            if (positionItems.Count() == 1)
            {
                var propObj = currentProp.GetValue(positionItems.Single());
                var propObjStr = propObj == null ? string.Empty : Converter.GetStringFromObject(propObj);

                var newRow = new SystemProperty
                    {
                        #region
                        PropertyType = currentProp.PropertyType,
                        SystemName = currentProp.Name,
                        PropertyTypeName = Utils.GetTypeDescription(currentProp.PropertyType).Item1,
                        PropertyTypeComment = Utils.GetTypeDescription(currentProp.PropertyType).Item2,
                        Title = propTitle,
                        IsDanger = isDanger,
                        Value = propObjStr,
                        Comment = Resource.TextSameInAllSelectedItems,
                        Tag = propObjStr
                        #endregion
                    };

                newRow.SetDescription();
                valueList.Add(newRow);
                return;
            }

            //=============   В случае, если для редактирования было выбрано больше двух строк  ==============
            //сюда будем складывать статистику
            var differentValues = new List<string>(); // примеры значений текущего свойства
            const string strNull = "null";
            const string strEmpty = " - ";

            // собираем статистику по текущему свойству
            foreach (var item in positionItems)
            {
                var propObj = currentProp.GetValue(item);
                var currentValues = propObj == null ? strNull : string.IsNullOrEmpty(propObj.ToString()) ? strEmpty : Converter.GetStringFromObject(propObj);
                if (differentValues.Contains(currentValues)) continue;
                differentValues.Add(currentValues);
            }

            var newMultiRow = new SystemProperty
            {
                #region
                PropertyType = currentProp.PropertyType,
                SystemName = currentProp.Name,
                PropertyTypeName = Utils.GetTypeDescription(currentProp.PropertyType).Item1,
                PropertyTypeComment = Utils.GetTypeDescription(currentProp.PropertyType).Item2,
                Title = propTitle,
                IsDanger = isDanger,
                Value = string.Format("{0}", string.Join(", ", differentValues)),
                Comment = (differentValues.Count < 2) ? Resource.TextSameInAllSelectedItems : string.Format("{0} {1}", Resource.TextNumberDistinctValues, +differentValues.Count),
                Tag = (differentValues.Count == 1) ? differentValues[0].Replace(strNull, string.Empty).Replace(strEmpty, string.Empty) : string.Empty
                #endregion
            };

            newMultiRow.SetDescription();
            valueList.Add(newMultiRow);
        }