Почему не задаётся параметр ?

1. Terabaytus 01.03.21 14:42 Сейчас в теме
Добрый день, не могу понять почему пишет ошибку
Ошибка при выполнении запроса.
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Не задано значение параметра "ВыбраннаяНоменклатура"
по причине:
{(2, 25)}: Не задано значение параметра "ВыбраннаяНоменклатура"
Номенклатура.Ссылка В (<<?>>&ВыбраннаяНоменклатура) КАК Пометка


когда я в коде это параметр указал
&НаКлиенте
Перем ВыбраннаяНоменклатура; //Массив, хранящий отмеченную галочками номенклатуру для отображения в списке

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	  Сообщить("Работает");

	//Инициализация массива
	ВыбраннаяНоменклатура = Новый Массив;
	
	//Задал параметр
	Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	//Нас интересует только событие нажатия на чекбокс
	Если Поле = Элементы.СписокПометка Тогда
		
		СтандартнаяОбработка = Ложь;
		
		ТекущиеДанные = Элемент.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			Если ТекущиеДанные.Пометка Тогда
				СнятьПометку(ТекущиеДанные.Ссылка);
			Иначе
				ПоставитьПометку(ТекущиеДанные.Ссылка);
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	//Параметр в динамическом списке нужно обновить
	Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);
	
	Элементы.Список.Обновить();
	
КонецПроцедуры

&НаКлиенте
Процедура СнятьПометку(Номенклатура)
	Индекс = ВыбраннаяНоменклатура.Найти(Номенклатура);
	Если Индекс >= 0 Тогда
		ВыбраннаяНоменклатура.Удалить(Индекс);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПоставитьПометку(Номенклатура)
	Индекс = ВыбраннаяНоменклатура.Найти(Номенклатура);
	Если Индекс = Неопределено Тогда
		ВыбраннаяНоменклатура.Добавить(Номенклатура);
	КонецЕсли;
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
8. spacecraft 06.03.21 23:55 Сейчас в теме
(7) вот работающая обработка. Сравнивайте со своей.
Прикрепленные файлы:
ВнешняяОбработка1_1.epf
Terabaytus; +1 Ответить
13. spacecraft 07.03.21 12:54 Сейчас в теме
(12) если по аналогии с номенклатурой, но для документа, тогда добавить в выбираемые поля:
ДокументАктСписанияМЗ.Ссылка В (&ВыбранныеДокументы) КАК Пометка

Ну и соответственно поправить код в модуле формы.
Terabaytus; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 01.03.21 14:48 Сейчас в теме
(1) потому что на момент создания формы и выполнения запроса динамического списка этот параметр не установлен. Он устанавливаться должен еще в обработчике ПриСозданиНаСервере.
oleg-x; FatPanzer; +2 Ответить
3. Terabaytus 01.03.21 14:53 Сейчас в теме
(2) Взято из этой статьи там всё на клиенте. My Webpage
4. spacecraft 01.03.21 14:58 Сейчас в теме
(3) я ту статью не писал, так что вопрос не ко мне.
5. Terabaytus 06.03.21 23:05 Сейчас в теме
(4)Прописал в обработчике ПриСозданиНаСервере всё так же, расставил везде точки останова что бы посмотреть где начинает запускаться не реагирует. Такое впечатление форма запускается и тут же отрабатывает запрос список выдаёт ошибку до модуля дело не доходит.
6. spacecraft 06.03.21 23:34 Сейчас в теме
(5) возможно обработчики не привязаны. Как вариант, код просто скопирован. Показывайте свойства формы.
Или форма совсем не эта. Показывайте запрос динамического списка этой формы.
7. Terabaytus 06.03.21 23:41 Сейчас в теме
(6) Вот запрос
ВЫБРАТЬ
	Номенклатура.Ссылка,
	Номенклатура.Ссылка В (&ВыбраннаяНоменклатура) КАК Пометка
ИЗ
	Справочник.Номенклатура КАК Номенклатура


Вот форма
Прикрепленные файлы:
8. spacecraft 06.03.21 23:55 Сейчас в теме
(7) вот работающая обработка. Сравнивайте со своей.
Прикрепленные файлы:
ВнешняяОбработка1_1.epf
Terabaytus; +1 Ответить
9. Terabaytus 07.03.21 11:51 Сейчас в теме
(8)Всё понятно не правильно прописал.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	//Инициализация массива
	ВыбраннаяНоменклатура = Новый Массив; 
	//Без параметра, даже пустого, список выдаст ошибку и будет прав 
	Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	
КонецПроцедуры

Показать
10. Terabaytus 07.03.21 12:00 Сейчас в теме
(8)А вы не подскажите как лучше прикрутить этот запрос

ВЫБРАТЬ
	Номенклатура.Ссылка,
	Номенклатура.Ссылка В (&ВыбраннаяНоменклатура) КАК Пометка
ИЗ
	Справочник.Номенклатура КАК Номенклатура



вот к этому запросу

ВЫБРАТЬ
	ДокументАктСписанияМЗ.Ссылка,
	ДокументАктСписанияМЗ.ВерсияДанных,
	ДокументАктСписанияМЗ.ПометкаУдаления,
	ДокументАктСписанияМЗ.Номер,
	ДокументАктСписанияМЗ.Дата,
	ДокументАктСписанияМЗ.Проведен,
	ДокументАктСписанияМЗ.Организация,
	ДокументАктСписанияМЗ.ИФО,
	ДокументАктСписанияМЗ.ПодразделениеОтправитель,
	ДокументАктСписанияМЗ.ЦМООтправитель,
	ДокументАктСписанияМЗ.Комментарий,
	ДокументАктСписанияМЗ.ДолжностьПредседательКомиссии,
	ДокументАктСписанияМЗ.ФамилияПредседательКомиссии,
	ДокументАктСписанияМЗ.ИмяПредседательКомиссии,
	ДокументАктСписанияМЗ.ОтчествоПредседательКомиссии,
	ДокументАктСписанияМЗ.НомерПриказа,
	ДокументАктСписанияМЗ.ДатаПриказа,
	ДокументАктСписанияМЗ.Руководитель,
	ДокументАктСписанияМЗ.ЗаключениеКомиссии,
	ДокументАктСписанияМЗ.КФО,
	ДокументАктСписанияМЗ.СчетУчета,
	ОперацииДокументов.СуммаОперации,
	ОперацииДокументов.Операция,
	ВЫБОР
		КОГДА ОперацииДокументов.ЕстьПроводки ЕСТЬ NULL
			ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОперацииДокумента.ОперацияНеВыбрана)
		КОГДА НЕ ОперацииДокументов.ЕстьПроводки
			ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОперацииДокумента.ПроводкиОтсутствуют)
		КОГДА ЕСТЬNULL(ОперацииДокументов.ДокументСторнирован, ЛОЖЬ) = ИСТИНА
			ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОперацииДокумента.ДокументСторнирован)
		КОГДА ЕСТЬNULL(ОперацииДокументов.РучнаяКорректировка, ЛОЖЬ) = ИСТИНА
			ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОперацииДокумента.ПроводкиИзмененыВручную)
		КОГДА ЕСТЬNULL(ОперацииДокументов.ИсправлениеОшибки, ЗНАЧЕНИЕ(Перечисление.ПорядокИсправленияОшибокПрошлыхЛет.ПустаяСсылка)) В (ЗНАЧЕНИЕ(Перечисление.ПорядокИсправленияОшибокПрошлыхЛет.ОшибкаПрошлогоГода), ЗНАЧЕНИЕ(Перечисление.ПорядокИсправленияОшибокПрошлыхЛет.ОшибкаРанееПрошлогоГода))
			ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОперацииДокумента.ИсправлениеОшибки)
		ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СостоянияОперацииДокумента.ПроводкиСформированы)
	КОНЕЦ КАК СостояниеОперации,
	ВЫБОР
		КОГДА ОперацииДокументов.ЕстьПроводки ЕСТЬ NULL
			ТОГДА 0
		КОГДА НЕ ОперацииДокументов.ЕстьПроводки
			ТОГДА 1
		КОГДА ЕСТЬNULL(ОперацииДокументов.ДокументСторнирован, ЛОЖЬ) = ИСТИНА
			ТОГДА 4
		КОГДА ЕСТЬNULL(ОперацииДокументов.РучнаяКорректировка, ЛОЖЬ) = ИСТИНА
			ТОГДА 3
		КОГДА ЕСТЬNULL(ОперацииДокументов.ИсправлениеОшибки, ЗНАЧЕНИЕ(Перечисление.ПорядокИсправленияОшибокПрошлыхЛет.ПустаяСсылка)) В (ЗНАЧЕНИЕ(Перечисление.ПорядокИсправленияОшибокПрошлыхЛет.ОшибкаПрошлогоГода), ЗНАЧЕНИЕ(Перечисление.ПорядокИсправленияОшибокПрошлыхЛет.ОшибкаРанееПрошлогоГода))
			ТОГДА 5
		ИНАЧЕ 2
	КОНЕЦ КАК СостояниеОперацииКод,
	ДокументАктСписанияМЗ.Ответственный,
	ВЫБОР
		КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
			ТОГДА 0
		КОГДА НаличиеФайлов.ЕстьФайлы
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ КАК ЕстьФайлы,
	СостоянияЭД.ПредставлениеСостояния КАК СостояниеЭДО,
	NULL КАК СостояниеОригиналаПервичногоДокумента,
	ИСТИНА КАК ОбщееСостояние,
	0 КАК СостояниеОригиналПолучен
ИЗ
	Документ.АктСписанияМЗ КАК ДокументАктСписанияМЗ
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
		ПО (СостоянияЭД.СсылкаНаОбъект = ДокументАктСписанияМЗ.Ссылка)}
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОперацииДокументов КАК ОперацииДокументов
		ПО ДокументАктСписанияМЗ.Ссылка = ОперацииДокументов.Документ}
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
		ПО ДокументАктСписанияМЗ.Ссылка = НаличиеФайлов.ОбъектСФайлами}
Показать



воспользоваться виртуальной таблитцой и соединить с помощью левого соединения ?
11. spacecraft 07.03.21 12:14 Сейчас в теме
(10) для меня это звучит как: "Как прикрутить Луну к Солнцу?".
Не вижу логики.
12. Terabaytus 07.03.21 12:33 Сейчас в теме
(11)Ну мне теперь надо использовать его на боевом списке вот предполагаю, что нужно его записать программно ? Если это не верно то как его можно использовать ?
13. spacecraft 07.03.21 12:54 Сейчас в теме
(12) если по аналогии с номенклатурой, но для документа, тогда добавить в выбираемые поля:
ДокументАктСписанияМЗ.Ссылка В (&ВыбранныеДокументы) КАК Пометка

Ну и соответственно поправить код в модуле формы.
Terabaytus; +1 Ответить
14. Terabaytus 08.03.21 14:50 Сейчас в теме
(13)Извините, Вы мне не поможете в продолжение этой же темы, думал смогу разобраться, но не получается понять.
Мне нужно сравнить номера документов находящиеся в динамическом списке с номерами документов из РегСвед. И Если номера в .РегСвед отсутствую то пометить документы в ДС с отсутствующими номерами галочками и соответственно если они там появятся то галочка снимается.
Как можно для этого преобразовать этот код


	Если Поле = Элементы.Пометка Тогда
		
		СтандартнаяОбработка = Ложь;
		
		ТекущиеДанные = Элемент.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			Если ТекущиеДанные.Пометка Тогда
				СнятьПометку(ТекущиеДанные.Ссылка);
			Иначе
				ПоставитьПометку(ТекущиеДанные.Ссылка);
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	//Параметр в динамическом списке нужно обновить
	Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);
	
	Элементы.Список.Обновить();
	
Показать

Понимаю что сейчас мы передаём для работы данные выбранной строки, а как тогда сделать сравнение не могу понять ?
15. spacecraft 08.03.21 21:14 Сейчас в теме
(14) это совсем не так делается. В запросе динамического списка присоединяется РС левым соединением и добавляется поле Пометка.
На примере кода запроса в (10) для РС СостоянияЭД:
СостоянияЭД.СсылкаНаОбъект Есть Null КАК Пометка

Все.
Оставьте свое сообщение

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