Меню

1с скд ошибка обработки представления регистр сведений

Опубликовано: 16.02.2018 /

Рубрики: 1С

Разрабатывал я простенький отчет на СКД в 1С:ERP Управление предприятием 2 (2.2.3.138)

Краткое ТЗ такое:

За основу взять типовой отчет «Ведомость товаров на складах»

Добавить возможность выводить в поля отчета следующие показатели:

  • Коэффициент. Вычисляется как отношение количества конечного остатка за период к количеству продаж за соответствуюий период в единицах хранения

  • Цена. Последняя актуальная цена товара в соответствующий период по виду цен = «Розничная»

  • Количество. Количество продаж в единицах хранения (расход в отчете — общий расход со склада, нужны только продажи)

  • Сумма. Выручка от продаж

Задача простейшая,пишу такой запрос (тут часть):

Товары КАК Товары
ПОЛНОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
ПО Товары.Номенклатура = Продажи.Номенклатура
И Товары.Характеристика = Продажи.Характеристика
И Товары.Склад = Продажи.Склад
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ПО Товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И Товары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика

И столкнулся с такой ошибкой:

Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)»

Проблема решается не хитрым путем, но решил сохранить ее решение для себя и для вас.

Решение:

Нужно устанавливать параметры для СКД на вкладке «компоновка данных» в конструкторе запроса.

Пример:

и

Небольшой вопрос по СКД

Я
   Double_Medved

23.01.13 — 16:31

Подскажите плиз,1с 8.2, УТ11, нужен отчет в СКД небольшой сделать, вот что-то не пойму как сделать СрезПоследних на КонецПериода, То есть выбираю  РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ) КАК ЦеныНоменклатурыСрезПоследних

КонецПериода = &Период.ДатаОкончания, Период — стандартный параметр СКД…, Выдает такое: {(9, 2)}: Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)»

<<?>>РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&П3, ) КАК ЦеныНоменклатурыСрезПоследних

И я в шоке почему &ПЗ???? Честное слово, 100 раз проверил, там &КонецПериода, видимо где-то там собака и зарыта… Подскажите, как правильно в СКД сделать срещ последних на дату? В коде-то понятно, Запрос, Потом УстановитьПараметр…

   Double_Medved

1 — 23.01.13 — 16:32

Может нужно ка-то по-другому указывать параметр? мне нужен конец периода, выбранного в СКД

   France

2 — 23.01.13 — 16:34

(&П3 — убрать…

   samozvanec

3 — 23.01.13 — 16:34

он сам параметр создает. на закладке Компоновка укажи свой.

   Double_Medved

4 — 23.01.13 — 16:35

France, да нету там &ПЗ в тексте запроса! Мистика!

   Double_Medved

5 — 23.01.13 — 16:35

Samozvanec, сейчас попробую, Спасибо. А все-таки как-то можно использовать стандартный Период?

   eklmn

6 — 23.01.13 — 16:39

ПЗ это скдэшный параметр
КонецПериода переименуй например в КонецПериодаЫ
   Double_Medved

7 — 23.01.13 — 16:45

Блин сделал параметр Дата1,
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата1, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
    ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены


 Пишет : 
{(4, 2)}: Ошибка обработки представления "РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер ""1"")"
<<?>>РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&П, ) КАК ЦеныНоменклатурыСрезПоследних
   Double_Medved

8 — 23.01.13 — 16:46

Я в ах????е

   Double_Medved

9 — 23.01.13 — 16:48

Мне просто нужно сделать СрезНаДату, у меня в самописном отчете не в СКД это отрабатывает запросто, а тут…

   Double_Medved

10 — 23.01.13 — 16:51

Вот такая простая фигня отрабатывает запросто:

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

А в СКД Как? Помогите плиз
   pessok

11 — 23.01.13 — 16:53

(10) да ты параметру с типом «Дата» суешь стандартный период. Расслабься уже

   2757028

12 — 23.01.13 — 16:56

(0) В Схеме СКД  на закладке Параметры Период должен быть с типом дата. а ты видно добавил Период с типом СтандартныйПериод. Переименуй свой период на период1 или удали его. а Период строго типизируй типом Дата

   France

13 — 23.01.13 — 16:59

возьми свою дату в {(&Дата1}… либо послушай народ, и прекрати подсовывать параметр, т.е., вообще ничего не ставь в условия виртуальной таблицы…. в настройках потом просто вручную поставишь нужное значение параметре..

   Double_Medved

14 — 23.01.13 — 17:21

Блин никак не выходит.. Я уже и в скобки брал и так сделал:

ВЫБРАТЬ
    &Дата1 КАК Дата,
    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
{ВЫБРАТЬ
    Дата,
    ВидЦены,
    Номенклатура,
    Цена}
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних

И все та же ошибка:
{(4, 2)}: Ошибка обработки представления "РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер ""1"")"
<<?>>РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&П, ) КАК ЦеныНоменклатурыСрезПоследних

