| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > 1с 7.7, Перечисление |
| Автор: MadMas 16.6.2008, 07:23 |
| Задача: В цикле нужно как-то пробегать значения перечисления и при совпадении представления устанавливать реквизит формы равный этому перечислению. Например, есть перечисление виды договоров, состоящее из "НД"->"нетиповой доходный", "МСВ"->"Межсетевой". Если переменная Дог="Межсетевой", реквизит формы должен принять значение ПЕречисление.ВидыДогоыоров.МСВ. Как это реализовать? |
| Автор: SaschaL 16.6.2008, 09:33 | ||
Не совсем понятно что вы хотите но я бы поступил так
|
| Автор: MadMas 16.6.2008, 09:36 |
| Нет, количество перечислений достаточно большое, простым "если" сравнение писать не хочется. Смысл в том чтобы в цикле сравнить пользовательское представление перечисления с имеющейся переменной, и при совпадении установить реквизиту это перечисление... |
| Автор: SaschaL 16.6.2008, 09:44 |
| Ну просто так не обойти в цикле перечисления. Если только не добраться до них через метаданные. Но вот вопрос вам ведь все равно придется сравнивать значения перечислений а это как я понимаю вам все равно не обойтись без логического Если? можете более подробно осветить задачу, которую нужно выполнить? Может что умное попытаюсь посоветовать. |
| Автор: MadMas 16.6.2008, 09:51 | ||
Пишу обработку для переноса данных по согласованию. Перечислений куча, значений у перечислений тоже куча, если все сравнивать "Если", то можно сразу лизнуть розетку, это менее болезненно. Написала что-то наподобии этого:
Но застрялось на переменной КатегорияДоговора, ей ни в какую не хочет присваиваться значение перечисления (категорияДоговора -- реквизит формы с типом Перечисление.КД). Дальше хуже, теперь при наличии равенства Перечисление.КД.ЗначениеПоНомеру(счетчик) = Категория (под отладчиком "Межсетевой"="Межсетевой"), не отрабатывается "Если ...", он просто делает вид что строки не эквивалентны :( |
| Автор: SaschaL 16.6.2008, 10:07 |
| Подумать дано! Если что вечеров отпишусь |
| Автор: Itsys 17.6.2008, 00:04 | ||
Попробуй так:
|
| Автор: MadMas 17.6.2008, 05:39 |
| Ага, пробовала. Я почти все перепробовала -- с теоретической точки зрения код верен, под отладчиком все красиво и вроде бы должно это перечисление в реквизит вставать. Но ничего подобного :( МОжет это быть глюк 1С к-нить? |
| Автор: Itsys 17.6.2008, 12:39 | ||
| В отладчике значения СокрЛП(Перечисление.КД.ЗначениеПоНомеру(счетчик)) и СокрЛП(Категория) смотрела? Они точно одинаковые? Попробуй так:
|
| Автор: MadMas 17.6.2008, 13:14 |
| Однозначно одинаковые. Что-то с 1С странное, попробовала на другой машине -- заработал первый вариант. Спасибо ) |
| Автор: bpgrey 24.6.2008, 11:09 | ||
| кстати, по поводу перебора всех значений.. Работает такая конструкция:
|