private void btnSave_Click(object sender, EventArgs e)
        {
            string sVeterinaryLicence = txtVeterinaryLicence.Text.Trim();
            string sVeterinaryName    = txtVeterinaryName.Text.Trim();

            // проверки
            if (sVeterinaryLicence.Length == 0)
            {
                RFMMessage.MessageBoxError("Не указан номер свидетельства...");
                txtVeterinaryLicence.Select();
                return;
            }

            if (dtpVeterinaryDateBeg.IsEmpty)
            {
                RFMMessage.MessageBoxError("Не указана дата начала действия свидетельства...");
                txtVeterinaryProducer.Select();
                return;
            }

            /*if (sExportXML.Length == 0)
             * {
             *  if (RFMMessage.MessageBoxYesNo("Не заполнены данные для экспорта...\n" +
             *      "Все-таки сохранить?") != DialogResult.Yes)
             *      return;
             * }*/

            if (grdData.Rows.Count == 0)
            {
                if (RFMMessage.MessageBoxYesNo("Не выбрано ни одного товара...\n" +
                                               "Все-таки сохранить?") != DialogResult.Yes)
                {
                    return;
                }
            }

            // уникальность номера
            RFMCursorWait.Set(true);

            Good oGoodTemp = new Good();

            oGoodTemp.FillTableGoodsVeterinaries(null, null);
            foreach (DataRow dr in oGoodTemp.TableGoodsVeterinaries.Rows)
            {
                if (dr["VeterinaryLicence"].ToString().Trim().ToUpper() == sVeterinaryLicence.ToUpper() &&
                    dr["VeterinaryName"].ToString().Trim().ToUpper() == sVeterinaryName.ToUpper() &&
                    (!nGoodVeterinaryID.HasValue || (int)nGoodVeterinaryID != (int)dr["ID"]))
                {
                    RFMCursorWait.Set(false);
                    RFMMessage.MessageBoxError("Такой номер свидетельства с таким же наименованием товара уже есть...");
                    txtVeterinaryLicence.Select();
                    return;
                }
            }
            RFMCursorWait.Set(false);

            // собственно сохранение
            oGood.ClearError();
            oGood.SaveGoodVeterinary(ref nGoodVeterinaryID, sVeterinaryLicence, txtVeterinaryProducer.Text.Trim(),
                                     txtVeterinaryName.Text.Trim(), txtVeterinaryNote.Text.Trim(),
                                     txtVeterinaryMark.Text.Trim(), txtVeterinaryLaboratory.Text.Trim(),
                                     txtVeterinaryDateOfProducing.Text.Trim(),
                                     dtpVeterinaryDateBeg.Value.Date, sExportXML,
                                     tGoodsVeterinaries);
            if (oGood.ErrorNumber == 0)
            {
                // код добавленной записи
                if (nGoodVeterinaryID.HasValue)
                {
                    MotherForm.GotParam = new object[] { (int)nGoodVeterinaryID };
                    DialogResult        = DialogResult.Yes;
                    Dispose();
                }
            }
        }