Ошибка при вызове метода контекста (УстановитьЗначениеПараметра). Не находит параметр.
Здравствуйте. Такая ситуация. Недавно начал изучать сам язык 1с. Прошу помощи, требуется обновить базу БП ред. 3.0 с релиза 3.0.43 на 3.0.44. Ранее в конфигурации использовался режим совместимости с платформой 3.6, в релизе 3.0.44 данную возможность убрали. Платформа 8.3.9.1850. А теперь вопрос:
Имеется доработка "Подбор номенклатуры":
При вызове данной обработки (при нажатии кнопки подбор, например в документе "Реализация товаров и услуг" отображается ошибка :"Параметр с указанным именем не найден". При нажатии кнопки подробно вижу следующее:
Высылаю текст запроса, где возникает ошибка с параметром. Помогите пожалуйста.
Имеется доработка "Подбор номенклатуры":
При вызове данной обработки (при нажатии кнопки подбор, например в документе "Реализация товаров и услуг" отображается ошибка :"Параметр с указанным именем не найден". При нажатии кнопки подробно вижу следующее:
{Обработка.ПодборНоменклатуры.Форма.Форма.Форма(839)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден
Высылаю текст запроса, где возникает ошибка с параметром. Помогите пожалуйста.
&НаСервере
Процедура НастроитьСписок()
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"Услуга",
Услуги,
ТипЗнч(Услуги) = Тип("Булево"));
ДатаОстаткиЦены = ?(НЕ ЗначениеЗаполнено(ДатаРасчетов), ПолучитьДатуОстатковПоУмолчанию(), ДатаРасчетов);
СписокНоменклатуры.ТекстЗапроса = ТекстЗапросаДинамическогоСписка(ПоказыватьЦены, ПоказыватьОстатки);
// Отображение цен
Элементы.СписокНоменклатурыЦена.Видимость = ПоказыватьЦены;
Элементы.СписокНоменклатурыВалюта.Видимость = ПоказыватьЦены;
Если ПоказыватьЦены Тогда
Если ВРег(ВидПодбора) = "НТТ" Тогда
ТипЦенЗапроса = Склад.ТипЦенРозничнойТорговли;
Иначе
ТипЦенЗапроса = ТипЦен;
КонецЕсли;
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"ТипЦен",
ТипЦенЗапроса,
ЗначениеЗаполнено(ТипЦенЗапроса));
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"ВалютаЦены",
ВалютаЦены,
ЗначениеЗаполнено(ВалютаЦены));
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("ДатаОстаткиЦены", ДатаОстаткиЦены);
КонецЕсли;
// Отображение остатков на складе
Элементы.СписокНоменклатурыКоличествоОстаток.Видимость = ПоказыватьОстатки;
Если ПоказыватьОстатки Тогда
СписокДоступныхОрганизаций = ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(Ложь);
Если НЕ ЗначениеЗаполнено(Организация) Тогда
СписокОрганизаций = СписокДоступныхОрганизаций;
ИначеЕсли СписокДоступныхОрганизаций.Найти(Организация) <> Неопределено Тогда
СписокОрганизаций = Новый Массив;
СписокОрганизаций.Добавить(Организация);
Иначе
СписокОрганизаций = Новый Массив;
КонецЕсли;
ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
СписокСчетов = Новый Массив;
ИспользоватьОтборПоСкладу = Истина;
ИспользоватьОтборПоСчетуНеГТД = Истина;
Если ВРег(ВидПодбора) = "КОМИТЕНТ" Тогда
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыНаСкладе);
Если ЗначениеЗаполнено(Контрагент) Тогда
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии);
СписокДокументовКомитента = ПолучитьСписокДокументовКомитента(СписокОрганизаций, СписокСчетов, ДатаОстаткиЦены, Контрагент);
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"Субконто2",
СписокДокументовКомитента,
Истина,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
ИначеЕсли ВРег(ВидПодбора) = "КОМИССИОНЕР" Тогда
ИспользоватьОтборПоСкладу = Ложь;
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыОтгруженные);
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыПереданныеНаКомиссию);
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"Субконто2",
Контрагент,
ЗначениеЗаполнено(Контрагент));
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
ИначеЕсли ВРег(ВидПодбора) = "МАТЕРИАЛЫЗАКАЗЧИКА" Тогда
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку);
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"Субконто2",
Контрагент,
ЗначениеЗаполнено(Контрагент));
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
КонецЕсли;
Если ИспользоватьОтборПоСкладу Тогда
Если ЗначениеЗаполнено(Склад) И ВедетсяУчетПоСкладам Тогда
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"Субконто"+ВидыСубконто.Количество(),
Склад,
Истина);
КонецЕсли;
КонецЕсли;
Если ВедетсяУчетПоПодразделелениям Тогда
ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
СписокНоменклатуры,
"Подразделение",
Подразделение,
Подразделение <> Неопределено);
КонецЕсли;
СписокСчетов = ПолучитьСписокСчетов(СписокСчетов, ВидыСубконто, ПоказыватьЗабалансовыеОстатки);
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("ВидыСубконто", ВидыСубконто);
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СписокОрганизаций", СписокОрганизаций);
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("ДатаОстаткиЦены", ДатаОстаткиЦены);
УстановитьЗначениеПараметраПоказыватьТолькоОстаткиСпискаНоменклатуры(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ТекстЗапросаДинамическогоСписка(ПоказыватьЦены, ПоказыватьОстатки)
ТекстЗапроса = // Текст может быть модифицирован ниже
"ВЫБРАТЬ
| СправочникНоменклатура.Ссылка,
| ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
| СправочникНоменклатура.Наименование,
| СправочникНоменклатура.Артикул,
| СправочникНоменклатура.ЕдиницаИзмерения,
| СправочникНоменклатура.Услуга,
| СправочникНоменклатура.Код,
| СправочникНоменклатура.НаименованиеПолное,
| ВЫБОР
| КОГДА СправочникНоменклатура._Доработка_ВесовойУчет
| ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.ВесОстаток, 0)
| КОГДА СправочникНоменклатура._Доработка_ШтучныйУчет
| ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.КоличествоОстаток, 0)
| ИНАЧЕ 0
| КОНЕЦ КАК ГоловыВес
| ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаОстаткиЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК ВалютаЦены}) КАК ЦеныНоменклатурыСрезПоследних
| ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И (&ПоказыватьЦены)}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстаткиЦены)}, Счет В (&СписокСчетов), {(&ВидыСубконто)}, Организация В (&СписокОрганизаций) {(Подразделение) КАК Подразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Ссылка, (Субконто2)}) КАК ХозрасчетныйОстатки
| ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1}
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._Доработка_УчетВесовойНоменклатуры.Остатки КАК _Доработка_УчетВесовойНоменклатурыОстатки
| ПО СправочникНоменклатура.Ссылка = _Доработка_УчетВесовойНоменклатурыОстатки.Номенклатура
| ГДЕ
| НЕ СправочникНоменклатура.ЭтоГруппа";
// В версии 8.3.8 с отключенным режимом совместимости информация о видимости колонок не передается динамическому списку.
// Поэтому запрос динамического списка следует формировать в прикладном коде, в зависимости от того,
// какие данные должны быть отображены в списке.
Если ПоказыватьЦены И ПоказыватьОстатки Тогда
Возврат ТекстЗапроса;
КонецЕсли;
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
ОператорВыбора = СхемаЗапроса.ПакетЗапросов[0].Операторы[0];
Если Не ПоказыватьОстатки Тогда
ОператорВыбора.Источники.Удалить("ОстаткиНаСкладе"); // одновременно будет удалено поле КоличествоОстаток
КонецЕсли;
Если Не ПоказыватьЦены Тогда
ОператорВыбора.Источники.Удалить("ЦеныНоменклатуры"); // одновременно будут удалены поля Валюта и Цена
КонецЕсли;
Возврат СхемаЗапроса.ПолучитьТекстЗапроса();
КонецФункции
ПоказатьНайденные решения
ТекстЗапроса = // Текст может быть модифицирован ниже
"ВЫБРАТЬ
| СправочникНоменклатура.Ссылка,
| ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
| СправочникНоменклатура.Наименование,
| СправочникНоменклатура.Артикул,
| СправочникНоменклатура.ЕдиницаИзмерения,
| СправочникНоменклатура.Услуга,
| СправочникНоменклатура.Код,
| СправочникНоменклатура.НаименованиеПолное,
| ВЫБОР
| КОГДА СправочникНоменклатура._Доработка_ВесовойУчет
| ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.ВесОстаток, 0)
| КОГДА СправочникНоменклатура._Доработка_ШтучныйУчет
| ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.КоличествоОстаток, 0)
| ИНАЧЕ 0
| КОНЕЦ КАК ГоловыВес
| ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаОстаткиЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК ВалютаЦены}) КАК ЦеныНоменклатурыСрезПоследних
| ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И (&ПоказыватьЦены)}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстаткиЦены)}, Счет В (&СписокСчетов), {(&ВидыСубконто)}, Организация В (&СписокОрганизаций) {(Подразделение) КАК Подразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Ссылка, (Субконто2)}) КАК ХозрасчетныйОстатки
| ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1}
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._Доработка_УчетВесовойНоменклатуры.Остатки КАК _Доработка_УчетВесовойНоменклатурыОстатки
| ПО СправочникНоменклатура.Ссылка = _Доработка_УчетВесовойНоменклатурыОстатки.Номенклатура
| ГДЕ
| НЕ СправочникНоменклатура.ЭтоГруппа";
Показать{Обработка.ПодборНоменклатуры.Форма.Форма.Форма(839)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден
Что-то я не вижу, в вашем запросе, параметра "СчетаЗапасов".... потому и ошибка лезет
Зато в запросе есть параметр "СписокСчетов".
Попробуйте в строке
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
сделать
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СписокСчетов", СписокСчетов);
З.Ы.
Я думаю проблема не в платформе, а в обновлении. Раз там допилено у вас было, вот оно и не срослось с изменениями в релизе типовой конфы. Анализируй код.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ТекстЗапроса = // Текст может быть модифицирован ниже
"ВЫБРАТЬ
| СправочникНоменклатура.Ссылка,
| ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
| СправочникНоменклатура.Наименование,
| СправочникНоменклатура.Артикул,
| СправочникНоменклатура.ЕдиницаИзмерения,
| СправочникНоменклатура.Услуга,
| СправочникНоменклатура.Код,
| СправочникНоменклатура.НаименованиеПолное,
| ВЫБОР
| КОГДА СправочникНоменклатура._Доработка_ВесовойУчет
| ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.ВесОстаток, 0)
| КОГДА СправочникНоменклатура._Доработка_ШтучныйУчет
| ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.КоличествоОстаток, 0)
| ИНАЧЕ 0
| КОНЕЦ КАК ГоловыВес
| ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаОстаткиЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК ВалютаЦены}) КАК ЦеныНоменклатурыСрезПоследних
| ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И (&ПоказыватьЦены)}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстаткиЦены)}, Счет В (&СписокСчетов), {(&ВидыСубконто)}, Организация В (&СписокОрганизаций) {(Подразделение) КАК Подразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Ссылка, (Субконто2)}) КАК ХозрасчетныйОстатки
| ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1}
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._Доработка_УчетВесовойНоменклатуры.Остатки КАК _Доработка_УчетВесовойНоменклатурыОстатки
| ПО СправочникНоменклатура.Ссылка = _Доработка_УчетВесовойНоменклатурыОстатки.Номенклатура
| ГДЕ
| НЕ СправочникНоменклатура.ЭтоГруппа";
Показать{Обработка.ПодборНоменклатуры.Форма.Форма.Форма(839)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден
Что-то я не вижу, в вашем запросе, параметра "СчетаЗапасов".... потому и ошибка лезет
Зато в запросе есть параметр "СписокСчетов".
Попробуйте в строке
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
сделать
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СписокСчетов", СписокСчетов);
З.Ы.
Я думаю проблема не в платформе, а в обновлении. Раз там допилено у вас было, вот оно и не срослось с изменениями в релизе типовой конфы. Анализируй код.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот