25.10.2022 14:30
AndreyZh
 
Впервые за 7 лет существования проекта сегодня встретился косяк программы "УСЕга", а так как эта ошибка от рождения и весьма неожиданная, правда не приводящая к проблемам, то на выяснение её источника потратил много времени, а всё из-за того, что изначально обязательными атрибутами КА являлись краткое и полное наименование, т.е. они всегда существали в теле XML накладных... Да и с данным поставщиком работает "всю жизнь" и никогда таких заморочек не возникало. Даже созванивался с тамошними специалистами - у них ничего не менялось??? Правда после нахождения источника косяка - всё же менялось! В новых версиях их программы была проведена, наверное от "безделия" оптимизация размеров исходящих документов. Стартовая суть вопроса - в справке по ТТН отражает ХЗ какого поставщика, но все прочие атрибуты абсолютно правильные:





Конечно первым делом изучаю файл ТТН и ... не нахожу ничего "особенного". Грешу на других - сейчас активно ковыряются в реальной базе средствами многих программ, т.е. могли типа испортить БД, удаляю этого КА вообще из БД, выяснив, что это производитель и всё равно восстановиться при перезапросе остатков... Не найдя источника проблем начал изучать "зеркало", т.е. искать, где сам когда-то мог накосячить, построчно разбирая код... и всё нашел... Конечно исправлю этот мой косяк, когда придумаю другие алгоритмы, а пока источник проблемы отражения информации. Показываю, удалив ненужную инфу:

Код:
	<ns:Owner>
		<ns:FSRAR_ID>01</ns:FSRAR_ID>
	</ns:Owner>
	<ns:Document>
		<ns:WayBill_v4>
			<wb:Identity>000164081-20221020-194011</wb:Identity>
			<wb:Header>
				<wb:NUMBER>14851</wb:NUMBER>
				<wb:Shipper>
					<oref:UL>
						<oref:FullName>Общество с ограниченной ответственностью "В...и"</oref:FullName>
					</oref:UL>
				</wb:Shipper>
				<wb:Consignee>
				</wb:Consignee>
				<wb:Transport>
				</wb:Transport>
			</wb:Header>
			<wb:Content>
				<wb:Position>
					<wb:Identity>1</wb:Identity>
					<wb:Product>
						<pref:FullName>Коньяк ординарный пятилетний региона Коньяк Селексьон Спесиаль Гранд Шампань Даниель Бужу</pref:FullName>
						<pref:Producer>
							<oref:FO>
								<oref:FullName>САРЛ Бужу</oref:FullName>
         							<oref:ShortName>САРЛ Бужу</oref:ShortName>
В предположении, что <wb:Shipper> идет в описании первыми тегами ищу его атрибуты и короткое и длинное имя... а так, как тэги по коротким именам у поставщика, покупателя они "оптимизировали", то пролетаю до первого тега краткого имени, получается в описании производителя первого товара ТТН: <oref:ShortName>САРЛ Бужу</oref:ShortName> и запоминаю его как короткое имя поставщика.

Затем программа во всех дочерних режимах наименование поставщика отражает по принципу - если есть короткое имя, то отражает его, а если нет, то отражает обрезанное длинное имя