Работа с Дублированием

1. user2100725 20.11.24 16:30 Сейчас в теме
Здравствуйте
Подскажите как оставить первую часть строки ДоговорНаименование и запятую, если обнаруживается дублирование. Если дублирования нет, нужно вывести полное наименование.


ДоговорНаименование = СсылкаНаОбъект.ДоговорКонтрагента.Наименование + " ,";
Если СтрНайти(ДоговорНаименование, "Приложение") = 0 Тогда
Приложение = СсылкаНаОбъект.Товары[0].ПриложенияДоговораКонтрагента.Наименование;
Если ЗначениеЗаполнено(Приложение) Тогда
СклонениеДоговора = ПолучитьСклоненияСтроки(ДоговорНаименование, , "ПД=Дательный");
ДоговорНаименование = "Приложение № " + Приложение + " к " + СклонениеДоговора[0];
КонецЕсли;
КонецЕсли;
По теме из базы знаний
Найденные решения
19. user2100725 21.11.24 09:45 Сейчас в теме
(16) Вот так решил, да, оказалось все гораздо проще
МассивЧастей = СтрРазделить(ДоговорНаименование, ".");
	МассивЧастей = Новый Массив;
	МассивНаименования = Новый Массив;
	МассивЧастей = СтрРазделить(ДоговорНаименование, ".");
	
	Если МассивЧастей.Количество() > 0 Тогда
		ДоговорНаименование = МассивЧастей[0]; 
		Для Индекс = 0 По МассивЧастей.Количество() - 1 Цикл
			Если Индекс = МассивЧастей.Количество() - 1 Тогда	
				Прервать;   
			Иначе 
				МассивНаименования.Добавить(МассивЧастей[Индекс]);
			КонецЕсли;                                            
		КонецЦикла;
	КонецЕсли;                                                    	
	ДоговорНаименованиеГотовый = СтрСоединить(МассивНаименования, ". ") + "." + " ,";
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107191 20.11.24 16:32 Сейчас в теме
(1)
если обнаруживается дублирование
Где обнаруживается? Как обнаруживается? Кем обнаруживается? Зачем обнаруживается?
3. user2100725 20.11.24 16:34 Сейчас в теме
(2) ДоговорНаименование тут дублирующие строки появляются
4. user2107191 20.11.24 16:36 Сейчас в теме
(3) А зачем ты из приложения добровольно тащишь его наименование с дублем договора? Тащи только номер.

// За такие разыменовывания по башке давать надо.
5. user2100725 20.11.24 16:47 Сейчас в теме
(4) чтобы указать что приложение к "наименованию", а если указать номер получиться что-то типа (приложение №123 к 568)
6. user2107191 20.11.24 17:01 Сейчас в теме
(5) Ты сам себя запутал. Бери отладчик и смотри что и где у тебя формируется в какой переменной.
7. Anton_new01 20.11.24 17:07 Сейчас в теме
приведи пример дублирования. и что ты под этим понимаешь.
на самом дле не совсем понятно.
9. user2100725 20.11.24 18:40 Сейчас в теме
(7) То что желтое это ДоговорНаименование, то что красное дубль, а после идет запятая
Прикрепленные файлы:
10. пользователь 20.11.24 18:44
Сообщение было скрыто модератором.
...
11. пользователь 20.11.24 18:49
Сообщение было скрыто модератором.
...
12. пользователь 20.11.24 20:24
Сообщение было скрыто модератором.
...
13. пользователь 21.11.24 08:42
Сообщение было скрыто модератором.
...
14. пользователь 21.11.24 08:47
Сообщение было скрыто модератором.
...
15. пользователь 21.11.24 08:49
Сообщение было скрыто модератором.
...
17. пользователь 21.11.24 09:28
Сообщение было скрыто модератором.
...
16. Anton_new01 21.11.24 08:57 Сейчас в теме
(9) а вообще проще собрать нужное наименование не из существующего, а из Номера и даты Документа.
таким образом не будет ни каких повторов.
18. user2107191 21.11.24 09:29 Сейчас в теме
(16) Такой же совет из (4) никак не сподвиг нашего героя на размышления.
19. user2100725 21.11.24 09:45 Сейчас в теме
(16) Вот так решил, да, оказалось все гораздо проще
МассивЧастей = СтрРазделить(ДоговорНаименование, ".");
	МассивЧастей = Новый Массив;
	МассивНаименования = Новый Массив;
	МассивЧастей = СтрРазделить(ДоговорНаименование, ".");
	
	Если МассивЧастей.Количество() > 0 Тогда
		ДоговорНаименование = МассивЧастей[0]; 
		Для Индекс = 0 По МассивЧастей.Количество() - 1 Цикл
			Если Индекс = МассивЧастей.Количество() - 1 Тогда	
				Прервать;   
			Иначе 
				МассивНаименования.Добавить(МассивЧастей[Индекс]);
			КонецЕсли;                                            
		КонецЦикла;
	КонецЕсли;                                                    	
	ДоговорНаименованиеГотовый = СтрСоединить(МассивНаименования, ". ") + "." + " ,";
Показать
8. Anton_new01 20.11.24 17:29 Сейчас в теме
если под дублированием - подразумевается повторная обработка данных...

то возможно так:
ДоговорИсходноеНаименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "ДоговорКонтрагента.Наименование");

Если СтрНайти(ДоговорИсходноеНаименование, "Приложение №") = 0 Тогда
	МассивДоговоровПриложений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "Товары").ВыгрузитьКолонку("ПриложенияДоговораКонтрагента");
	Если МассивДоговоровПриложений.Количество() Тогда
		НаименованиеДоговорПриложение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(МассивДоговоровПриложений[0], "Наименование");
		СклоненияДоговора = ПолучитьСклоненияСтроки(ДоговорИсходноеНаименование, , "ПД=Дательный");
		ДоговорНовоеНаименование = СтрШаблон("Приложение № %1 к %2", НаименованиеДоговорПриложение, СклоненияДоговора[0]);
		
	КонецЕсли;
Иначе	 
	ДоговорНовоеНаименование = ДоговорИсходноеНаименование + " ,"; // совсем не понятно зачем тут нужна запятая
	
КонецЕсли;
Показать
Оставьте свое сообщение

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