|
v7: Честный знак и вывод из оборота | ☑ | ||
---|---|---|---|---|
0
ChMikle
17.03.23
✎
10:50
|
Нужен образец файла с данными о выводе из оборота товаров группы молочная продукция в xml формате для дальнейшего экспорта в ЭДО лайт и отправки в ЧЗ.
Решили фасованные головки сыров резать на части и продавать кусками, я так понял в Чз необходимо отправлять данные о выбытии в случае разрыва упаковки и деления на части ? |
|||
1
АгентБезопасной Нацио
17.03.23
✎
11:16
|
<?xml version="1.0" encoding="UTF-8"?>
<withdrawal version="8"> <trade_participant_inn>7777777777</trade_participant_inn> <withdrawal_type>DESTRUCTION</withdrawal_type> <withdrawal_date>2022-01-13</withdrawal_date> <primary_document_type>DESTRUCTION_ACT</primary_document_type> <primary_document_number>123</primary_document_number> <primary_document_date>2022-01-13</primary_document_date> <fias_id>8cccc9d6-05cc-4c53-c45c-cc0c6c3c5c44</fias_id> <products_list> <product> <cis>00000000000000hx00'HY</cis> </product> </products_list> </withdrawal> |
|||
2
ChMikle
17.03.23
✎
11:44
|
(1) Это рабочий пример ?
|
|||
3
ChMikle
17.03.23
✎
11:54
|
там вроде как номенклатура , количество, цена и сумма должны указываться ?
|
|||
4
АгентБезопасной Нацио
17.03.23
✎
12:01
|
(2) это из "Описание True API Версия 284.0"
Мы не режем. |
|||
5
ChMikle
17.03.23
✎
12:27
|
(4) мне надо загрузить файл из внешнего файла в эдо-лайт данные для вывода из оборота
|
|||
6
АгентБезопасной Нацио
17.03.23
✎
12:42
|
ну и грузи. правила формирования файлов единые.
|
|||
7
big
17.03.23
✎
12:58
|
Зайдите в личный кабинет, там куча документации и примеров. Загружать можно из xml, xls, csv
|
|||
8
ChMikle
17.03.23
✎
14:08
|
(7) Спасибо , мил человек, но конкретный рабочий файл-пример был бы более продуктивен :) для меня.
|
|||
9
ChMikle
21.03.23
✎
09:00
|
(1) Спасибо !
|
|||
10
MWWRuza
гуру
21.03.23
✎
10:57
|
Я из 7.7 через True API, HTTP запросом отправкой JSON сделал. Работает.
Но, у меня авторизация, получение токена и т.п. было ранее сделано, еще для сигарет... Поэтому, с молочкой, списанием через расфасовку, проблем не возникло. Вот такой документ: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-486.jpg В принципе, у меня предусмотрена и второй вариант, когда API по каким-то причинам не доступен - формирование файла для ручной загрузки в ЛК. Там как раз XML формируется. |
|||
11
ChMikle
21.03.23
✎
12:01
|
QR-коды так же , отрезал лишние хвосты ?
|
|||
12
MWWRuza
гуру
21.03.23
✎
17:19
|
Хм... Ну, если посмотреть по дате документа, можно понять, когда я это делал... Уже и не помню.
Сейчас в модуле посмотрю, отпишу... |
|||
13
MWWRuza
гуру
21.03.23
✎
17:21
|
Отправляю так:
Пока ПолучитьСтроку() = 1 Цикл ТзТов.НоваяСтрока(); КИЗ = СокрЛП(Марка); ТзТов.cis = КИЗ; ТзТов.product_cost = ЦенаЕд * 100; КонецЦикла; |
|||
14
MWWRuza
гуру
21.03.23
✎
17:28
|
А марка в таблице документа так:
СзШК = РазобратьШК(СканШК); ТипШК = СзШК.Получить("ТипЕд"); ЕАН = СзШК.Получить("ЕАН"); GTIN = СзШК.Получить("GTIN"); ВесЕдВМарке = ПолучитьВес(СканШК); КИЗ = ПолучитьКИЗ(СканШК); **** НовМарка = КИЗ; **** Марка = НовМарка; Там где звездочки - куча всяких проверок и т. п., это "на вкус и цвет" :-) В глобальном модуле у меня функция, сделана давно, еще когда только с ЕГАИС начинал работать потом, допиливал по чуть-чуть: // Функция РазобратьШК(ШК) Экспорт - Возвращает тип отсканированного ШтрихКода // 1 - EAN(13 или 8) обычный ШК товара // 2 - DataMatrix пачки сигарет // 3 - DataMatrix блока сигарет // 4 - PDF-417 алкоголь, старая марка // 5 - DataMatrix алкоголь,новая марка // 6 - DataMatrix алкоголь, старая марка, "маленький квадратик" // 7 - DataMatrix прочей упаковки сигарет // 8 - Сокращенный код маркировки прочих товаров, в том числе молока // МРЦ - максимальная розничная цена сигарет // Тип - тип старой марки // Сер - серия старой марки // Ном - номер старой марки Функция РазобратьШК(Знач ШК) Экспорт СЗ = СоздатьОбъект("СписокЗначений"); СтрШК = СокрЛП(ШК); Если СтрДлина(СтрШК) <= 13 Тогда СЗ.ДобавитьЗначение(1, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК, "ЕАН"); СЗ.ДобавитьЗначение(0); ИначеЕсли (СтрДлина(СтрШК) <= 29) И (СтрДлина(СтрШК) >= 21) Тогда СЗ.ДобавитьЗначение(2, "ТипЕд"); ВыдЕАН = СокрЛП(Число(Лев(ШК, 14))); СЗ.ДобавитьЗначение(ВыдЕАН, "ЕАН"); Если СтрДлина(СтрШК) >= 25 Тогда МРЦ = ВернутьМРЦ(Сред(СокрЛП(СтрШК), 22, 4)); Иначе МРЦ = 0; КонецЕсли; СЗ.ДобавитьЗначение(МРЦ, "МРЦ"); ИначеЕсли СтрДлина(СтрШК) = 68 Тогда СЗ.ДобавитьЗначение(4, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК, "ЕАН"); СЗ.ДобавитьЗначение(0); ИначеЕсли СтрДлина(СтрШК) = 150 Тогда СЗ.ДобавитьЗначение(5, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК, "ЕАН"); СЗ.ДобавитьЗначение(0); ИначеЕсли (СтрДлина(СтрШК) > 30) И (СтрДлина(СтрШК) < 68) Тогда Если Сред(СтрШК,4,1) = "-" Тогда Тип = Лев(СтрШК,3); СтрТипа = ""; СзТиповМарок = ЗаполнитьСписокТиповМарок(); Поз = СзТиповМарок.НайтиЗначение(Число(Тип)); Если Поз = 0 Тогда Предупреждение("Тип марки не найден!"); Иначе СзТиповМарок.ПолучитьЗначение(Поз,СтрТипа); КонецЕсли; Если Найти(СтрТипа,"ФСМ. ") > 0 Тогда ДлинаНомераМарки=9; Иначе ДлинаНомераМарки=8 КонецЕсли; СЗ.ДобавитьЗначение(6, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК); СЗ.ДобавитьЗначение(0); СЗ.ДобавитьЗначение(Лев(ШК,3), СокрЛП(СтрТипа)); СЗ.ДобавитьЗначение(Сред(ШК,Найти(ШК,"-") + 1,3)); СЗ.ДобавитьЗначение(Сред(ШК,Найти(ШК,"-") + 4,ДлинаНомераМарки)); Иначе СтрШК = СтрЗаменить(СтрШК, "(", ""); СтрШК = СтрЗаменить(СтрШК, ")", ""); Если Лев(СтрШК, 2) = "01" Тогда Если Найти(СтрШК, Симв(29)) > 0 Тогда // Марка полная, со сканера СЗ.ДобавитьЗначение(7, "ТипЕд"); GTIN = Сред(СтрШК, 3, 14); ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(GTIN, "GTIN"); СЗ.ДобавитьЗначение(0, "МРЦ"); Иначе Если Найти(СтрШК, "8005") = 0 Тогда // Упаковка, отличная от блока ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); МРЦ = 0; СЗ.ДобавитьЗначение(7, "ТипЕд"); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(МРЦ, "МРЦ"); СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД"); ИначеЕсли Найти(СтрШК, "8005") >= 25 Тогда ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); МРЦ = ВычислитьМРЦ_Блока(СтрШК); СЗ.ДобавитьЗначение(3, "ТипЕд"); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(МРЦ, "МРЦ"); СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД"); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли (СтрДлина(СтрШК) >= 19) И (СтрДлина(СтрШК) < 21) Тогда // Молочка и другой товар сокращенные ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); СЗ.ДобавитьЗначение(8, "ТипЕд"); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(0, "МРЦ"); СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД"); КонецЕсли; Возврат СЗ; КонецФункции // КонецФункци РазобратьШК(ШК |
|||
15
MWWRuza
гуру
21.03.23
✎
17:29
|
СканШК - это ШтрихКод марки, как во внешнее событие со сканера прилетел.
|
|||
16
MWWRuza
гуру
21.03.23
✎
17:41
|
Да, кстати... В дополнение.
Хранить полный код марки в 1с77, в том виде, как он прилетает со сканера - нельзя, она этого не умеет. Или хранить обрезанный код, до первого GS1, или менять этот симвод на что-то "допустимое". Иначе при первом ТиИ, 1с удалит эти ШК, так как GS1 не является допустимым символом в полях DBF с точки зрения ТиИ 1с77 :-) |
|||
17
Злопчинский
22.03.23
✎
00:42
|
да нормально в 77 это как-то victuan хранит
|
|||
18
MWWRuza
гуру
22.03.23
✎
10:21
|
Да как он хранит...
Скорее всего, перед записью подменяет символ GS1 на (29), или что-то подобное, а где используется сохраненная в справочнике марка - в строке заменяет эту сохраненную последовательность на Симв(29)... Увидит - если не так, поправит. Потому как, непечатные символы при первом же ТиИ будут безжалостно порезаны. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |