Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Добрый день !
На форме имеется поле списка.В заполненном списке имеется список контрагентов. В списке несколько десятков контрагентов.Задачка состоит в следующем-пользователь может выбрать все контрагенты из списка ("галочка-Checked" включена), или нужные на его взгляд,т.е. выборочно.Как правильно передать из списка значений выбранные контрагенты в запрос на выборку данных?
У меня выходит что-то вроде нижеследующего:
СтаршийИндекс = ПолеСписка1.Количество() - 1; стр=""; Для Сч = 0 по СтаршийИндекс Цикл Если ПолеСписка1[Сч].Пометка=Истина Тогда стр=стр+"|И (Контрагент=&"+ПолеСписка1[Сч].Представление+Символы.ПС; КонецЕсли; КонецЦикла;
Вопрос- как "научить" этот код , чтобы в строку стр передавался параметр ПолеСписка1[Сч].Представление как Объект ?
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
За идею Спасибо ("палец нажал"),но в процессе её реализации возникли некоторые проблемы:
Во время считывания элементов списка в массив попадают уже элементы с типом "Строка". Я этот вопрос решил так : Нахожу в справочнике контрагентов нужный элемент по наименованию, и получаю объект этой записи (ПолучитьОбъект()).
Массив = Новый Массив; Для Каждого Элемент Из Список Цикл Если Элемент.Пометка Тогда Об=ВидР.НайтиПоНаименованию(Элемент.Представление).ПолучитьОбъект(); Массив.Добавить(Об); КонецЕсли; КонецЦикла;
Сам запрос :
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |Отгрузка.Ссылка КАК Ссылка, |Отгрузка.НомерВ КАК НомерВ, |Отгрузка.Количество КАК Количество, |Отгрузка.ВидРеализации КАК ВидРеализации |ИЗ | Документ.Отгрузка КАК Отгрузка |ГДЕ | (Отгрузка.Дата>=&ДатаНач) И (Отгрузка.Дата<=&ДатаКон)";
Получать Объект не нужно, запросу нужен массив ссылок, а вы передаете туда массив объектов.
Если Элемент.Пометка Тогда Если ТипЗнч(Элемент.Значение) = Тип("Строка") Тогда Массив.Добавить(ВидР.НайтиПоНаименованию(Элемент.Представление)); Иначе Массив.Добавить(Элемент.Значение); КонецЕсли; КонецЕсли;
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Не совсем понял, у меня в запросе на заполнение элементов Списка -Значение -это выражение Контрагент.Код,а представление -это выражение Контрагент.Наименование,3-й параметр -это "галка" -тип Логический.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(andrew76 @ 24.07.15, 16:53)
у меня в запросе на заполнение элементов Списка -Значение -это выражение Контрагент.Код
Извините, обычно это ссылка, вообще не понятно зачем Вы туда код пихаете. Только по этой причине там есть тип Строка? Т.е. если сделать по правильному - значение = ссылка, то строкового типа там не будет?
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
"Пихаю" ,потому что не знаю как правильно это делать.На то и форум,чтобы спрашивать... Тип строка в Представлении- это Наименование контрагента.А что Вы мне посоветуете написать в выражении Значение ? Что-то вроде : СписокЗначений.Значение=Контрагент.Ссылка ?
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(andrew76 @ 24.07.15, 18:53)
"Пихаю" ,потому что не знаю как правильно это делать.На то и форум,чтобы спрашивать...
Если не знаете как правильно, то надо выкладывать максимум информации о задаче.
Цитата(andrew76 @ 24.07.15, 18:53)
ип строка в Представлении- это Наименование контрагента.А что Вы мне посоветуете написать в выражении Значение ? Что-то вроде : СписокЗначений.Значение=Контрагент.Ссылка ?
Покажите процедуру заполнения списка.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Процедура заполнения списка:
Запрос = Новый Запрос(); Запрос.Текст= " |ВЫБРАТЬ | ВидРеализации.Код КАК Значение, | ВидРеализации.ССылка КАК Представление, | ЛОЖЬ КАК Пометка |ИЗ | Справочник.ВидРеализации КАК ВидРеализации | |УПОРЯДОЧИТЬ ПО | ВидРеализации.Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(ПолеСписка1.Добавить(), Выборка); КонецЦикла;
В этом случае пример запроса который я написал в самом начале (сообщение #2) будет корректно работать. У вас, похоже, не хватает базовых знаний, займитесь этим, а то вы изобретаете велосипед с квадратными колесами
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!