Что это за &П вообще у него?
   pessok

15 — 23.01.13 — 17:22

&П — это сферический в вакууме параметр, не забивай себе им голову. Смотри на тип параметры на одноимееной закладке. у тебя там стоит СтандартныйПериод наверняка, а надо Дата

   Double_Medved

16 — 23.01.13 — 17:23

pessok, я создал свой параметр с типом Дата, это точно, я смотрел..

   pessok

17 — 23.01.13 — 17:23

и именно ЭТОТ параметр у тебя стоит параметр виртуальной таблицы?

   pessok

18 — 23.01.13 — 17:23

*параметром

   samozvanec

19 — 23.01.13 — 17:25

на закладке Параметры в схеме что у тебя? огласи весь список

   samozvanec

20 — 23.01.13 — 17:26

телепаты к вечеру подустали

   Double_Medved

21 — 23.01.13 — 17:27

Херасе заработало, даже не ожидал. Убрал вообще нафиг Период из Параметров и оставил только свою Дата1…. И вот это заработало:

ВЫБРАТЬ
    &Дата1 КАК Дата,
    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
{ВЫБРАТЬ
    Дата,
    ВидЦены,
    Номенклатура,
    Цена}
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
   Double_Medved

22 — 23.01.13 — 17:27

Благодарю всех за помощь, особенно приятно что не троллили и не отправляли читать гугл

   pessok

23 — 23.01.13 — 17:28

(21) чуваааааак.. это было в (3)  🙂

   Double_Medved

24 — 23.01.13 — 17:29

В (3) я создал свой параметр Дата1, и его использовал, но там все еще висел просто в списке параметр Период и что-то там не того…

   samozvanec

25 — 23.01.13 — 17:37

(24) если бы ты так сделал, запрос выглядел бы вот так:

ВЫБРАТЬ
    &Дата1 КАК Дата,
    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних({&Дата}, ) КАК ЦеныНоменклатурыСрезПоследних
   samozvanec

26 — 23.01.13 — 17:38

епта… а че у тебя Дата1 в полях делает? ты куда че хочешь передать-то? задать значение поля, или в параметр?

  

pessok

27 — 23.01.13 — 17:50

(26) вестимо выводить дату остатков еще и в каждую строку отчета…

Подскажите плиз,1с 8.2, УТ11, нужен отчет в СКД небольшой сделать, вот что-то не пойму как сделать СрезПоследних на КонецПериода, То есть выбираю  РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ) КАК ЦеныНоменклатурыСрезПоследних КонецПериода = &Период.ДатаОкончания, Период — стандартный параметр СКД…, Выдает такое: {(9, 2)}: Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)» <<?>>РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&П3, ) КАК ЦеныНоменклатурыСрезПоследних И я в шоке почему &ПЗ???? Честное слово, 100 раз проверил, там &КонецПериода, видимо где-то там собака и зарыта… Подскажите, как правильно в СКД сделать срещ последних на дату? В коде-то понятно, Запрос, Потом УстановитьПараметр…

Может нужно ка-то по-другому указывать параметр? мне нужен конец периода, выбранного в СКД

он сам параметр создает. на закладке Компоновка укажи свой.

France, да нету там &ПЗ в тексте запроса! Мистика!

Samozvanec, сейчас попробую, Спасибо. А все-таки как-то можно использовать стандартный Период?

ПЗ это скдэшный параметр КонецПериода переименуй например в КонецПериодаЫ

Блин сделал параметр Дата1, ВЫБРАТЬ    ЦеныНоменклатурыСрезПоследних.ВидЦены,    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,    ЦеныНоменклатурыСрезПоследних.Цена Пишет : {(4, 2)}: Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)»

Мне просто нужно сделать СрезНаДату, у меня в самописном отчете не в СКД это отрабатывает запросто, а тут…

Вот такая простая фигня отрабатывает запросто: А в СКД Как? Помогите плиз

да ты параметру с типом «Дата» суешь стандартный период. Расслабься уже

В Схеме СКД  на закладке Параметры Период должен быть с типом дата. а ты видно добавил Период с типом СтандартныйПериод. Переименуй свой период на период1 или удали его. а Период строго типизируй типом Дата

возьми свою дату в {(&Дата1}… либо послушай народ, и прекрати подсовывать параметр, т.е., вообще ничего не ставь в условия виртуальной таблицы…. в настройках потом просто вручную поставишь нужное значение параметре..

Блин никак не выходит.. Я уже и в скобки брал и так сделал: И все та же ошибка: {(4, 2)}: Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)» Что это за &П вообще у него?

&П — это сферический в вакууме параметр, не забивай себе им голову. Смотри на тип параметры на одноимееной закладке. у тебя там стоит СтандартныйПериод наверняка, а надо Дата

pessok, я создал свой параметр с типом Дата, это точно, я смотрел..

и именно ЭТОТ параметр у тебя стоит параметр виртуальной таблицы?

на закладке Параметры в схеме что у тебя? огласи весь список

телепаты к вечеру подустали

Херасе заработало, даже не ожидал. Убрал вообще нафиг Период из Параметров и оставил только свою Дата1…. И вот это заработало: ВЫБРАТЬ

Благодарю всех за помощь, особенно приятно что не троллили и не отправляли читать гугл

чуваааааак.. это было в  🙂

В я создал свой параметр Дата1, и его использовал, но там все еще висел просто в списке параметр Период и что-то там не того…

если бы ты так сделал, запрос выглядел бы вот так:

епта… а че у тебя Дата1 в полях делает? ты куда че хочешь передать-то? задать значение поля, или в параметр?

вестимо выводить дату остатков еще и в каждую строку отчета…

Тэги: 1С 8

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

Несоответствие типов 1С

Ошибка по причине Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.

Изучив статью, вы:

  • ознакомитесь с порядком исправления ошибки в запросе и командах 1С и узнаете, как исправить;
  • получите два внешних отчета, демонстрирующих ошибочный и правильный коды.

В какой момент выходит ошибка

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

Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.

Рассмотрим причины ее возникновения и исправление на конкретном примере.

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

При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».

В окне сообщений уже указано место возникновения ошибки: Несоответствие типов Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1 С Предприятие:

Из описания видно, что команда СрезПоследних имеет 2 параметра:

  • Период;
  • Отбор.

Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).

После исправления команды запустите отчет в 1 С Бухгалтерия по кнопке Главное меню — Файл — Открыть:

Теперь отчет формируется правильно!

Исправление ошибки в команде 1С

При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):

1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.

Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:

  • СписокСсылок;
  • ОбластьПоиска;
  • ВключитьОбъекты;
  • ИсключитьОбъекты.

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

После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь команда поиска ссылок на контрагента отрабатывает правильно.

Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Первый набор данных:

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

Создадим набор данных-запрос “ПродажиОбороты”:

"ВЫБРАТЬ    
	ПродажиОбороты.Период КАК Дата,
	ПродажиОбороты.Контрагент КАК Контрагент,
	ПродажиОбороты.Номенклатура КАК Номенклатура,
	ПродажиОбороты.КоличествоОборот КАК Количество,
	ПродажиОбороты.СтоимостьОборот КАК Стоимость
	{ВЫБРАТЬ    
		Дата,    
		Контрагент.*,    
		Номенклатура.*,    
		Количество,    
		Стоимость}
ИЗ    
	РегистрНакопления.Продажи.Обороты({(&НачалоПериода)},{(&КонецПериода)}, День, ) КАК ПродажиОбороты
 
{ГДЕ    
	ПродажиОбороты.Период,    
	ПродажиОбороты.Контрагент.*,    
	ПродажиОбороты.Номенклатура.*,    
	ПродажиОбороты.КоличествоОборот,    
	ПродажиОбороты.СтоимостьОборот}"

Рис. 1 Вкладка ресурсы набора данных ПродажиОбороты

Рис. 2 Настройки отчета

Сейчас наш отчет будет иметь следующий вид:

Рис. 3 Формирование отчета с одним набором данных

Теперь необходимо добавить в отчет колонку “Цена по прайсу”, которая будет подтягиваться из регистра сведений “Цены номенклатуры” на дату продажи.

Второй набор данных:

Добавим второй набор данных-запрос “Цены”, цены будем брать для фиксированного типа цен:

"ВЫБРАТЬ    
	&Дата КАК Дата,    
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,    
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
	{ВЫБРАТЬ    
		Дата,    
		Номенклатура.*,    
		Цена}
ИЗ    
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура и ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних	
{ГДЕ    
	(&Дата), 
	ЦеныНоменклатурыСрезПоследних.Номенклатура.*,    
	ЦеныНоменклатурыСрезПоследних.Цена}"

В данном наборе данных три параметра: Дата, Номенклатура и тип цен. Из низ самые интересные Дата и Номенклатура. Они будут использованы при соединении наборов данных, причем параметр данных присутствует как в параметрах виртуальной таблицы, так и в выбранных полях.

Соединения наборов:

Приступим к основной “фишке” данного метода – соединениям наборов:

Рис. 4 Соединение наборов данных

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

Далее добавим поле цена в ресурсы и в выбранные поля.

Рис. 5 Вкладка ресурсы

Рис. 6 Выбранные поля

Результат:

Теперь можно формировать отчет. Проверим правильность работы отчета на примере “Дивана для отдыха”.

Рис. 7 Итоговый отчет

В запросе:

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

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

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

Данный пакетный запрос содержит три подзапроса. Рассмотрим их подробнее.

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

Во втором подзапросе мы соединяем временную таблицу с регистром сведений “ЦеныНоменклатуры” при этом из регистра сведений мы выбираем МАКСИМАЛЬНУЮ дату из меньших или равных дат.  Результат этого подзапроса также помещаем во временную таблицу (втМаксПериод). Посмотрим, какие данные попадают в эту таблицу:

Рис. 8 Временная таблица втМаксПериод

В последнем запросе пакета, мы еще раз соединяем временную таблицу с таблицей цен номенклатуры. На этот мы соединяем таблице по номенклатуре и периоду.

Итоговый результат запроса:

Рис. 9 Итоговый результат запроса

Как мы видим результаты вывода цен в обоих случаях (через СКД и через запрос) оказались одинаковы.

bless18
17.05.2010 20:26 Прочитано: 11369

Здравствуйте!
Имеется ТЧ с реквизитами: Задача, ОписаниеЗадачи и Отдел
Необходимо вывести Задачу и ее описание, которые хранятся в регистре сведений
При этом, задачи должны выводиться для того отдела, в котором работает пользователь системы
Пишу запрос:
Код 1C v 8.х

 
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТекущиеЗадачиСрезПоследних.НаименованиеЗадачи,
| ТекущиеЗадачиСрезПоследних.ОписаниеЗадачи,
| ТекущиеЗадачиСрезПоследних.Отдел
|ИЗ
| РегистрСведений.ТекущиеЗадачи.СрезПоследних(&Отдел, ) КАК ТекущиеЗадачиСрезПоследних";
Запрос.УстановитьПараметр("Отдел", ПараметрыСеанса.ТекущийПользователь.Сотрудник.Отдел);
Результат = Запрос.Выполнить();
ТзВрем = Результат.Выгрузить();

Для Каждого СтрокаТекущиеЗадачи Из ТзВрем Цикл
СтрокаОписаниеЗадачи = ЭтотОбъект.ЗадачиРаботаПользователей.Добавить();
СтрокаОписаниеЗадачи.ОписаниеЗадачи = СтрокаТекущиезадачи.ОписаниеЗадачи;
СтрокаОписаниеЗадачи.Задача = СтрокаТекущиеЗадачи.НаименованиеЗадачи;
КонецЦикла;

Выдается такая ошибка:
{Обработка.РаботаПользователей.Форма.Форма(196)}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Ошибка обработки представления «РегистрСведений.ТекущиеЗадачи.СрезПоследних:Несоответствие типов (параметр номер «»1″»)»
<<?>>РегистрСведений.ТекущиеЗадачи.СрезПоследних(&Отдел, ) КАК ТекущиеЗадачиСрезПоследних
Результат = Запрос.Выполнить();
Табличная часть расположена на панели
На всякий случай пришлю код всей процедуры:
Код 1C v 8.х

 
Процедура ПриОткрытии()
ОбработкаОбъект.Пользователь = ПараметрыСеанса.ТекущийПользователь;
ОбработкаОбъект.ПолучательЗадачи = ПараметрыСеанса.ТекущийПользователь.Сотрудник;
ОбработкаОбъект.Отдел = ПараметрыСеанса.ТекущийПользователь.Сотрудник.Отдел;

ЭтотОбъект.Дата=КонецДня(ТекущаяДата());
ЭлементыФормы.Польз.Заголовок = ПараметрыСеанса.ТекущийПользователь;
ЭлементыФормы.Получ.Заголовок = ПараметрыСеанса.ТекущийПользователь.Сотрудник;
ЭлементыФормы.Отд.Заголовок = ПараметрыСеанса.ТекущийПользователь.Сотрудник.Отдел;

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

ДатаНачала = СтрокаРаспределениеЗадачи.ДатаНачалаВыполнения;
ДатаКонца = СтрокаРаспределениеЗадачи.ДатаВыполнения;

КоличествоДнейНаВыполнение = РазностьДат(ДатаКонца,ДатаНачала);
КоличествоДнейСоДняНачалаВыполнения = РазностьДат(ТекущаяДата(),ДатаНачала);
Если ТекущаяДата()>ДатаКонца тогда
СтрокаРаспределениеЗадачи.ПроцентОставшегосяВремени="100 %";
Иначе
СтрокаРаспределениеЗадачи.ПроцентОставшегосяВремени=Окр(Число(КоличествоДнейСоДняНачалаВыполнения / КоличествоДнейНаВыполнение) * 100, 2);
КонецЕсли;
СтрокаТабличнойЧасти.ПроцентОставшегосяВремени = Строка(СтрокаРаспределениеЗадачи.ПроцентОставшегосяВремени)+ " ";

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

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

Подскажите, пожалуйста, как исправить эту ошибку

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

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

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

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