Имя: Пароль:
1C
 
Программно изменить реквизит справочника
0 Alexey84
 
26.10.07
17:46
ДОброго времени суток, товарищи помогите решить вот такую проблему,
ну могу программно записать в справочнике "Контрагенты"  - реквизит -(Справочники.Организации) т.е. справочник.Организации подчинен контрагентам, как можно вписать туда значение?
Заранее спасибо!
1 Scooter
 
26.10.07
17:49
Владелец
ПолучитьОбъект
Записать

+ код в студию
2 Alexey84
 
26.10.07
17:49
еще небольшая добавка

Имею Справочник контрагентов, в него надо добавить коды из XLS файла
Все считывается но никак не могу записать реквизит... при записи выходит сообщение "реквизит недоступен для редактиварония"
3 Alexey84
 
26.10.07
17:51
можно чуть чуть подробнее, я не сильно понял что куда девать
4 Fram
 
26.10.07
18:03
надо работать собъектом а не со ссылкой на него. судя по (2) работаешь со ссылкой
5 Alexey84
 
26.10.07
18:12
СпрКОнтр = Справочники.Контрагенты;
   СпрСегмент = Справочники.СегментацияКлиентов;
   Для Ячейка = 1 По 1419 Цикл
       
      КодКонтрагента = СокрЛП(ТекЛист.Cells(Ячейка,1).Value);
      Классификатор  = СокрЛП(ТекЛист.Cells(Ячейка,2).Value);
     
     
      НайденныйЭлемент = СпрКонтр.НайтиПоКоду(КодКонтрагента);
      ТекущийОБъект = НайденныйЭлемент.ПолучитьОбъект();          
      ТекущийОБъект.СегментацияКонтрагентов = СпрСегмент.НайтиПоНаименованию(Классификатор);
     
      ТекущийОБъект.Записать();
   КонецЦикла;

вот код, кто нибудь может подсказать где ошибка
6 Scooter
 
26.10.07
18:16
(5)а какая ошибка?
7 Alexey84
 
26.10.07
18:20
Не удается все это дело записать
8 Terv
 
26.10.07
18:21
СпрКОнтр = Справочники.Контрагенты;
   СпрСегмент = Справочники.СегментацияКлиентов;
   Для Ячейка = 1 По 1419 Цикл
       
      КодКонтрагента = СокрЛП(ТекЛист.Cells(Ячейка,1).Value);
      Классификатор  = СокрЛП(ТекЛист.Cells(Ячейка,2).Value);
     
     
      НайденныйЭлемент = СпрКонтр.НайтиПоКоду(КодКонтрагента);
      Если НайденныйЭлемент = СпрКонтр.ПустаяСсылка() Тогда
           Сообщить("Я долпоёБ!!!!");
           Продолжить;
      КонецЕсли;
      ТекущийОБъект = НайденныйЭлемент.ПолучитьОбъект();          
      ТекущийОБъект.СегментацияКонтрагентов = СпрСегмент.НайтиПоНаименованию(Классификатор);
     
      ТекущийОБъект.Записать();
   КонецЦикла;
9 Alexey84
 
26.10.07
18:21
{Форма.Форма(20)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
      ТекущийОБъект.Записать();
по причине:
Операция не выполнена!

и при этом сообщает что такая запись уже есть
10 Scooter
 
26.10.07
18:25
СегментацияКонтрагентов - это точно реквизит?
11 Alexey84
 
26.10.07
18:26
да это реквизит, с типом СправочникСсылка.СегментацияКонтрагентов
12 Scooter
 
26.10.07
18:30
(11)да там скорее всего при записи "Контрагента" происходит создание/запись еще чегото

смотри ПриЗаписи в модулеФормы/модулеОбъекта
13 Terv
 
26.10.07
18:33
а еще было бо неплохо пройтись отладчиком.
14 Alexey84
 
26.10.07
18:35
да ну видать пока что ума не хватает на решение, отладчиком я проходился... ничего не нашел...ну в любом случае спасибо за рекомендт
15 Terv
 
26.10.07
18:40
(14) отладчиком, ПередЗаписью и ПриЗаписи, модуля объекта справочника прошелся?
смотри может где при записи в РС вылетает
16 13th
 
26.10.07
18:50
А открытых элеметов справочника "Контрагентов" нет в это время?