|
Проверка на группу и присваивание | ☑ | ||
---|---|---|---|---|
0
ArtYst
11.07.12
✎
03:56
|
Доброго дня или ночи. Такая проблема: Есть справочник. В нем есть такие столбцы как: ЭтоГруппа, Наименование, НаименованиеПолное. Необходимо сделать следующее: Проверить является ли ЭтоГруппа истиной (она булевого значения). Затем если она является ЛОЖЬ, то присвоить НаименованиеПолное значение Наименование. Эти два реквизита являются строкой. К примеру если у НАименованиеПолное отсутствует какое либо значение, надо что бы оно брало его из Наименование.
Вот примерный текст кода: [CODE] Выборка = Справочники.ОсновныеСредства.Выбрать(); Пока Выборка.Следующий() Цикл Объект = Выборка.ПолучитьОбъект(); Если ПустаяСтрока(Объект.НаименованиеПолное) Тогда Если Объект.ЭтоГруппа = Истина Тогда Продолжить; //Сообщить(Объект.Наименование + "Принадлежит Группе"); Иначе Объект.НаименованиеПолное = Объект.Наименование; КонецЕсли; КонецЕсли; КонецЦикла; [/CODE] |
|||
1
ArtYst
11.07.12
✎
04:06
|
Уже разобрался. Тема закрыта
|
|||
2
Avalone2010
11.07.12
✎
04:06
|
Включу телепата и попробую угадать, полное наименование не записывается? Если угадал то надо сделать так:
Объект.Записать(); +могу бесплатно, то есть даром указать на грубые ошибки. |
|||
3
ArtYst
13.07.12
✎
07:30
|
Не только. Доработал, вот результат:
[CODE] Выборка = Справочники.ОсновныеСредства.Выбрать(); Сч = 1; Пока Выборка.Следующий() Цикл Объект = Выборка.ПолучитьОбъект(); Если ПустаяСтрока(Объект.НаименованиеПолное) Тогда //Проверка на наличие записи в строке If Объект.ЭтоГруппа = false then //проверка на булево картежа ЭтоГруппа Объект.НаименованиеПолное = СокрЛП(Объект.Наименование); //Присвоение с сокращением пробелов сообщить (/"Количество исправленных элементов /" Строка(Сч) /". Исправляемый элемент /" СокрЛП(Объект.Наименование)) ; Объект.Записать(); //непосредственно запись в Объект.НаименованиеПолное Сч = Сч 1; EndIf; КонецЕсли; КонецЦикла; [/CODE] А по поводу грубых ошибок, буду не против мнения со стороны. |
|||
4
Wobland
13.07.12
✎
07:34
|
>//проверка на булево картежа ЭтоГруппа
что это? |
|||
5
Wobland
13.07.12
✎
07:35
|
вообще, вся строка: If Объект.ЭтоГруппа = false then //проверка на булево картежа ЭтоГруппа
|
|||
6
Wobland
13.07.12
✎
07:36
|
теперь о грубости. запросом отобрать только нужные кошерней будет
|
|||
7
ArtYst
13.07.12
✎
08:18
|
Есть такой индекс в таблице /"ЭтоГруппа/" И его значение булево. При все этом можно заполнять Индекс НаименованиеПолное только то, которое в индексе ЭтоГруппа имеет параметр /"нет/". Следовательно в этой строке происходит банальная проверка на да-нет.
p.s. и да я оговорился вместо кортежей надо было писать индексы. БД рулит) |
|||
8
ArtYst
13.07.12
✎
08:20
|
Насчет юза запросом. Я возможно ошибаюсь, но разве тогда общее использование такой внешней обработки не повредится? А то я как бы при таком коде могу ее использовать на различных базах.
|
|||
9
izekia
13.07.12
✎
08:25
|
(8) да наоборот и получше будет выглядеть чем твой код
|
|||
10
MSII
13.07.12
✎
08:26
|
(8) Ничего не повредится, отбирай запросом, станет веселей
ЭтоГруппа имеет тип значения булево, нет необходимости дополнительно сравнивать ее с Ложью |
|||
11
iceman2112
13.07.12
✎
08:30
|
Да все тут норм вы чего, if, then, картеж ЭтоГруппа=Истина. Все огонь
|
|||
12
izekia
13.07.12
✎
08:31
|
(10) технически пофиг
|
|||
13
izekia
13.07.12
✎
08:32
|
а что такое "картеж"?
|
|||
14
iceman2112
13.07.12
✎
08:33
|
это олдскульное понятие атрибута
|
|||
15
iceman2112
13.07.12
✎
08:34
|
или реквизита в БД
|
|||
16
FIXXXL
13.07.12
✎
08:34
|
(8) еще добавь в запрос РАЗРЕШЕННЫЕ и точно не "повредится" :)
|
|||
17
MSII
13.07.12
✎
08:53
|
(12) Оно понятно. Вопрос читабельности кода исключительно.
|
|||
18
izekia
13.07.12
✎
08:59
|
(14) я к ФП привык, там кортежи - это другое
|
|||
19
ArtYst
13.07.12
✎
09:18
|
Всем Спасибо)) Насчет запроса попробую, чисто из интереса. Авось и понравится. Не вечно же кодить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |