Помогите новичку с выборкой =)

  • Автор темы NocturnalMortum
  • Дата начала
P

puh14

Не серьезно - в циклах я скорее стал бы тучу еслей плодить (первый раз сталкиваюсь с такой постановкой, когда гора флажков в справочнике), но так как я фанат запросов (но не бухгалтерских :D ), то стараюсь всё решить через них.
 
V

vbs

Так я всего лишь предложил одну из 16 функций булевой алгебры для проверки. Тот самый случай, кстати - обе переменные либо 0, либо 1 и все случаи легко описываются
тремя функциями (оба 0, оба 1, и хотя бы один 1) путем логического (в нашем случае арифметического) сложения и/или умножения.

А запрос - все же черный ящик, если не работает, поди найди, почему.
В цикле же все предельно ясно, да и код у меня получился вполне короткий -:D
 
P

puh14

Сложение и умножение булевых переменных я пока никогда не использовал, а тут увидел. Интересно выглядит - коротко и красиво.
Насчет запросов - у меня скорее наоборот - таблицы здоровенные, от сотни тысяч строк и с циклами там особо не поработаешь. А так как сижу на скуле, то посмотреть что именно выбирается запросом через профайлер не проблема - да и в прошлой учетной проге всё работало на прямых скулевых запросах. До сих пор имена таблиц и значения полей помню ;-).
 
V

vbs

Я ж не против запросов вообще - есть ряд задач, где иначе никак.
Данный же случай очень простой, в этом и аналогичных случаях цикл работает и быстрее, и нагляднее
 
N

NocturnalMortum

Запрос.Выполнить=(ТекстЗапроса);
Поле агрегатного объекта не обнаружено (Выполнить) =(
я если честно не до конца понимаю смысл этой ошибки...
 
N

NocturnalMortum

проблема еще заключается в том что я не могу в контрагентах поменять "галочки" на список.
 
P

puh14

А нафига тебе галочки в контрагентах менять? Список в отчете нужен чисто для удобства - в справочнике его придется заполнять при открытии и при закрытии заполнять элемент измененными данными. Оно тебе надо?
 
N

NocturnalMortum

Огромное спасибо вам за помощь. Код разобрал, переварил, понял =) Единственно вопрос... у меня на обработку каждой "галочки" в среднем уходит по минуте... Так должно быть? Или процесс можно ускорить?
 
P

puh14

Чем больше элементов и галочек, тем более долгим будет обработка. НА переборе более выражено.

Запрос.Выполнить=(ТекстЗапроса);
Поле агрегатного объекта не обнаружено (Выполнить) =(
я если честно не до конца понимаю смысл этой ошибки...

Это не твоя ошибка, а моя

надо так Запрос.Выполнить(ТекстЗапроса);
 
N

NocturnalMortum

Уважаемые специалисты, я таки решил попробовать оформить все не через СЗ а компонентами =) Идея есть... алгоритм в принципе тоже понятен но никак не получается загнать "Галочку" в переменную... в общем тыркался-тыркался и вот мой не рабочий код... прошу помощи.

Процедура Сформировать()
Перем Значение;
Флаг=СоздатьОбъект("переодический");
//ТекущийДокумент(Флаг);
Для Ф = 1 По 2 Цикл
//Если Форма.АктивныйЭлемент("Флажок"+Ф)=1 Тогда
Флаг.НайтиЭлемент("Флажок"+ф);
Флаг.ПолучитьЭлемент();
//Значение=Форма.ПолучитьЗначение("Флажок"+Ф);
сообщить(Флаг);
// КонецЕсли;
 
T

TimeDontWait

И метода НайтиЭлемент(), ПолучитьЭлемент() у объекта "Периодический" не существует
 
P

puh14

Флаг=СоздатьОбъект("переодический");


Что - реально создается???!! "Периодический" так правильно

НайтиЭлемент( - применимо только к справочником, а объект периодический справочником не является.
 
N

NocturnalMortum

Да, конфигуратор молчал... да и после 361873681 исправлений просто очепяталься =) А каким образом можно? подскажите... или дайте ссылку на чтиво.
 
V

vbs

Для такого рода объектов используется метод ИспользоватьОбъект(ИмяПериодическогоРеквизита,Элемент).
Элемент - текущий элемент нужного справочника. ИмяПериодическогоРеквизита - наименование соответствующего идентификатора реквизита
После чего можно добраться до ДатаЗнач и Значение объекта "периодический"

Но, по-моему, ты уже углубился в дебри, уйдя от первоначальных "галочек"

Для твоего случая примерно так :
П = СоздатьОбъект("Периодический");
Для я = 1 по яя цикл
П.ИспользоватьОбъект("Флажок"+Строка(я), Элемент);
// действия
конецЦикла
 
N

NocturnalMortum

Такая вот ошибка получается: "Флажок1 не является константой или периодическим параметром!"
 
N

NocturnalMortum

Мне если честно кажется что "Периодический" является не лучшим типом для компонента... Еще загвоздка в том что отчет внешний.
 
E

evgenyatam

к флажку формы периодический применять бесполезно, так как флажки не могут быть периодическими.
 
N

NocturnalMortum

Да это я уже из литературы вычитал и понял... Вообще конечно хотелось бы написать такой код который бы находил на форме все компоненты типа "Флажок", получал его идентификатор и сравнивал с идентификатором другого отчета... Но до этого мне далеко =) Поэтому пока пытаюсь просто на внешнем отчете получить состояние галочек.. и пока что безуспешно.
 
V

vbs

Не надо замахиваться на задачи, которые заведомо не сможешь решить, ведь на предыдущей странице тебе пути подсказали.
На мой взгляд, оптимально галочки формы и реквизиты справочника запихать в списки, после чего только грамотно написать цикл и код будет не длиннее десятка строк :ya_lamo:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!