Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поле место хранение в печатной форме перемещения товаров
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
r1p88@mail.ru
Добрый день. Прошу подсказать мне по коду запроса, так как не силён в них. Конфигурация УТ 10.3 обычные формы. Есть документ "Перемещение товаров". В нём в табличную часть добавлено поле "место хранения", в которое в зависимости от выбранного склада будет проставляться ячейка, в которой хранится товар. Есть печатная форма "Перемещение товаров", в ней добавил поле "Место".
Есть функция "ПолучитьДанныеДляПечатиПеремещенияТоваров() Экспорт" в модуле объекта "перемещение товаров". В ней есть запрос, который я уже подкорректировал:
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    НомерСтрокиТЧ,
    |    ВложенныйЗапросПоТоварам.Номенклатура,
    |    ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
    |    ВложенныйЗапросПоТоварам.Номенклатура.Код     КАК Код,
    |    ВложенныйЗапросПоТоварам.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
    |    Количество,
    |    КоличествоМест,
    |    ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
    |    ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМест,
    |    Цена,
    |    ХарактеристикаНоменклатуры КАК Характеристика,
    |    СерияНоменклатуры КАК Серия,
    |   МестаХраненияНоменклатуры.МестоХранения
    |ИЗ
    |    (ВЫБРАТЬ
    |        МИНИМУМ(НомерСтроки) КАК НомерСтрокиТЧ,
    |        Номенклатура         КАК Номенклатура,
    |        ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
    |        ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
    |        Цена                 КАК Цена,
    |        СерияНоменклатуры    КАК СерияНоменклатуры,
    |        ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |        СУММА(Количество)    КАК Количество,
    |        СУММА(КоличествоМест)КАК КоличествоМест
    |    ИЗ
    |        Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваров
    |    ГДЕ
    |        ПеремещениеТоваров.Ссылка = &ТекущийДокумент
    |    СГРУППИРОВАТЬ ПО
    |        Номенклатура,
    |        ЕдиницаИзмерения,
    |        ЕдиницаИзмеренияМест,
    |        Цена,
    |        СерияНоменклатуры,
    |        ХарактеристикаНоменклатуры
    |    ) КАК ВложенныйЗапросПоТоварам
    |  ВНУТРЕННЕЕ СОЕДИНЕНИЕ  РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
    |  ПО ВложенныйЗапросПоТоварам.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
    |    СГРУППИРОВАТЬ ПО
    |        ВложенныйЗапросПоТоварам.Номенклатура,
    |        ВложенныйЗапросПоТоварам.ЕдиницаИзмерения,
    |        ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест,
    |        ВложенныйЗапросПоТоварам.Цена,
    |        ВложенныйЗапросПоТоварам.СерияНоменклатуры,
    |    ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры,
    |    ВложенныйЗапросПоТоварам.НомерСтрокиТЧ,
    |    ВложенныйЗапросПоТоварам.Номенклатура.Код,
    |    ВложенныйЗапросПоТоварам.Номенклатура.Артикул,
    |    ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление,
    |       МестаХраненияНоменклатуры.МестоХранения,
    |   ВложенныйЗапросПоТоварам.Количество,
    |   ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)),
    |   ВложенныйЗапросПоТоварам.КоличествоМест
    |
    |УПОРЯДОЧИТЬ ПО
    |    ВложенныйЗапросПоТоварам.НомерСтрокиТЧ
    |";
    
    ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать();

Ошибок никаких программа не выдаёт. Но печатная форма теперь пустая. И если смотреть отладчиком на "ВыборкаСтрокТовары", то выдаёт такое сообщение "ошибка чтения значений". Подскажите в чём может быть проблема? Что я не так делаю?
VikingKosmo
Замените ВНУТРЕННЕЕ СОЕДИНЕНИЕ, на ЛЕВОЕ СОЕДИНЕНИЕ, потому что, не исключена ситуация, что у Вас нет данных в РС МестаХраненияНоменклатуры.
r1p88@mail.ru
Цитата(VikingKosmo @ 09.12.15, 15:27) необходимо зарегистрироваться для просмотра ссылки
Замените ВНУТРЕННЕЕ СОЕДИНЕНИЕ, на ЛЕВОЕ СОЕДИНЕНИЕ, потому что, не исключена ситуация, что у Вас нет данных в РС МестаХраненияНоменклатуры.


Посмотрел, в регистре сведений есть данные. Поменял на Левое соединение, теперь ругается на другое:

Если ПечатьМесто1 Тогда
            ОбластьМакета1 = Макет.ПолучитьОбласть("Строка|Место");
            ОбластьМакета1.Параметры.ПМесто = ПараметрыПозиции.Номенклатура.МестаХраненияНоменклатуры.МестоХранения;
            ТабДокумент.Присоединить(ОбластьМакета1);


{Документ.ПеремещениеТоваров.МодульОбъекта(501)}: Поле объекта не обнаружено (МестаХраненияНоменклатуры)
            ОбластьМакета1.Параметры.ПМесто = ПараметрыПозиции.Номенклатура.МестаХраненияНоменклатуры.МестоХранения;
sava1
Цитата(r1p88@mail.ru @ 09.12.15, 15:56) необходимо зарегистрироваться для просмотра ссылки
Посмотрел, в регистре сведений есть данные. Поменял на Левое соединение, теперь ругается на другое:Если ПечатьМесто1 Тогда
            ОбластьМакета1 = Макет.ПолучитьОбласть("Строка|Место");
            ОбластьМакета1.Параметры.ПМесто = ПараметрыПозиции.Номенклатура.МестаХраненияНоменклатуры.МестоХранения;

Так почему ищем местоХранения в спр.Номенклатура ?
r1p88@mail.ru
Цитата(sava1 @ 09.12.15, 20:11) необходимо зарегистрироваться для просмотра ссылки
Так почему ищем местоХранения в спр.Номенклатура ?

спасибо за замечание. Исправил. Работает.
r1p88@mail.ru
Немного подыму тему. Решил тоже самое сделать в документе реализация товаров и услуг. В итоге получаю ошибку:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(234)}: Ошибка при вызове метода контекста (Выполнить)
    ЗапросТовары = Запрос.Выполнить().Выгрузить();
по причине:
Разное количество полей в объединяемых запросах


Вот сам запрос:
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    НомерТЧ,
    |    НомерСтрокиТЧ,
    |    ВложенныйЗапросПоТоварам.Номенклатура КАК Номенклатура,
    |    ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
    |    ВложенныйЗапросПоТоварам.Номенклатура.Код     КАК Код,
    |    ВложенныйЗапросПоТоварам.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
    |    Количество,
    |    КоличествоМест,
    |    ЕдиницаИзмерения.Представление КАК ЕдиницаЦены,
    |    ЕдиницаИзмеренияМест.Представление КАК ЕдиницаМест,
    |    Цена,
    |    Сумма,
    |    СуммаНДС,
    |    ПроцентСкидкиНаценки КАК Скидка,
    |    ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
    |    ХарактеристикаНоменклатуры КАК Характеристика,
    |    СерияНоменклатуры КАК Серия,
    |   МестаХраненияНоменклатуры.МестоХранения КАК Ячейка
    |ИЗ
    |    (ВЫБРАТЬ
    |        1 КАК НомерТЧ,
    |        МИНИМУМ(НомерСтроки) КАК НомерСтрокиТЧ,
    |        Номенклатура         КАК Номенклатура,
    |        ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
    |        ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
    |        Цена                 КАК Цена,
    |        СтавкаНДС            КАК СтавкаНДС,
    |        ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
    |        ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
    |        СерияНоменклатуры    КАК СерияНоменклатуры,
    |        ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |        СУММА(Количество)    КАК Количество,
    |        СУММА(КоличествоМест)КАК КоличествоМест,
    |        СУММА(Сумма)         КАК Сумма,
    |        СУММА(СуммаНДС)      КАК СуммаНДС
    |    ИЗ
    |        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |    ГДЕ
    |        РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |    СГРУППИРОВАТЬ ПО
    |        Номенклатура,
    |        ЕдиницаИзмерения,
    |        ЕдиницаИзмеренияМест,
    |        Цена,
    |        СтавкаНДС,
    |        ПроцентСкидкиНаценки,
    |        ПроцентАвтоматическихСкидок,
    |        СерияНоменклатуры,
    |        ХарактеристикаНоменклатуры
    |    ) КАК ВложенныйЗапросПоТоварам
    |
    | ЛЕВОЕ СОЕДИНЕНИЕ  РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
    |  ПО ВложенныйЗапросПоТоварам.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
    |   ГДЕ
      // |    ВложенныйЗапросПоТоварам.Номенклатура = &Номенклатура
       |     МестаХраненияНоменклатуры.Склад = &Склад
    |    СГРУППИРОВАТЬ ПО
   |        ВложенныйЗапросПоТоварам.Номенклатура,
    |        ВложенныйЗапросПоТоварам.ЕдиницаИзмерения,
    |        ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест,
    |        ВложенныйЗапросПоТоварам.Цена,
    |    ВложенныйЗапросПоТоварам.СтавкаНДС,
    |    ВложенныйЗапросПоТоварам.ПроцентСкидкиНаценки,
    |    ВложенныйЗапросПоТоварам.ПроцентАвтоматическихСкидок,
    |        ВложенныйЗапросПоТоварам.СерияНоменклатуры,
    |    ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры,
    |   ВложенныйЗапросПоТоварам.Количество,
    |   ВложенныйЗапросПоТоварам.КоличествоМест,
    |    ВложенныйЗапросПоТоварам.Сумма,
    |    ВложенныйЗапросПоТоварам.СуммаНДС,
    |    ВложенныйЗапросПоТоварам.НомерСтрокиТЧ,
    |    ВложенныйЗапросПоТоварам.НомерТЧ,
    |    ВложенныйЗапросПоТоварам.Номенклатура.Код,
    |    ВложенныйЗапросПоТоварам.Номенклатура.Артикул,
    |    ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление,
    |       МестаХраненияНоменклатуры.МестоХранения,
    |   ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   2,
    |   РеализацияТоваровУслуг.НомерСтроки,
    |    Номенклатура         КАК Номенклатура,
    |    Выразить(РеализацияТоваровУслуг.Содержание КАК Строка(100)),
    |    Номенклатура.Код     КАК Код,
    |    Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
    |    Количество,
    |    NULL,
    |    Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаЦены,
    |    NULL,
    |    Цена,
    |    Сумма,
    |    СуммаНДС,
    |    ПроцентСкидкиНаценки,
    |    NULL,
    |    NULL    
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    ВложенныйЗапросПоТоварам.НомерТЧ, ВложенныйЗапросПоТоварам.НомерСтрокиТЧ
    |";
    
    Запрос.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
    ЗапросТовары = Запрос.Выполнить().Выгрузить();

Может у меня со зрением плохо, но в упор не вижу, где разное количество полей?
Vofka
У вас в первом объединяемом запросе 15 полей, во втором 16.
Petre
В первом я насчитал 18 полей.
r1p88@mail.ru
убрал один Null во втором объединяемом запросе. Та же фигня.
Vofka
Petre @ Сегодня, 12:17 необходимо зарегистрироваться для просмотра ссылки,
то внешний запрос, который выбирает данные из вложенного (объединенного)

r1p88@mail.ru @ Сегодня, 12:26 необходимо зарегистрироваться для просмотра ссылки,
так гадать сложно, но видимо что-то не там убрали.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.