Как сделать чтобы обработка обращалась к записям в справочнике. Метод ВыбратьЭлемент не работает, возвращает 0, хотя в справочнике куча записей.Других я вроде не обнаружил. Какой лучше метод использовать для этого?
Как сделать чтобы обработка обращалась к записям в справочнике. Метод ВыбратьЭлемент не работает, возвращает 0, хотя в справочнике куча записей.Других я вроде не обнаружил. Какой лучше метод использовать для этого?
"Я так понял, что Вам нужен просто тупо перебор?<br><br>Спр = СоздатьОбъект("Справочник.Какой-нибудь");<br>Спр.ВыбратьЭлементы();<br>Пока Спр.ПолучитьЭлемент() = 1 Цикл<br> //Здесь что-то происходит типа<br> Какая-тоПеременная = Спр.Какой-тоРеквизит;<br> ...<br>КонецЦикла;<br><br>Попробуйте, может получится!"
Я так и делал, но обработка не хочет перебирать. В отладчике пишет, что Спр.ВыбратьЭлементы()=0 и не выполняет действия в теле цикла. Других методов для перебора я не нашел. Может дело в справочнике, хотя в нем присуствуют записи.
приведи пример твоей обработки и всё станет ясно.<br>Телепатией не занимаемся
"Он и не выполняеть, пример выше :<br>Спр.ВыбратьЭлементы();<br>перебор элементов осуществляеться с помощью Спр.ПолучитьЭлемент(); Надо читать ЖКК!"
"Вот моя обработка:<br><br>Спр1=СоздатьОбъект("Справочник.ОС");<br>спр1.ВыбратьЭлементы();<br>Пока спр1.ПолучитьЭлемент()=1 Цикл<br>переменная=Ос.реквизит; (например)<br>конецикла;<br><br>Мне нужно чтобы обработка, выбрала элемент, взяла 2 реквизита и если они оба не пустые, то поменяла местами их значения.(там либо оба не пустые, либо один пустой)<br>В теле цикла такое:<br>а=спр1.реквизит1;<br>б=спр1.реквизит2;<br>если пустоезначение(а)=0 тогда<br>спр1.риквизит1=б;<br>спр1.реквизит2=а;<br>спр1.записать;<br>конецЕсли;<br><br>Где сдесь может быть ошибка?<br>"
"На первый взгляд..<br>переменная=Ос.реквизит; => что есть "Ос"?<br><br>спр1.записать();"
"не Ос, а спр1. Писал по памяти, вот и ошибся.<br>скобки тоже не дописал. Короче код выглядит следующим образом:<br><br>Спр1=СоздатьОбъект("Справочник.ОС");<br>спр1.ВыбратьЭлементы();<br>Пока спр1.ПолучитьЭлемент()=1 Цикл<br><br>а=спр1.реквизит1;<br>б=спр1.реквизит2;<br>если пустоезначение(а)=0 тогда<br>спр1.риквизит1=б;<br>спр1.реквизит2=а;<br>спр1.записать();<br><br>конецЕсли;<br>конецикла;<br><br>Вероятно ошибка в цикле, но пробовал по другому:<br><br>Спр1=СоздатьОбъект("Справочник.ОС");<br>спр1.ВыбратьЭлементы();<br>Пока спр1.ПолучитьЭлемент()=1 Цикл<br><br>если пустоезначение(спр1.реквизит2)=0 тогда<br>спр1.реквизит1=спр1.реквизит2;<br>спр1.записать();<br><br>конецЕсли;<br>конецикла;<br><br>Этот цикл тоже не хочет менять реквизиты <br><br>А может не работать от того, что реквизиты находятся на форме элемента справочника, а не на форме списка? Если да, то как можно обратиться к реквизитам формы элемента?"
У тебя в справочнике точно есть какие нибудь элементы?<br>Метод ПолучитьЭлемент() возвращает 0 - когда нет элементов<br>А группы у тебя в справочнике есть? Если да то надо ещё и проверку на элемент-группу сделать (тебе же в группе ничего менять не надо)<br>И ещё если группы есть то в ПолучитьЭлемент(<Режим>), какой выбран 1 или 0 (или же по умолчанию, т.е. 1)?<br>Да и вообще неплохо бы указать версию платформы (да и базы непомешает)
"Пока спр1.ПолучитьЭлемент()=1 Цикл<br>Сообщить(спр1.реквизит1);<br>Сообщить(спр1.реквизит2);<br><br><br>Что-нить сообщает?"
1C:Лекторий: 16 января 2025 года, начало в 10:00 — Бесплатная онлайн-лекция об особенностях применения НДС на УСН в 2025 году и поддержке в 1С 1C:Лекторий: 21 января 2025 года, начало в 12:00 — Бесплатная онлайн-лекция о зарплатной отчетности за 2024 год - рекомендации по подготовке в 1С:ЗУП ред.3 |
1C:Лекторий: 23 января 2025 года, начало в 10:00 — Бесплатная онлайн-лекция о ККТ - ответы на частые вопросы, применение ставок 5% и 7% на УСН 1C:Лекторий: 28 января 2025 года, начало в 12:00 — Бесплатная онлайн-лекция о рисках для вашего бизнеса по Закону №152-ФЗ «О персональных данных» в 2025 году |