Меню

Ошибка при вызове метода контекста вывести построительотчета вывести табличныйдокумент

Ошибка запроса в построителе

Я
   ВикторП

25.03.19 — 14:19

Запрос в построителе сваливается с ошибкой

Ошибка при вызове метода контекста (Вывести)

        ПостроительОтчета.Вывести(ТабличныйДокумент);

по причине:

{(7, 65)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля

неограниченной длины и поля несовместимых типов.

ДополнительнаяСебестоимостьТоваровОбороты.ЗаказПокупателя.Дата <<?>>МЕЖДУ &ДатаНач И &ДатаКон

По контексту видно что это дата.

в консоли отчетов и СКД запрос отрабатывает как надо.

Что  я не понимаю?

   sqr4

1 — 25.03.19 — 14:20

(0) Заказ покупателя в регистре тип?

   sqr4

2 — 25.03.19 — 14:21

(0) И если там будет справочник без реквизита дата, то на выходе будет нулл и вы хотите проверить нулл попадание в период дат?

   DrWatson

3 — 25.03.19 — 14:24

(0) Параметры &ДатаНач и &ДатаКон проверить, там и вправду даты?

   ВикторП

4 — 25.03.19 — 14:25

1.Заказ покупателя- тип Документ

2.проверка на NULL ничего не меняет

3. параметры и вправду даты

   sqr4

5 — 25.03.19 — 14:26

(4) значит там не нулл, но и не дата

   ВикторП

6 — 25.03.19 — 14:27

выразить тоже не меняет ситуацию

   sqr4

7 — 25.03.19 — 14:30

(6) а должно? А найти запись где вместо даты что то другое религия не позволяет?

   ВикторП

8 — 25.03.19 — 14:31

(7) иди кодируй

   zehn

9 — 25.03.19 — 14:35

(8) Еще не нашел? А что сидишь без дела?

   sqr4

10 — 25.03.19 — 14:36

(8) вот так помогаешь людям, они посылают, обидно.

  

ВикторП

11 — 25.03.19 — 15:04

Нашел — ДатаНач и ДатаКон- Граница 🙁

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

w1ld32

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

1

1C 8.x

Ошибка формирования стандартного отчета

04.12.2019, 13:03. Показов 4475. Ответов 10

Метки отчет, продажи (Все метки)


УТ 10.3 Толстый клиент.
Доброго. Помогите разобраться, сломал всю голову. Стандартный отчет «Продажи» отбор по менеджеру не работает с некоторыми менеджерами. Ошибка

1C
1
2
3
4
5
6
7
8
{Отчет.УниверсальныйОтчет.МодульОбъекта(86)}: Ошибка при вызове метода контекста (Вывести)
        ПостроительОтчета.Вывести(ТабличныйДокумент);
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Обнаружена ошибка: деление на ноль.
HRESULT=80004005, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1

При этом при формирование добавляется еще один параметр отбора «Периодичность итогов» со значением «Период», при выборе другого менеджера отчет формируется без проблем. Куда рыть?
Скриншот

Ошибка формирования стандартного отчета

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



14 / 13 / 1

Регистрация: 03.12.2019

Сообщений: 52

04.12.2019, 15:37

2

Если через конфу пока не анализировать, то можно действовать методом исключения. Для того, чтобы понять в чем дело:

1. Убери вообще из отбора периодичность итогов;
2. В другом периоде не совпадающим с этим тоже ошибка вылазит?
3. Попробуй убрать Показатели.

Если не поможет, то можно через конфу в режиме отладки посмотреть какие данные передаются.

Конфа типовая? Доработки были?



1



1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

04.12.2019, 16:39

 [ТС]

3

Aleksei2020, Переодичность итогов добавляется сама после ошибки, если делаю отчет по другому пользователю, и нет ошибки то она не появляется, период вообще мне не нужен в отборе, у меня период стоит в самом отчете. Также добавляются автоматически «дополнительный поля» (скрин

Ошибка формирования стандартного отчета

). Конфа типовая, доработки были, но этих отчетов не касались. Смущает именно то, что только по некоторым пользователям отчет не работает.



0



w1ld32

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

04.12.2019, 16:45

 [ТС]

4

P.s. Еще смущает меня, что это, судя по всему, происходит при выводе отчета

1C
1
Ошибка при вызове метода контекста (Вывести)

, а не вычислениях. Вроде как при выводе он считает только ширину столбцов, но там посмотрел, деление на 0 не получается)



0



Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

04.12.2019, 21:58

5

Ошибка возникает при выполнении запроса для получения нужных отчету данных.
Проанализируйте текст запроса, и где используется операция деления.
Возможно, для этих пользователей нет каких данных (или они нулевые).



1



14 / 13 / 1

Регистрация: 03.12.2019

Сообщений: 52

05.12.2019, 08:34

6

Цитата
Сообщение от w1ld32
Посмотреть сообщение

Еще смущает меня, что это, судя по всему, происходит при выводе отчета

Для того, чтобы точно понять где это происходит и почему, запусти конфигуратор и в режиме отладки с помощью точек останова и анализа передаваемых данных посмотри когда вылетает ошибка. Посмотри как заполнился Табличный документ.



1



1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

05.12.2019, 11:00

 [ТС]

7

Aleksei2020, Как и написано в ошибке вылетает на строчке с выводом отчета, до этого все нормально, но методом исключения нашел документ который ломает отчет, это корректировка реализации, есть несколько строк где остаток уходит в 0 но только одна из них ломает отчет. С чем это связано не могу понять.

Ошибка формирования стандартного отчета

При чем если убрать отражать в товарном учете то все работает хорошо.



0



14 / 13 / 1

Регистрация: 03.12.2019

Сообщений: 52

05.12.2019, 12:06

8

При убранных Показателях из отчета ошибка остается?



0



1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

05.12.2019, 13:30

 [ТС]

9

Aleksei2020, Да ошибка остается, стоит только в документе Корректировки, в этой строке кол-во изменить на другое число все снова работает.



0



Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

05.12.2019, 20:04

10

w1ld32, Выполняемый запрос не смотрел?



0



1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

06.12.2019, 09:36

 [ТС]

11

Tklwegsd, нет, прошел по отладке от нажатия кнопки до ошибки, запроса не нашел, установил точку останова на ошибках, результат

Ошибка формирования стандартного отчета



0



  1. Пришла на предприятие, тут же посадили исправлять ошибку сделанную прошлым программистом, я в программировании 1с невзубногой, думала почитаю — разберусь, а не тут то было.

    В общем по теме.
    Директору нужно было изменить один из отчетов. а именно — Запасы (склад) —> стоимостная оценка склада в ценах номенклатуры. Программист постарался, наделал ошибок и исчез.
    в оперативном режиме (остатки) все действует шикарно, а вот в не оперативном, (остатки и себестоимость) выдает ошибку деления на 0.

    с вот таким текстом:
    «{Отчет.УниверсальныйОтчет.МодульОбъекта(86)}: Ошибка при вызове метода контекста (Вывести)
    ПостроительОтчета.Вывести(ТабличныйДокумент);
    по причине:
    Ошибка выполнения запроса
    по причине:
    Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0
    по причине:
    Ошибка SQL: Деление на 0
    по причине:
    Деление на 0 значения типа Numeric
    «

    Буду очень благодарна, если кто-нибудь сможет оказать помощь :unsure:

    Наверняка нужно добавить проверку, да вот только я не пойму в каком месте о.о»
    Прикреплю кусок кода, если кто-либо сможет глянуть :unsure:


  2. mialord

    Offline

    mialord
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.460
    Симпатии:
    53
    Баллы:
    54

    Проверку нужно добавлять в запросе
    Пример:

    ВЫБОР КОГДА Регистр.Количество = 0 ТОГДА
    0
    ИНАЧЕ
    //тут расчет
    
    КОНЕЦ

    Это не конкретно к Вашему отчету, это принцип исключения ошибки

  3. Спасибо, сейчас попробую.
    Не понятно что вообще эту ошибку вызывает о.о
    Не заполненная строка типа цены, присваивается к нулю, и при делении на нее происходит ошибка, может быть такое?


  4. leemuar

    Offline

    leemuar
    Опытный в 1С

    Регистрация:
    21 окт 2010
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    Вы же сами написали — «берется ноль и на него делится», как думаете, такое может быть? :)

  5. я имела ввиду когда поле не заполнено оно присваивается к нулю, или же нет и где-то в коде указано это присваивание


  6. leemuar

    Offline

    leemuar
    Опытный в 1С

    Регистрация:
    21 окт 2010
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    Да, конечно. В вашем случае это происходит в запросе. Посмотрите текст выполняемого запроса, найдите там операции деления и перепишите их как указал mialord.

  7. :unsure: Сейчас посмотрим

  8. Операций деления больше 15 продублированные по 3 раза :unsure:


  9. x_under

    Offline

    x_under
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    16
    Баллы:
    29

    А сделайте просто отчет «Ведомость по партиям товаров на складах» и посмотрите нет ли в нем строк, где количество нулевое, а сумма — нет.
    возможно там захотели сделать вывод цены, а ситуацию с делением (как я указал выше) не отловили.

  10. Да, действительно в конечном остатке не было указанно количество товара в некоторых строках, а стоимость была.
    Ошибка происходила при расчете Наценки единицы товара.
    Большое спасибо, все получилось *-*


  11. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    Доброго времени суток. У меня точно такая же ошибка при создании отчета валовая прибыль. Перечитал уже этот пост несколько раз и не могу понять куда дописать что бы все заработало.

    Проверку нужно добавлять в запросе
    Пример:

    ВЫБОР КОГДА Регистр.Количество = 0 ТОГДА
    0
    ИНАЧЕ
    //тут расчет

    КОНЕЦ

    Можете написать поподробней куда нужно этот код дописать?
    Буду очень благодарен.


  12. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    надо посмотреть, какое поле в запросе может быть 0 (раз ошибка возникает «деление на 0», тогда смотрите именно то поле, на которое делите). Наугад трудно сказать куда вам проверку в запросе поставить

    З.Ы. пользуйтесь тегами для оформления кода — удобнее для чтения


  13. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    Не подскажете, как можно посмотреть какое поле в запросе может быть 0? Где запрос смотреть? Отчет, валовая прибыль и там в модуле объекта Процедура УстановитьНачальныеНастройки? или я вообще не там ищу? А если там то как правильно все сделать?


  14. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    а в модуле больше никаких процедур нет? по идее должен быть какой-то алгоритм выборки данных


  15. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    ТекстЗапроса =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ВложенныйЗапрос.Организация КАК Организация,
    | ВложенныйЗапрос.Проект КАК Проект,
    | ВложенныйЗапрос.Подразделение КАК Подразделение,
    | ВложенныйЗапрос.Покупатель КАК Покупатель,
    | ВложенныйЗапрос.ДоговорПокупателя КАК ДоговорПокупателя,
    | ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    | ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    | ВложенныйЗапрос.ЗаказПокупателя КАК ЗаказПокупателя,
    | ВложенныйЗапрос.Регистратор КАК Регистратор,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Организация) КАК ОрганизацияПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Проект) КАК ПроектПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Подразделение) КАК ПодразделениеПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Покупатель) КАК ПокупательПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ДоговорПокупателя) КАК ДоговорПокупателяПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Номенклатура) КАК НоменклатураПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ЗаказПокупателя) КАК ЗаказПокупателяПредставление,
    | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Регистратор) КАК РегистраторПредставление,
    | ВложенныйЗапрос.Период КАК Период,
    | ВложенныйЗапрос.ПериодДень КАК ПериодДень,
    | ВложенныйЗапрос.ПериодНеделя КАК ПериодНеделя,
    | ВложенныйЗапрос.ПериодДекада КАК ПериодДекада,
    | ВложенныйЗапрос.ПериодМесяц КАК ПериодМесяц,
    | ВложенныйЗапрос.ПериодКвартал КАК ПериодКвартал,
    | ВложенныйЗапрос.ПериодПолугодие КАК ПериодПолугодие,
    | ВложенныйЗапрос.ПериодГод КАК ПериодГод,
    | ВложенныйЗапрос.Количество КАК Количество,
    | ВложенныйЗапрос.КоличествоЕдиницОтчетов КАК КоличествоЕдиницОтчетов,
    | ВложенныйЗапрос.КоличествоБазовыхЕдиниц КАК КоличествоБазовыхЕдиниц,
    | ВложенныйЗапрос.СтоимостьБезНДС КАК СтоимостьБезНДС,
    | ВложенныйЗапрос.НДС КАК НДС,
    | ВложенныйЗапрос.Стоимость КАК Стоимость,
    | ВложенныйЗапрос.Себестоимость КАК Себестоимость,
    | ВложенныйЗапрос.ВаловаяПрибыль КАК ВаловаяПрибыль,
    | ВложенныйЗапрос.Эффективность КАК Эффективность,
    | ВложенныйЗапрос.Рентабельность КАК Рентабельность
    | //ПОЛЯ_СВОЙСТВА
    | //ПОЛЯ_КАТЕГОРИИ
    |{ВЫБРАТЬ
    | Организация.*,
    | Проект.*,
    | Подразделение.*,
    | Покупатель.*,
    | ДоговорПокупателя.*,
    | Номенклатура.*,
    | ХарактеристикаНоменклатуры.*,
    | ЗаказПокупателя.*,
    | Регистратор.*,
    | Период,
    | ПериодДень,
    | ПериодНеделя,
    | ПериодДекада,
    | ПериодМесяц,
    | ПериодКвартал,
    | ПериодПолугодие,
    | ПериодГод,
    | Количество,
    | КоличествоЕдиницОтчетов,
    | КоличествоБазовыхЕдиниц,
    | СтоимостьБезНДС,
    | НДС,
    | Стоимость,
    | Себестоимость,
    | ВаловаяПрибыль,
    | Эффективность,
    | Рентабельность
    | //ПСЕВДОНИМЫ_СВОЙСТВА
    | //ПСЕВДОНИМЫ_КАТЕГОРИИ
    |}
    |ИЗ
    | (ВЫБРАТЬ
    | ВложенныйЗапрос.Организация КАК Организация,
    | ВложенныйЗапрос.Проект КАК Проект,
    | ВложенныйЗапрос.Подразделение КАК Подразделение,
    | ВложенныйЗапрос.Покупатель КАК Покупатель,
    | ВложенныйЗапрос.ДоговорПокупателя КАК ДоговорПокупателя,
    | ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    | ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    | ВложенныйЗапрос.ЗаказПокупателя КАК ЗаказПокупателя,
    | ВложенныйЗапрос.Регистратор КАК Регистратор,
    | ВложенныйЗапрос.Период КАК Период,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ДЕНЬ) КАК ПериодДень,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, НЕДЕЛЯ) КАК ПериодНеделя,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ДЕКАДА) КАК ПериодДекада,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, МЕСЯЦ) КАК ПериодМесяц,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, КВАРТАЛ) КАК ПериодКвартал,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
    | НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ГОД) КАК ПериодГод,
    | СУММА(ВложенныйЗапрос.Количество) КАК Количество,
    | СУММА(ВложенныйЗапрос.КоличествоЕдиницОтчетов) КАК КоличествоЕдиницОтчетов,
    | СУММА(ВложенныйЗапрос.КоличествоБазовыхЕдиниц) КАК КоличествоБазовыхЕдиниц,
    | СУММА(ВложенныйЗапрос.СтоимостьБезНДС) КАК СтоимостьБезНДС,
    | СУММА(ВложенныйЗапрос.НДС) КАК НДС,
    | СУММА(ВложенныйЗапрос.Стоимость) КАК Стоимость,
    | СУММА(ВложенныйЗапрос.Себестоимость) КАК Себестоимость,
    | ВЫБОР
    | КОГДА &НеВключатьНДСВСтоимостьПартий
    | ТОГДА СУММА(ВложенныйЗапрос.СтоимостьБезНДС)
    | ИНАЧЕ СУММА(ВложенныйЗапрос.Стоимость)
    | КОНЕЦ - СУММА(ВложенныйЗапрос.Себестоимость) КАК ВаловаяПрибыль,
    | 100 * ВЫБОР
    | КОГДА &НеВключатьНДСВСтоимостьПартий
    | ТОГДА ВЫБОР
    | КОГДА СУММА(ВложенныйЗапрос.Себестоимость) <> 0
    | ТОГДА (СУММА(ВложенныйЗапрос.СтоимостьБезНДС) - СУММА(ВложенныйЗапрос.Себестоимость)) / СУММА(ВложенныйЗапрос.Себестоимость)
    | ИНАЧЕ 0
    | КОНЕЦ   
    | ИНАЧЕ ВЫБОР
    | КОГДА СУММА(ВложенныйЗапрос.Себестоимость) <> 0
    | ТОГДА (СУММА(ВложенныйЗапрос.Стоимость) - СУММА(ВложенныйЗапрос.Себестоимость)) / СУММА(ВложенныйЗапрос.Себестоимость)
    | ИНАЧЕ 0
    | КОНЕЦ
    | КОНЕЦ КАК Эффективность,
    | 100 * ВЫБОР
    | КОГДА &НеВключатьНДСВСтоимостьПартий
    | ТОГДА ВЫБОР
    | КОГДА СУММА(ВложенныйЗапрос.СтоимостьБезНДС) <> 0
    | ТОГДА (СУММА(ВложенныйЗапрос.СтоимостьБезНДС) - СУММА(ВложенныйЗапрос.Себестоимость)) / СУММА(ВложенныйЗапрос.СтоимостьБезНДС)
    | ИНАЧЕ 0
    | КОНЕЦ
    | ИНАЧЕ ВЫБОР
    | КОГДА СУММА(ВложенныйЗапрос.Стоимость) <> 0
    | ТОГДА (СУММА(ВложенныйЗапрос.Стоимость) - СУММА(ВложенныйЗапрос.Себестоимость)) / СУММА(ВложенныйЗапрос.Стоимость)
    | ИНАЧЕ 0
    | КОНЕЦ
    | КОНЕЦ КАК Рентабельность
    | {ВЫБРАТЬ
    | Организация,
    | Проект,
    | Подразделение,
    | Покупатель,
    | ДоговорПокупателя,
    | Номенклатура,
    | ХарактеристикаНоменклатуры,
    | ЗаказПокупателя,
    | Регистратор,
    | Период,
    | ПериодДень,
    | ПериодНеделя,
    | ПериодДекада,
    | ПериодМесяц,
    | ПериодКвартал,
    | ПериодПолугодие,
    | ПериодГод}
    | ИЗ
    | (ВЫБРАТЬ
    | ПродажиОбороты.Проект КАК Проект,
    | ПродажиОбороты.Подразделение КАК Подразделение,
    | ПродажиОбороты.Контрагент КАК Покупатель,
    | ПродажиОбороты.ДоговорКонтрагента КАК ДоговорПокупателя,
    | ПродажиОбороты.Номенклатура КАК Номенклатура,
    | ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    | ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
    | ПродажиОбороты.Организация КАК Организация,
    | ПродажиОбороты.Регистратор КАК Регистратор,
    | ПродажиОбороты.Период КАК Период,
    | ПродажиОбороты.КоличествоОборот КАК Количество,
    | ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, 1) КАК КоличествоЕдиницОтчетов,
    | ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) КАК КоличествоБазовыхЕдиниц,
    | ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот КАК СтоимостьБезНДС,
    | ПродажиОбороты.НДСОборот КАК НДС,
    | ПродажиОбороты.СтоимостьОборот КАК Стоимость,
    | ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0) КАК Себестоимость
    | ИЗ
    | РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, {Организация.* КАК Организация, Проект.* КАК Проект, Подразделение.* КАК Подразделение, Контрагент.* КАК Покупатель, ДоговорКонтрагента.* КАК ДоговорПокупателя, Номенклатура.* КАК Номенклатура, ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры, ЗаказПокупателя.* КАК ЗаказПокупателя}) КАК ПродажиОбороты
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | ПродажиСебестоимость.Номенклатура КАК Номенклатура,
    | ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    | ПродажиСебестоимость.ЗаказПокупателя КАК ЗаказПокупателя,
    | ВЫБОР
    | КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
    | ТОГДА ПродажиСебестоимость.ДокументДвижения
    | ИНАЧЕ ПродажиСебестоимость.Регистратор
    | КОНЕЦ КАК Регистратор,
    | СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот
    | ИЗ
    | РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
    | ГДЕ
    | ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаКонца
    | {ГДЕ
    | ПродажиСебестоимость.Проект.* КАК Проект,
    | ПродажиСебестоимость.Подразделение.* КАК Подразделение,
    | ПродажиСебестоимость.Номенклатура.* КАК Номенклатура,
    | ПродажиСебестоимость.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    | ПродажиСебестоимость.ЗаказПокупателя.* КАК ЗаказПокупателя}
    |
    | СГРУППИРОВАТЬ ПО
    | ПродажиСебестоимость.Номенклатура,
    | ПродажиСебестоимость.ХарактеристикаНоменклатуры,
    | ПродажиСебестоимость.ЗаказПокупателя,
    | ВЫБОР
    | КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
    | ТОГДА ПродажиСебестоимость.ДокументДвижения
    | ИНАЧЕ ПродажиСебестоимость.Регистратор
    | КОНЕЦ) КАК ТаблицаРегистраПродажиСебестоимость
    | ПО ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура
    | И ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
    | И ТаблицаРегистраПродажиСебестоимость.ЗаказПокупателя = ПродажиОбороты.ЗаказПокупателя
    | И ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор) КАК ВложенныйЗапрос
    |
    | СГРУППИРОВАТЬ ПО
    | ВложенныйЗапрос.Организация,
    | ВложенныйЗапрос.Проект,
    | ВложенныйЗапрос.Подразделение,
    | ВложенныйЗапрос.Покупатель,
    | ВложенныйЗапрос.ДоговорПокупателя,
    | ВложенныйЗапрос.Номенклатура,
    | ВложенныйЗапрос.ХарактеристикаНоменклатуры,
    | ВложенныйЗапрос.ЗаказПокупателя,
    | ВложенныйЗапрос.Регистратор,
    | ВложенныйЗапрос.Период
    |
    | ИМЕЮЩИЕ
    | (СУММА(ВложенныйЗапрос.Количество) <> 0
    | ИЛИ СУММА(ВложенныйЗапрос.Стоимость) <> 0
    | ИЛИ СУММА(ЕСТЬNULL(ВложенныйЗапрос.Себестоимость, 0)) <> 0)) КАК ВложенныйЗапрос
    | //СОЕДИНЕНИЯ
    |{ГДЕ
    | ВложенныйЗапрос.Регистратор.*,
    | ВложенныйЗапрос.Период,
    | ВложенныйЗапрос.ПериодДень,
    | ВложенныйЗапрос.ПериодНеделя,
    | ВложенныйЗапрос.ПериодДекада,
    | ВложенныйЗапрос.ПериодМесяц,
    | ВложенныйЗапрос.ПериодКвартал,
    | ВложенныйЗапрос.ПериодПолугодие,
    | ВложенныйЗапрос.ПериодГод,
    | ВложенныйЗапрос.Количество,
    | ВложенныйЗапрос.КоличествоЕдиницОтчетов,
    | ВложенныйЗапрос.КоличествоБазовыхЕдиниц,
    | ВложенныйЗапрос.СтоимостьБезНДС,
    | ВложенныйЗапрос.НДС,
    | ВложенныйЗапрос.Стоимость,
    | ВложенныйЗапрос.Себестоимость,
    | ВложенныйЗапрос.ВаловаяПрибыль,
    | ВложенныйЗапрос.Эффективность,
    | ВложенныйЗапрос.Рентабельность
    | //УСЛОВИЯ_СВОЙСТВА
    | //УСЛОВИЯ_КАТЕГОРИИ
    |}
    |{УПОРЯДОЧИТЬ ПО
    | Организация.*,
    | Проект.*,
    | Подразделение.*,
    | Покупатель.*,
    | ДоговорПокупателя.*,
    | Номенклатура.*,
    | ХарактеристикаНоменклатуры.*,
    | ЗаказПокупателя.*,
    | Регистратор.*,
    | Период,
    | ПериодДень,
    | ПериодНеделя,
    | ПериодДекада,
    | ПериодМесяц,
    | ПериодКвартал,
    | ПериодПолугодие,
    | ПериодГод,
    | Количество,
    | КоличествоЕдиницОтчетов,
    | КоличествоБазовыхЕдиниц,
    | СтоимостьБезНДС,
    | НДС,
    | Стоимость,
    | Себестоимость,
    | ВаловаяПрибыль,
    | Эффективность,
    | Рентабельность
    | //ПСЕВДОНИМЫ_СВОЙСТВА
    | //ПСЕВДОНИМЫ_КАТЕГОРИИ
    |}
    |ИТОГИ
    | СУММА(Количество),
    | СУММА(КоличествоЕдиницОтчетов),
    | СУММА(КоличествоБазовыхЕдиниц),
    | СУММА(СтоимостьБезНДС),
    | СУММА(НДС),
    | СУММА(Стоимость),
    | СУММА(Себестоимость),
    | ВЫБОР
    | КОГДА &НеВключатьНДСВСтоимостьПартий
    | ТОГДА СУММА(СтоимостьБезНДС)
    | ИНАЧЕ СУММА(Стоимость)
    | КОНЕЦ - СУММА(Себестоимость) КАК ВаловаяПрибыль,
    | 100 * ВЫБОР
    | КОГДА &НеВключатьНДСВСтоимостьПартий
    | ТОГДА ВЫБОР
    | КОГДА СУММА(Себестоимость) <> 0
    | ТОГДА (СУММА(СтоимостьБезНДС) - СУММА(Себестоимость)) / СУММА(Себестоимость)
    | ИНАЧЕ 0
    | КОНЕЦ
    | ИНАЧЕ ВЫБОР
    | КОГДА СУММА(Себестоимость) <> 0
    | ТОГДА (СУММА(Стоимость) - СУММА(Себестоимость)) / СУММА(Себестоимость)
    | ИНАЧЕ 0
    | КОНЕЦ
    | КОНЕЦ КАК Эффективность,
    | 100 * ВЫБОР
    | КОГДА &НеВключатьНДСВСтоимостьПартий
    | ТОГДА ВЫБОР
    | КОГДА СУММА(СтоимостьБезНДС) <> 0
    | ТОГДА (СУММА(СтоимостьБезНДС) - СУММА(Себестоимость)) / СУММА(СтоимостьБезНДС)
    | ИНАЧЕ 0
    | КОНЕЦ
    | ИНАЧЕ ВЫБОР
    | КОГДА СУММА(Стоимость) <> 0
    | ТОГДА (СУММА(Стоимость) - СУММА(Себестоимость)) / СУММА(Стоимость)
    | ИНАЧЕ 0
    | КОНЕЦ
    | КОНЕЦ КАК Рентабельность
    | //ИТОГИ_СВОЙСТВА
    | //ИТОГИ_КАТЕГОРИИ
    |ПО
    | ОБЩИЕ
    |{ИТОГИ ПО
    | Организация.*,
    | Проект.*,
    | Подразделение.*,
    | Покупатель.*,
    | ДоговорПокупателя.*,
    | Номенклатура.*,
    | ХарактеристикаНоменклатуры.*,
    | ЗаказПокупателя.*,
    | Регистратор.*,
    | Период,
    | ПериодДень,
    | ПериодНеделя,
    | ПериодДекада,
    | ПериодМесяц,
    | ПериодКвартал,
    | ПериодПолугодие,
    | ПериодГод
    | //ПСЕВДОНИМЫ_СВОЙСТВА
    | //ПСЕВДОНИМЫ_КАТЕГОРИИ
    |}";
    

    извиняюсь… если это тут где то надо вставить проверку не подскажете где


  16. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    для начала, оформляйте код тегом КОД1С — удобнее читать

    вы отладчиком умеете пользоваться?


  17. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1


  18. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    очень жаль, если кратко, то вот принцип: запускаете в конфигураторе, ищите «проблемное» по вашему мнению место, устанавливаете точку останова (напротив нужной строки слева можно щелкнуть, можно через меню установить), затем запускайте через F5 отладку, выполняете в реиме предприятия нужные действия, когда выполнение код адойдет до той самой строки, вас выбросит в конфигуратор и можно будет передвигаться по коды и смотреть изменения значений переменных (типа онлайн) Попробуйте так выяснить где у вас косячит, может дело то и не в запросе?


  19. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    почитаю пока как пользоваться отладчиком


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Иметься условие в ПО: на условии валиться ошибка: {Отчет.УниверсальныйОтчет.МодульОбъекта}: Ошибка при вызове метода контекста (Вывести)        ПостроительОтчета.Вывести(ТабличныйДокумент); по причине: {(25, 72)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. И (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор.Дата <<?>><= &ДатаКон) Причем в консоли запросов все Ок похелпите как лечить?

Нельзя сравнивать поля неограниченной длины и поля несовместимых типов

а где поле не ограниченной длинны? Регистратор.Дата имеет тип дата параметр &ДатаКон тоже дата

Выразить (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор.Дата как Дата) <= &ДатаКон наверное так

а как её в запросе в дату превратить?

{Отчет.УниверсальныйОтчет.МодульОбъекта}: Ошибка при вызове метода контекста (Вывести)        ПостроительОтчета.Вывести(ТабличныйДокумент); по причине: И (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор.Дата <= (<<?>>ВЫРАЗИТЬ(&ДатаКон КАК ДАТА)))

то есть только заводить отдельный параметр для этого?

ок завел отдельный параметр , теперь всё ок, всем спасибо

если типовой отчет, то есть ДатаОкончания

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Отчет со стоимостью комплектов и комплектующих, сделанный на основе типового отчета «Комплектация номенклатуры», взятого из УТ 10.3.

Понадобился этот отчет с суммами, нужного не нашел, допилил существующий. Суммы берутся из регистра накопления: «Партии товаров на складах (управленческий учет)», т.е должен вестись управленческий учет. В общем отчет пригодится тем, кто использует документы «комплектация номенклатуры».

Related Posts

3 Comments

  1. Solo1 01.10.2014 at 09:08

    Вот такая ошибка выходит:

    {Отчет.УниверсальныйОтчет(86)}: Ошибка при вызове метода контекста (Вывести)

    ПостроительОтчета.Вывести(ТабличныйДокумент);

    по причине:

    Ошибка выполнения запроса

    по причине:

    Ошибка при выполнении операции над данными:

    ERROR: division by zero

    Reply

  2. anime21 03.10.2014 at 01:25

    (1) Solo1, я протестировал заново отчет на версии конфигурации ут 10.3.29.1, а также на клиентской базе за большой период, ошибка не возникла. Видно какая-то у Вас специфичная ситуация в движениях. Но я просмотрел запрос на предмет возможных ошибок при делении на 0 и поставил в паре узких мест проверки. В общем перевыложил скорректированный отчет, думаю ошибка должна уйти. Если не затруднит, отпишитесь о результате.

    Reply

  3. Newcomer 13.05.2015 at 11:31

Leave a Comment

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


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

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


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

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник
Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при восстановлении ватсап
  • Ошибка при вызове метода контекста выбрать несоответствие типов параметр номер 2