private void данныеТаблицыИстории_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
        {
            List <ЭлементПросмотраЗаписиИсторииСборки> list = this.ТекущийСписокЭлементов;

            if (((list != null) && (((e.Column != null) && (e.Column.Tag != null)) && !string.IsNullOrEmpty(e.Column.Tag.ToString()))) && ((e.ListSourceRowIndex >= 0) && (e.ListSourceRowIndex < list.Count)))
            {
                string key  = string.Format("{0}:{1}", e.Column.Name, e.ListSourceRowIndex);
                object obj2 = e.Value;
                if (this.значенияЯчеек.ContainsKey(key))
                {
                    obj2 = this.значенияЯчеек[key];
                }
                else
                {
                    string str3;
                    string str2 = e.Column.Tag.ToString().Trim().ToLower();
                    ЭлементПросмотраЗаписиИсторииСборки сборки = list[e.ListSourceRowIndex];
                    if (str2.StartsWith("значение_столбца_источника_"))
                    {
                        str3 = str2.Substring(0x1b).Trim();
                        obj2 = this.ОписаниеТекущегоУровня.ПолучитьЗначениеПоляИсточника(сборки, str3);
                        if (obj2 == null)
                        {
                            obj2 = 0M;
                        }
                        else if (obj2 is ОбщийЧисловойТип)
                        {
                            obj2 = (obj2 as ОбщийЧисловойТип).Значение;
                            if (obj2 == null)
                            {
                                obj2 = 0.00M;
                            }
                        }
                    }
                    else if (str2.StartsWith("значение_столбца_приемника_"))
                    {
                        str3 = str2.Substring(0x1b).Trim();
                        obj2 = this.ОписаниеТекущегоУровня.ПолучитьЗначениеПоляТекущейТаблицы(сборки, str3);
                        if (obj2 == null)
                        {
                            obj2 = 0M;
                        }
                        else if (obj2 is ОбщийЧисловойТип)
                        {
                            obj2 = (obj2 as ОбщийЧисловойТип).Значение;
                            if (obj2 == null)
                            {
                                obj2 = 0.00M;
                            }
                        }
                    }
                    else
                    {
                        obj2 = сборки.ПолучитьЗначениеПараметра(str2);
                        if (obj2 is ОбщийЧисловойТип)
                        {
                            obj2 = (obj2 as ОбщийЧисловойТип).Значение;
                            if (obj2 == null)
                            {
                                obj2 = 0.00M;
                            }
                        }
                        decimal num = 0.00M;
                        if (!(obj2 is decimal))
                        {
                            try
                            {
                                if (Конвертер.ПопробоватьВЧисло(obj2.ToString(), out num))
                                {
                                    obj2 = num;
                                }
                            }
                            catch
                            {
                            }
                        }
                    }
                    this.значенияЯчеек.Add(key, obj2);
                }
                e.Value = obj2;
            }
        }
        private bool ПроверитьКорректностьДанных(ref List <СтрокаОтчетаСверкиДанных> списокОшибокЗаполнения, ref int количествоОшибок, ref int количествоПредупреждений)
        {
            if (списокОшибокЗаполнения == null)
            {
                списокОшибокЗаполнения = new List <СтрокаОтчетаСверкиДанных>();
            }
            bool flag = true;
            Dictionary <string, List <string> > dictionary = new Dictionary <string, List <string> >();

            if (!this.Таблица.ПроверитьЗаполненностьДанных(out dictionary))
            {
                foreach (KeyValuePair <string, List <string> > pair in dictionary)
                {
                    foreach (string str in pair.Value)
                    {
                        СтрокаОтчетаСверкиДанных item = new СтрокаОтчетаСверкиДанных();
                        item.Форма               = this.Таблица.ЭкраннаяФорма.ОтчетнаяФорма.Метаструктура.Наименование;
                        item.Столбец             = pair.Key;
                        item.Строка              = str;
                        item.Субтаблица          = this.Таблица.Наименование;
                        item.ТипОшибки           = "Незаполненная ячейка";
                        item.СохранениеРазрешено = false;
                        списокОшибокЗаполнения.Add(item);
                    }
                }
            }
            списокОшибокЗаполнения.AddRange(this.Таблица.Данные.ТаблицаДанных.МатрицаЗначений.ПроверитьУникальностьСтрок());
            if (this.Таблица.Данные.ТаблицаДанных.ДанныеФормы.Идентификатор.КомпонентОтчетногоПериода.ОтчетныйПериод.ДатаНачала >= Конвертер.ВДату("01.01.2009"))
            {
                СверкаКлассификаторов классификаторов = this.Таблица.ЭкраннаяФорма.ОтчетнаяФорма.ПолучитьОбъектСверкиКлассификаторов();
                классификаторов.ПроверятьНаПустоту    = false;
                классификаторов.УдалятьНеверныеСтроки = false;
                списокОшибокЗаполнения.AddRange(классификаторов.Проверить(this.Таблица.Данные.ТаблицаДанных));
            }
            foreach (СтрокаОтчетаСверкиДанных данных2 in списокОшибокЗаполнения)
            {
                if (данных2.СохранениеРазрешено)
                {
                    количествоПредупреждений++;
                }
                else
                {
                    количествоОшибок++;
                    flag = false;
                }
            }
            return(flag);
        }