Ошибка при вызове метода контекста (УстановитьЗначениеПараметра). Не находит параметр.

1. 1c_uZer 21.04.17 11:05 Сейчас в теме
Здравствуйте. Такая ситуация. Недавно начал изучать сам язык 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];
	
	Если Не ПоказыватьОстатки Тогда
		ОператорВыбора.Источники.Удалить("ОстаткиНаСкладе"); // одновременно будет удалено поле КоличествоОстаток
	КонецЕсли;
	
	Если Не ПоказыватьЦены Тогда
		ОператорВыбора.Источники.Удалить("ЦеныНоменклатуры"); // одновременно будут удалены поля Валюта и Цена
	КонецЕсли;
	
	Возврат СхемаЗапроса.ПолучитьТекстЗапроса();
	
КонецФункции
Показать
+
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Boneman 298 21.04.17 12:52 Сейчас в теме +0.15 $m
    ТекстЗапроса = // Текст может быть модифицирован ниже
    "ВЫБРАТЬ
    |    СправочникНоменклатура.Ссылка,
    |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
    |    СправочникНоменклатура.Наименование,
    |    СправочникНоменклатура.Артикул,
    |    СправочникНоменклатура.ЕдиницаИзмерения,
    |    СправочникНоменклатура.Услуга,
    |    СправочникНоменклатура.Код,
    |    СправочникНоменклатура.НаименованиеПолное,
    |    ВЫБОР
    |        КОГДА СправочникНоменклатура._Доработка_ВесовойУчет
    |            ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.ВесОстаток, 0)
    |        КОГДА СправочникНоменклатура._Доработка_ШтучныйУчет
    |            ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.КоличествоОстаток, 0)
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ГоловыВес
    |   ИЗ
    |    Справочник.Номенклатура КАК СправочникНоменклатура
    |        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаОстаткиЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК ВалютаЦены}) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |            И (&ПоказыватьЦены)}
    |        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстаткиЦены)}, Счет В (&СписокСчетов), {(&ВидыСубконто)}, Организация В (&СписокОрганизаций) {(Подразделение) КАК Подразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Ссылка, (Субконто2)}) КАК ХозрасчетныйОстатки
    |        ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1}
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._Доработка_УчетВесовойНоменклатуры.Остатки КАК _Доработка_УчетВесовойНоменклатурыОстатки
    |        ПО СправочникНоменклатура.Ссылка = _Доработка_УчетВесовойНоменклатурыОстатки.Номенклатура
    |        ГДЕ
    |    НЕ СправочникНоменклатура.ЭтоГруппа";
    
Показать


{Обработка.ПодборНоменклатуры.Форма.Форма.Форма(839)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден


Что-то я не вижу, в вашем запросе, параметра "СчетаЗапасов".... потому и ошибка лезет
Зато в запросе есть параметр "СписокСчетов".
Попробуйте в строке
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов",      СписокСчетов);

сделать
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СписокСчетов",      СписокСчетов);


З.Ы.
Я думаю проблема не в платформе, а в обновлении. Раз там допилено у вас было, вот оно и не срослось с изменениями в релизе типовой конфы. Анализируй код.
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. yaroslav.artem 21.04.17 11:20 Сейчас в теме
Не нужно никакие режимы совместимости переключать, просто обновите платформу до упора и проблема исчезнет.Сталкивался с этим в этой же форме подбора.
+
3. 1c_uZer 21.04.17 11:23 Сейчас в теме
(2) вчера дома тестил на последнем релизе 8.3.9 результат тот же.
+
4. корум 287 21.04.17 11:32 Сейчас в теме
(3) Кэш прибивал, специальной обработкой служебные регистры обновлял?
+
6. 1c_uZer 21.04.17 11:34 Сейчас в теме
(4) Кэш чистил, какой обработкой обновить служебные регистры?
+
5. 1c_uZer 21.04.17 11:32 Сейчас в теме
(2) скажите какую вы поставили? какой именно релиз?
+
7. Boneman 298 21.04.17 12:52 Сейчас в теме +0.15 $m
    ТекстЗапроса = // Текст может быть модифицирован ниже
    "ВЫБРАТЬ
    |    СправочникНоменклатура.Ссылка,
    |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
    |    СправочникНоменклатура.Наименование,
    |    СправочникНоменклатура.Артикул,
    |    СправочникНоменклатура.ЕдиницаИзмерения,
    |    СправочникНоменклатура.Услуга,
    |    СправочникНоменклатура.Код,
    |    СправочникНоменклатура.НаименованиеПолное,
    |    ВЫБОР
    |        КОГДА СправочникНоменклатура._Доработка_ВесовойУчет
    |            ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.ВесОстаток, 0)
    |        КОГДА СправочникНоменклатура._Доработка_ШтучныйУчет
    |            ТОГДА ЕСТЬNULL(_Доработка_УчетВесовойНоменклатурыОстатки.КоличествоОстаток, 0)
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ГоловыВес
    |   ИЗ
    |    Справочник.Номенклатура КАК СправочникНоменклатура
    |        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаОстаткиЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК ВалютаЦены}) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |            И (&ПоказыватьЦены)}
    |        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстаткиЦены)}, Счет В (&СписокСчетов), {(&ВидыСубконто)}, Организация В (&СписокОрганизаций) {(Подразделение) КАК Подразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Ссылка, (Субконто2)}) КАК ХозрасчетныйОстатки
    |        ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1}
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._Доработка_УчетВесовойНоменклатуры.Остатки КАК _Доработка_УчетВесовойНоменклатурыОстатки
    |        ПО СправочникНоменклатура.Ссылка = _Доработка_УчетВесовойНоменклатурыОстатки.Номенклатура
    |        ГДЕ
    |    НЕ СправочникНоменклатура.ЭтоГруппа";
    
Показать


{Обработка.ПодборНоменклатуры.Форма.Форма.Форма(839)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов", СписокСчетов);
по причине:
Параметр с указанным именем не найден


Что-то я не вижу, в вашем запросе, параметра "СчетаЗапасов".... потому и ошибка лезет
Зато в запросе есть параметр "СписокСчетов".
Попробуйте в строке
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СчетаЗапасов",      СписокСчетов);

сделать
СписокНоменклатуры.Параметры.УстановитьЗначениеПараметра("СписокСчетов",      СписокСчетов);


З.Ы.
Я думаю проблема не в платформе, а в обновлении. Раз там допилено у вас было, вот оно и не срослось с изменениями в релизе типовой конфы. Анализируй код.
+
8. 1c_uZer 21.04.17 13:11 Сейчас в теме
(7) блин вот я косяк...тяжело даются пока такие большие объёмы кода...спасибо что подсказали. я все понял и разобрался. так и знал что где-то какая-то мелочь) спасибо)
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот