|
табличная часть документа | ☑ | ||
---|---|---|---|---|
0
dimogen
06.06.12
✎
11:27
|
Подскажите, как можно правильно сделать отбор в табличной части документа по значению? есть поле склад(например, основной и виртуальный), как отобрать только основной? делал так:
Форма = ДокСсылка.ПолучитьФорму("ФормаДокумента"); Форма.ЭлементыФормы.Товары.ОтборСтрок.Склад.Установить(Склад); ОтборСтрок = Форма.ЭлементыФормы.Товары.ОтборСтрок; Построитель = Новый ПостроительЗапроса; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Форма.ЭлементыФормы.Товары.ОтборСтрок); Для Каждого ЭлементОтбора из ОтборСтрок Цикл Если ЭлементОтбора.Использование Тогда НовыйОтбор = Построитель.Отбор.Добавить(ОтборСтрок.Склад); НовыйОтбор.Использование = Истина; НовыйОтбор.Значение = Справочники.МестаХранения.НайтиПоКоду(9); КонецЕсли; КонецЦикла; Рез = Построитель.Результат; но у меня ошибка в строке новыйотбор = построитель.отбор.добавить... может кто знает как мне помочь? |
|||
1
dimogen
06.06.12
✎
11:32
|
можно использовать другой вариант получать из ТЗ по найти, но там не могу условие правильно сделать
|
|||
2
CyberDream
06.06.12
✎
11:37
|
можно воспользоваться менеджером временных таблиц, поместить в него табличную форму документа, и запросом извлечь необходимые данные
|
|||
3
Maxus43
06.06.12
✎
11:42
|
через форму то зачем всё? просто запрос к ТЧ дока чем не катит?
|
|||
4
Reset
06.06.12
✎
11:43
|
Если есть документ-объект, тогда
УсловиеОтбора=Новый Структура("Склад",Склад) Объект.Товары.НайтиСтроки() -- вернет массив строк Если ссылка, то простейший запрос к ТЧ |
|||
5
Reset
06.06.12
✎
11:44
|
(2) "поместить в менеджер временных таблиц табличную форму документа"
:D |
|||
6
dimogen
06.06.12
✎
11:44
|
(3)дак я сделал запрос, там все данные получил, потом выгрузил ТЗ, но мне нужно взять колонку склад с наименование основной и по нему я буду дальше работать.
(4)вот как раз так сделал, получил массив |
|||
7
dimogen
06.06.12
✎
11:45
|
(4) только дальше понять не могу что делать)))
Отбор = Новый Структура; Отбор.Вставить("Склад", Склад); НайдСтр = ТЗ.НайтиСтроки(Отбор); |
|||
8
Reset
06.06.12
✎
11:46
|
(7) В НайдСтр будет массив отобранных строк, как ты и просил.
Или ты просил не это? Скажи, что нужно получить в итоге. Цель какая. |
|||
9
dimogen
06.06.12
✎
11:49
|
(8) в итоге мне нужно получить склад = основной, в ТЧ могут быть много разных складов, когда получаю склад то я буду делать документ перемещение только той номенклатуры из ТЧ в кот. поле склад
|
|||
10
Reset
06.06.12
✎
11:52
|
Ничего не понял :(
|
|||
11
Reset
06.06.12
✎
11:53
|
Почитай еще про метод Выгрузить у табличной части
|
|||
12
Reset
06.06.12
✎
11:54
|
И про условие ГДЕ в запросе
|
|||
13
dimogen
06.06.12
✎
12:01
|
вот смотри как у меня сделано, может ты так больше поймешь, что я имею в виду:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоставкаТовары.Номенклатура, | ДоставкаТовары.Количество, | ДоставкаТовары.Сумма, | ДоставкаТовары.Склад, | ДоставкаТовары.Ссылка |ИЗ | Документ.Доставка.Товары КАК ДоставкаТовары |ГДЕ | ДоставкаТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДокСсылка); Результат = Запрос.Выполнить(); Склад = Справочники.МестаХранения.НайтиПоКоду(9); ТЗ = ДокСсылка.Товары.Выгрузить(); Отбор = Новый Структура; Отбор.Вставить("Склад", Склад); НайдСтр = ТЗ.НайтиСтроки(Отбор); ДокПерем = Документы.Перемещение.СоздатьДокумент(); //вот здесь хочу вставить условие по складу Для Стр=0 ПО ТЗ.Количество()-1 Цикл НовСтр = ДокПерем.Товары.Добавить(); НовСтр.Номенклатура = ТЗ.Получить(Стр).Номенклатура; НовСтр.Количество = ТЗ.Получить(Стр).Количество; //НовСтр.Цена = ТЗ.Получить(Стр).Цена; НовСтр.Сумма = ТЗ.Получить(Стр).Сумма; НовСтр.код = ТЗ.Получить(Стр).Номенклатура.Ссылка.Код; КонецЦикла; |
|||
14
Reset
06.06.12
✎
12:14
|
(13) Измени запрос:
"ВЫБРАТЬ | ДоставкаТовары.Номенклатура, | ДоставкаТовары.Количество, | ДоставкаТовары.Сумма, | ДоставкаТовары.Склад, | ДоставкаТовары.Ссылка |ИЗ | Документ.Доставка.Товары КАК ДоставкаТовары |ГДЕ | ДоставкаТовары.Ссылка = &Ссылка И ДоставкаТовары.Склад=&Склад"; и передавай в него параметр Склад, по которому хочешь отобрать. |
|||
15
dimogen
06.06.12
✎
12:16
|
(14) вроде такого:
Склад = Справочники.МестаХранения.НайтиПоКоду(9); Запрос.УстановитьПараметр("Склад", Склад); |
|||
16
dimogen
06.06.12
✎
12:29
|
и как условие должно выглядеть?
|
|||
17
dimogen
06.06.12
✎
13:16
|
up
|
|||
18
hhhh
06.06.12
✎
13:21
|
у вас числовые коды у складов?
|
|||
19
dimogen
06.06.12
✎
13:31
|
да, числовой
|
|||
20
dimogen
06.06.12
✎
16:08
|
я сделал так:
ТабСклад = ДокСсылка.Товары.ВыгрузитьКолонку("Склад"); Для каждого Элем из ТабСклад Цикл Сообщить(Элем); КонецЦикла; но теперь не понимаю как мне выбрать нужное мне значение? |
|||
21
dimogen
06.06.12
✎
17:15
|
все разобрался))) всем спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |