Имя: Пароль:
1C
1С v8
Помогите разобратся с запросом в УТ 8.2.
,
0 0tsheln1k
 
18.02.20
01:43
Решив одну проблему, наткнулся на другую...

Прошлая тема: УТ 8.2. Где заполняется макет внешней печатной формы?

Проблема в том, что не могу понять почему ругается на:
"Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(31, 2)}: Неправильный псевдоним "АктПриемкиНаРемонт.ПланируемаяСтоимость"
<<?>>АктПриемкиНаРемонт.ПланируемаяСтоимость"

Все та же конфигурация УТ 8.2.

Текст запроса:

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



Если требуется полный код, то вот:



Функция Печать() Экспорт
    
    Если (СсылкаНаОбъект.ПолучитьОбъект().ЭтоНовый())ИЛИ(СсылкаНаОбъект.ПолучитьОбъект().Модифицированность()) Тогда
        
        Возврат(0);
        
    КонецЕсли;
    
    КоличествоЭкземпляров = 1;
    НаПринтер = Ложь;
    ТабДокумент = СоздатьТабличныйДокументПечатиАкта();
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Акт приемки в ремонт");
    
КонецФункции // Печать

// Функция создает табличный документ для печати
// Параметры:
//  Тип             - строка, содержит тип печатаемого документа (счет или заказ);
//  ПараметрыПечати - структура с данными для печати.
//
// Возвращаемое значение:
//  Табличный документ - сформированная печатная форма
//
Функция СоздатьТабличныйДокументПечатиАкта()
    Перем НаборЗаписей,Телефон,Заказчик;
    
    Телефон="";
    
    Заказчик="";
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктПриемкиВРемонт";
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    АктПриемкиНаРемонт.Номер КАК Номер,
                   |    АктПриемкиНаРемонт.Дата,
                   |    АктПриемкиНаРемонт.Организация,
                   |    АктПриемкиНаРемонт.Склад,
                   |    АктПриемкиНаРемонт.Контрагент,
                   |    АктПриемкиНаРемонт.Ответственный,
                   |    АктПриемкиНаРемонт.Подразделение,
                   |    АктПриемкиНаРемонт.Комментарий,
                   |    АктПриемкиНаРемонт.ДокументОснование.Дата КАК ДатаПродажи,
                   |    АктПриемкиНаРемонт.ПричинаОбращения,
                   |    АктПриемкиНаРемонт.ВидРемонта,
                   |    АктПриемкиНаРемонт.Техник,
                   |    АктПриемкиНаРемонт.ЗаключениеТехника,
                   |    АктПриемкиНаРемонт.Приемщик,
                   |    АктПриемкиНаРемонт.СтатусАкта,
                   |    АктПриемкиНаРемонт.Номенклатура,
                   |    АктПриемкиНаРемонт.СерийныйНомер КАК СерийныеНомера,
                   |    АктПриемкиНаРемонт.НомерБатареи,
                   |    АктПриемкиНаРемонт.IMEI_Телефона,
                   |    АктПриемкиНаРемонт.Оператор,
                   |    АктПриемкиНаРемонт.Комплектность,
                   |    АктПриемкиНаРемонт.ОграничениеСтоимости КАК ОграниченияСтоимости,
                   |    АктПриемкиНаРемонт.КодПароль,
                   |    АктПриемкиНаРемонт.НеисправностьСоСловВладельца КАК НеисправностьСоСловВладельца,
                   |    АктПриемкиНаРемонт.РезультатПроверки,
                   |    АктПриемкиНаРемонт.ДокументОснование.Номер,
                   |    АктПриемкиНаРемонт.Точка,
                   |    АктПриемкиНаРемонт.Замечания,
                   |    АктПриемкиНаРемонт.ДатаВыдачи,
                   |    АктПриемкиНаРемонт.ПредпологаемаяСтоимость
                   |ИЗ
                   |    Документ.АктПриемкиНаРемонт КАК АктПриемкиНаРемонт
                   |ГДЕ
                   |    АктПриемкиНаРемонт.Ссылка = &СсылкаНаДокумент";
    
    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаОбъект);
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    //ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
        
    Макет = ПолучитьМакет("Акт");
    
    //1 союз программистов 11.05.2018
    
    
ТабДокумент.Очистить();

