Допустим есть форма списка документов. В форме списка устанавливаем отбор - видим отобранные документы. Вопрос: как получить эти документы программно в коде. То есть получается нужно взять отбор в форме списка, распарсить его и вставить условия в запрос - и запросом получить документы?
Надо только те, что на экране видны или все, которые соответствуют отбору?
Программно получить установленный отбор, и на его основе составить запрос который вернет массив документов.
Я бы попробовал сделать через Документы.МойДокумент.Выбрать(). Там 3-й параметр - это Отбор в виде Структуры. Так вот, по-моему, совсем не сложно обойти в цикле все отборы и сформировать соответствующую структуру. Единственное ограничение - это вид сравнения Равно. Короче, по-моему, вполне не плохой вариант.
Не нужен "парсинг отбора" в данном случае. Берем отбор и обходим элементы, по применению собираем данные. Тут может идти речь скорее о переводе данных отбора в язык запроса. Но я бы в данном случае воспользовался бы построителем и запихал бы в него этот же отбор практически без изменений.
Четкого ответа на тему нет, вот рабочий вариант. Может кому пригодится:
Источник = Новый ОписаниеИсточникаДанных(ДокументСписок);
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Источник;
Построитель.Выполнить();
ТЗ = Построитель.Результат.Выгрузить();
И делов то) Чтоб в следующий раз в поиске в Гугл найти ответ в этой теме.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua