Сканер штрихкода

1. Гость 08.03.15 18:32
Здравствуйте, у меня такой вопрос возможно ли сделать так что при создание производства можно было бы заполнять вкладку продукция сканером штрихкода? так как сейчас у меня при сканирование заполняется вкладка материалы вознаграждение на номер телефона 500р
Марат12345; +1 Ответить
По теме из базы знаний
Найденные решения
3. spacecraft 08.03.15 21:35 Сейчас в теме
Заменить функцию на эту. При последующих обновлениях не забыть изменять.

&НаКлиенте
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
	
	НеизвестныеШтрихкоды = Новый Массив;
	
	Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
		МассивШтрихкодов = ДанныеШтрикодов;
	Иначе
		МассивШтрихкодов = Новый Массив;
		МассивШтрихкодов.Добавить(ДанныеШтрикодов);
	КонецЕсли;
	
	СтруктураДанные = Новый Структура();
	СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
	ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
	
	Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
		ОбъектТЧ = Объект.Продукция;
		ЭлементТЧ = Элементы.Продукция;
	Иначе
		ОбъектТЧ = Объект.Запасы;
		ЭлементТЧ = Элементы.Запасы;
	КонецЕсли;
	
	Для каждого ТекШтрихкод Из СтруктураДанные.МассивШтрихкодов Цикл
		ДанныеШтрихкода = СтруктураДанные.ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
		
		Если ДанныеШтрихкода <> Неопределено
		   И ДанныеШтрихкода.Количество() = 0 Тогда
			НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
		Иначе
			МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
			Если МассивСтрокТЧ.Количество() = 0 Тогда
				НоваяСтрока = ОбъектТЧ.Добавить();
				НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
				НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
				НоваяСтрока.Количество = ТекШтрихкод.Количество;
				НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
				НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
				ЭлементыТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
			Иначе
				НайденнаяСтрока = МассивСтрокТЧ[0];
				НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
				ЭлементыТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат НеизвестныеШтрихкоды;

КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. TMV 14 08.03.15 20:58 Сейчас в теме
(1) Гость, в УНФ даже в 1.4.9.43 не предусмотрена такая возможность, видимо и не будет. Но всегда можно допилить.
4. Гость 08.03.15 22:28
(2) TMV, а как допилить?
6. TMV 14 09.03.15 07:55 Сейчас в теме
(4) Гость, собственно вам в (3) направление, где копать, указали.
3. spacecraft 08.03.15 21:35 Сейчас в теме
Заменить функцию на эту. При последующих обновлениях не забыть изменять.

&НаКлиенте
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
	
	НеизвестныеШтрихкоды = Новый Массив;
	
	Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
		МассивШтрихкодов = ДанныеШтрикодов;
	Иначе
		МассивШтрихкодов = Новый Массив;
		МассивШтрихкодов.Добавить(ДанныеШтрикодов);
	КонецЕсли;
	
	СтруктураДанные = Новый Структура();
	СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
	ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
	
	Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
		ОбъектТЧ = Объект.Продукция;
		ЭлементТЧ = Элементы.Продукция;
	Иначе
		ОбъектТЧ = Объект.Запасы;
		ЭлементТЧ = Элементы.Запасы;
	КонецЕсли;
	
	Для каждого ТекШтрихкод Из СтруктураДанные.МассивШтрихкодов Цикл
		ДанныеШтрихкода = СтруктураДанные.ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
		
		Если ДанныеШтрихкода <> Неопределено
		   И ДанныеШтрихкода.Количество() = 0 Тогда
			НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
		Иначе
			МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
			Если МассивСтрокТЧ.Количество() = 0 Тогда
				НоваяСтрока = ОбъектТЧ.Добавить();
				НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
				НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
				НоваяСтрока.Количество = ТекШтрихкод.Количество;
				НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
				НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
				ЭлементыТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
			Иначе
				НайденнаяСтрока = МассивСтрокТЧ[0];
				НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
				ЭлементыТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат НеизвестныеШтрихкоды;

КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
5. 09.03.15 07:16 Сейчас в теме
(3) spacecraft,
а что материалы и продукция не как не отличается по виду в справочнике. я не знаток УНФ но обычно во всех конфигах отличается по виду номенклатуры Товар Материал, Продукция, Услуга. Соответственно и заполнять нужные табличные части по этому признаку.
8. spacecraft 09.03.15 10:01 Сейчас в теме
(5) trade70, Все перечисленное это номенклатура. Для удобства разнесена по группам, но и это не обязательно.
В моем примере заполняться будет та табличная часть, закладка которой активна в данный момент.
16. 09.03.15 11:55 Сейчас в теме
(8) spacecraft,
так я о том-же что это один справочник но в нем они делятся по виду номенклатуры или типу. в других конфигах так. и там обычно есть проверка что в таблицу например с Услугами не попадет Товар или Производство. А в вашем случае, может быть сосканирован например Материал и он спокойно попадет в активную часть таблицы Производство. То есть другими словами он там не должен быть по своему признаку. И проверок на это у вас нет.
17. spacecraft 09.03.15 12:25 Сейчас в теме
(16) trade70, да. Нет проверок. Проверка остается за пользователем, который выбирает нужную страницу. Какая страница выбрана - туда и будет заполняться.
Как Вы говорите это более правильно, но и код править больше. И тут сама основная сложность:
Что материал, что продукция имеет тип "Запас". Остальные реквизиты можно как угодно менять и 100% ориентироваться на них тоже нельзя.
18. 09.03.15 12:33 Сейчас в теме
(17) spacecraft,
я УНФ ток ставил внутри не смотрел. поэтому не могу судить о сложности, вам виднее, да и вообще такая работа платная;-)
19. Марат12345 09.03.15 15:26 Сейчас в теме
(17) spacecraft, все ровно не получается также как и было "ошибка Поле объекта не обнаружено (ДанныеПоШтрихкодам
20. spacecraft 09.03.15 17:34 Сейчас в теме
(19) Марат12345, версия конфигурации?
21. Марат12345 09.03.15 17:42 Сейчас в теме
(20) spacecraft, Управление небольшой фирмой, редакция 1.4 (1.4.2.19) (http://v8.1c.ru/small/)
Copyright © ООО "1C", 2011. Все права защищены
(http://www.1c.ru)
22. spacecraft 09.03.15 17:55 Сейчас в теме
(21) Марат12345, я так и думал. В название другое указано.
Приведите полный текст родной функции.
23. Марат12345 09.03.15 18:17 Сейчас в теме
(22) spacecraft,
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
	
	НеизвестныеШтрихкоды = Новый Массив;
	
	Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
		МассивШтрихкодов = ДанныеШтрикодов;
	Иначе
		МассивШтрихкодов = Новый Массив;
		МассивШтрихкодов.Добавить(ДанныеШтрикодов);
	КонецЕсли;
	
	СтруктураДанные = Новый Структура();
	СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
	ДанныеПоШтрихкодам = ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
	
	Для каждого ТекШтрихкод Из МассивШтрихкодов Цикл
		ДанныеШтрихкода = ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
		
		Если ДанныеШтрихкода.Количество() = 0 Тогда
			НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
		Иначе
			МассивСтрокТЧ = Объект.Запасы.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
			Если МассивСтрокТЧ.Количество() = 0 Тогда
				НоваяСтрока = Объект.Запасы.Добавить();
				НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
				НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
				НоваяСтрока.Количество = ТекШтрихкод.Количество;
				НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
				НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
				Элементы.Запасы.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
			Иначе
				НайденнаяСтрока = МассивСтрокТЧ[0];
				НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
				Элементы.Запасы.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат НеизвестныеШтрихкоды;

КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
24. spacecraft 09.03.15 18:27 Сейчас в теме
(23) Марат12345, пробуйте так. Надеюсь названия страниц не поменялось.

Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
	
	НеизвестныеШтрихкоды = Новый Массив;
	
	Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
		МассивШтрихкодов = ДанныеШтрикодов;
	Иначе
		МассивШтрихкодов = Новый Массив;
		МассивШтрихкодов.Добавить(ДанныеШтрикодов);
	КонецЕсли;
	
	СтруктураДанные = Новый Структура();
	СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
	ДанныеПоШтрихкодам = ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
	
	Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
		ОбъектТЧ = Объект.Продукция;
		ЭлементТЧ = Элементы.Продукция;
	Иначе
		ОбъектТЧ = Объект.Запасы;
		ЭлементТЧ = Элементы.Запасы;
	КонецЕсли;
	
	Для каждого ТекШтрихкод Из МассивШтрихкодов Цикл
		ДанныеШтрихкода = ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
		
		Если ДанныеШтрихкода.Количество() = 0 Тогда
			НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
		Иначе
			МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
			Если МассивСтрокТЧ.Количество() = 0 Тогда
				НоваяСтрока = ОбъектТЧ.Добавить();
				НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
				НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
				НоваяСтрока.Количество = ТекШтрихкод.Количество;
				НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
				НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
				ЭлементТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
			Иначе
				НайденнаяСтрока = МассивСтрокТЧ[0];
				НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
				ЭлементТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат НеизвестныеШтрихкоды;
	
КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
25. Марат12345 09.03.15 19:04 Сейчас в теме
(24) spacecraft, в заказе на производство работает)))) а вот в простом производстве не работает
26. spacecraft 09.03.15 19:19 Сейчас в теме
(25) Марат12345, оригинальную функцию из документы.СборкаЗапасов.ФормаДокумента
Только здесь код вставлять в тэги нужно. В панеле редактирование есть кнопочка "Оформление текста в виде кода".
27. Марат12345 09.03.15 19:28 Сейчас в теме
(26) spacecraft, как понять в теги?
28. spacecraft 09.03.15 19:34 Сейчас в теме
29. Марат12345 09.03.15 20:02 Сейчас в теме
(28) spacecraft, что то я не понимаю как это сделать
30. spacecraft 09.03.15 20:06 Сейчас в теме
(29) Марат12345, выделить текст и нажать кнопочку не получается?
31. Марат12345 09.03.15 20:10 Сейчас в теме
(30) spacecraft, все все получилось спасибо большое ты крут)))))напишешь в личку номер свой
32. spacecraft 09.03.15 20:12 Сейчас в теме
(31) Марат12345, не нужно. Пользуйтесь
Марат12345; +1 Ответить
7. Марат12345 09.03.15 09:49 Сейчас в теме
(3) spacecraft, (6) TMV, а где заменить её ребята? в конфе в каком месте искать ?
9. spacecraft 09.03.15 10:04 Сейчас в теме
(7) Марат12345, предварительно сохрани базу.
Документы -> ЗаказНаПроизводство -> ФормаДокумента
там по поиску названия функции ...
10. Марат12345 09.03.15 10:52 Сейчас в теме
(9) spacecraft, нашел, просто изменить функцию и все больше нечего не нужно менять?
11. spacecraft 09.03.15 11:12 Сейчас в теме
(10) Марат12345, да. При сканировании будет подставляться в ту табличную часть, которая открыта в данный момент.
12. Марат12345 09.03.15 11:23 Сейчас в теме
(11) spacecraft, что то не получается как было так и осталось.
13. spacecraft 09.03.15 11:30 Сейчас в теме
(12) Марат12345, Точно сканер используете?
Или пробуете поиск по Штрихкоду?
14. Марат12345 09.03.15 11:32 Сейчас в теме
(13) spacecraft, да точно сканер, и теперь заказ на производство не открывается ошибку пишет.
15. spacecraft 09.03.15 11:41 Сейчас в теме
(14) Марат12345, заменить еще раз. Была опечатка.

&НаКлиенте
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
    
    НеизвестныеШтрихкоды = Новый Массив;
    
    Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
        МассивШтрихкодов = ДанныеШтрикодов;
    Иначе
        МассивШтрихкодов = Новый Массив;
        МассивШтрихкодов.Добавить(ДанныеШтрикодов);
    КонецЕсли;
    
    СтруктураДанные = Новый Структура();
    СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
    ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
    
    Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
        ОбъектТЧ = Объект.Продукция;
        ЭлементТЧ = Элементы.Продукция;
    Иначе
        ОбъектТЧ = Объект.Запасы;
        ЭлементТЧ = Элементы.Запасы;
    КонецЕсли;
    
    Для каждого ТекШтрихкод Из СтруктураДанные.МассивШтрихкодов Цикл
        ДанныеШтрихкода = СтруктураДанные.ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
        
        Если ДанныеШтрихкода <> Неопределено
           И ДанныеШтрихкода.Количество() = 0 Тогда
            НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
        Иначе
            МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
            Если МассивСтрокТЧ.Количество() = 0 Тогда
                НоваяСтрока = ОбъектТЧ.Добавить();
                НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
                НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
                НоваяСтрока.Количество = ТекШтрихкод.Количество;
                НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
                НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
                ЭлементТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
            Иначе
                НайденнаяСтрока = МассивСтрокТЧ[0];
                НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
                ЭлементТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    Возврат НеизвестныеШтрихкоды;

КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Оставьте свое сообщение

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