Имя: Пароль:
1C
 
Маркировка обуви из РБ - TRANSBORDER против FOREIGN в Розница 2.3.
0 Гений 1С
 
гуру
09.07.20
15:23
При запросе в API по марке по адресу: api/v3/facade/identifytools/info?cis=XXXXXXXXXXXXXXXXX
Возвращается информация по марке, что ее  "emissionType" равен "FOREIGN".
Уточнили у производителя обуви, они ответили, что всегда так регистрировали нанесенные на обувь знаки.
Если попытаться зарегистрировать эту марку со способом ввода в оборот "Ввоз из стран ЕАЭС" (TRANSBORDER), то 1С ругается на несоответствие emissionType.
Можно, конечно, попытаться отключить этот контроль (но база РИБ, довольно долго), да и думаю, что ЧЗ даст отказ от ввода в оборот.
Что скажете, господа, как с этим бороться, есть идеи?

Если вводить под способом "Ипорт в РФ" (FOREIGN) там нужно указывать номера ГТД и прочее, чего у белорусских поставок нет по определению.
1 timurhv
 
10.07.20
10:29
(0) support@crpt.ru
2 Гений 1С
 
гуру
10.07.20
15:25
(1) уже, но там не спешат с ответом.
3 Гений 1С
 
гуру
13.07.20
17:53
Из ЧЗ ответили: "На данный момент такой способ ввода в оборот не доступен".
И куда бедному христианину податься?
4 timurhv
 
14.07.20
11:44
(3) Списывать, описывать в национальном каталоге, заказывать новые, клеить.
5 Гений 1С
 
гуру
14.07.20
16:07
(4) видишь ли в ЛК честном знаке при заказе эмиссии до сих пор нет типа TRANSBORDER, т.е. завод не может заказать такие марки. ;-)
6 Гений 1С
 
гуру
23.07.20
19:01
В общем в ЧЗ сказали, что эмитированные как Foreign можно вводить в оборот как Transborder. Это несколько меняет логику 1С
Научился делать замены в расширениях и сделал расширение, которое меняет всю эту историю. Кому интересно, вот код:


Модуль ШтрихкодированиеИСМПСлужебный:

&Вместо("ПроверитьНаОшибкиСтрокиДерева")
Процедура Осипов_ПроверитьНаОшибкиСтрокиДерева(СтрокиДерева, ПравилаПроверкиНаОшибки, ПараметрыСканирования, ДанныеКодовМаркировок, ЕстьОшибки)
    
    Если ПравилаПроверкиНаОшибки.Свойство("КонтрольВладельца") Тогда
        СведенияОбОрганизации = Новый Структура();
        СведенияОбОрганизации.Вставить("ИНН", "");
        
        ИнтеграцияИСПереопределяемый.ЗаполнитьСведенияОбОрганизации(ПараметрыСканирования.Владелец, СведенияОбОрганизации);
        ОжидаемыйИННВладельца = СведенияОбОрганизации.ИНН;
        
    КонецЕсли;
    
    Для Каждого СтрокаДерева Из СтрокиДерева Цикл
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольСтатусов") Тогда
            ДопустимыеСтатусыИСМП = ПравилаПроверкиНаОшибки.КонтрольСтатусов.ДопустимыеСтатусы;
            Если ДопустимыеСтатусыИСМП.Найти(СтрокаДерева.Статус) = Неопределено
                Или СтрокаДерева.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар
                И ДопустимыеСтатусыИСМП.Найти(Перечисления.СтатусыКодовМаркировкиИСМП.Неопределен) <> Неопределено
                И СтрокаДерева.Статус = Перечисления.СтатусыКодовМаркировкиИСМП.Неопределен Тогда
                
                ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольСтатусов.КоллекцияСтрокСОшибками.Добавить(СтрокаДерева);
                
            КонецЕсли;
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольСпособаВводаВОборот") Тогда
            
            Если ЗначениеЗаполнено(ПараметрыСканирования.ДопустимыйСпособВводаВОборот)
                И СтрокаДерева.Статус <> Перечисления.СтатусыКодовМаркировкиИСМП.Неопределен
                И СтрокаДерева.СпособВводаВОборот <> ПараметрыСканирования.ДопустимыйСпособВводаВОборот
                //Осипов 2020-07-23
                //Для трансграничной торговли не контролируем +++
                И НЕ
                (СтрокаДерева.ДопустимыйСпособВводаВОборот = Перечисления.СпособыВводаВОборотСУЗ.ТрансграничнаяТорговля
                И СтрокаДерева.СпособВводаВОборот = Перечисления.СпособыВводаВОборотСУЗ.Импорт)
                //---
                Тогда
                
                
                
                ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольСпособаВводаВОборот.Добавить(СтрокаДерева);
                
            КонецЕсли;
            
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольВладельца") Тогда
            Если СтрокаДерева.Статус <> Перечисления.СтатусыКодовМаркировкиИСМП.Неопределен
                И СтрокаДерева.ИННВладельца <> ОжидаемыйИННВладельца Тогда
                
                ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольВладельца.Добавить(СтрокаДерева);
                
            КонецЕсли;
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольКодовВводаОстатков") Тогда
            
            НайденнаяСтрока = ДанныеКодовМаркировок.Найти(СтрокаДерева.Штрихкод, "КодМаркировки");
            
            Если НайденнаяСтрока <> Неопределено
                И НайденнаяСтрока.МаркируемаяПродукция
                И (Не НайденнаяСтрока.ЭтоКодВводаОстатков И ПараметрыСканирования.ЭтоМаркировкаОстатков
                Или НайденнаяСтрока.ЭтоКодВводаОстатков И Не ПараметрыСканирования.ЭтоМаркировкаОстатков) Тогда
                
                ПравилаПроверкиНаОшибки.КонтрольКодовВводаОстатков.Добавить(СтрокаДерева);
                ЕстьОшибки = Истина;
                
            КонецЕсли;
            
            Если ПравилаПроверкиНаОшибки.Свойство("КонтрольПустыхУпаковок")
                И ИнтеграцияИСКлиентСервер.ЭтоУпаковка(СтрокаДерева.ТипУпаковки)
                И СтрокаДерева.Строки.Количество() = 0 Тогда
                
                 ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольПустыхУпаковок.Добавить(СтрокаДерева);
            
            КонецЕсли;
            
        КонецЕсли;
        
        ПроверитьНаОшибкиСтрокиДерева(СтрокаДерева.Строки, ПравилаПроверкиНаОшибки, ПараметрыСканирования, ДанныеКодовМаркировок, ЕстьОшибки);
        
    КонецЦикла;
    
КонецПроцедуры


&Вместо("ПроверитьНаОшибкиОбработанныеШтрихкоды")
Процедура Осипов_ПроверитьНаОшибкиОбработанныеШтрихкоды(ДанныеПоШтрихкодам, ПравилаПроверкиНаОшибки, ПараметрыСканирования, ЕстьОшибки)
    
    ОбработанныеШтрихкоды = ДанныеПоШтрихкодам.ОбработанныеШтрихкоды;
    Для Каждого КлючЗначение Из ОбработанныеШтрихкоды Цикл
        
        Если ДанныеПоШтрихкодам.МаркируемаяПродукция.Найти(КлючЗначение.Ключ) = Неопределено Тогда // Проверка на упаковку
            Продолжить;
        КонецЕсли;
        
        ДанныеШтрихкода = КлючЗначение.Значение;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольВладельца") Тогда
            
            СведенияОбОрганизации = Новый Структура();
            СведенияОбОрганизации.Вставить("ИНН", "");
        
            ИнтеграцияИСПереопределяемый.ЗаполнитьСведенияОбОрганизации(ПараметрыСканирования.Владелец, СведенияОбОрганизации);
            ОжидаемыйИННВладельца = СведенияОбОрганизации.ИНН;
            
            Если ДанныеШтрихкода.ИННВладельца <> ОжидаемыйИННВладельца Тогда
                
                ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольВладельца.Добавить(КлючЗначение);
                
            КонецЕсли;
            
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольСтатусов") Тогда
            ДопустимыеСтатусы           = ПравилаПроверкиНаОшибки.КонтрольСтатусов.ДопустимыеСтатусы;
            ОтсутствуетДопустимыйСтатус = (ДопустимыеСтатусы.Найти(ДанныеШтрихкода.Статус) = Неопределено
                И ДопустимыеСтатусы.Найти(ДанныеШтрихкода.ОсобоеСостояние) = Неопределено);
            Если ОтсутствуетДопустимыйСтатус
                Или ДанныеШтрихкода.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар
                И ДанныеШтрихкода.Статус = Перечисления.СтатусыКодовМаркировкиИСМП.Неопределен Тогда
                
                ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольСтатусов.КоллекцияСтрокСОшибками.Добавить(КлючЗначение);
                
            КонецЕсли;
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольСерий") Тогда
            
            Если ТребуетсяВыборСерии(ДанныеШтрихкода, ПараметрыСканирования) Тогда
                
                ПравилаПроверкиНаОшибки.КонтрольСерий.Добавить(КлючЗначение);
                
            КонецЕсли;
            
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольКодовВводаОстатков") Тогда
            
            СтрокаДанных = ДанныеПоШтрихкодам.ДанныеКодовМаркировок.Найти(ДанныеШтрихкода.Штрихкод, "КодМаркировки");
            Если Не СтрокаДанных.ЭтоКодВводаОстатков И ПараметрыСканирования.ЭтоМаркировкаОстатков
                Или СтрокаДанных.ЭтоКодВводаОстатков И Не ПараметрыСканирования.ЭтоМаркировкаОстатков Тогда
                
                ПравилаПроверкиНаОшибки.КонтрольКодовВводаОстатков.Добавить(КлючЗначение);
                ЕстьОшибки = Истина;
            
            КонецЕсли;
            
        КонецЕсли;
        
        Если ПравилаПроверкиНаОшибки.Свойство("КонтрольСпособаВводаВОборот") Тогда
            
            Если ЗначениеЗаполнено(ПараметрыСканирования.ДопустимыйСпособВводаВОборот)
                И ДанныеШтрихкода.СпособВводаВОборот <> ПараметрыСканирования.ДопустимыйСпособВводаВОборот
                //Осипов 2020-07-23
                //Для трансграничной торговли не контролируем +++
                И НЕ
                (ПараметрыСканирования.ДопустимыйСпособВводаВОборот = Перечисления.СпособыВводаВОборотСУЗ.ТрансграничнаяТорговля
                И ДанныеШтрихкода.СпособВводаВОборот = Перечисления.СпособыВводаВОборотСУЗ.Импорт)
                //---
                Тогда
                ЕстьОшибки = Истина;
                ПравилаПроверкиНаОшибки.КонтрольСпособаВводаВОборот.Добавить(КлючЗначение);
                
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры
7 Ненавижу 1С
 
гуру
24.07.20
10:16
(6) использование Вместо без ПродолжитьВызов вызывает сомнение
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой