Проверка единиц измерения

1. user1619761 04.08.21 12:10 Сейчас в теме
Здравствуйте. Вот дополнение к вопросу https://forum.infostart.ru/forum9/topic266650 . Может быть кому пригодится =). Прошу помидорами не забрасывать :D
По теме из базы знаний
Найденные решения
2. user1619761 04.08.21 12:11 Сейчас в теме
&НаКлиенте
Процедура Загрузить(Команда)
	// Вставить содержимое обработчика.
	
ЗагрузитьИзDBF();

ТабОшибокЕдИзмНоменклатуры.Очистить();

Если ПроверкаЕдИзмНоменклатуры Тогда	
	
Для Каждого Строка Из ТЧ Цикл

Товар = СокрЛП(Строка.ТоварНаим);



//////Данные таблицы значений, заполненной из дбф файла;

КодНомПДКС = СокрЛП(Строка.ТоварКод);
КодЕдИзмПДКС = СтрЗаменить(СокрЛП(Строка.КодЕдИзмПДКС),"""","");


/////Данные, полученные с помощью функций

Номенклатура1 = ПолучитьНоменклатуру(КодНомПДКС);
НаимЕдИзмПДКС = ПолучитьНаименованиеКлассификатора(КодЕдИзмПДКС);
КодЕдИзм1С = Код1СПолучить(Номенклатура1); 
ЕдИзм1СНаим = ЕдИзм1СПолучить(Номенклатура1);


/////Заполнение табличной части

ТекСтрТабОшибокЕдИзмНоменклатуры = ТабОшибокЕдИзмНоменклатуры.Добавить();

Если Не КодЕдИзм1С=КодЕдИзмПДКС Тогда
	
	ТекСтрТабОшибокЕдИзмНоменклатуры.Номенклатура = Номенклатура1;
	ТекСтрТабОшибокЕдИзмНоменклатуры.ЕдИзм1С = ЕдИзм1СНаим;
	ТекСтрТабОшибокЕдИзмНоменклатуры.ЕдИзмПарадокс = НаимЕдИзмПДКС;
	
	Если Не ЗначениеЗаполнено(ТекСтрТабОшибокЕдИзмНоменклатуры.ЕдИзм1С) Тогда  ////Проверка на пустое значение 
		
		 ТекСтрТабОшибокЕдИзмНоменклатуры.РезультатПроверки = ("Ваш текст");
		 
	 ИначеЕсли Не КодЕдИзм1С=КодЕдИзмПДКС Тогда 	 
		 
	ТекСтрТабОшибокЕдИзмНоменклатуры.РезультатПроверки = ("Ваш текст");
	
	КонецЕсли;
	
КонецЕсли;


КонецЦикла;

ПустыеСтрокиУдалить();

КонецЕсли;
	
КонецПроцедуры


//////Получаем данные для переменных

&НаСервере
Функция ПолучитьНоменклатуру(КодНомПДКС)
	
	Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодНомПДКС);
	
	Возврат Номенклатура;
	
КонецФункции

&НаСервере
Функция ПолучитьКодКлассификатора(Номенклатура1)
	
	ЕдиницыИзмеренияКод = Справочники.КлассификаторЕдиницИзмерения;
	НайденнаяСсылка = ЕдиницыИзмеренияКод.НайтиПоНаименованию(Номенклатура1);
	КодЕдИзмПДКС = НайденнаяСсылка.Код;
	
	Возврат КодЕдИзмПДКС;
	
КонецФункции

&НаСервере 
Функция ПолучитьНаименованиеКлассификатора(КодЕдИзмПДКС)
	
	ЕдИзм = Справочники.КлассификаторЕдиницИзмерения;
	НаимЕдИзмПДКС = ЕдИзм.НайтиПоКоду(КодЕдИзмПДКС);
	
	Возврат НаимЕдИзмПДКС;	
	
КонецФункции

&НаСервере
Функция Код1СПолучить(Номенклатура1)
	
	Номенклатура1 = Справочники.Номенклатура;
	НайденнаяСсылка = Номенклатура1.НайтиПоНаименованию(Номенклатура1);
	ЕдИзм1СКод = НайденнаяСсылка.ЕдиницаИзмерения.Код;
	
	Возврат ЕдИзм1СКод;
	
КонецФункции

&НаСервере
Функция ЕдИзм1СПолучить(Номенклатура1)

	ЕдИзм1СНаим = Номенклатура1.ЕдиницаИзмерения;
	
	Возврат ЕдИзм1СНаим; 
	
КонецФункции


//////Удаленяем пустых строк из таблицы значений


&НаСервере
Процедура ПустыеСтрокиУдалить()
	
	Отбор = Новый Структура("Номенклатура",Справочники.Номенклатура.ПустаяСсылка());
	    МассивПустыхСтрок = ТабОшибокЕдИзмНоменклатуры.НайтиСтроки(Отбор);
	    Для Каждого СтрокаМассива из МассивПустыхСтрок Цикл
           ТабОшибокЕдИзмНоменклатуры.Удалить(СтрокаМассива);
	КонецЦикла;
	
КонецПроцедуры


//////Заменяем единицы измерений в справочнике номенклатура на единицы измерений из файла ДБФ

&НаСервере
Процедура ЗаменитьЕдИзм()
	// Вставить содержимое обработчика.
	
	Для Каждого Строка Из ТабОшибокЕдИзмНоменклатуры Цикл
		
		Номенклатура1 = Строка.Номенклатура;
		ЕдИзмПДКС = Строка.ЕдИзмПарадокс;
		НоменклатураОбъект = Номенклатура1.ПолучитьОбъект();
		НоменклатураОбъект.ЕдиницаИзмерения = ЕдИзмПДКС;
		НоменклатураОбъект.Записать();
		
		Если Не ЗначениеЗаполнено(Строка.ЕдИзмПарадокс) Тогда
			Продолжить;
		КонецЕсли;
		
	КонецЦикла;
	
	
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1619761 04.08.21 12:11 Сейчас в теме
&НаКлиенте
Процедура Загрузить(Команда)
	// Вставить содержимое обработчика.
	
ЗагрузитьИзDBF();

ТабОшибокЕдИзмНоменклатуры.Очистить();

Если ПроверкаЕдИзмНоменклатуры Тогда	
	
Для Каждого Строка Из ТЧ Цикл

Товар = СокрЛП(Строка.ТоварНаим);



//////Данные таблицы значений, заполненной из дбф файла;

КодНомПДКС = СокрЛП(Строка.ТоварКод);
КодЕдИзмПДКС = СтрЗаменить(СокрЛП(Строка.КодЕдИзмПДКС),"""","");


/////Данные, полученные с помощью функций

Номенклатура1 = ПолучитьНоменклатуру(КодНомПДКС);
НаимЕдИзмПДКС = ПолучитьНаименованиеКлассификатора(КодЕдИзмПДКС);
КодЕдИзм1С = Код1СПолучить(Номенклатура1); 
ЕдИзм1СНаим = ЕдИзм1СПолучить(Номенклатура1);


/////Заполнение табличной части

ТекСтрТабОшибокЕдИзмНоменклатуры = ТабОшибокЕдИзмНоменклатуры.Добавить();

Если Не КодЕдИзм1С=КодЕдИзмПДКС Тогда
	
	ТекСтрТабОшибокЕдИзмНоменклатуры.Номенклатура = Номенклатура1;
	ТекСтрТабОшибокЕдИзмНоменклатуры.ЕдИзм1С = ЕдИзм1СНаим;
	ТекСтрТабОшибокЕдИзмНоменклатуры.ЕдИзмПарадокс = НаимЕдИзмПДКС;
	
	Если Не ЗначениеЗаполнено(ТекСтрТабОшибокЕдИзмНоменклатуры.ЕдИзм1С) Тогда  ////Проверка на пустое значение 
		
		 ТекСтрТабОшибокЕдИзмНоменклатуры.РезультатПроверки = ("Ваш текст");
		 
	 ИначеЕсли Не КодЕдИзм1С=КодЕдИзмПДКС Тогда 	 
		 
	ТекСтрТабОшибокЕдИзмНоменклатуры.РезультатПроверки = ("Ваш текст");
	
	КонецЕсли;
	
КонецЕсли;


КонецЦикла;

ПустыеСтрокиУдалить();

КонецЕсли;
	
КонецПроцедуры


//////Получаем данные для переменных

&НаСервере
Функция ПолучитьНоменклатуру(КодНомПДКС)
	
	Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодНомПДКС);
	
	Возврат Номенклатура;
	
