База УТ 11.4 последний релиз, обновляется.
На склад приходит товар. Склад сканирует маркировку и отправляет все полученное в виде файлика в офис.
Офис получает файлик, читает, складывает в табличку: номенклатура, количество и для каждой номенклатуры коды маркировки, это такой список строк, каждая, как я понял, 31 символ.
И вот теперь вопрос: что надо сделать в этой УТ, чтобы коды маркировки попали в документ ПриобретениеТоваровУслуг в правильном виде? Может там какие-то есть процедуры для правильной записи этих кодов? Кто-нибудь делал? Расскажите плз.

В УТ у документа есть ТЧ ШтрихкодыУпаковок, в ней два реквизита, ШтрихкодУпаковки и ЗначениеШтрихкода.
ШтрихкодУпаковки в свою очередь это справочник ШтрихкодыУпаковокТоваров, в нем 16 реквизитов и две табличные части. Со склада приходит номенклатура и код маркировки, ну еще допустим единица измерения (упаковка или штуки или что там еще). Как это преобразовать в 16 реквизитов?
Где б почитать, как это делается правильно? Поделитесь, кто знает...
---
Зачем в документ, сразу в справочник и регистр, этого будет достаточно чтобы подбирался товар при сканировании в реализацию:
```1c
    Элемент = Справочники.ШтрихкодыУпаковокТоваров.СоздатьЭлемент();
    Элемент.ТипУпаковки = ПредопределенноеЗначение("Перечисление.ТипыУпаковок.МаркированныйТовар");
    Элемент.ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.DataMatrix");
    ЗначениеШтрихКодаЗагрузки= ("("+Лев(стр.КодМарки,2)+")"+Сред(стр.КодМарки,3,14)+"("+Сред(стр.КодМарки,17,2)+")"+Прав(стр.КодМарки,13));
    Элемент.ЗначениеШтрихкода = ЗначениеШтрихКодаЗагрузки;
    Элемент.Номенклатура = стр.Номенклатура;
    Элемент.Характеристика = стр.Характеристика;
    Элемент.Записать();

    ЗаписьВРегистСведений= РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
    ЗаписьВРегистСведений.Номенклатура = стр.Номенклатура;
    ЗаписьВРегистСведений.Характеристика = стр.Характеристика;
    ЗаписьВРегистСведений.Штрихкод = Сред(стр.КодМарки,4,13);
    ЗаписьВРегистСведений.Записать();
```
---
Приобретение товаров - Проверить поступившие товары...- Загрузить из внешнего файла. 1С ест сейчас в разных форматах коды маркировки: и с символами GS, и в виде (01)GTIN(21)Serial, и в виде 01GTIN21Serial
---
Зачем в документ, сразу в справочник и регистр, этого будет достаточно чтобы подбирался товар при сканировании в реализацию:
```1c
    Элемент = Справочники.ШтрихкодыУпаковокТоваров.СоздатьЭлемент();
    Элемент.ТипУпаковки = ПредопределенноеЗначение("Перечисление.ТипыУпаковок.МаркированныйТовар");
    Элемент.ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.DataMatrix");
    ЗначениеШтрихКодаЗагрузки= ("("+Лев(стр.КодМарки,2)+")"+Сред(стр.КодМарки,3,14)+"("+Сред(стр.КодМарки,17,2)+")"+Прав(стр.КодМарки,13));
    Элемент.ЗначениеШтрихкода = ЗначениеШтрихКодаЗагрузки;
    Элемент.Номенклатура = стр.Номенклатура;
    Элемент.Характеристика = стр.Характеристика;
    Элемент.Записать();

    ЗаписьВРегистСведений= РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
    ЗаписьВРегистСведений.Номенклатура = стр.Номенклатура;
    ЗаписьВРегистСведений.Характеристика = стр.Характеристика;
    ЗаписьВРегистСведений.Штрихкод = Сред(стр.КодМарки,4,13);
    ЗаписьВРегистСведений.Записать();
```
---
класс, спасибо. Попробую.
Мне надо не чтобы товар подбирался, а чтобы переданные со склада коды были записаны в базу. Товар подбирается на складе, там сканируется и уже коды пересылаются в УТ. И для поступлений и для отгрузок такая методика. Коды надо записать в документ такие, какие отсканированы складом.
---
Думаю что для реализации Вашей цели всё получится, только не понятно зачем делать отгрузку если нет обмена с ЧЗ, а если он есть, то зачем изобретать велосипед?
---
аутсорсинговый склад, там все собирают, сканируют, а документы делаются в офисе клиента.
Вроде достаточно обычная схема, нет?
---
(10) аутсорсинговый склад, там все собирают, сканируют, а документы делаются в офисе клиента.
Вроде достаточно обычная схема, нет? Обычно в офисе клиента есть обмен с ЧЗ и там делается отгрузка, иначе как списать реализованные (отгруженные марки) в ЧЗ? Если выбытие происходит через кассу ККМ (чек) тогда выше приведенного кода достаточно, и не нужно запихивать все это в документы только в чек.
---
обмен есть, конечно. Но документ надо как-то заполнить, в этом проблема.
Чеков нет, только безнал.
сейчас буду разбираться, посмотрим. В идеале программно вызвать эту кнопку заполнения с заданным списком кодов. Посмотрим.
---
Вы явно что-то не договариваете или недопонимаете :-) если есть обмен, тогда в чем проблема использовать стандартный механизм? Ладно не буду грузить вопросами отстал. :-)
---
я недопонимаю и даже не скрываю это
Вот со склада пришло скажем 50 файлов. В каждом реализация и все коды к ней.
Мне надо сделать в идеале так, чтобы регламентное задание эти файлы прочитало, распихало все коды на нужные места и нарисовало в списке документов на АРМ оператора строки зелененьким. Дальше они там будут документы по эдо рассылать или еще что, это их дела.
А мне показывают кнопки на формах, и я уже начинаю понимать, что некий стандартный механизм существует и, как это обычно любит делать 1с, он чисто интерактивный. То есть предлагается оператору сохранить куда-то эти 50 списков кодов, потом он будет по одной открывать реализацию, нажимать кнопку, копировать коды, вставлять в форму 1с, нажимать кнопку и так далее.
Так или я опять чего-то не понимаю?
Я хочу понять, как это правильно сделать, а еще лучше - найти готовое решение о) можно даже не бесплатно.
---
То есть предлагается оператору сохранить куда-то эти 50 списков кодов, потом он будет по одной открывать реализацию, нажимать кнопку, копировать коды, вставлять в форму 1с, нажимать кнопку и так далее.
Так или я опять чего-то не понимаю?
  Да всё верно, каждое поступление открывать и загружать туда эти "50 кодов марок", чтобы они прописались в регистре сведений и справочнике штрихкодов и для списания каждую отгрузку открывать и копировать туда эти условные "50 кодов марок" для списания в ЧЗ. Либо делать загрузку в справочник и регистр и потом подгружать эти коды в отгрузку.
