обработка
11.10.2007
02:16
#1
Как сделать чтобы обработка обращалась к записям в справочнике. Метод ВыбратьЭлемент не работает, возвращает 0, хотя в справочнике куча записей.Других я вроде не обнаружил. Какой лучше метод использовать для этого?
11.10.2007
05:27
#2
"Я так понял, что Вам нужен просто тупо перебор?
Спр = СоздатьОбъект("Справочник.Какой-нибудь");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
//Здесь что-то происходит типа
Какая-тоПеременная = Спр.Какой-тоРеквизит;
...
КонецЦикла;
Попробуйте, может получится!"
Спр = СоздатьОбъект("Справочник.Какой-нибудь");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
//Здесь что-то происходит типа
Какая-тоПеременная = Спр.Какой-тоРеквизит;
...
КонецЦикла;
Попробуйте, может получится!"
11.10.2007
07:46
#3
Я так и делал, но обработка не хочет перебирать. В отладчике пишет, что Спр.ВыбратьЭлементы()=0 и не выполняет действия в теле цикла. Других методов для перебора я не нашел. Может дело в справочнике, хотя в нем присуствуют записи.
12.10.2007
17:07
#5
"Он и не выполняеть, пример выше :
Спр.ВыбратьЭлементы();
перебор элементов осуществляеться с помощью Спр.ПолучитьЭлемент(); Надо читать ЖКК!"
Спр.ВыбратьЭлементы();
перебор элементов осуществляеться с помощью Спр.ПолучитьЭлемент(); Надо читать ЖКК!"
12.10.2007
20:25
#6
"Вот моя обработка:
Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
переменная=Ос.реквизит; (например)
конецикла;
Мне нужно чтобы обработка, выбрала элемент, взяла 2 реквизита и если они оба не пустые, то поменяла местами их значения.(там либо оба не пустые, либо один пустой)
В теле цикла такое:
а=спр1.реквизит1;
б=спр1.реквизит2;
если пустоезначение(а)=0 тогда
спр1.риквизит1=б;
спр1.реквизит2=а;
спр1.записать;
конецЕсли;
Где сдесь может быть ошибка?
"
Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
переменная=Ос.реквизит; (например)
конецикла;
Мне нужно чтобы обработка, выбрала элемент, взяла 2 реквизита и если они оба не пустые, то поменяла местами их значения.(там либо оба не пустые, либо один пустой)
В теле цикла такое:
а=спр1.реквизит1;
б=спр1.реквизит2;
если пустоезначение(а)=0 тогда
спр1.риквизит1=б;
спр1.реквизит2=а;
спр1.записать;
конецЕсли;
Где сдесь может быть ошибка?
"
15.10.2007
01:04
#8
"не Ос, а спр1. Писал по памяти, вот и ошибся.
скобки тоже не дописал. Короче код выглядит следующим образом:
Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
а=спр1.реквизит1;
б=спр1.реквизит2;
если пустоезначение(а)=0 тогда
спр1.риквизит1=б;
спр1.реквизит2=а;
спр1.записать();
конецЕсли;
конецикла;
Вероятно ошибка в цикле, но пробовал по другому:
Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
если пустоезначение(спр1.реквизит2)=0 тогда
спр1.реквизит1=спр1.реквизит2;
спр1.записать();
конецЕсли;
конецикла;
Этот цикл тоже не хочет менять реквизиты
А может не работать от того, что реквизиты находятся на форме элемента справочника, а не на форме списка? Если да, то как можно обратиться к реквизитам формы элемента?"
скобки тоже не дописал. Короче код выглядит следующим образом:
Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
а=спр1.реквизит1;
б=спр1.реквизит2;
если пустоезначение(а)=0 тогда
спр1.риквизит1=б;
спр1.реквизит2=а;
спр1.записать();
конецЕсли;
конецикла;
Вероятно ошибка в цикле, но пробовал по другому:
Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
если пустоезначение(спр1.реквизит2)=0 тогда
спр1.реквизит1=спр1.реквизит2;
спр1.записать();
конецЕсли;
конецикла;
Этот цикл тоже не хочет менять реквизиты
А может не работать от того, что реквизиты находятся на форме элемента справочника, а не на форме списка? Если да, то как можно обратиться к реквизитам формы элемента?"
15.10.2007
06:59
#9
У тебя в справочнике точно есть какие нибудь элементы?
Метод ПолучитьЭлемент() возвращает 0 - когда нет элементов
А группы у тебя в справочнике есть? Если да то надо ещё и проверку на элемент-группу сделать (тебе же в группе ничего менять не надо)
И ещё если группы есть то в ПолучитьЭлемент(<Режим>), какой выбран 1 или 0 (или же по умолчанию, т.е. 1)?
Да и вообще неплохо бы указать версию платформы (да и базы непомешает)
Метод ПолучитьЭлемент() возвращает 0 - когда нет элементов
А группы у тебя в справочнике есть? Если да то надо ещё и проверку на элемент-группу сделать (тебе же в группе ничего менять не надо)
И ещё если группы есть то в ПолучитьЭлемент(<Режим>), какой выбран 1 или 0 (или же по умолчанию, т.е. 1)?
Да и вообще неплохо бы указать версию платформы (да и базы непомешает)
Читают тему
(гостей: 1)