1С СКД Несоответствие типов параметр номер 3
В каждодневной деятельности специалистов по автоматизации на платформе 1С не редкость столкнуться с ошибками, которые мешают эффективно реализовывать программные решения в области отчетности и прочих функциональных обработок. Основным инструментарием для создания данных элементов является мощный механизм системы компоновки данных (СКД). Особый интерес вызывает типичная ошибка, получившая наименование "Не соответствие типов параметра номер 3". Эта проблема возникает, когда тип данных, которые передаются в определенную функцию или метод, не соответствует ожидаемому. В данном материале мы подробно рассмотрим причины появления такой ошибки и методы ее решения.
Причины возникновения ошибки:
Корень этой проблемы кроется в передаче аргумента в третий параметр функции, где фактический тип отличается от необходимого. Детализированная информация чаще всего содержится в сообщении системы, и для ее анализа нужно перейти в конфигуратор. В этом разделе платформы можно обнаружить подобные строки, посмотрим по кнопку "Подробнее" о чем написано:
Если перейти в конфигуратор, то увидим строку такого типа:
В стандартных ресурсах и справочной литературе рекомендуется следовать определенным шаблонам, но при внимательном рассмотрении метода становится ясно:
Как видно из фото метод ожидает получить в переменной 3 данные с типом " ДанныеРасшифровкиКомпоновкиДанных
".
Почему такое происходит?
Возникает вопрос, почему такое происходит, ведь если посмотреть на код который мы написали, то четко видно, что мы переменной задали нужный тип:
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Все дело в том, что когда Вы на СКД делаете форму, то 1С сама создает форму за вас и на ней в реквизита добавляет точно такую же переменную, но другого типа:
И тип у этой переменной строка, что не соответствует типу который ожидает "ПроцессорКомпоновкиДанных".
Как это вылечить?
Тут все просто, нужно всего лишь переименовать переменную расшифровки в коде:
В результате когда мы кликнем на ячейку, то мы получим форму с данными на СКД:
Правильный код:
Результат.Очистить();
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ИмяМакета");
СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ИмяМакета");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
ДанныеРасшифровки_Отчета = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки_Отчета);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки_Отчета);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ДанныеРасшифровки_Отчета = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки_Отчета);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки_Отчета);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
В сложных случаях рекомендуем обратиться к специалистам.
Мы готовы помочь вам решить эту и другие технические задачи, чтобы ваши рабочие процедуры в программе 1С были максимально эффективными.
Обращаясь к нам, вы выбираете спокойствие и уверенность в том, что ваши информационные системы работают исправно и эффективно.
Наши специалисты заинтересованы в успехе вашего бизнеса и всегда готовы предоставить высококвалифицированную поддержку.
Свяжитесь с нами уже сегодня для консультации и узнайте, как мы можем помочь вашему бизнесу достичь нового уровня продуктивности. Звоните по номеру телефона: +7 (495) 133-92-44
Пишите на адрес электронной почты: 1c@ukved.ru
Наши специалисты заинтересованы в успехе вашего бизнеса и всегда готовы предоставить высококвалифицированную поддержку.
Свяжитесь с нами уже сегодня для консультации и узнайте, как мы можем помочь вашему бизнесу достичь нового уровня продуктивности. Звоните по номеру телефона: +7 (495) 133-92-44
Пишите на адрес электронной почты: 1c@ukved.ru
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация