Имя: Пароль:
1C
1С v8
Поиск в ТЗ
,
0 John83
 
28.02.18
17:59
Есть ТЗ.
Колонки: номенклатура и уровень. Уровень принимает числовые значения от 0 и выше.
Нужно найти строки, в которых содержится определенная номенклатура и при этом уровень НЕ РАВЕН 0.
Возможно ли такой отбор через структуру передать? Или только запрос?
1 mehfk
 
28.02.18
18:01
Как только найдешь в СП в какое место в НайтиСтроки ты будешь вставлять вот это "НЕ РАВЕН 0." - дай знать.
2 John83
 
28.02.18
18:06
(1) ну а вдруг
3 Джексон
 
28.02.18
18:08
(0) Используй ПостроительОтчета для фильтрации. Источник данных - твоя таблица, в отборе задашь сравнениия как надо. И выводи результат в таблицу-коллекцию выведешь.
Обращений к базе не будет, нибаись.
4 azernot
 
28.02.18
18:28
>Есть ТЗ.
Вот в этом месте ошибка.
ТЗ - не есть. ТЗ где-то формируется. И вот там-то моно заполнить булеву колонку "ЭтоНЕНулвойУровень".

Ну а если ТЗ "Есть", то всегда можно кинуть её в Запрос и там отобрать нужное.
5 mehfk
 
28.02.18
18:29
(2) Ты 1с-ник или как?
6 Забияка
 
28.02.18
18:43
Поколение "Пепси" :)
7 Джексон
 
28.02.18
18:44
(4) > кинуть её в Запрос и там отобрать нужное.

Нежно потеребив при этом сеть. Мягко вставить во временную таблицу пару сотен тысяч записей (последние 100 в ускоренном ритме), грубо закрыть транзакцию и выполнить запрос на SQL сервере. Потом аккуратно вычитать полученные данные, потеребив уже опавший сетевой стек еще раз, выгрузить все в новую таблицу значений и щелчком пальцев отослать ненужные больше ресурсы прочь. Подождав, впрочем, тайно и стыдливо, очистки временной таблицы на стороне SQL.

Вот такой порнографией вы, коллега, и занимаетесь
8 azernot
 
28.02.18
18:50
(7) Всё верно вы описываете. Всё так.
Но какова задача - таково решение.

А вот как из ПостроителяОтчёта получить ТЗ я не знаю..
Может напишите решение под ключ?
9 mehfk
 
28.02.18
18:58
(8) тз = Новый ТаблицаЗначений;
тз.Колонки.Добавить("МояКолонка");

тз.Добавить().МояКолонка = "1";
тз.Добавить().МояКолонка = "2";
тз.Добавить().МояКолонка = "3";

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(тз);
Построитель.Выполнить();

тзРез = Построитель.Результат.Выгрузить();
10 Джексон
 
28.02.18
19:22
(8) > Но какова задача - таково решение.
То есть вы не знаете возможностей платформы, но виноват в этом постановщик задачи.
Браво. Вы - Легендарный 1Сник.


    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаИсточника);
    
    ЭлементОтбора = Построитель.Отбор.Добавить("Уровень");
    ЭлементОтбора.ВидСравнения  = ВидСравнения.Больше;
    ЭлементОтбора.Значение      = 0;
    ЭлементОтбора.Использование = Истина;
    
    Построитель.Выполнить();
    ТаблицаРезультата = Построитель.Результат.Выгрузить();

Таблица источника должна быть типизирована, как для передачи в запрос.
Поэтому (9) не будет работать (:
11 John83
 
28.02.18
19:37
(4) "ЭтоНЕНулвойУровень"
как раз то, что нужно
спасибо пребольшое!
12 mehfk
 
28.02.18
19:57
(10) >> Поэтому (9) не будет работать (:
Вот нахера, спрашивается, должен 1с-ник хоть до чего-то сам дойти
13 Джексон
 
28.02.18
20:06
(12) Вообще да, но не в этом случае, извини, конечно.

Конекретно здесь будет невменяемое сообщение об ошибке и он снова придет сюда же с безумными вопросами, мешая мне разлагаться и деградировать. А оно мне надо?

А вот если в ошибке будет членораздельное обьяснение, почему автор - олень, я первый с удовольствием станцую джигу на его могзах.