Имя: Пароль:
1C
 
выбор всех НЕудаленных из справочника
0 zbrhd13
 
naïve
04.07.24
09:40
СправочникМенеджер.<Имя справочника>.Выбрать()
Подскажите, как сформировать параметр отбор, чтобы вывелись все НЕ помеченные на удаление?

Отбор = Новый Структура("ПометкаУдаления");
Отбор.ПометкаУдаления = Истина;

приводит к ошибке Недопустимое значение параметра (параметр номер '3')
1 2S
 
04.07.24
09:42
Фу бяка запросом пользоваться?
2 zbrhd13
 
naïve
04.07.24
09:45
(1) проблема в том, что у меня заранее неизвестно из чего выбирать. Пользователь выбирает что выводить через форму ВыборОбъектовМетаданных. Как потом передать в запрос то, что выбрал пользователь я что-то не понял
3 Волшебник
 
04.07.24
09:46
(0) Сформируйте текст запроса динамически.
4 RVN
 
04.07.24
09:46
В 1С Конфигуратор встроена такая странная штука, синтаксический помощник называется. И вот что он пишет:

СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)
Выбрать (Select)
Синтаксис:
Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>)
Параметры:
<Родитель> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Отбор по родителю. Имеет смысл только для многоуровневых справочников. Если параметр не задан, то отбор по родителю не производится. Чтобы отобрать элементы верхнего уровня, нужно в качестве данного параметра указать пустую ссылку на элемент справочника.
<Владелец> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Отбор по владельцу. Имеет смысл только для подчиненных справочников. Если параметр не задан, то отбор по владельцу не производится.
<Отбор> (необязательный)
Тип: Структура.
Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. В качестве полей для отбора могут задаваться только поля "Код", "Наименование" и реквизиты справочника, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или в значение "Индексировать с доп. упорядоч.".
Важно! Структура может содержать только один элемент.
5 Волшебник
 
04.07.24
09:47
(2) Может программирование это не Ваше?
6 zbrhd13
 
naïve
04.07.24
09:50
(5) а вы когда только начали программировать, знали сразу все?
7 RVN
 
04.07.24
09:55
(2) Ну 1Сник мог бы написать примерно так:

    лТекст = "
        |ВЫБРАТЬ
        |    ТаблицаСправочника.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.%1 КАК ТаблицаСправочника
        |ГДЕ
        |    ТаблицаСправочника.ПометкаУдаления = ЛОЖЬ
        |";

    лЗапрос = Новый Запрос(СтрШаблон(лТекст, "вот тут имя справочника"));

    лВыборка = лЗапрос.Выполнить().Выбрать();

    Пока лВыборка.Следующий() Цикл

    КонецЦикла;


А реальные пацаны могут просто вашу выборку без отбора перебрать в цикле и отсеять лишнее по условию....
8 Shurjk
 
04.07.24
09:55
(6) Как минимум умели находить ответы не простые вопросы.
9 Ненавижу 1С
 
04.07.24
10:01
(7) занудствую:

лТекст = "
        |ВЫБРАТЬ
        |    Таблица.Ссылка КАК Ссылка
        |ИЗ
        |    #Таблица КАК Таблица
        |ГДЕ
        |    НЕ Таблица.ПометкаУдаления
        |";

    лТекст = СтрЗаменить(лТекст,"#Таблица",ИмяТаблицы);
10 Волшебник
 
04.07.24
10:01
(6) А Вы вообще нормальный, что хотите выбрать запросом весь справочник? В голове ничего не щёлкает?
11 zbrhd13
 
naïve
04.07.24
10:09
(9) (7) спасибо
12 Garykom
 
04.07.24
10:10
ТС неправильно описал задачу
Вероятно ему надо допилить форму выбора, для скрытия помеченных на удаление
13 RVN
 
04.07.24
10:12
(9) Обоснуйте ваш вариант, плиз)
14 Garykom
 
04.07.24
10:20
(9) Старый клюшечник детектед ))
Сам долго от имен переменных с "л" отвыкал
15 RVN
 
04.07.24
10:23
(14) ну так-то я начинал с ассебмлера)))
А в 1С с 1С 6.0.
Мдаааа.... Было время....

Но конкретно этот код - это просто запрос в консоли, а потом кнопка "Вывод текста запроса" ))
16 Мультук
 
04.07.24
10:30
(14)

P.S.

А я так до сих пор пишу.
Префиксы для локальных переменных
Префиксы для аргументов функции.
Как это по научному - польская венгерская нотация ?

Да некрасиво, не модно -- но я помню как (имхо еще в 7.7) назвал локальную переменную "Документы" и не понимал "ну какого хрена".

ИМХО с пространством имен в 1С -- до сих пор печаль.
17 ЖНЕЦ
 
04.07.24
10:42
сегодня нет магнитных бурь? Или жара мозг плавит?


Может все проще ?

НайтиПомеченныеНаУдаление (FindMarkedForDeletion)
Синтаксис:
НайтиПомеченныеНаУдаление(<ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>)
18 Ненавижу 1С
 
04.07.24
10:45
(13) текст запроса открывается в конструкторе
(14) имена переменных оставил как в оригинале (7)
19 Ненавижу 1С
 
04.07.24
10:46
(17) что нам это дает?
20 Garykom
 
04.07.24
11:00
(18) >имена переменных оставил как в оригинале

Почему не по современному?

Функция ТекстЗапросаШаблон()
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Таблица.Ссылка КАК Ссылка
	|ИЗ
	|	#Таблица КАК Таблица
	|ГДЕ
	|	НЕ Таблица.ПометкаУдаления";
	
	Возврат ТекстЗапроса;
	
КонецФункции

Функция ВыборВсехНЕудаленныхИзСправочника(ИмяТаблицы)
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапросаШаблон(), "#Таблица", ИмяТаблицы);
	
	Запрос = Новый Запрос(ТекстЗапроса);
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	
	Возврат РезультатЗапроса;
	
КонецФункции
21 ЖНЕЦ
 
04.07.24
10:56
(19)(20)

вы делаете по :

по названию темы

"выбор всех НЕудаленных из справочника"


но. ТС пишет

Отбор = Новый Структура("ПометкаУдаления");
Отбор.ПометкаУдаления = Истина;

т.е. ему нужно найти ВСЕ что НЕУДАЛИЛОСЬ штатным способом

а не "НЕ Таблица.ПометкаУдаления"
22 ЖНЕЦ
 
04.07.24
10:58
Велик и Могуч Русский Язык (с)
23 Garykom
 
04.07.24
10:59
(21) Ничего не знаю, код запроса оставил как в (9)
24 RVN
 
04.07.24
10:59
(18) Век живи - век учись (с) Про то, что такое открывается в конструкторе - не знал. Спасибо.
25 Ненавижу 1С
 
04.07.24
11:02
(20) совершенству нет предела
вообще язык запросов в 1С такое себе. В этом плане LINQ-выражения в .Net приятнее
26 Ненавижу 1С
 
04.07.24
11:04
(21) тогда все что не удалилось, это весь справочник )))
27 ЖНЕЦ
 
04.07.24
11:08
(26) нет, если есть ссылки на объект - то он не удаляется (остается с пометкой на удаление)
вот ТС и хочет найти все это дело - изобретает велосипед
28 Garykom
 
04.07.24
11:13
(27) Помеченные на удаление но со ссылками?
29 KJlag
 
04.07.24
11:52
(21)
в (0) "чтобы вывелись все НЕ помеченные на удаление?"
"Отбор.ПометкаУдаления = Истина;"

не понять чего хочет ТС

главное чтобы он не начал шпиговать Объект.Удалить(), взяв код из (7)(9) без корректировок под свои хотелки
30 zbrhd13
 
naïve
05.07.24
07:38
(29) все НЕ помеченные на удаление. В коде, что я привел, просто ошибся. В итоге получилось сделать запросом. Всем спасибо