|
Достать значение с табличного поля | ☑ | ||
---|---|---|---|---|
0
Pavel55555
02.11.16
✎
11:21
|
Доброго дня!
Платформа 8.3 Толстый клиент. УТ 10.3 Подскажите в каком направлении копать. Есть номенклатура в ней табличное поле "МестаХранения" в нём есть колонка ячейка, каким образом мне в другом документе "ПриходныйОрдерНаТовары" вывести в новой колонке эту ячейку? Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МестаХраненияНоменклатуры.Номенклатура, | МестаХраненияНоменклатуры.Склад, | МестаХраненияНоменклатуры.МестоХранения |ИЗ | РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры |ГДЕ | МестаХраненияНоменклатуры.Номенклатура = &МестаХранения"; Запрос.УстановитьПараметр("МестаХранения", МестаХранения); Может быть эту ячейку не запросом выводить? |
|||
1
h-sp
02.11.16
✎
11:24
|
(0) вы же уже вроде решили эту задачу?
|
|||
2
d546
02.11.16
✎
11:25
|
точно в номенклатуре есть табличное поле?
точно в параметр "МестаХранения" в запросе надо приравнивать к Номенклатура? |ГДЕ | МестаХраненияНоменклатуры.Номенклатура = &МестаХранения"; |
|||
3
Pavel55555
02.11.16
✎
11:35
|
(2) Да, точно есть в форме это таб. поле., форма доработанная.
(1) Нет её я не решил еще, есть подобные Запросы но они что то не идут. Фото https://cloud.mail.ru/public/Bx26/AQqDWsZSV |
|||
4
h-sp
02.11.16
✎
11:38
|
(3) ты не ответил, почему номенклатуру сравниваешь со складами. Вы что, ангарами торгуете?
|
|||
5
Pavel55555
02.11.16
✎
11:44
|
(4) Конечно запрос не верный...
Не могу сообразить, как они формируются :( |
|||
6
Pavel55555
02.11.16
✎
11:46
|
В запросе получается две таб. Номен и Места Хр.?
Поля Склад, Место, Номен ? |
|||
7
Pavel55555
02.11.16
✎
11:47
|
Нужна ли в Запросе таб. ПриходныйОрдерНаТовары ?
|
|||
8
h-sp
02.11.16
✎
11:49
|
(0) нужна конечно. Иначе откуда ты возьмешь номенклатуру?
|
|||
9
Pavel55555
02.11.16
✎
11:59
|
(8)
1. Номен из таб. ПриходныйОрдерНаТовары 2. МестаХраненияНоменклатуры.МестоХранения из РС Далее Связи ковырять или Условие? |
|||
10
Pavel55555
02.11.16
✎
12:02
|
||||
11
Pavel55555
02.11.16
✎
12:04
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Товары.( | Номенклатура | ), | МестаХраненияНоменклатуры.МестоХранения |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры | ПО ПриходныйОрдерНаТовары.Товары.Номенклатура.Ссылка = МестаХраненияНоменклатуры.МестоХранения.Ссылка"; РезультатЗапроса = Запрос.Выполнить(); |
|||
12
h-sp
02.11.16
✎
12:37
|
ВЫБРАТЬ
| ПриходныйОрдерНаТоварыТовары.Номенклатура, | МестаХраненияНоменклатуры.МестоХранения |ИЗ | Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерНаТоварыТовары |
|||
13
Pavel55555
02.11.16
✎
12:46
|
| ПриходныйОрдерНаТовары.Товары.(
.Товары. - это тч | ПриходныйОрдерНаТоварыТовары ошибка |
|||
14
Peltzer
02.11.16
✎
12:52
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Товары.( | Номенклатура | ), | МестаХраненияНоменклатуры.МестоХранения |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатурыСрезПоследних(тут параметры виртуальной таблицы) КАК МестаХраненияНоменклатуры | ПО ПриходныйОрдерНаТовары.Товары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура И ПриходныйОрдерНаТовары.Склад = МестаХраненияНоменклатуры.Склад"; РезультатЗапроса = Запрос.Выполнить(); |
|||
15
h-sp
02.11.16
✎
12:56
|
(13) делай запрос сразу к табличной части
|ИЗ | Документ.ПриходныйОрдерНаТовары.Товары нафига тебе многоэтажные структуры? |
|||
16
Pavel55555
02.11.16
✎
14:13
|
(14) У меня почти так же получилось:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Товары.( | Номенклатура | ), | МестаХраненияНоменклатуры.МестоХранения, | ПриходныйОрдерНаТовары.Склад |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры | ПО ПриходныйОрдерНаТовары.Товары.Номенклатура.Ссылка = МестаХраненияНоменклатуры.МестоХранения.Ссылка | И ПриходныйОрдерНаТовары.Склад.Ссылка = МестаХраненияНоменклатуры.МестоХранения"; РезультатЗапроса = Запрос.Выполнить(); |
|||
17
Pavel55555
02.11.16
✎
15:13
|
Башку уже сломал, не выходит и всё тут.
|
|||
18
Pavel55555
02.11.16
✎
15:15
|
Уже пробовал через Процедура ПоказатьМестаХранения...//...
РаботаСДиалогами.ПоказатьМестаХранения...//... Тоже не то |
|||
19
Pavel55555
02.11.16
✎
15:15
|
ЯчейкиСтрокиТабПоля.МестаХранения.УстановитьТекст(Номенклатура.МестаХранения);
|
|||
20
Pavel55555
02.11.16
✎
18:41
|
Как то выводит но не правильно, одна и та же ячейка по всем строкам и док. начинает немного тормозить:
Вся структура: Функция МестоХранения(Номенклатура) Экспорт Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Товары.( | Номенклатура | ), | МестаХраненияНоменклатуры.МестоХранения, | ПриходныйОрдерНаТовары.Склад |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры | ПО ПриходныйОрдерНаТовары.Склад = МестаХраненияНоменклатуры.Склад | И ПриходныйОрдерНаТовары.Товары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура"; Запрос = Новый Запрос; Запрос.Текст = Текст; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); МестоХранения = ?(Выборка.Следующий(),Выборка.МестоХранения,0); Возврат МестоХранения; КонецФункции Процедура ПоказатьМестоХранения(КолонкиТабПоля, ЯчейкиСтрокиТабПоля, Номенклатура) Экспорт Если КолонкиТабПоля.МестоХранения.Видимость Тогда МестоХранения = МестоХранения(Номенклатура); ЯчейкиСтрокиТабПоля.МестоХранения.УстановитьТекст(МестоХранения); Иначе ЯчейкиСтрокиТабПоля.МестоХранения.УстановитьТекст(""); КонецЕсли; КонецПроцедуры Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) ПоказатьМестоХранения(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура); КонецПроцедуры |
|||
21
Pavel55555
02.11.16
✎
18:42
|
В чем может быть проблема, мне кажется при Выборке?
|
|||
22
Peltzer
03.11.16
✎
05:23
|
Что делает Функция МестоХранения(Ном):
В запросе ты выбрал все записи приходного ордера на товары и присоединил к ним все доступные записи по местам хранения на данном складе для каждой номенклатуры (а их может быть несколько, если регистр периодический). Потом взял первую попавшуюся запись и вернул как результат функции. Теперь как ты выводишь - пришло сообщение о том, что надо вывести строку таблицы - идём в базу, выполняем функцию МестоХранения - выводим результат для одной строки. Естественно, работать всё это будет меедленно. И не верно. Ведь отбора по номенклатуре в запросе нет. Можно где-то хранить таблицу мест хранения пока форма работает, либо записывать место хранения в свой реквизит ТЧ и выводить его штатными средствами. |
|||
23
Pavel55555
04.11.16
✎
08:48
|
(22) Так все таки Запрос нужно ковырять?
|
|||
24
Pavel55555
04.11.16
✎
09:03
|
Параметры виртуальной таблицы - Это таблицы самой "МестаХраниний" ?
|
|||
25
Pavel55555
04.11.16
✎
11:36
|
У кого нибудь есть мысли как решить данную задачу?
|
|||
26
catena
04.11.16
✎
11:59
|
(25)Ответь на вопросы:
1. Для чего ты в функцию МестоХранения передаешь номенклатуру? 2. Какие действия происходят в строке: МестоХранения = ?(Выборка.Следующий(),Выборка.МестоХранения,0);? 3. Где учитывается склад? 4. Зачем устанавливать текст в невидимой колонке? |
|||
27
catena
04.11.16
✎
12:01
|
5. Периодичность регистра МестаХраненияНоменклатуры ?
|
|||
28
Pavel55555
04.11.16
✎
12:17
|
(26)
И ПриходныйОрдерНаТовары.Товары.Номенклатура = МестаХраненияНоменклатуры ? Действие взято с другой функции. Иначе ЯчейкиСтрокиТабПоля.МестоХранения.УстановитьТекст(""); Удалил. |
|||
29
bootini
04.11.16
✎
12:19
|
В какой момент место хранения выводить надо?
|
|||
30
Pavel55555
04.11.16
✎
12:21
|
(29) ТоварыПриПолученииДанных
|
|||
31
bootini
04.11.16
✎
12:24
|
(30) ПриходныйОрдерНаТовары.Товары.МестоХранения - есть такой реквизит таб части документа?
|
|||
32
Pavel55555
04.11.16
✎
12:28
|
(31) Реквизита нет, есть колонка.
Фото https://cloud.mail.ru/public/G218/A4xdFq8zr Фото https://cloud.mail.ru/public/2XES/o5dcvShHE |
|||
33
bootini
04.11.16
✎
14:12
|
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ЗначениеЗаполнено(ДанныеСтроки.Номенклатура) Тогда МестоХранения = ПолучитьМестоХранения(ДанныеСтроки.Номенклатура); Если НЕ МестоХранения = Неопределено Тогда ОформлениеСтроки.Ячейки.МестоХранения.УстановитьТекст(МестоХранения); КонецЕсли; КонецЕсли; КонецПроцедуры Функция ПолучитьМестоХранения(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МестаХраненияНоменклатуры.Номенклатура, | МестаХраненияНоменклатуры.Склад, | МестаХраненияНоменклатуры.Приоритет КАК Приоритет, | МестаХраненияНоменклатуры.МестоХранения |ИЗ | РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры |ГДЕ | МестаХраненияНоменклатуры.Номенклатура = &Номенклатура | И МестаХраненияНоменклатуры.Склад = &Склад | |УПОРЯДОЧИТЬ ПО | Приоритет"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("Склад", Склад); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.МестоХранения; Иначе Возврат неопределено КонецЕсли; КонецФункции // () |
|||
34
Pavel55555
04.11.16
✎
14:50
|
(33) БОЛЬШОЕ СПАСИБО bootini!
УРА! ВСЁ ЧЕТКО! |
|||
35
bootini
04.11.16
✎
15:11
|
Зачем только всё это надо непонятно, чисто для контроля при оприходовании, заданы ячейки для номенклатуры или нет?
|
|||
36
Pavel55555
04.11.16
✎
19:01
|
(35) Да и не только, для того что бы кладовщик видел куда положить товар, не открывая его карточку.
|
|||
37
Peltzer
07.11.16
✎
06:33
|
Про периодичность не учли.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |