private static void AttachDocumentToCard(this CardData self, UserSession Session,
                                                 Protocol document, bool fileListExist = true)
        {
            var rdm = self.Sections[CardOrd.MainInfo.ID].FirstRow;
            // ReSharper disable PossibleInvalidOperationException
            var flc = Session.CardManager.GetCardData(rdm.GetGuid("FilesID").Value);
            // ReSharper restore PossibleInvalidOperationException
            var fileList = flc.Sections[flc.Type.AllSections["FileReferences"].Id];

            // Проверка существования файла протокола в карточке
            if (fileList.Rows.Any(file => document.PhysicalFile.Name.Contains(file.GetString("FileName"))))
            {
                return;
            }

            RowData si = SearchItemInReference(Session, Session.CardManager
                                               .GetDictionaryData(DocsVision.Platform.Cards.Constants.RefStaff.ID), DocsVision.Platform.Cards.Constants.RefStaff.Employees.ID, "AccountName",
                                               (string)Session.Properties["AccountName"].Value);

            var sdp = self.Sections[CardOrd.Properties.ID];

            sdp.SetTableProperty("Дата", DateTime.Now, FieldType.DateTime);
            sdp.SetTableProperty("Действие", "Прикреплен протокол калибровки");
            sdp.SetTableProperty("Участник", si.Id, FieldType.UniqueId);
            sdp.SetTableProperty("Комментарий", "Автоматическое прикрепление протокола калибровки " + document.PhysicalFile.Name);
            sdp.SetTableProperty("Ссылки", null);

            self.AttachFileToCard(Session, document, fileListExist);
        }