Версия для печати темы (https://pro1c.org.ua/index.php?s=9acba00bf5ef31db7c78ce8341b611fb&showtopic=14198)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Получить программно документы по отбору в форме списка документа

Автор: vbi 11.09.13, 15:59

Допустим есть форма списка документов. В форме списка устанавливаем отбор - видим отобранные документы. Вопрос: как получить эти документы программно в коде. То есть получается нужно взять отбор в форме списка, распарсить его и вставить условия в запрос - и запросом получить документы?

Автор: Vofka 11.09.13, 16:14

Надо только те, что на экране видны или все, которые соответствуют отбору?

Автор: vbi 11.09.13, 16:25

Цитата(Vofka @ 11.09.13, 16:14) *
Надо только те, что на экране видны или все, которые соответствуют отбору?


Та все что соответствуют отбору

Автор: logist 11.09.13, 16:27

Программно получить установленный отбор, и на его основе составить запрос который вернет массив документов.

Автор: vbi 11.09.13, 16:40

Цитата(logist @ 11.09.13, 16:27) *
Программно получить установленный отбор, и на его основе составить запрос который вернет массив документов.


Может кто писал уже такую процедуру парсинга отбора? smile.gif

Автор: Vofka 11.09.13, 16:52

Я бы попробовал сделать через Документы.МойДокумент.Выбрать(). Там 3-й параметр - это Отбор в виде Структуры. Так вот, по-моему, совсем не сложно обойти в цикле все отборы и сформировать соответствующую структуру. Единственное ограничение - это вид сравнения Равно. Короче, по-моему, вполне не плохой вариант.

Автор: Petre 11.09.13, 16:59

Не нужен "парсинг отбора" в данном случае. Берем отбор и обходим элементы, по применению собираем данные. Тут может идти речь скорее о переводе данных отбора в язык запроса. Но я бы в данном случае воспользовался бы построителем и запихал бы в него этот же отбор практически без изменений.

Автор: vbi 04.06.18, 19:55

Четкого ответа на тему нет, вот рабочий вариант. Может кому пригодится:

     Источник =  Новый ОписаниеИсточникаДанных(ДокументСписок);    
      Построитель = Новый ПостроительЗапроса;
      Построитель.ИсточникДанных = Источник;
      Построитель.Выполнить();
      ТЗ = Построитель.Результат.Выгрузить();
И делов то) Чтоб в следующий раз в поиске в Гугл найти ответ в этой теме.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua