Алгоритм проверки ГТД

10.11.15

Учетные задачи - Операции по ВЭД

Алгоритм для автоматической проверки номеров грузовых таможенных деклараций.

Скачать файлы

Наименование Файл Версия Размер
Проверка ГТД
.epf 15,72Kb
38
.epf 1.0 15,72Kb 38 Скачать

Возникла проблема, что в базу попадают некорректные номера ГТД. Частично выявились грехи поставщиков, частично операторы вносили с ошибками. Пришлось подробно разобраться, т.к. на просторах интернета ничего подходящего не нашел. И родился данный код, для автоматической проверки. Во вложении обработка для анализа корректности данных в программе.

&НаСервере
Функция ВыполнитьПроверкуГТДНаСервере(СтрокаГТД)
	
	
	Ответ = новый Структура("Успех,Текст");
	
	ОбрабатываемаяСтрокаГТД1 = "";
	
	если ТипЗнч(СтрокаГТД) = Тип("СправочникСсылка.НомераГТД") тогда
		ОбрабатываемаяСтрокаГТД1 = СтрокаГТД.Код;
	иначеесли ТипЗнч(СтрокаГТД) = Тип("СправочникОбъект.НомераГТД") тогда
		ОбрабатываемаяСтрокаГТД1 = СтрокаГТД.Код;
	иначеесли ТипЗнч(СтрокаГТД) = Тип("Строка") тогда
		ОбрабатываемаяСтрокаГТД1 = СтрокаГТД;
	конецесли;
	
	
	//////первый блок    (код таможенного подразделения)   (4)     ТипЗнч
	
	Проверка10 = Найти(ОбрабатываемаяСтрокаГТД1,"/");  
	
	Если Проверка10 = 0 тогда /// не нашли слэш
		Ответ.Успех = Ложь;
		Ответ.Текст = "10: Нет слэшей в ГТД";
		возврат Ответ;
	КонецЕсли;
	ПорядковыйНомерСлэша1 = Проверка10;
	
	КодТаможенногоПодразделения = Лев(ОбрабатываемаяСтрокаГТД1,ПорядковыйНомерСлэша1-1);
	
	// номера таможенных подразделений есть в интернете, например: http://ved.customs.ru/index2.php?option=com_listnsi&view=sinnsi&url_id=V_KTAM 	
	Проверка11 = 0;
	попытка
		Проверка11 = Число(КодТаможенногоПодразделения);  
	исключение
		/// не число
		Ответ.Успех = Ложь;
		Ответ.Текст = "11: Код таможенного подразделения не числовой";
		возврат Ответ;	
	конецпопытки;
	
	Проверка12 = ?(Проверка11 >= 10000000 ИЛИ Проверка11 <= 100000 ,ложь,истина);
	// если растаможка в РФ то 8 знаков, если в странах таможенного союза, то 5 знаков
										                  
	если Проверка12 тогда
		Ответ.Успех = Ложь;
		Ответ.Текст = "12: Код таможенного подразделения не попадает в диапазон допустимых значений";
		возврат Ответ;
	конецесли;
	
	Проверка13 = СтрДлина(СокрЛП(КодТаможенногоПодразделения));
	если не (Проверка13 = 8 или Проверка13 = 5) тогда  	
		// не соответствует длина
		Ответ.Успех = Ложь;
		Ответ.Текст = "13: Длина кода таможенного подразделения отличается от 8 и 5";
		возврат Ответ;
	конецесли;
	
	
	//////второй блок   (дата выдачи)  (5)
	
	ОбрабатываемаяСтрокаГТД2 = Прав(ОбрабатываемаяСтрокаГТД1,СтрДлина(ОбрабатываемаяСтрокаГТД1) - ПорядковыйНомерСлэша1);
	
	
	Проверка20 = Найти(ОбрабатываемаяСтрокаГТД2,"/");  
	
	Если Проверка20 = 0 тогда /// не нашли слэш
		Ответ.Успех = Ложь;
		Ответ.Текст = "20: Нет второго слэша в ГТД";
		возврат Ответ;
	КонецЕсли;
	ПорядковыйНомерСлэша2 = Проверка20;
	
	ДатаПринятияГТД = СокрЛП(Лев(ОбрабатываемаяСтрокаГТД2,ПорядковыйНомерСлэша2-1));
	
	Проверка21 = 0;
	попытка
		Проверка21 = Число(ДатаПринятияГТД);
	исключение
		/// не число
		Ответ.Успех = Ложь;
		Ответ.Текст = "21: Дата содежит нецифровые символы";
		возврат Ответ;	
	конецпопытки;
	
	Проверка22 = СтрДлина(СокрЛП(ДатаПринятияГТД));
	если Проверка22 <> 6 тогда
		// не соответствует длина
		Ответ.Успех = Ложь;
		Ответ.Текст = "22: Неверный формат даты";
		возврат Ответ;
	конецесли;
	
	ДатаДД = Лев(ДатаПринятияГТД,2);
	ДатаММ = Сред(ДатаПринятияГТД,3,2);
	ДатаГГ = Прав(ДатаПринятияГТД,2);
	
	Попытка
		Проверка23 = Число(ДатаДД);
		если Проверка23 = 0 или Проверка23 > 31 тогда
			Ответ.Успех = Ложь;
			Ответ.Текст = "23: Неверный формат дня даты ГТД";
			возврат Ответ;
		конецесли;
		
		Проверка24 = Число(ДатаММ);
		если Проверка24 = 0 или Проверка24 > 12 тогда
			Ответ.Успех = Ложь;
			Ответ.Текст = "24: Неверный формат месяца даты ГТД";
			возврат Ответ;
		конецесли;
				
	исключение
		Ответ.Успех = Ложь;
		Ответ.Текст = "25: Ошибка распознования даты ГТД";
		возврат Ответ;		
	конецпопытки;
	
	//////третий блок   (порядковый номер ГТД)  (6) 
	
	ОбрабатываемаяСтрокаГТД3 = Прав(ОбрабатываемаяСтрокаГТД2,СтрДлина(ОбрабатываемаяСтрокаГТД2)-ПорядковыйНомерСлэша2);
	
	// если есть слеш, то выдергиваем номер гтд и отдельно номер товара
	
	ОбрабатываемаяСтрокаГТД4 = ""; //номер товара
	ПорядковыйНомерСлэша3 = 0; 
	НомерГТД = "";
	
	Проверка30 = Найти(ОбрабатываемаяСтрокаГТД3,"/"); 	
	
	Если Проверка30 <> 0 тогда /// нашли слэш, значит будет еще номер товара
		ПорядковыйНомерСлэша3 = Проверка30;
		ОбрабатываемаяСтрокаГТД4 = СокрЛП(Прав(ОбрабатываемаяСтрокаГТД3,СтрДлина(ОбрабатываемаяСтрокаГТД3)-ПорядковыйНомерСлэша3));
		НомерГТД = Лев(ОбрабатываемаяСтрокаГТД3,ПорядковыйНомерСлэша3-1);
	Иначе
		НомерГТД = СокрЛП(ОбрабатываемаяСтрокаГТД3)
	КонецЕсли;
	
	Проверка31 = СтрДлина(НомерГТД);
	Если Проверка31 <> 7 тогда
		Ответ.Успех = Ложь;
		Ответ.Текст = "31: Неверная длина номера ГТД (не 7)";
		возврат Ответ;	
	конецесли;
	
	// проверяем наличие "п" (предварительная), а после нее цифры	 
	Проверка32 = Лев(НомерГТД,1);
	ПрипискаП = "";
	если Проверка32 = "П" или Проверка32 = "п" тогда   // признак того, что ГТД предварительная
		НомерГТД = Прав(НомерГТД, СтрДлина(НомерГТД)-1);
		ПрипискаП = ". Наличие предварительного номера учтено";
	конецесли;
	
	Проверка33 = 0;
	попытка
		Проверка33 = Число(НомерГТД);
	исключение
		/// не число
		Ответ.Успех = Ложь;
		Ответ.Текст = "33: Номер ГТД содержит нецифровые символы" + ПрипискаП;
		возврат Ответ;	
	конецпопытки; 	
	
	// если номер товара не пустой, тогда проверяем, что он числовой
	
	если ОбрабатываемаяСтрокаГТД4 <> "" тогда
		
		Проверка34 = 0;
		попытка
			Проверка34 = Число(ОбрабатываемаяСтрокаГТД4);
		исключение
			/// не число
			Ответ.Успех = Ложь;
			Ответ.Текст = "34: Номер товара содержит нецифровые символы";
			возврат Ответ;	
		конецпопытки;	
		
		Проверка35 = Проверка34;
		Если Проверка35 = 0 или Проверка34 > 1000 тогда
			// по формату не более 1000
			Ответ.Успех = Ложь;
			Ответ.Текст = "35: Номер товара превышает допустимое значение(1000)";
			возврат Ответ;	
		конецесли;
	конецесли;
	
	Ответ.Успех = Истина;
	Ответ.Текст = "99: Проверка ГТД пройдена успешно";
	возврат Ответ;		
	