---
спасибо
по крайней мере становится понятнее, где искать и как сделать, пока не написана автоматическая загрузка.
И опять выковыривать из форм 1с алгоритмы...
---
Записал для поступления поступления
А вот еще вопрос - когда загружаю реализацию, то мне же не надо записывать этот справочник с регистром? Надо только в справочнике найти нужный код и записать в документ. Так?
начинаю понемногу понимать вроде...
как бы еще это все протестировать без записи реальных кодов в чз.
---
Надо только в справочнике найти нужный код и записать в документ. всё верно.
---
ну поступление хотя бы. Хотя пожалуй что не так уж много там натестируешь без чз.
Если я понял правильно, то при поступлении я записал 1) справочник 2) регистр 3) ТЧ документа поступления, после чего я в форме документа нажимаю "Проверить духи" и оно все идет туда в чз с моими кодами и что-то с ними делает, потом они становятся зелененькими.
Вот все, кроме хождения в чз, неплохо было бы протестировать как-то. Что по крайней мере все записано верно. Сейчас еще подумаю об этом.

(22) Супер, спасибо! Вроде все записал куда надо.
Я б сам наверное неделю разбирался бы. Спасибо большое!
Интересно как это все будет работать в руках опытнейших манагеров о)))
---
как бы еще это все протестировать без записи реальных кодов в чз так ведь это документом отгрузка товаров ИС МП делается (точнее при его отправки в ЧЗ), а не доком реализация.
---
а можно еще вопрос. Получается, что при поступлении товаров эти ШК маркировки с документом поступления не связаны вообще? Коды просто записаны в регистр, то есть они просто к нам пришли откуда-то и все.
А вот при реализации уже в ТЧ пишутся списанные коды? Тогда для записи кодов в реализацию надо еще найти элементы этого справочника?
Покопался в базе, вроде так и есть. Так?
И еще в справочнике "ШК упаковок товаров" есть вложенные ШК, это когда приходит упаковка и на ней один ШК? А вложенные это что у нее внутри?
Покопался еще в кодах УТ. Ну что сказать, пока не нашел даже вызова той проверки, которая по ссылке "Проверить духи" )) нашел где эта ссылка формируется, она ж динамически там появляется, в форме ее нет...
---
Добрый день! Это видели? Если принципиально грузить в поступление, для обмена по эдо, то тут связь.
```1c
    ВЫБРАТЬ
    ПриобретениеТоваровУслугШтрихкодыУпаковок.Ссылка КАК Ссылка,
    ПриобретениеТоваровУслугШтрихкодыУпаковок.НомерСтроки КАК НомерСтроки,
    ПриобретениеТоваровУслугШтрихкодыУпаковок.ШтрихкодУпаковки КАК ШтрихкодУпаковки,
    ПриобретениеТоваровУслугШтрихкодыУпаковок.ЗначениеШтрихкода КАК ЗначениеШтрихкода
    ИЗ
    Документ.ПриобретениеТоваровУслуг.ШтрихкодыУпаковок КАК ПриобретениеТоваровУслугШтрихкодыУпаковок
    ГДЕ
    ПриобретениеТоваровУслугШтрихкодыУпаковок.Ссылка = &Ссылка
```
 , а для отгрузки марок в ЧЗ есть специальный документ "Отгрузка товаров ИС МП"
---
это я видел, но в реальной базе в этой ТЧ реквизит ШтрихкодУпаковки пустой, я вчера запросы гонял там. При этом значки там розовые и зеленые есть в форме поступления, то есть оно как-то знает, какие ШК относятся именно к этому поступлению.
Не понял еще пока, как это можно все протестировать, не обмениваясь с реальным чз. Как делать, я вроде понял, сейчас займусь.
Спасибо большое еще раз за объяснения! )
---
это не то?
---
опередили)
---
ну я в коды-то посмотрел
в общем УТ 11 она и есть. Там пока дойдешь до сути, уж пенсия на горизонте.
Я думал, может кто-то уже прошел этот путь о)
---
А предложенный путь чем вас не устраивает?
---
по этой кнопке вызывается сразу поиск электронной подписи и дальше обмен с чем-то. И куда там передать список кодов, я так сходу не нашел.
Возможно, я неправильно все понял и запись в базу этих кодов возможна только через оператора кодов, то есть справочник и табличная часть документа заполняются только из ответов из честного знака? Если так, то это усложняет дело конечно...
Я думал, их можно просто заполнить вручную, может не понимаю еще пока всего полета мысли разработчиков маркировки...
---
Можно еще вот так (вариант НаКлиенте):

```1c
    сэ_НастройкиРазбора = РазборКодаМаркировкиИССлужебныйКлиент.НастройкиРазбораКодаМаркировки();
    сэ_ДанныеРазбора = РазборКодаМаркировкиИССлужебныйКлиентСервер.РазобратьКодМаркировки(Штрихкод,,,сэ_НастройкиРазбора, Ложь, РазборКодаМаркировкиИССлужебныйКлиент);
```

В данных разбора у вас будет и GTIN, и серийный номер, и нормализованный код для записи в справочник штрихкодов и упаковок

Примерный код для создания элемента справочника:

```1c
    ДанныеШтрихкодаУпаковки = Новый Структура;
    ДанныеШтрихкодаУпаковки.Вставить("Ответственный", Пользователи.ТекущийПользователь());
    ДанныеШтрихкодаУпаковки.Вставить("ДатаУпаковки", ТекущаяДатаСеанса());
    ДанныеШтрихкодаУпаковки.Вставить("Количество", 1);
    ДанныеШтрихкодаУпаковки.Вставить("Характеристика", Характеристика);
    ДанныеШтрихкодаУпаковки.Вставить("Номенклатура", Номенклатура);
    ДанныеШтрихкодаУпаковки.Вставить("Штрихкод", НормализованныйКод);
    ДанныеШтрихкодаУпаковки.Вставить("ТипШтрихкода", Перечисления.ТипыШтрихкодов.GS1_DataMatrix);
    ДанныеШтрихкодаУпаковки.Вставить("ТипУпаковки", Перечисления.ТипыУпаковок.МаркированныйТовар);
    ДанныеШтрихкодаУпаковки.Вставить("ВидПродукции", ИнтеграцияИС.ВидПродукцииПоНоменклатуре(Номенклатура));
    ДанныеШтрихкодаУпаковки.Вставить("Серия", Справочники.СерииНоменклатуры.ПустаяСсылка());
    ПараметрыСоздания = Новый Структура();
    ПараметрыСоздания.Вставить("ОтключитьПоискСуществующего", Ложь);
    ШтрихкодУпаковки = Справочники.ШтрихкодыУпаковокТоваров.СоздатьШтрихкодУпаковки(ДанныеШтрихкодаУпаковки);
```
---
спасибо, я не подумал о стандартных процедурах
может это даже лучше будет
надо подумать