Имя: Пароль:
1C
 
печатная форма, некорректно вывожу номенклатуру
0 dvrk
 
06.10.22
08:41
Привет, если в документе есть 'Номенклатура контрагента', то выводится некорректно, подскажите, что не так сделал?
Для каждого ПР из СсылкаНаОбъект.Товары Цикл
            если ЗначениеЗаполнено(ПР.НаименованиеНоменклатурыКонтрагента) тогда
                ОбластьДанных.Параметры.Товар = ПР.НаименованиеНоменклатурыКонтрагента
                Иначе
                        ОбластьДанных.Параметры.Товар   = СокрП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары);
        ОбластьДанных.Параметры.Цена     = Окр(ВыборкаСтрокТовары.Сумма/ВыборкаСтрокТовары.Количество,2,1);
        КонецЕсли;
        КонецЦикла;
1 dvrk
 
06.10.22
08:42
у меня кол-во строк верное выводится, но в наименовании косяк
2 Мультук
 
гуру
06.10.22
08:49
(0)

Цикл бежит по

Для каждого ПР из СсылкаНаОбъект.Товары Цикл

а в теле цикла внезапно возникает

СокрП(ВыборкаСтрокТовары.Товар)

Это нормально?
3 dvrk
 
06.10.22
08:55
(2) ну у меня и то и то есть, нельзя так?
4 Гипервизор
 
06.10.22
09:08
(3) Двойной цикл?
5 dvrk
 
06.10.22
09:12
(4) да
6 dvrk
 
06.10.22
09:14
проблема такая: если есть "НоменклатураКонтрагента", то все строки с номенклатурой - 1ый попавшийся НоменклатураКонтрагента
7 Гипервизор
 
06.10.22
09:22
(5) А зачем?
8 dvrk
 
06.10.22
10:02
(7) не пойму просто как получить в уже готовом запросе НаименованиеНоменклатурыКонтрагента
9 Мультук
 
гуру
06.10.22
10:07
(8)

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

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

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

    ЗапросТовары = Запрос.Выполнить().Выгрузить();
11 Мультук
 
гуру
06.10.22
10:24
(10)

Сейчас гуру расчехлят хрустальный шар и догадаются:
1) Что это за конфигурация и типовая ли она (УТ 10.3 ?)
2) Где именно в каком документе и таб.части лежит нужное поле "НоменклатураКонтрагента"
12 dvrk
 
06.10.22
10:25
(11) да ут 10.3, счет на оплату покупателю реквизит документа
13 dvrk
 
06.10.22
10:25
(11) ой, в табличной части товары
14 dvrk
 
06.10.22
10:28
(11) я хочу сделать чтобы если номенклатура контрагента в ТЧ заполнена, то параметр Товар заполняелся бы номенклатурой контрагента, если нет, то номенклатура просто
15 Гипервизор
 
06.10.22
11:01
(12) Вот только в типовой УТ 10.3 в ТЧ Товары документа Счет на оплату покупателю нет реквизита НоменклатураКонтрагента.
16 dvrk
 
06.10.22
11:27
(15) ну я не написал просто что нетиповая
17 Гипервизор
 
06.10.22
11:33
(16) Тогда какого типа реквизит? Почему нельзя модифицировать текст запроса и выбирать ещё и этот реквизит? А при заполнении параметров области проверять заполнение. Или сразу в запросе подготовить нужный вариант.
18 dvrk
 
06.10.22
11:37
(17) я ж и говорю я не могу в запросе этот реквизит выбрать, его там нет
строка
19 Мультук
 
гуру
06.10.22
11:51
(18)

А здесь он откуда взялся ?

Для каждого ПР из СсылкаНаОбъект.Товары Цикл
            если ЗначениеЗаполнено(ПР.НаименованиеНоменклатурыКонтрагента) тогда

СсылкаНаОбъект -- это кто вообще ?
20 dvrk
 
06.10.22
11:53
(19) я же говорю обращаюсь к объекту - он там есть, в запросе просто в доуступных полях его нет
21 dvrk
 
06.10.22
11:53
(19) это документ который печатается
22 Гипервизор
 
06.10.22
12:29
(20) Хотелось бы уточнить, а то вдруг я что-то не понял.
В вашей УТ 10.3 в документе Счет на оплату покупателю добавлен реквизит табличной части Товары - НаименованиеНоменклатурыКонтрагента. Строкового типа. Который виден при объектном доступе и не виден при табличном?
23 Мультук
 
гуру
06.10.22
12:31
(21)

Открой консоль запросов
Создай новый запрос из  Документ.СчетНаОплатуПокупателю.Товары

Реквизит НаименованиеНоменклатурыКонтрагента есть ?
24 FIXXXL
 
06.10.22
12:42
(22) скорее просто на форму вытащили
потому и нет в запросе
25 dvrk
 
06.10.22
12:42
(23) есть конечно, я говорю про запрос в (10), там не понимаю как добавить этот реквизит
26 Гипервизор
 
06.10.22
12:51
(25) У вас ответы в (20) и в (25) как-то не стыкуются.
В итоге выясняется, что вы просто не знаете как модифицировать существующий запрос?
27 dvrk
 
06.10.22
12:53
(26) ну да, я запрос в конструкторе открываю и там в доступных нет нужного мне поля
28 Гипервизор
 
06.10.22
13:04
(27) Думаю, до меня дошло, что вы пытались сказать. В конструкторе вы видите поля вложенного запроса. А вам надо на уровень ниже. Откройте вложенный запрос по F2 и добавьте реквизит в оба запроса по товарам и услугам.
29 dvrk
 
06.10.22
13:08
(28) да! спасибо большое, но, пишет недопустимое поле для группировки
30 Гипервизор
 
06.10.22
13:12
(29) Хотя у вас вообще как-то странно: запрос по двум ТЧ так-то должен быть во вложенном запросе, а у вас запрос по ТЧ Товары во вложенном, а потом это объединяется с запросом по ТЧ Услуги.
Если "недопустимое поле для группировки" - у реквизита НаименованиеНоменклатурыКонтрагента тип Строка(0)? Сделайте по аналогии с:
ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар.
31 dvrk
 
06.10.22
13:13
(30) сделал, всё равно ошибку выдаёт
32 dvrk
 
06.10.22
13:16
(30) при этом номенклатура ВЫРАЗИТЬ в запросе делается, а во вложенном без ВЫРАЗИТЬ добавлена, а номенклатуру контрагента не могу добавить во вложенном без ВЫРАЗИТЬ и с ВЫРАЗИТЬ тоже не могу
33 Гипервизор
 
06.10.22
13:25
(32) Где группируете по этому полю, там и выражайте.
34 dvrk
 
06.10.22
13:26
(33) так я выражаю во вложенном, не даёт добавить
35 dvrk
 
06.10.22
13:28
(33) странно, если добавляю, а потом ВЫРАЗИТЬ делаю - ошибка, а если добавляю сначала пустое поле, а в нём пишу руками - ошибки нет
спасибо!
36 kostyan29
 
06.10.22
13:39
У Вас нет смысла во вложенных запросах в том виде, в каком они сейчас. Вложенный запрос используется, видимо, для того, чтобы сгруппировать по возможным дублям номенклатуры, а в группировках при этом указывается НомерСтроки. В таком случае ничего точно не будет сгруппировано. Нужно убрать НомерСтроки вообще, т.к. он и не нужен Вам скорее всего.

Да и вообще тут вложенные запросы не нужны, как мне кажется. 2 отдельных запроса, каждый будет отдельно сгруппирован. Объединенных через ОБЪЕДИНИТЬ ВСЕ. Ведь в товарах не может быть услуг, а в услугах товаров? Вот и упростите себе запрос.
37 dvrk
 
06.10.22
14:05
(28) спасибо огромное