КонецФункции

Вложенная обработка позволяет:

  • Проверить одну ГТД
  • Проверить все ГТД в соответствующем справочнике (есть отсечка по глубине проверки). По результату проверки ГТД выводится список встреченных ошибок и их количество.
  • Почистить справочник Страны от дублей
  • Почистить справочник ГТД от дублей и некорректных номеров.

ГТД проверка Грузовая таможенная декларация

См. также

Загрузка файлов грузовых таможенных деклараций из файлов ФТС формата xml (Альта софт, Сигма софт, Декларант +)

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:" если что. Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные)

4000 руб.

09.08.2016    78808    291    373    

57

Автоматический подбор и заполнение ГТД для 1С:Бухгалтерия предприятия 8, редакция 3.0 (платформа 8.2 и 8.3)

Операции по ВЭД Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Мастера заполнения Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

СКАЧАЙТЕ И ПОПРОБУЙТЕ БЕСПЛАТНО! Данная обработка расширяет функционал типовой конфигурации «1С:Бухгалтерия предприятия» и позволяет осуществлять автоматическое заполнение ГТД в документах «Реализация товаров и услуг», «Списание товаров», «Отчет о розничных продажах», «Отчет комиссионера (агента) о продажах», «Требование-накладная», «Возврат товаров от покупателя», «Комплектация номенклатуры», «Безвозмездная передача», «Отчет производства за смену». Обработка предназначена для работы в конфигурации «1С:Бухгалтерия предприятия 8, редакция 3.0» Есть версия обработки оптимизированная для работы в 1CFresh

8280 руб.

19.06.2012    136768    250    81    

213

Международная товарно-транспортная накладная (CMR)

Операции по ВЭД Печатные формы Оптовая торговля Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бухгалтерский учет Платные (руб)

Под CMR подразумевается международная товарно-транспортная накладная, которая считается обязательным элементом таможенной декларации. Если вы решили пересечь границу с каким-либо товаром, то подобная накладная должна присутствовать у вас в наличии. Печатная форма подключается к типовой конфигурации актуального релиза на базе БСП (Комплексная автоматизация, Управление Торговлей 11, ERP)

6000 руб.

02.06.2020    27896    54    7    

34

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2669    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4602    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3960    ke.92@mail.ru    16    

61
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Mr.Rm 10.11.15 11:07 Сейчас в теме
ГТД на иллюстрации хорош :)
В тесктах сообщений опечатки:
"25: Ошибка распознования даты ГТД"
"33: Номер ГТД собержит нецифровые символы"
2. Mr.Rm 10.11.15 11:10 Сейчас в теме
"В текстах" же! Кстати об опечатках...
3. ogre2007 298 10.11.15 16:22 Сейчас в теме
(2) Mr.Rm,
с моей то тройкой по русскому - это мелочи, а не ошибки :)
поправил
4. CheBurator 3119 11.11.15 01:14 Сейчас в теме
Тех кто разрабатывал формат номеров ГТД - поубивать надо.. нет чтобы дату в формате год-месяц-день - так бы красиво было при сортировке по наименованию... а так - бяка получается
5. gull22 95 18.11.15 11:21 Сейчас в теме
А что есть "глубина поиска"? На что влияет?
6. ogre2007 298 19.11.15 10:41 Сейчас в теме
(5) gull22, проверяет первые N позиций, а не все
8. gull22 95 18.10.17 13:57 Сейчас в теме
(6) Я правильно понимаю, что для проверки всех ГТД надо установить N=количество элементов справочника Номера ГТД?
7. ogre2007 298 16.12.15 11:39 Сейчас в теме
Ответ на вопрос "Зачем корректные ГТД?":
1. Чтобы потом не было проблем с вычетом НДС
2. Пресекать оборот левого товара (товара чье появление в РФ под сомнением)
Natain14; +1 Ответить
9. valchara1 11.01.19 12:28 Сейчас в теме
Проверка12 = ?(Проверка11 >= 10000000 ИЛИ Проверка11 <= 100000 ,ложь,истина);
// если растаможка в РФ то 8 знаков, если в странах таможенного союза, то 5 знаков

если Проверка12 тогда
Ответ.Успех = Ложь;
Ответ.Текст = "12: Код таможенного подразделения не попадает в диапазон допустимых значений";
возврат Ответ;
конецесли;

Не правильный код. Отрабатывает с ошибкой.
вот ГТД "05100011/031218/0199547"
Первый блок имеет 8 символов, но начинается на "0", и преобразовав его в числовое значение мы получаем 7 символов. Следовательно, числовая проверка не корректна, а правильнее будет только проверка на длину кода в 8 или 5 символов.
Оставьте свое сообщение