Имя: Пароль:
1C
 
Генерация штрихкодов для каждой номенклатурной позиции
0 DenisBatkaevvv_
 
naïve
03.05.25
23:39
Всем привет, только начинаю разбираться с типовыми конфигурациями, не судите строго((

Стоит задача: Необходимо, чтобы для каждой единицы номенклатуры из документа оприходования, сформировался штрихкод и соответственно его номер. При его сканировании или поиска по номеру система должна выдать данную номенклатуру (причем важно, допустим к нам пришло 30 одинаковых товаров, чтобы для каждого из 30 одинаковых товаров был свой штрихкод)

Знаю, что есть встроенные функции в БСП, как я думаю, нужен регистр сведений в котором будут все эти 30 штрихкодов хранится. Однако вопрос в том, какие общие модули использовать и процедуры, также не совсем понятна вся логика работы, как это будет выглядеть?
1 Мультук
 
гуру
04.05.25
00:03
(0)

Самое главное не написал:
-- а нужно нам это потому что "мы хотим"...
-- а работать всё это должно в конфигурации название и версия
2 Maniac
 
04.05.25
00:16
Для Каждого Строка Из Объект.Товары Цикл
        Если НЕ ЗначениеЗаполнено(Строка.Номенклатура) Тогда
            Продолжить;
        КонецЕсли;
        
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура
        |ИЗ
        |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        |ГДЕ
        |    ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура
        |    И ШтрихкодыНоменклатуры.Характеристика = &ХарактеристикаНоменклатуры
        |
        |СГРУППИРОВАТЬ ПО
        |    ШтрихкодыНоменклатуры.Номенклатура";
        
        Запрос = Новый Запрос;
        Запрос.Текст = ТекстЗапроса;
        Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура);
        Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", Строка.ХарактеристикаНоменклатуры);
        
        РезультатЗапроса = Запрос.Выполнить();    
        Если НЕ РезультатЗапроса.Пустой() Тогда
            Сообщить("У данной номенклатуры штрихкод уже есть (строка пропущена)  "+Строка.Номенклатура);
            Продолжить;
        КонецЕсли;    
        
        ТекЗаписьШтрихкода = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
        
        ТекЗаписьШтрихкода.Номенклатура   = Строка.Номенклатура;
        ТекЗаписьШтрихкода.Характеристика = Строка.ХарактеристикаНоменклатуры;
        ТекЗаписьШтрихкода.Упаковка       = Строка.Упаковка;
        ПрефиксВнутреннегоШтрихкода = Формат(Константы.ПрефиксШтучногоШтрихкода.Получить(),"ЧЦ=2; ЧН=; ЧВН=");
        ТекЗаписьШтрихкода.Штрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СформироватьШтрихкодEAN13();            
        ТекЗаписьШтрихкода.Записать();
        
        
    КонецЦикла;
3 DenisBatkaevvv_
 
naïve
04.05.25
00:14
(1) это больше учебная задача, все это нужно в бп, бсп тройка
4 DenisBatkaevvv_
 
naïve
04.05.25
00:15
(2) большое спасибо, буду разбираться!
5 Sneer
 
04.05.25
12:17
(2) не, это задача типа маркировки, когда уникальный штрихкод для каждой единицы
(причем важно, допустим к нам пришло 30 одинаковых товаров, чтобы для каждого из 30 одинаковых товаров был свой штрихкод)
6 Maniac
 
04.05.25
12:46
(5) да там тоже элементарно.
7 Maniac
 
04.05.25
12:47
Если есть количество значит можно и сделать цикл по количеству. Дел то. Вообще не понимаю сложностей сделать что угодно))
8 Maniac
 
04.05.25
12:53
Маркировки в УТ это справочник ШтрихкодыУпаковокТоваров

там есть типы упаковок с типом Маркированный товар и прочие реквизиты.

Ну генерируйте там записи. Дел то. Все это в типовых учтено.

В документообороте тоже участвует.
9 ILM
 
гуру
04.05.25
12:57
(2) Лучше сразу выбрать список номенклатуры без штрихкодов, а потом уже формировать штрихкоды. А так получается запрос в цикле.
10 Maniac
 
04.05.25
13:02
(9) почему я не заморачивался? Да потому что если там даже 100 товаров в накладной - это все не имеет значения.

Над оптимизацией надо думать если бы это были десятки тысяч или сотни тысяч строк.
11 Maniac
 
04.05.25
13:02
Золотое правило даже на курсах 1С.

Не пытаться усложнять там где это не требуется. Хотя по типовым такого не скажешь))
12 Sneer
 
04.05.25
13:05
(7) Ну как минимум EAN13 лучше не использовать и проверка на существование какого-либо штрихкода номенклатуры уже неактуальна, а так да, как нефиг делать ;)
13 ILM
 
гуру
04.05.25
14:02
(10) Когда работает 200 человек, из них на складе вводят документы 10 человек и накладные по 3 тыс.строк, то бывает и надо.
Уже привычка делать по правилам. Даже запросы дольше 15 секунд меня не устраивают.
14 DenisBatkaevvv_
 
naïve
04.05.25
14:25
(13) а все таки, что использовать?(
я посмотрел справочник ШтрихкодыУпаковокТоваров, но что то не особо понял что из его функциональности,какой модуль мне пригодится для генерации 30 разных штрихкодов для 30 одинаковых товаров
15 Sneer
 
04.05.25
16:25
(14) Не усложняй, тебе всего лишь нужно обойти табличную часть документа поступления и сгенерировать нужное по количеству номенклатуры количество штрихкодов. Неважно каких, главное уникальных. Если не заморачиваться, можно взять Строка(Новый УникальныйИдентификатор). Хранить можно в штатном регистре ШтрихкодыНоменклатуры.
Чем здесь поможет БСП, даже не знаю
16 DenisBatkaevvv_
 
naïve
04.05.25
19:13
(15) спасибо за простоту объяснения, разобрался детальнее и сделал =)
17 DenisBatkaevvv_
 
naïve
04.05.25
19:13
всем спасибо
18 Волшебник
 
04.05.25
19:29
(16) Покажи, как сделал
19 lucky_
 
05.05.25
01:25
(2) щас бы запросы в цикле попИсать.
Маня, куда ты катишься?