КонецФункции

&НаСервере
Функция ПолучитьКодКлассификатора(Номенклатура1)
	
	ЕдиницыИзмеренияКод = Справочники.КлассификаторЕдиницИзмерения;
	НайденнаяСсылка = ЕдиницыИзмеренияКод.НайтиПоНаименованию(Номенклатура1);
	КодЕдИзмПДКС = НайденнаяСсылка.Код;
	
	Возврат КодЕдИзмПДКС;
	
КонецФункции

&НаСервере 
Функция ПолучитьНаименованиеКлассификатора(КодЕдИзмПДКС)
	
	ЕдИзм = Справочники.КлассификаторЕдиницИзмерения;
	НаимЕдИзмПДКС = ЕдИзм.НайтиПоКоду(КодЕдИзмПДКС);
	
	Возврат НаимЕдИзмПДКС;	
	
КонецФункции

&НаСервере
Функция Код1СПолучить(Номенклатура1)
	
	Номенклатура1 = Справочники.Номенклатура;
	НайденнаяСсылка = Номенклатура1.НайтиПоНаименованию(Номенклатура1);
	ЕдИзм1СКод = НайденнаяСсылка.ЕдиницаИзмерения.Код;
	
	Возврат ЕдИзм1СКод;
	
КонецФункции

&НаСервере
Функция ЕдИзм1СПолучить(Номенклатура1)

	ЕдИзм1СНаим = Номенклатура1.ЕдиницаИзмерения;
	
	Возврат ЕдИзм1СНаим; 
	
КонецФункции


//////Удаленяем пустых строк из таблицы значений


&НаСервере
Процедура ПустыеСтрокиУдалить()
	
	Отбор = Новый Структура("Номенклатура",Справочники.Номенклатура.ПустаяСсылка());
	    МассивПустыхСтрок = ТабОшибокЕдИзмНоменклатуры.НайтиСтроки(Отбор);
	    Для Каждого СтрокаМассива из МассивПустыхСтрок Цикл
           ТабОшибокЕдИзмНоменклатуры.Удалить(СтрокаМассива);
	КонецЦикла;
	
КонецПроцедуры


//////Заменяем единицы измерений в справочнике номенклатура на единицы измерений из файла ДБФ

&НаСервере
Процедура ЗаменитьЕдИзм()
	// Вставить содержимое обработчика.
	
	Для Каждого Строка Из ТабОшибокЕдИзмНоменклатуры Цикл
		
		Номенклатура1 = Строка.Номенклатура;
		ЕдИзмПДКС = Строка.ЕдИзмПарадокс;
		НоменклатураОбъект = Номенклатура1.ПолучитьОбъект();
		НоменклатураОбъект.ЕдиницаИзмерения = ЕдИзмПДКС;
		НоменклатураОбъект.Записать();
		
		Если Не ЗначениеЗаполнено(Строка.ЕдИзмПарадокс) Тогда
			Продолжить;
		КонецЕсли;
		
	КонецЦикла;
	
	
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот