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

10.11.15

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Проверка ГТД
.epf 15,72Kb ver:1.0
38
38 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

См. также

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

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

9600 руб.

19.06.2012    140506    276    81    

234

Операции по ВЭД Файловый обмен (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    84380    316    375    

77

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

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

7201 руб.

10.05.2017    34030    81    39    

16

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

Загрузка справочника ТНВЭД в базу данных 1С без изменения конфигурации. База кодов загружается с сайта www.nalog.ru или локального ресурса. После загрузки - справочник всегда под рукой! Реализован поиск по загруженной базе. Доступны примечания для групп справочника (комментарии налогового органа). Дополнительно реализовано занесение кодов ТНВЭД в справочники ИБ (например, справочник Номенклатура) как реквизита или свойства справочника. Подходит для всех стандартных конфигураций (БП 2.0, УПП 1.3, КА 1.1, УТ 10.3, Розница 1 и пр., написанных под обычные формы).

3100 руб.

29.09.2015    56877    15    4    

39

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

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

21.05.2024    31030    dimanich70    83    

152

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

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

1 стартмани

18.03.2024    5025    6    John_d    11    

57

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

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

12.02.2024    34949    atdonya    29    

62
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Mr.Rm 10.11.15 11:07 Сейчас в теме
ГТД на иллюстрации хорош :)
В тесктах сообщений опечатки:
"25: Ошибка распознования даты ГТД"
"33: Номер ГТД собержит нецифровые символы"
2. Mr.Rm 10.11.15 11:10 Сейчас в теме
"В текстах" же! Кстати об опечатках...
3. ogre2007 302 10.11.15 16:22 Сейчас в теме
(2) Mr.Rm,
с моей то тройкой по русскому - это мелочи, а не ошибки :)
поправил
4. CheBurator 3139 11.11.15 01:14 Сейчас в теме
Тех кто разрабатывал формат номеров ГТД - поубивать надо.. нет чтобы дату в формате год-месяц-день - так бы красиво было при сортировке по наименованию... а так - бяка получается
5. gull22 105 18.11.15 11:21 Сейчас в теме
А что есть "глубина поиска"? На что влияет?
6. ogre2007 302 19.11.15 10:41 Сейчас в теме
(5) gull22, проверяет первые N позиций, а не все
8. gull22 105 18.10.17 13:57 Сейчас в теме
(6) Я правильно понимаю, что для проверки всех ГТД надо установить N=количество элементов справочника Номера ГТД?
7. ogre2007 302 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 символов.
Оставьте свое сообщение