|
Отбор в таблице значений по списку значений | ☑ | ||
---|---|---|---|---|
0
laby1
16.02.17
✎
14:53
|
Доброго всем!
Имею: 1) Список значений: мОсновныеСклады = Новый СписокЗначений; мОсновныеСклады.Добавить(Справочники.Склады.НайтиПоНаименованию("Основной склад №1")); мОсновныеСклады.Добавить(Справочники.Склады.НайтиПоНаименованию("Основной склад №3")); мОсновныеСклады.Добавить(Справочники.Склады.НайтиПоНаименованию("УПП (открытый склад)")); 2) Таблицу значений остатков (колонки "Склад", "Остаток"): Остатки = РасчитатьОстаткиПоВсемСкладам(Элемент.ТекущаяСтрока.Номенклатура); Хочу: Из ТЗ (2) выбрать все записи, у которых поле "Склад" в списке (1). Пытаюсь так: Отбор = Новый Структура; Отбор.Вставить("Склад",мОсновныеСклады); рОстаткиЦС = Остатки.НайтиСтроки(Отбор); , но не работает |
|||
1
Господин ПЖ
16.02.17
✎
14:54
|
а должно?
загони в менеджер врем. таблиц и запросом |
|||
2
laby1
16.02.17
✎
14:56
|
(1) Я так думаю не должно, раз не работает.
Насчет загнать в менеджер врем. таблиц и запросом - не совсем в теме. |
|||
3
Господин ПЖ
16.02.17
✎
14:57
|
гугль все знает
|
|||
4
Андрюха
16.02.17
✎
14:58
|
(0) Все правильно с "НайтиСтроки", смотри в отладчике, чтобы значение, которое в структуру отбора передаешь совпадало с табличным.
|
|||
5
laby1
16.02.17
✎
15:00
|
(3) Подскажи, мне нужен отбор такого плана:
Склад В мОсновныеСклады и еще НЕ (Склад В мОсновныеСклады) |
|||
6
Господин ПЖ
16.02.17
✎
15:01
|
||||
7
h-sp
16.02.17
✎
15:03
|
ВЫБРАТЬ * ПОМЕСТИТЬ Таб ИЗ &Таб КАК ТабИсх; ВЫБРАТЬ Склад, Остаток ИЗ Таб ГДЕ Склад В (мОсновныеСклады)
|
|||
8
h-sp
16.02.17
✎
15:03
|
&мОсновныеСклады
|
|||
9
1Снеговик
гуру
16.02.17
✎
15:30
|
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(мОсновныеСклады); СтрокаОтбора = ПостроительЗапроса.Отбор.Добавить("Склад"); СтрокаОтбора.Значение = мОсновныеСклады.ВыгрузитьЗначения(); СтрокаОтбора.ВидСравнения = ВидСравнения.ВСписке; СтрокаОтбора.Использование = Истина; ПостроительЗапроса.Выполнить(); рОстаткиЦС = ПостроительЗапроса.Результат.Выгрузить(); |
|||
10
Serginio1
16.02.17
✎
15:43
|
Посмотри http://catalog.mista.ru/public/371762/
Там есть универсальный отбор |
|||
11
laby1
16.02.17
✎
15:46
|
(9) (10) Спасибо, посмотрю.
(6) (7) (8) Спасибо, так и сделал: Функция РасчитатьОстаткиПоВсемСкладам(Номенклатура); Остатки = Новый ТаблицаЗначений; Остатки.Колонки.Добавить("Склад",Новый ОписаниеТипов("СправочникСсылка.Склады")); Остатки.Колонки.Добавить("Остаток",Новый ОписаниеТипов("Число"),"Количество"); СписокЦенОстатков = УправлениеЗапасами.ЗаполнитьСписокТиповЦенДляПолученияОстатков(); ОстаткиТоваров = УправлениеЗапасами.СоздатьКолонкиДереваОстатков(СписокЦенОстатков); УправлениеЗапасами.ПолучитьДеревоОстатковНоменклатуры(ОстаткиТоваров, Номенклатура, Истина, СписокЦенОстатков, , Новый Соответствие,); //Разворачиваем дерево Для Каждого СтрокаДереваОстатков Из ОстаткиТоваров.Строки Цикл Для Каждого Строка Из СтрокаДереваОстатков.Строки Цикл Остаток = Остатки.Добавить(); Остаток.Склад = Строка.ХарактеристикаСклад; Остаток.Остаток = Строка.Общий; КонецЦикла; КонецЦикла; Возврат Остатки; КонецФункции Процедура СоставПланаПриАктивизацииСтроки(Элемент) Остатки = РасчитатьОстаткиПоВсемСкладам(Элемент.ТекущаяСтрока.Номенклатура); Отбор = Новый Структура; Отбор.Вставить("Склад",мОсновныеСклады); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Остатки.Склад, | Остатки.Остаток |ПОМЕСТИТЬ ВТОстатки |ИЗ | &Остатки КАК Остатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Остатки.Склад, | Остатки.Остаток |ИЗ | ВТОстатки КАК Остатки |ГДЕ | Остатки.Склад В (&ЦС)"; Запрос.УстановитьПараметр("Остатки", Остатки); Запрос.УстановитьПараметр("ЦС", мОсновныеСклады); рОстаткиЦС = Запрос.Выполнить().Выгрузить(); Запрос.Текст = СтрЗаменить(Запрос.Текст, "В (&ЦС)", "НЕ В (&ЦС)"); рОстаткиУС = Запрос.Выполнить().Выгрузить(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |