Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 17:45

Изменение элементов справочника в выборке

Автор Zeratul, 25 ноя 2010, 11:05

0 Пользователей и 1 гость просматривают эту тему.

Zeratul

Подскажите пожалуйста, хочу сделать выборку всех элементов справочника и добавить в них изменения,  то есть дополнить их и сохранить!
Делал следующее
Спр = Справочники.Справ.Выборка();
Пока Спр.Следующий()=1 Цикл
Объект = Спр.ПолучитьОбъект();
Объект.Код = "Префикс" + Код;
Объект.Дата = Дата;
Объект.Записать();

В таком варианте пишет ошибку  - Поле код недоступен для редактирования и все остальные поля тоже
Я понимаю что я не могу изменить их так как у меня Тип - Выборка!
Подскажите пожалуйста как правильно записать!

Zeratul

Платформа 1с 8.1 Конфигурация Животноводство
Загружаю данные в справочники из Экселя

Slin

Ошибка происходит во время записи?
Если да, то скорее всего это действие какого-то механизма защиты.
А если нет... то странно все это :(
skype: slin-dev

Zeratul

Смотрел по отладчику, он не доходит до Объект.Записать()
сразу после строки Объект.Код = Код вылетает из цикла с ошибкой :dfbsdfbsdf:

progmikon

Цитата: Zeratul от 25 ноя 2010, 11:05
Подскажите пожалуйста, хочу сделать выборку всех элементов справочника и добавить в них изменения,  то есть дополнить их и сохранить!
Делал следующее
Спр = Справочники.Справ.Выборка();
Пока Спр.Следующий()=1 Цикл
Объект = Спр.ПолучитьОбъект();
Объект.Код = "Префикс" + Код;
Объект.Дата = Дата;
Объект.Записать();

В таком варианте пишет ошибку  - Поле код недоступен для редактирования и все остальные поля тоже
Я понимаю что я не могу изменить их так как у меня Тип - Выборка!
Подскажите пожалуйста как правильно записать!

У меня первый вопрос, а что такое у вас "Выборка()"?

Спр = Справочники.Справ.Выборка();

Может Выбрать()?

Спр = Справочники.Справ.Выбрать();

Zeratul

ну конешно Выбрать()....извиняюсь наверное думал о Выборке в этот момент :nhsrm:

progmikon

Цитата: Zeratul от 25 ноя 2010, 11:20
ну конешно Выбрать()....извиняюсь наверное думал о Выборке в этот момент :nhsrm:

Еще меня смущает
Объект.Код = "Префикс" + Код;
что такое Код? Константа?
получается, что все элементы будут иметь одинаковый код?

Но по вашей ошибке, похоже, как и говорит Slin, на какой-то механизм защиты.
Как правило он задействуется в момент записи объекта.

Но раз вы говорите, что после этой строчки
Объект.Код = "Префикс" + Код;
вываливается ошибка - значит проверка идет где-то еще. Скажите, ваша конфигурация защищается отдельным ключом?

Zeratul

Нет данная конфигурация не защищается ничем!
Я загружаю данные из экселя    Код =НомерколонкиКод в экселе
Когда я загружал из экселя создавая элементы в цикле все хорошо пишется
Но мне щас надо уже в сущ элементах внести изменения!

progmikon

Вы можете написать полностью ваш код загрузки?

Zeratul

Это код создания элемента спр и записи его!

    НомерЛиста   = 2;
   
    //Пытаемся подключиться к Excel
    Попытка
        Excel = новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
        Возврат;
    КонецПопытки;     
   
    //Подключились удачно, открываем файл
    Excel.Workbooks.Open("C:\Documents and Settings\Владелец\Рабочий стол\Для_Живот.xls");
   
    //Открываем необходимый лист
    Excel.Sheets(НомерЛиста).select();   
   
    //Получим количество строк и колонок.
    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
   //Если Версия = "8" тогда
        ФайлСтрок   = Excel.Cells.CurrentRegion.Rows.Count;
        ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
      
      
  //определим по файлу в каких колонках необходимые данные
   НомерКолонкиНомерЖивотного             = 2;
   НомерКолонкиПолЖивотного    = 3;
   НомерКолонкиДатаРождения             = 4;
   НомерКолонкиНомерМатери = 5;
   НомерКолонкиДатаРожденияМатери = 6;
   НомерКолонкиНомерОтца = 7;
   НомерКолонкиДатаРожденияОтца = 8;
   НомерКолонкиКличка = 11;
   НомерКолонкиДатаВыбытия = 9;
   НомерКолонкиПричинаВыбытия = 10;
   НомерКолонкиДатаПоступления = 12 ;
   НомерКолонкиПримечание = 1;
    НомерКолонкиВесРожд = 13;
   НомерКолонкиВесОтъем = 14;
   НомерКолонкиВес15 = 17;
    НомерКолонкиВес18 = 18;
    НомерКолонкиВес2г = 19;
   НомерКолонкиВес3г = 20;
   НомерКолонкиВес4г = 21;
   НомерКолонкиВес5г = 22;
   НомерКолонкиВес6г = 23;
   НомерКолонкиВес7г = 24;
   НомерКолонкиВес8г = 25;
   НомерКолонкиВес6м = 14;
   НомерКолонкиВес8м = 15;   
    // Выбираем данные из файла
   Для а = 2 по ФайлСтрок Цикл           
   //   //Полуим данные из соответсвующих ячеек
      КодЖивотного      = СокрЛП(Excel.Cells(а,НомерКолонкиНомерЖивотного).Value);
      ПолЖивотного    = СокрЛП(Excel.Cells(а,НомерКолонкиПолЖивотного).Value);
      ДатаРождения      = Excel.Cells(а,НомерКолонкиДатаРождения).Value;
      НомерМатери = Excel.Cells(а,НомерКолонкиНомерМатери).Value;

      НомерОтца =  СокрЛП(Excel.Cells(а,НомерКолонкиНомерОтца).Value);

      КодВыбытия =    СокрЛП(Excel.Cells(а,НомерКолонкиПричинаВыбытия).Value);
      Кличка =    СокрЛП(Excel.Cells(а,НомерКолонкиКличка).Value);
      ДатаПоступления = Excel.Cells(а,НомерКолонкиДатаПоступления).Value;
      Примечание =  Excel.Cells(а,НомерКолонкиПримечание).Value;
        ВесРожд =  Excel.Cells(а,НомерКолонкиВесРожд).Value;
        ВесОтъем =   Excel.Cells(а,НомерКолонкиВесОтъем).Value;
        Вес15 =  Excel.Cells(а,НомерКолонкиВес15).Value;
      Вес18 =  Excel.Cells(а,НомерКолонкиВес18).Value;
        Вес2г =  Excel.Cells(а,НомерКолонкиВес2г).Value;
        Вес3г =  Excel.Cells(а,НомерКолонкиВес3г).Value;
      Вес4г =  Excel.Cells(а,НомерКолонкиВес4г).Value;
        Вес5г =  Excel.Cells(а,НомерКолонкиВес5г).Value;
        Вес6г =  Excel.Cells(а,НомерКолонкиВес6г).Value;
        Вес7г =  Excel.Cells(а,НомерКолонкиВес7г).Value;
        Вес8г =  Excel.Cells(а,НомерКолонкиВес8г).Value;
        Вес6м =  Excel.Cells(а,НомерКолонкиВес6м).Value;
        Вес8м =  Excel.Cells(а,НомерКолонкиВес8м).Value;
      
      
      
        //создаем и заполняем элемент справочника
         КартКор = Справочники.КарточкаКоровы.СоздатьЭлемент();
          КартКор.Коровы   = Истина;
          КартКор.ПричинаВыбытия =Справочники.ПричиныВыбытияЖивотных.НайтиПоКоду(КодВыбытия);
       Если ПустаяСтрока(КартКор.ПричинаВыбытия)=Истина Тогда
         КартКор.КороваВСтаде = Истина;
      Иначе
         КартКОр.КороваВыбыла = Истина;
         КонецЕсли;
         КартКор.Сельхозпредприятие = Справочники.Сельхозпредприятия.НайтиПоНаименованию("Дружба");
            КартКор.Код = "ДРЖ-" + КодЖивотного;
         КартКор.ДатаРожд = Дата(ДатаРождения+" 00:00:00");
         Если найти(Кличка,"_") >0 Тогда
         КартКор.Наименование =Лев(Кличка,Найти(Кличка,"_")-1);
         Иначе
         КартКор.Наименование =Кличка;
         КонецЕсли;   
         
      
         КартКор.ДатаПоступВСельхозпредприятие = ДатаПоступления;
     
         КартКор.Порода   = Справочники.МясныеПородыКРС.Калмыцкая;
         КартКор.Поколение = Перечисления.Породность.Чистопородные;
         КартКор.МастьИОсобПриметы = Примечание;
         
         КартКор.ЖивМассаКоровыПриРожд = ВесРожд;
         КартКор.ЖивМассаКоровыПриОтъеме = ВесОтъем;
         КартКор.ЖивМассаКоровыВ15мес = Вес15;
         КартКор.ЖивМассаКоровыВ18мес = Вес18;
         КартКор.ЖивМассаКоровыВ2года = Вес2г;
         КартКор.ЖивМассаКоровыВ3года = Вес3г;
         КартКор.ЖивМассаКоровыВ4года = вес4г;
         КартКор.ЖивМассаКоровыВ5лет = вес5г;
         КартКор.ЖивМассаКоровыВ6лет = вес6г;
         КартКор.ЖивМассаКоровыВ7лет = вес7г;
         КартКор.ЖивМассаКоровыВ8лет = вес8г;
         КартКОр.НаивысшаяОценка = Перечисления.Класс.ЭлитаРекорд;
      
         КартКор.ИндНомМатери = Справочники.КарточкаКоровы.НайтиПоКоду("ДРЖ-" + Сред(НомерМатери,5));
         КартКор.ПородаМатери = Справочники.МясныеПородыКРС.Калмыцкая ;
         КартКор.ПоколениеМатери = Перечисления.Породность.Чистопородные;
   
         КартКор.ИндНомОтца =  Справочники.КарточкаБыка.НайтиПоКоду("ДРЖ-" + НомерОтца);
         КартКор.ПородаОтца = Справочники.МясныеПородыКРС.Калмыцкая ;
         КартКор.ПоколениеОтца = Перечисления.Породность.Чистопородные;

            Сообщить(ДатаРождения + " " + КартКор.Сельхозпредприятие + " " + КодЖивотного + " " +"Кличка:" + Лев(Кличка,Найти(Кличка,"_")-1) + "     "   + Кличка + "   КодВыбытия:" + КодВыбытия);

          Попытка
             КартКор.Записать();
      Исключение
                      
      КонецПопытки;
         
          ОбработкаПрерыванияПользователя();

   Конеццикла;
      Сообщить("Загрузка завершена!!!");
   

     Excel.ActiveWorkbook.Close();

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск