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

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) блин вот я косяк...тяжело даются пока такие большие объёмы кода...спасибо что подсказали. я все понял и разобрался. так и знал что где-то какая-то мелочь) спасибо)
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)