БП 3.0 можно ли в СКД сделать поиск по штрих коду

1. user705522_constantin_h 37 15.03.18 16:29 Сейчас в теме
Клиент сделал штрих коды ОС. Сделали отчёт по регистру сведений МестоположениеОСБухгалтерскийУчет с отбором по ОС. Можно ли в СКД добавить поиск ОС по штрихкоду? Или это можно сделать только если размещать на форме поле штрихкода и в табличное поле запросом выводить записи регистра?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. kolya_tlt 90 15.03.18 16:50 Сейчас в теме
(1)
елал штрих коды ОС. Сделали отчёт по регистру сведений МестоположениеОСБухгалтерскийУчет с отбором по ОС. Можно ли в СКД добавить поиск ОС по штрихкоду? Или это можно сделать только если размещать на форме поле штрихкода и в табличное поле запросом выводить записи регистра?

можно
2. YannikAlx 28 15.03.18 16:46 Сейчас в теме
Создайте форму отчета заполняйте поле сканером и потом передавайте параметр в запрос - а СКД это или нет - не принципиально.
4. YannikAlx 28 15.03.18 16:53 Сейчас в теме
5. user705522_constantin_h 37 15.03.18 22:12 Сейчас в теме
(4)
&НаКлиенте
Процедура ШтрихкодПриИзменении(Элемент)
	
	НайденноеОС = ПоискШтрихКодаОС();
	
	Если ЗначениеЗаполнено(НайденноеОС) Тогда
		ЭлементыОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы;
		Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
			Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОсновноеСредство") Тогда
				//ЭлементОтбора.ПравоеЗначение = НайденноеОС;
				//ЭлементОтбора.Использование = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].ПравоеЗначение = НайденноеОС;
		Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Использование = Истина;
	КонецЕсли;
	
	СформироватьОтчетНаСервере(Результат); // Чтобы не писалось "Отчет не сформирован…"
	Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;
	Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
КонецПроцедуры
Показать


Почему-то установка через ЭлементОтбора.ПравоеЗначение = НайденноеОС не срабатывает.
Пришлось сделать через Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].ПравоеЗначение = НайденноеОС.
Причём вслемую по номеру, а не по имени поля (просто посмотрел в отладчике).
6. catena 110 16.03.18 05:39 Сейчас в теме
Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы
Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1]

Немного разные пути.
7. user705522_constantin_h 37 16.03.18 09:55 Сейчас в теме
(6)У меня на форме СКД отборы. Сначала я заполнил Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы. Это не сработало. Затем я внёс вручную нужный отбор и посмотрел, куда он попадёт. Оказалось Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1]. Занёс туда, всё сработало.
8. catena 110 16.03.18 10:49 Сейчас в теме
(7)Может быть его не было или не все параметры отбора были заполнены.

ЭлементОтбора = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОсновноеСредство");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
	ЭлементОтбора.ПравоеЗначение = НайденноеОС;
	ЭлементОтбора.Использование = Истина;

И посик тоже должен работать.
9. user705522_constantin_h 37 16.03.18 19:16 Сейчас в теме
(8)Понял, как это должно быть:
&НаКлиенте
Процедура ШтрихкодПриИзменении(Элемент)
	
	НайденноеОС = ПоискШтрихКодаОС();
	
	Если ЗначениеЗаполнено(НайденноеОС) Тогда
		ЭлементыОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы;
		Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
			Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОсновноеСредство") Тогда
				Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[ЭлементыОтбора.Индекс(ЭлементОтбора)].ПравоеЗначение = НайденноеОС;
				Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[ЭлементыОтбора.Индекс(ЭлементОтбора)].Использование = Истина;
				
				Прервать;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	СформироватьОтчетНаСервере(Результат); // Чтобы не писалось "Отчет не сформирован…"
	Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;
	Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
КонецПроцедуры
Показать
Оставьте свое сообщение

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