Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 сен 2021, 06:46

Достать значение с табличного поля

Автор Павел55555, 04 ноя 2016, 12:02

0 Пользователей и 1 гость просматривают эту тему.

Павел55555

Доброго дня!
Платформа 8.3 Толстый клиент. УТ 10.3
Подскажите в каком направлении копать.
Есть номенклатура в ней табличное поле "МестаХранения" в нём есть колонка ячейка, каким образом мне в другом документе "ПриходныйОрдерНаТовары" вывести в новой колонке эту ячейку?

Как то выводит но не правильно, одна и та же ячейка по всем строкам и док. начинает немного тормозить:
Вся структура:

Функция МестоХранения(Номенклатура) Экспорт
Текст =    "ВЫБРАТЬ
          |    ПриходныйОрдерНаТовары.Товары.(
          |        Номенклатура
          |    ),
          |    МестаХраненияНоменклатуры.МестоХранения,
          |    ПриходныйОрдерНаТовары.Склад
          |ИЗ
          |    Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары
          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
          |        ПО ПриходныйОрдерНаТовары.Склад = МестаХраненияНоменклатуры.Склад
          |            И ПриходныйОрдерНаТовары.Товары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура";
       
       Запрос = Новый Запрос;
       Запрос.Текст = Текст;
       Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
МестоХранения = ?(Выборка.Следующий(),Выборка.МестоХранения,0);
Возврат МестоХранения;

КонецФункции


Процедура ПоказатьМестоХранения(КолонкиТабПоля, ЯчейкиСтрокиТабПоля, Номенклатура) Экспорт
Если КолонкиТабПоля.МестоХранения.Видимость Тогда
        МестоХранения = МестоХранения(Номенклатура);         ЯчейкиСтрокиТабПоля.МестоХранения.УстановитьТекст(МестоХранения);
     Иначе         ЯчейкиСтрокиТабПоля.МестоХранения.УстановитьТекст("");
     КонецЕсли;   
КонецПроцедуры


Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

ПоказатьМестоХранения(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура);

КонецПроцедуры

cska-fanat-kz

надо в...
Функция МестоХранения(Номенклатура) Экспорт

передать еще и склад и тогда не нужно никакое левое соединение, просто запрос к регистру сведений и все!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Павел55555

Типо такого ?
Текст = "ВЫБРАТЬ
        |   ПриходныйОрдерНаТоварыТовары.Номенклатура,
        |   МестаХраненияНоменклатуры.МестоХранения,
        |   ПриходныйОрдерНаТоварыТовары.Ссылка.Склад
        |ИЗ
        |   Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерНаТоварыТовары
        |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
        |      ПО ПриходныйОрдерНаТоварыТовары.Ссылка.Склад = МестаХраненияНоменклатуры.Склад
        |         И ПриходныйОрдерНаТоварыТовары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура";

cska-fanat-kz

у вас есть РС с измерениями Номенклатура и Склад и ресурсом МестоХранения
вам надо по номенклатуре и складу получить место хранения
так или нет?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Павел55555

Фото https://cloud.mail.ru/public/G218/A4xdFq8zr
Фото https://cloud.mail.ru/public/2XES/o5dcvShHE
Добавлено: 04 ноя 2016, 12:37


Цитата: cska-fanat-kz от 04 ноя 2016, 12:35
у вас есть РС с измерениями Номенклатура и Склад и ресурсом МестоХранения
вам надо по номенклатуре и складу получить место хранения
так или нет?

Всё верно по номенклатуре и складу получить место хранения и вывести его в колонке МестоХранения

cska-fanat-kz

у вас в ПриВыводеСтроки() есть ДанныеСтроки.Номенклатура плюс реквизит "Склад" шапки...
что вам еще надо для счастья?
нафига сдался запрос к ТЧ Товары документа?

ЗЫ с другой стороны получаем запрос в цикле что не особо оптимально...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Павел55555

Всем спасибо! найдено решение:
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
    Если ЗначениеЗаполнено(ДанныеСтроки.Номенклатура) Тогда
        МестоХранения = ПолучитьМестоХранения(ДанныеСтроки.Номенклатура);
        Если НЕ МестоХранения = Неопределено Тогда
            ОформлениеСтроки.Ячейки.МестоХранения.УстановитьТекст(МестоХранения);
        КонецЕсли;
    КонецЕсли;
   
КонецПроцедуры

Функция ПолучитьМестоХранения(Номенклатура)

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    МестаХраненияНоменклатуры.Номенклатура,
                   |    МестаХраненияНоменклатуры.Склад,
                   |    МестаХраненияНоменклатуры.Приоритет КАК Приоритет,
                   |    МестаХраненияНоменклатуры.МестоХранения
                   |ИЗ
                   |    РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
                   |ГДЕ
                   |    МестаХраненияНоменклатуры.Номенклатура = &Номенклатура
                   |    И МестаХраненияНоменклатуры.Склад = &Склад
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Приоритет";
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Склад", Склад);
   
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Возврат Выборка.МестоХранения;   
    Иначе
      Возврат неопределено
    КонецЕсли;

КонецФункции

cska-fanat-kz

Цитата: Павел55555 от 04 ноя 2016, 14:51Возврат неопределено

можно заменить на

Возврат "";
или
Возврат Справочник. ... .ПустаяСсылка();

тогда на Неопределено проверять не надо )
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск