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