Консультация № 109104
12.11.2007, 19:00
0.00 руб.
0 3 3
Здравствуйте уважаемые эксперты.
1с 7.7
Есть документ с некоторым количеством колонок. Пускай К1,К2...
Мне нужно установить некое значение в колонку в зависимости от значения переменной Х="К1" или "К2"... Как мне в процедуре получить доступ к колонке имея значение Х. Перебор через если то иначе не предлагать.

Приложение:
Если Форма.ТекущаяКолонка() = "Проц_О" Тогда Сообщить("опт"); ИначеЕсли Форма.ТекущаяКолонка() = "Проц_Мо" Тогда Сообщить("Мелкопт"); ИначеЕсли Форма.ТекущаяКолонка() = "Проц_Р" Тогда Сообщить("розница");.................................................... Иначе Сообщить("ничего"); КонецЕсли;Как сократить код программы

Обсуждение

Неизвестный
12.11.2007, 19:23
общий
это ответ
Здравствуйте, Александр Павлович!

Если я правильно вас понял, то речь идет о методе УстановитьАтрибут(). В вашем случае имея колонки К1 и К2, и переменную Х, которая содержит либо К1, либо К2, это выглядит так: УстановитьАтрибут(Х, Значение). Соответственно, частный случай для колонки К1 - это УстановитьАтрибут("К1", Значение). Прошу только учесть, что для документа помимо колонки еще важна строка, в которую производится запись значения.
Неизвестный
12.11.2007, 20:15
общий
это ответ
Здравствуйте, Александр Павлович! Создаем список значений как переменную для всего модуля т.е. в самом верху модуля пишем:
Перем сп;

В процедуре ПриОткрытии() пишем:
сп = СоздатьОбъект("СписокЗначений");
сп.ДобавитьЗначение("Проц_О","опт");
сп.ДобавитьЗначение("Проц_Мо","Мелкопт");
сп.ДобавитьЗначение("Проц_Р","розница");

Создаем Процедуру например:
Процедура ИнфоКолонки()
Поз = сп.НайтиЗначение(Форма.ТекущаяКолонка());
Если поз = 0 Тогда
Сообщить("ничего");
Иначе
сооб = ""; сп.ПолучитьЗначение(поз,сооб)
Сообщить(сооб);
КонецЕсли;
КонецПроцедуры

Честно говоря было плохо понятна связь вашей переменной Х="К1" или "К2"... и примера из приложения. Написал как понял вопрос. При достаточно большом количестве колонок в таблице документа код будет короче чем у Вас.
Неизвестный
13.11.2007, 07:35
общий
это ответ
Здравствуйте, Александр Павлович!

ПолучитьСтрокуПоНомеру(НомерСтроки);
ПолучитьАтрибут("Колонка"+к)
Форма ответа