ТабДокумент.ПолеСверху              = 10;
ТабДокумент.ПолеСлева               = 10;
ТабДокумент.ПолеСправа              = 10;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу  = 0;
ТабДокумент.АвтоМасштаб             = Истина;
ТабДокумент.РазмерСтраницы="A4";
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктПриемкиВРемонт";
ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет;
    
    
    ОбластьМакета = Макет.ПолучитьОбласть("Основной");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    
    ОбластьМакета.Параметры["Дата"]=Формат(Шапка.Дата,"ДЛФ=Д");
    
    ОбластьМакета.Параметры["ДатаПродажи"]=Формат(Шапка.ДатаПродажи,"ДЛФ=Д");
    
    Для каждого Строка  Из СсылкаНаОбъект.СтатусыАкта Цикл
        
        Если Строка.СтатусАкта=Перечисления.СтатусыАктовПриемки.Выдано Тогда
            
            ОбластьМакета.Параметры["Выдал"]=Строка.Ответственный.Наименование;
            ОбластьМакета.Параметры["ДатаВыдачи"]=Формат(Строка.Дата,"ДЛФ=Д");
            //ОбластьМакета.Параметры["ПланСтоим"]=Формат(Строка.ПланируемаяСтоимость,"ЧЦ=10; ЧДЦ=2");
            
        КонецЕсли;    
        
    КонецЦикла;
    //ОбластьМакета.Параметры["ПланСтоимОб"]= Формат(Шапка.ДатаВыдачи,"ЧЦ=10; ЧДЦ=2");

    
     УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(НаборЗаписей, Шапка.Контрагент);
    
     Для каждого строка  Из НаборЗаписей Цикл    
         Если строка.Вид=Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента
        Тогда            
            Телефон=Строка(строка.Представление);            
            Если ЗначениеЗаполнено(Телефон) Тогда
                Заказчик=Заказчик+"тел: "+Телефон+";";
            иначе
                Предупреждение("Незаполнен телефон");
            КонецЕсли;            
        иначеЕсли строка.Вид=Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента Тогда            
            Если ЗначениеЗаполнено(строка.Представление) Тогда
                Заказчик=Заказчик+" адрес клиента: "+строка.Представление+";";        
            иначе
                Предупреждение("Незаполнен адрес");    
            КонецЕсли;                        
        КонецЕсли;    
     КонецЦикла;

    
    ОбластьМакета.Параметры["ТелефонСотовый"]=Телефон;
    ОбластьМакета.Параметры["Адрес"]=Шапка.Точка.Адресс;
    
    ТабДокумент.Вывести(ОбластьМакета);
    //ТабличныйДок.РазмерСтраницы="A4"
    //ТабДокумент.АвтоМасштаб=Истина;
    
    
    Возврат ТабДокумент;
    
КонецФункции // СоздатьТабличныйДокументПечатиСчетаЗаказа()


Все это тестирую в тестовой базе, в основной базе, все так же, при этом не выдает этой ошибки. Прошу вашей помощи разобраться в этом, скорее всего я что-то где-то упустил.
1 Михаил Михайлович
 
18.02.20
04:58
(0) А посмотреть и подумать?
2 Галахад
 
гуру
18.02.20
05:09
(0) В запросе, такого поля нет. Вывод - это другая печатная форма.
3 ДенисЧ
 
18.02.20
05:11
приведённый код не может выдать эту ошибку.
4 Михаил Михайлович
 
18.02.20
05:42
(3) отчего же не может?
5 ДенисЧ
 
18.02.20
06:12
(4) Потому что в коде нет слова ПланируемаяСтоимость
6 Chameleon1980
 
18.02.20
06:14
потому что поля нет
7 bolder
 
18.02.20
06:26
Это не тот запрос, в приведённом такого поля нет.Нужно понимать, что выполнятся.
8 Михаил Михайлович
 
18.02.20
06:32
(5) точняк))) комменты не увиддел))
9 Chameleon1980
 
18.02.20
07:06
ииии?
10 0tsheln1k
 
18.02.20
12:28
(7) Запрос тот же. Просто ситуация в том, что если я вставляю это поле запроса "АктПриемкиНаРемонт.Планируемаястоимость", он выдает ошибку, мол неправильный псевдоним, а если удаляю потом, то ошибка не проходит и все так же говорит, что неправильный псевдоним.

Проблема в том, что ругается на сам запрос, в запросе есть выборка по этому параметру.
11 ДенисЧ
 
18.02.20
12:30
(10) Продам коробку запятых для расстановки в запросе.
12 0tsheln1k
 
18.02.20
12:30
(5) В отдельно выведенном тексте запроса, разве не указан "ПланируемаяСтоимость"? Покрайней мере я вижу или я смотрю не туда?
13 0tsheln1k
 
18.02.20
12:32
(11) Помогите, пожалуйста, понять где же я не поставил запятую?
14 ДенисЧ
 
18.02.20
12:33
(13) В строке перед той, на которую ругается 1с.
А чтобы не гадать - приведи точный запрос, на который ругается. И точную ругань.
15 0tsheln1k
 
18.02.20
12:37
(14) Я привел полный текст запроса в самом начале темы и там же выше всего стоящего дословно указал ошибку, которую он мне выдает. Так же проверил через конструктор запроса, он так же не ставит запятую. Создал внешнюю обработку, в которой указал, точно такой же запрос за исключением условия "ГДЕ", как итог в выводе сообщения он видит все и запрос корректно обрабатывается.
16 0tsheln1k
 
18.02.20
12:42
(14) Так же проштудировал всю мат.часть по Запросам, и как следствие:
Запрос = Новый Запрос;
Запрос.Текст = "
ВЫБРАТЬ
|АктПриемкиНаРемонт.ДатаВыдачи, <--- Тут есть запятая
|АктПриемкиНаРемонт.ПредпологаемаяСтоимость <--- Тут не ставится, а если и ставится, то это сразу же приводит к ошибке неверного параметра запроса

|ИЗ Документ.АктПриемкиНаРемонт как АктПриемкиНаРемонт";

Шапка = Запрос.Выполнить().Выбрать();
17 0tsheln1k
 
18.02.20
12:44
(14) Или я не правильно понял? Если не правильно, то можно вразумить меня и дать понять, как и в каких случиях ставим, очень прошу с примерами.
18 Галахад
 
гуру
18.02.20
13:00
Гм. В (0) "Планируемая", а тут"ПредполОгаемая". Может все же выложить нормальный код и ошибку?
19 catena
 
18.02.20
13:01
(16)Соберись и скопируй уже запрос и текст. А то в именах переменных путаешься.
20 catena
 
18.02.20
13:01
*(19)и текст ошибки
21 ДенисЧ
 
18.02.20
13:05
(15) ТЫ привёл текст запроса, который НЕ МОГ выдать такую ошибку.
22 unbred
 
18.02.20
13:40
ТС пишет запрос, а ошибки ловит из другого запроса) советую использовать точки останова))
23 acht
 
18.02.20
13:41
(0) > //1 союз программистов

И Ленин великий нам путь озарил
24 0tsheln1k
 
18.02.20
18:07
(22) Пробовал ставить точки остановка. Он их не видит,почему?
25 unbred
 
18.02.20
20:20
(24) без понятия. может отладка на серваке не включена. может отладку фоновых включить надо.
26 Said_We
 
19.02.20
01:08
(0), (10)
Судя по коду ниже "ПланируемаяСтоимость", это реквизит табличной части "СтатусыАкта", документа "АктПриемкиНаРемонт".

Для каждого Строка  Из СсылкаНаОбъект.СтатусыАкта Цикл
...
    //ОбластьМакета.Параметры["ПланСтоим"]=Формат(Строка.ПланируемаяСтоимость,"ЧЦ=10; ЧДЦ=2");
...

В запросе данная табличная часть не обрабатывается. Обращение к ней нет и в тексте запроса нет поля плановой стоимости, а есть некая ПРЕДПОЛОГАЕМАЯ.
Как говорят в Одессе - это две большие разницы.

(24) Не туда ставишь например. Смотри в отладчике подключения свои видишь и подключены ли они. Включена или нет отладка на сервере, если код на сервере.
Самое простое сохрани внешнюю свою форму если она в виде внешней обработки и запускай. Точку останова в модуле формы не кнопке Сформировать или как она там называется. Если в отладчик попадешь, а внутрь функций модуля обработки не проваливаешься, то отладка на сервере не включена.
27 0tsheln1k
 
19.02.20
06:27
(26) Используем толстый клиент, не серверную часть. Все подключаются к серверу на котором стоит 1С через удаленный рабочий стол и потом работают так.
28 ДенисЧ
 
19.02.20
06:56
Да тупо сообщить() в нужных местах вставить и не надо мозги того... НИИ...
29 Said_We
 
19.02.20
07:46
(27) К (28) Если в сообщить не знаешь что писать пиши Сообщить("324"), Где 324 номер строки. :-)
30 0tsheln1k
 
19.02.20
10:47
(26) Убрал от туда, и все равно. Запустил внешнюю обработку отдельно от документа на запрос теперь не ругается, но проблема с полями теперь.