Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
28 Сен 2020, 19:01
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Изменение элементов справочника в выборке  (Прочитано 31843 раз)

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

Оффлайн Zeratul

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2010-06-02
  • Сайт: 
Подскажите пожалуйста, хочу сделать выборку всех элементов справочника и добавить в них изменения,  то есть дополнить их и сохранить!
Делал следующее
Спр = Справочники.Справ.Выборка();
Пока Спр.Следующий()=1 Цикл
Объект = Спр.ПолучитьОбъект();
Объект.Код = "Префикс" + Код;
Объект.Дата = Дата;
Объект.Записать();

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


Оффлайн Zeratul

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2010-06-02
  • Сайт: 
Платформа 1с 8.1 Конфигурация Животноводство
Загружаю данные в справочники из Экселя

Оффлайн Slin

  • *****
  • Сообщений: 780
  • РЕПУТАЦИЯ: 247
  • КПД: 32%
  • Game over...
  • Регистрация: 2010-10-13
  • Сайт: 
  • Профессия: Программист 1С
Ошибка происходит во время записи?
Если да, то скорее всего это действие какого-то механизма защиты.
А если нет... то странно все это :(
skype: slin-dev

Оффлайн Zeratul

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2010-06-02
  • Сайт: 
Смотрел по отладчику, он не доходит до Объект.Записать()
сразу после строки Объект.Код = Код вылетает из цикла с ошибкой :dfbsdfbsdf:

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Подскажите пожалуйста, хочу сделать выборку всех элементов справочника и добавить в них изменения,  то есть дополнить их и сохранить!
Делал следующее
Спр = Справочники.Справ.Выборка();
Пока Спр.Следующий()=1 Цикл
Объект = Спр.ПолучитьОбъект();
Объект.Код = "Префикс" + Код;
Объект.Дата = Дата;
Объект.Записать();

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

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

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

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

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

Оффлайн Zeratul

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2010-06-02
  • Сайт: 
ну конешно Выбрать()....извиняюсь наверное думал о Выборке в этот момент :nhsrm:

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
ну конешно Выбрать()....извиняюсь наверное думал о Выборке в этот момент :nhsrm:

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

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

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

Оффлайн Zeratul

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2010-06-02
  • Сайт: 
Нет данная конфигурация не защищается ничем!
Я загружаю данные из экселя    Код =НомерколонкиКод в экселе
Когда я загружал из экселя создавая элементы в цикле все хорошо пишется
Но мне щас надо уже в сущ элементах внести изменения!

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Вы можете написать полностью ваш код загрузки?

Оффлайн Zeratul

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2010-06-02
  • Сайт: 
Это код создания элемента спр и записи его!

    НомерЛиста   = 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();


Теги:
 

Как вызвать "Анализ субконто" из справочника "Контрагенты"

Автор EnigManРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 8154
Последний ответ 06 Фев 2012, 10:46
от cska-fanat-kz
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 7777
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3654
Последний ответ 10 Май 2017, 20:44
от ilnur75
Как сделать, чтобы поле в документе имело тип "ссылка на поле справочника"?

Автор друганРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 4241
Последний ответ 05 Мар 2017, 14:36
от Igor100500
Отключение вывода сообщения об ошибки записи элемента справочника при Отказ=Истина в "ПередЗаписью" модуля объекта

Автор oooo800Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 244
Последний ответ 01 Сен 2020, 20:02
от oooo800

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
73 Сообщений
oooo800
33 Сообщений
Дмитрий Джей Дмитрий Джей
30 Сообщений
IL2016
29 Сообщений
antoneus antoneus
25 Сообщений
LexaK
23 Сообщений
DmitriyF DmitriyF
16 Сообщений
Ann_
16 Сообщений
мадам брошкина
13 Сообщений
alexandr_ll
12 Сообщений

* Кто онлайн

  • Точка Гостей: 600
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal