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

10.11.15

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Проверка ГТД
.epf 15,72Kb ver:1.0
39 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

&НаСервере
Функция ВыполнитьПроверкуГТДНаСервере(СтрокаГТД)
	
	
	Ответ = новый Структура("Успех,Текст");
	
	ОбрабатываемаяСтрокаГТД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: Проверка ГТД пройдена успешно";
	возврат Ответ;		
	
КонецФункции

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

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

4800 руб.

09.08.2016    89897    338    378    

94

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

Программа предназначена для автоматизации внешнеторговых компаний и обеспечивает документооборот валютного контроля: присвоение Уникального номера контракта (УНК), формирований сведений о валютных операциях (СВО) и справок о подтверждающих документах (СПД), прочих необходимых форм учета и отчетности по валютным операциям согласно действующему валютному законодательству Российской Федерации, документооборот валютных платежей согласно международным стандартам и документооборот купли-продажи валюты, а также выгрузку любых документов 1С в любую систему клиент-банк.

120000 руб.

13.05.2009    69486    3    29    

43

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

Экономьте часы рабочего времени и избегайте ошибок при подготовке. Решение создано специально для вас, если вы: Занимаетесь ВЭД: ваша компания регулярно отгружает товары в страны ЕАЭС Сотрудничаете с ключевыми странами союза: Беларусью, Казахстаном, Арменией и Киргизией Работаете в 1С: ведете учет в Бухгалтерии 3.0, КА 2 или ERP Продукт прошел сертификацию 1С-Совместимо и имеет полную документацию Есть демо-версия, можно поставить на свою базу и проверить функционал на нескольких отчетах

12000 руб.

10.07.2017    92680    512    161    

402

Регламентированный учет и отчетность Операции по ВЭД Закрытие периода Бухгалтер 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Расширение для заполнения реестров НДС в 1С:Бухгалтерии предприятия 3.0. Реестр по НДС: КНД 1155112, КНД 1155113, КНД 1155114, КНД 1155115.

12000 руб.

01.08.2025    2114    11    0    

12

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

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

9600 руб.

19.06.2012    143750    297    81    

245

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

В типовых конфигурациях есть документ Заявление о ввозе к оформлению (Заявление о ввозе товаров), но нет заявления о вывозе. Хотя многие участники ВЭД экспортируют товары и эта форма им возможно нужна. Обработка формирует файл xml для загрузки и печатную форму,  утвержденную постановлением Правительства Российской Федерации от 7 декабря 2015 г. № 1329

7201 руб.

10.05.2017    35058    82    39    

17

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

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

14.05.2025    5233    DeerCven    15    

57

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

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    45831    dimanich70    83    

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

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

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