Inheritance: ДокументСсылка, IСериализаторProtoBuf, IСериализаторJson
 public НачислениеПоБольничномуЛисту(byte[] УникальныйИдентификатор)
 {
     using (var Подключение = new SqlConnection(СтрокаСоединения))
     {
         Подключение.Open();
         using (var Команда = Подключение.CreateCommand())
         {
             Команда.CommandText = @"Select top 1
             _IDRRef [Ссылка]
             ,_Version [Версия]
             ,_Marked [ПометкаУдаления]
             ,_Number [Номер]
             ,_Fld6376 [ПериодРегистрации]
             ,_Fld6377RRef [Организация]
             ,_Fld6378 [Комментарий]
             ,_Fld6379RRef [Ответственный]
             ,_Fld21604RRef [Сотрудник]
             ,_Fld6380RRef [Физлицо]
             ,_Fld6382RRef [ПричинаНетрудоспособности]
             ,_Fld6383 [ПроцентОплаты]
             ,_Fld26875 [ЯвляетсяПродолжениемБолезни]
             ,_Fld6384RRef [ПервичныйБольничныйЛист]
             ,_Fld26876 [ДатаНачалаСобытия]
             ,_Fld6385 [ДатаНачала]
             ,_Fld26877 [ДатаНачалаОплаты]
             ,_Fld6386 [ДатаОкончания]
             ,_Fld18769 [ДатаНарушенияРежима]
             ,_Fld21605 [ПособиеОтражаетсяВРеглУчетеТекущимДокументом]
             ,_Fld6387RRef [ОграничениеПособия]
             ,_Fld6388 [НомерВходящегоДокумента]
             ,_Fld6389 [СерияВходящегоДокумента]
             ,_Fld6390RRef [ПерерассчитываемыйДокумент]
             ,_Fld18765RRef [ПричинаНетрудоспособностиПереходногоПериода]
             ,_Fld18766 [ПроцентОплатыПереходногоПериода]
             ,_Fld18767RRef [ОграничениеПособияПереходногоПериода]
             ,_Fld18768RRef [СлучайУходаЗаБольнымРебенкомПереходногоПериода]
             ,_Fld21606RRef [СтратегияОтраженияВУчете]
             ,_Fld6381RRef [УдалитьПриказ]
             ,_Fld21607 [ПодпадаетПодЕНВД]
             ,_Fld18763RRef [СлучайУходаЗаБольнымРебенком]
             ,_Fld18764 [ДнейОплаты]
             ,_Fld21608RRef [ВидРасчета]
             ,_Fld26878 [ДоплачиватьДоПолногоСреднегоЗаработка]
             ,_Fld26879RRef [ВидРасчетаДоплаты]
             ,_Fld26880 [ПериодРасчетаСреднегоЗаработкаНачало]
             ,_Fld26881 [ПериодРасчетаСреднегоЗаработкаОкончание]
             ,_Fld26882 [ПроцентОплатыБезЛьгот]
             ,_Fld26883RRef [ОграничениеПособияБезЛьгот]
             ,_Fld26884 [ПрименятьЛьготыПриНачисленииПособия]
             ,_Fld26885RRef [ВыплатаЗаСчетФедеральногоБюджета]
             ,_Fld26886RRef [ВидРасчетаЗаСчетРаботодателя]
             ,_Fld26887 [УчитыватьЗаработокПредыдущихСтрахователей]
             ,_Fld26888 [ДнейОплатыРаботодателем]
             ,_Fld26889 [НеВыплачиватьПособие]
             ,_Fld26890 [РасчетПоПравилам2010Года]
             ,_Fld26891 [УсловияИсчисленияКод1]
             ,_Fld26892 [УсловияИсчисленияКод2]
             ,_Fld26893 [УсловияИсчисленияКод3]
             ,_Fld26894 [СтажЛет]
             ,_Fld26895 [СтажМесяцев]
             ,_Fld26896 [СтажБезНестраховыхПериодовЛет]
             ,_Fld26897 [СтажБезНестраховыхПериодовСтажМесяцев]
             ,_Fld26898 [ПеречислятьПособиеПочтовымПереводом]
             ,_Fld26899RRef [Банк]
             ,_Fld26900 [НаименованиеБанка]
             ,_Fld26901 [БИКБанка]
             ,_Fld26902 [НомерЛицевогоСчета]
             ,_Fld26903 [АдресПочтовый]
             ,_Fld26904 [Фамилия]
             ,_Fld26905 [Имя]
             ,_Fld26906 [Отчество]
             ,_Fld26907RRef [ВидДокумента]
             ,_Fld26908 [СерияДокумента]
             ,_Fld26909 [НомерДокумента]
             ,_Fld26910 [ДатаВыдачиДокумента]
             ,_Fld26911 [ДатаДействияДокумента]
             ,_Fld26912 [ПериодПростояС]
             ,_Fld26913 [ПериодПростояПо]
             ,_Fld26914 [РасчетПособияИзТарифнойСтавки]
             ,_Fld26915RRef [ДолжностьУполномоченного]
             ,_Fld26916RRef [Уполномоченный]
             ,_Fld26917 [ПоставленаНаУчетВРанниеСрокиБеременности]
             ,_Fld26918 [ДатаВыдачиБольничного]
             ,_Fld26919 [КодПричиныНетрудоспособности]
             ,_Fld26920 [ДополнительныйКодПричиныНетрудоспособности]
             ,_Fld26921 [ВторойКодПричиныНетрудоспособности]
             ,_Fld26922 [ДатаИзмененияКодаПричиныНетрудоспособности]
             ,_Fld26923 [ДатаСправкиБеременной]
             ,_Fld26924 [ПериодНахожденияВСтационареСРебенкомС]
             ,_Fld26925 [ПериодНахожденияВСтационареСРебенкомПо]
             ,_Fld26926 [КодНарушенияРежима]
             ,_Fld26927 [ДатаРегистрацииДокументовМСЭ]
             ,_Fld26928 [УстановленаИзмененаГруппаИнвалидности]
             ,_Fld26929 [ДатаВыходаНаРаботу]
             ,_Fld26930 [ЯвляетсяДубликатом]
             ,_Fld26931 [АдресЛПУ]
             ,_Fld26932 [НаименованиеЛПУ]
             ,_Fld26933 [ОГРН_ЛПУ]
             ,_Fld26934 [НомерЛисткаПоОсновномуМестуРаботы]
             ,_Fld26935 [ДатаОкончанияПутевки]
             ,_Fld26936 [НомерПутевки]
             ,_Fld26937 [ОГРН_Санатория]
             ,_Fld26938 [НомерЛисткаПродолжения]
             ,_Fld26939 [ДатаНаправленияВБюроМСЭ]
             ,_Fld26940 [ДатаОсвидетельствованияМСЭ]
             ,_Fld26941 [НовыйСтатусНетрудопособного]
             ,_Fld26942 [ДатаНовыйСтатусНетрудопособного]
             ,_Fld26943 [КемВыданДокумент]
             ,_Fld26944 [ГруппаИнвалидности]
             ,_Fld26945 [КодПричиныПерерасчета]
             ,_Fld26946 [НДФЛсПособия]
             ,_Fld26947 [КоррСчетБанка]
             ,_Fld26948 [НомерСправкиБеременной]
             ,_Fld26949 [НаименованиеДокументаНаПроживание]
             ,_Fld26950 [СерияДокументаНаПроживание]
             ,_Fld26951 [НомерДокументаНаПроживание]
             ,_Fld26952 [ДатаВыдачиДокументаНаПроживание]
             ,_Fld26953 [АдресРегистрации]
             ,_Fld26954 [Телефон]
             ,_Fld26955 [ТарифнаяСтавкаОклад]
             ,_Fld26956 [СреднедневнойЗаработокНаПериодПростоя]
             ,_Fld26957 [ТелефонСоставителя]
             ,_Fld26958 [АдресПочтовыйКодПоКЛАДР]
             ,_Fld26959 [АдресРегистрацииКодПоКЛАДР]
             ,_Fld26960 [АдресЛПУКодПоКЛАДР]
             ,_Fld26961RRef [ЛПУ]
             ,_Fld26962 [НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении]
             From _Document323(NOLOCK)
             Where _IDRRef=@УникальныйИдентификатор";
             Команда.Parameters.AddWithValue("УникальныйИдентификатор", УникальныйИдентификатор);
             using (var Читалка = Команда.ExecuteReader())
             {
                 if (Читалка.Read())
                 {
                     //ToDo: Читать нужно через GetValues()
                     Ссылка = new Guid((byte[])Читалка.GetValue(0));
                     var ПотокВерсии = ((byte[])Читалка.GetValue(1));
                     Array.Reverse(ПотокВерсии);
                     Версия =  BitConverter.ToInt64(ПотокВерсии, 0);
                     ВерсияДанных =  Convert.ToBase64String(ПотокВерсии);
                     ПометкаУдаления = ((byte[])Читалка.GetValue(2))[0]==1;
                     Номер = Читалка.GetString(3);
                     ПериодРегистрации = Читалка.GetDateTime(4);
                     Комментарий = Читалка.GetString(6);
                     ПричинаНетрудоспособности = V82.Перечисления/*Ссылка*/.ПричиныНетрудоспособности.ПустаяСсылка.Получить((byte[])Читалка.GetValue(10));
                     ПроцентОплаты = Читалка.GetDecimal(11);
                     ЯвляетсяПродолжениемБолезни = ((byte[])Читалка.GetValue(12))[0]==1;
                     ПервичныйБольничныйЛист = new V82.ДокументыСсылка.НачислениеПоБольничномуЛисту((byte[])Читалка.GetValue(13));
                     ДатаНачалаСобытия = Читалка.GetDateTime(14);
                     ДатаНачала = Читалка.GetDateTime(15);
                     ДатаНачалаОплаты = Читалка.GetDateTime(16);
                     ДатаОкончания = Читалка.GetDateTime(17);
                     ДатаНарушенияРежима = Читалка.GetDateTime(18);
                     ПособиеОтражаетсяВРеглУчетеТекущимДокументом = ((byte[])Читалка.GetValue(19))[0]==1;
                     ОграничениеПособия = V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия.ПустаяСсылка.Получить((byte[])Читалка.GetValue(20));
                     НомерВходящегоДокумента = Читалка.GetString(21);
                     СерияВходящегоДокумента = Читалка.GetString(22);
                     ПерерассчитываемыйДокумент = new V82.ДокументыСсылка.НачислениеПоБольничномуЛисту((byte[])Читалка.GetValue(23));
                     ПричинаНетрудоспособностиПереходногоПериода = V82.Перечисления/*Ссылка*/.ПричиныНетрудоспособности.ПустаяСсылка.Получить((byte[])Читалка.GetValue(24));
                     ПроцентОплатыПереходногоПериода = Читалка.GetDecimal(25);
                     ОграничениеПособияПереходногоПериода = V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия.ПустаяСсылка.Получить((byte[])Читалка.GetValue(26));
                     СлучайУходаЗаБольнымРебенкомПереходногоПериода = V82.Перечисления/*Ссылка*/.СлучаиУходаЗаБольнымиДетьми.ПустаяСсылка.Получить((byte[])Читалка.GetValue(27));
                     СтратегияОтраженияВУчете = V82.Перечисления/*Ссылка*/.СтратегииОтраженияВРеглУчетеНачислений.ПустаяСсылка.Получить((byte[])Читалка.GetValue(28));
                     УдалитьПриказ = new V82.ДокументыСсылка.ПриемНаРаботуВОрганизацию((byte[])Читалка.GetValue(29));
                     ПодпадаетПодЕНВД = Читалка.GetDecimal(30);
                     СлучайУходаЗаБольнымРебенком = V82.Перечисления/*Ссылка*/.СлучаиУходаЗаБольнымиДетьми.ПустаяСсылка.Получить((byte[])Читалка.GetValue(31));
                     ДнейОплаты = Читалка.GetDecimal(32);
                     ДоплачиватьДоПолногоСреднегоЗаработка = ((byte[])Читалка.GetValue(34))[0]==1;
                     ПериодРасчетаСреднегоЗаработкаНачало = Читалка.GetDateTime(36);
                     ПериодРасчетаСреднегоЗаработкаОкончание = Читалка.GetDateTime(37);
                     ПроцентОплатыБезЛьгот = Читалка.GetDecimal(38);
                     ОграничениеПособияБезЛьгот = V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия.ПустаяСсылка.Получить((byte[])Читалка.GetValue(39));
                     ПрименятьЛьготыПриНачисленииПособия = ((byte[])Читалка.GetValue(40))[0]==1;
                     ВыплатаЗаСчетФедеральногоБюджета = V82.Перечисления/*Ссылка*/.ВыплатыПособийЗаСчетФедеральногоБюджета.ПустаяСсылка.Получить((byte[])Читалка.GetValue(41));
                     УчитыватьЗаработокПредыдущихСтрахователей = ((byte[])Читалка.GetValue(43))[0]==1;
                     ДнейОплатыРаботодателем = Читалка.GetDecimal(44);
                     НеВыплачиватьПособие = ((byte[])Читалка.GetValue(45))[0]==1;
                     РасчетПоПравилам2010Года = ((byte[])Читалка.GetValue(46))[0]==1;
                     УсловияИсчисленияКод1 = Читалка.GetString(47);
                     УсловияИсчисленияКод2 = Читалка.GetString(48);
                     УсловияИсчисленияКод3 = Читалка.GetString(49);
                     СтажЛет = Читалка.GetDecimal(50);
                     СтажМесяцев = Читалка.GetDecimal(51);
                     СтажБезНестраховыхПериодовЛет = Читалка.GetDecimal(52);
                     СтажБезНестраховыхПериодовСтажМесяцев = Читалка.GetDecimal(53);
                     ПеречислятьПособиеПочтовымПереводом = ((byte[])Читалка.GetValue(54))[0]==1;
                     НаименованиеБанка = Читалка.GetString(56);
                     БИКБанка = Читалка.GetString(57);
                     НомерЛицевогоСчета = Читалка.GetString(58);
                     АдресПочтовый = Читалка.GetString(59);
                     Фамилия = Читалка.GetString(60);
                     Имя = Читалка.GetString(61);
                     Отчество = Читалка.GetString(62);
                     СерияДокумента = Читалка.GetString(64);
                     НомерДокумента = Читалка.GetString(65);
                     ДатаВыдачиДокумента = Читалка.GetDateTime(66);
                     ДатаДействияДокумента = Читалка.GetDateTime(67);
                     ПериодПростояС = Читалка.GetDateTime(68);
                     ПериодПростояПо = Читалка.GetDateTime(69);
                     РасчетПособияИзТарифнойСтавки = ((byte[])Читалка.GetValue(70))[0]==1;
                     ПоставленаНаУчетВРанниеСрокиБеременности = ((byte[])Читалка.GetValue(73))[0]==1;
                     ДатаВыдачиБольничного = Читалка.GetDateTime(74);
                     КодПричиныНетрудоспособности = Читалка.GetString(75);
                     ДополнительныйКодПричиныНетрудоспособности = Читалка.GetString(76);
                     ВторойКодПричиныНетрудоспособности = Читалка.GetString(77);
                     ДатаИзмененияКодаПричиныНетрудоспособности = Читалка.GetDateTime(78);
                     ДатаСправкиБеременной = Читалка.GetDateTime(79);
                     ПериодНахожденияВСтационареСРебенкомС = Читалка.GetDateTime(80);
                     ПериодНахожденияВСтационареСРебенкомПо = Читалка.GetDateTime(81);
                     КодНарушенияРежима = Читалка.GetString(82);
                     ДатаРегистрацииДокументовМСЭ = Читалка.GetDateTime(83);
                     УстановленаИзмененаГруппаИнвалидности = ((byte[])Читалка.GetValue(84))[0]==1;
                     ДатаВыходаНаРаботу = Читалка.GetDateTime(85);
                     ЯвляетсяДубликатом = ((byte[])Читалка.GetValue(86))[0]==1;
                     АдресЛПУ = Читалка.GetString(87);
                     НаименованиеЛПУ = Читалка.GetString(88);
                     ОГРН_ЛПУ = Читалка.GetString(89);
                     НомерЛисткаПоОсновномуМестуРаботы = Читалка.GetString(90);
                     ДатаОкончанияПутевки = Читалка.GetDateTime(91);
                     НомерПутевки = Читалка.GetString(92);
                     ОГРН_Санатория = Читалка.GetString(93);
                     НомерЛисткаПродолжения = Читалка.GetString(94);
                     ДатаНаправленияВБюроМСЭ = Читалка.GetDateTime(95);
                     ДатаОсвидетельствованияМСЭ = Читалка.GetDateTime(96);
                     НовыйСтатусНетрудопособного = Читалка.GetString(97);
                     ДатаНовыйСтатусНетрудопособного = Читалка.GetDateTime(98);
                     КемВыданДокумент = Читалка.GetString(99);
                     ГруппаИнвалидности = Читалка.GetString(100);
                     КодПричиныПерерасчета = Читалка.GetString(101);
                     НДФЛсПособия = Читалка.GetDecimal(102);
                     КоррСчетБанка = Читалка.GetString(103);
                     НомерСправкиБеременной = Читалка.GetString(104);
                     НаименованиеДокументаНаПроживание = Читалка.GetString(105);
                     СерияДокументаНаПроживание = Читалка.GetString(106);
                     НомерДокументаНаПроживание = Читалка.GetString(107);
                     ДатаВыдачиДокументаНаПроживание = Читалка.GetDateTime(108);
                     АдресРегистрации = Читалка.GetString(109);
                     Телефон = Читалка.GetString(110);
                     ТарифнаяСтавкаОклад = Читалка.GetDecimal(111);
                     СреднедневнойЗаработокНаПериодПростоя = Читалка.GetDecimal(112);
                     ТелефонСоставителя = Читалка.GetString(113);
                     АдресПочтовыйКодПоКЛАДР = Читалка.GetString(114);
                     АдресРегистрацииКодПоКЛАДР = Читалка.GetString(115);
                     АдресЛПУКодПоКЛАДР = Читалка.GetString(116);
                     НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении = ((byte[])Читалка.GetValue(118))[0]==1;
                     //return Ссылка;
                 }
                 else
                 {
                     //return null;
                 }
             }
         }
     }
 }
 public static V82.ДокументыСсылка.НачислениеПоБольничномуЛисту ВзятьИзКэша(byte[] УникальныйИдентификатор)
 {
     var УИ = new Guid(УникальныйИдентификатор);
     if (Кэш.ContainsKey(УИ))
     {
         return (V82.ДокументыСсылка.НачислениеПоБольничномуЛисту)Кэш[УИ];
     }
     var Ссылка = new V82.ДокументыСсылка.НачислениеПоБольничномуЛисту(УникальныйИдентификатор);
     Кэш.Add(УИ, Ссылка);
     return Ссылка;
 }