обработка

Новая тема
Показывать по 10 20 40 сообщений
Как сделать чтобы обработка обращалась к записям в справочнике. Метод ВыбратьЭлемент не работает, возвращает 0, хотя в справочнике куча записей.Других я вроде не обнаружил. Какой лучше метод использовать для этого?
"Я так понял, что Вам нужен просто тупо перебор?

Спр = СоздатьОбъект("Справочник.Какой-нибудь");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
 //Здесь что-то происходит типа
 Какая-тоПеременная = Спр.Какой-тоРеквизит;
 ...
КонецЦикла;

Попробуйте, может получится!"
Я так и делал, но обработка не хочет перебирать. В отладчике пишет, что Спр.ВыбратьЭлементы()=0 и не выполняет действия в теле цикла. Других методов для перебора я не нашел. Может дело в справочнике, хотя в нем присуствуют записи.
приведи пример твоей обработки и всё станет ясно.
Телепатией не занимаемся :-/
"Он и не выполняеть, пример выше :
Спр.ВыбратьЭлементы();
перебор элементов осуществляеться с помощью Спр.ПолучитьЭлемент(); Надо читать ЖКК!"
"Вот моя обработка:

Спр1=СоздатьОбъект("Справочник.ОС");
спр1.ВыбратьЭлементы();
Пока спр1.ПолучитьЭлемент()=1 Цикл
переменная=Ос.реквизит; (например)
конецикла;

Мне нужно чтобы обработка, выбрала элемент, взяла 2 реквизита и если они оба не пустые, то поменяла местами их значения.(там либо оба не пустые, либо один пустой)
В теле цикла такое:
а=спр1.реквизит1;
б=спр1.реквизит2;
если пустоезначение(а)=0 тогда
спр1.риквизит1=б;
спр1.реквизит2=а;
спр1.записать;
конецЕсли;

Где сдесь может быть ошибка?
"
"На первый взгляд..
переменная=Ос.реквизит; => что есть "Ос"?

спр1.записать();"
"не Ос, а спр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.записать();

конецЕсли;
конецикла;

Этот цикл тоже не хочет менять реквизиты

А может не работать от того, что реквизиты находятся на форме элемента справочника, а не на форме списка? Если да, то как можно обратиться к реквизитам формы элемента?"
У тебя в справочнике точно есть какие нибудь элементы?
Метод ПолучитьЭлемент() возвращает 0 - когда нет элементов
А группы у тебя в справочнике есть? Если да то надо ещё и проверку на элемент-группу сделать (тебе же в группе ничего менять не надо)
И ещё если группы есть то в ПолучитьЭлемент(<Режим>), какой выбран 1 или 0 (или же по умолчанию, т.е. 1)?
Да и вообще неплохо бы указать версию платформы (да и базы непомешает)
"Пока спр1.ПолучитьЭлемент()=1 Цикл
Сообщить(спр1.реквизит1);
Сообщить(спр1.реквизит2);


Что-нить сообщает?"
Читают тему
(гостей: 1)

Быстрый переход