Вопрос знатокам КД: конвертация перечисления - как отловить не найденное значение.

1. igorilla 24 02.03.15 19:32 Сейчас в теме
Есть:
- типовая конфигурация УТ и сильно порезанная УТ более раннего релиза.
- необходимость выгружать значения перечисления "Хозяйственные операции"
- есть не сопоставленные значения на вкладке "Конвертация значений"

Вопрос:
- как предотвратить возникновение ошибки "Не найдено соответствие для значения Источника", которое неизбежно возникает из-за значений, ненайденых в сопоставлении значений. Проверять на определенное значение и подставлять другое - не предлагайте, хочу просто во всех подобных возникающих случаях подставлять свое дефолтное значение.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Xershi 1551 03.03.15 09:52 Сейчас в теме
(1) igorilla86, у вас есть ПКО перечисление-перечисление.
В ПКЗ вы сопоставилик примеру 2 из 4 значений.

А теперь хотите остальные 2 значения обработать вручную и конвертировать в другой тип?
2. kermzyxer 10 02.03.15 20:06 Сейчас в теме
В самом перечислении Вызвать синхронизацию и указать ВСЕ типы из приемника. И сопоставить им приемлимые типы источника.
3. igorilla 24 02.03.15 21:23 Сейчас в теме
(2) kermzyxer, У меня такое ощущение, что мы говорим о разных вещах. Я так понимаю, вы говорите о неком коде в обработчиках событий, не могли бы вы привести хотя бы грубый пример без соблюдения синтаксиса? Кстати о каких типах идет речь? У меня всего один тип - Перечисление.ХозОперации.
4. kermzyxer 10 02.03.15 23:38 Сейчас в теме
Не нашел у себя перечисление Хозоперации, видимо у вас совсем старая торговля. Берем любое другое перечисление. Останавливаемся в правилах на нем. Слева внизу закладка Конвертация значений. На ней кнопка Синхронизация значений. Там будет список несопоставленных значений, если они есть. Отдельно значения из источника и значения из приемника. Вот там ставим флажки у всех значений приемника. И потом выбираем соответствующие значения из источника. Выбирайте, какие Вам нравятся, хоть одно и то же для всех.
5. igorilla 24 02.03.15 23:56 Сейчас в теме
(4) kermzyxer, теперь читаем внимательно мое первое сообщение - "Проверять на определенное значение и подставлять другое - не предлагайте, хочу просто во всех подобных возникающих случаях подставлять свое дефолтное значение.", а также "есть не сопоставленные значения на вкладке "Конвертация значений". И там нет никаких типов,есть значения. Хоз.операции - это ХозяйственныеОперации, неужели так сложно догадаться.
Мне нужно как-то в обработчике определить, найдено значение в синхронизированных значениях или нет.
6. kermzyxer 10 03.03.15 02:25 Сейчас в теме
Проверять на определенное значение и подставлять другое - не предлагайте, хочу просто во всех подобных возникающих случаях подставлять свое дефолтное значение. Проверять и не предлагал, а предлагал проставить дефолтное значение для несопоставленных объектов. Ну а хочется странного - флаг Вам в руки. Передайте все имеющиеся значения в параметр и анализируйте в обработчике. Но мешает Ваше не предлагайте проверять. Формулируйте точнее, не придется тратить время, на внимательное чтение
7. igorilla 24 03.03.15 09:30 Сейчас в теме
(6) kermzyxer, формулировка точнее некуда, неточными формулировка вы страдаете ("указать ВСЕ типы из приемника"). Странным может показаться тому, кто не в состоянии понять.
9. Xershi 1551 03.03.15 09:59 Сейчас в теме
У меня было ПКО1 перечисление1-справочник1 и ПКО2 перечисление1-справочник2.
ПКО2 должно быть 2 по списку если использовать метод в ПКО перед выгрузкой:
Если Источник = Перечисления.ВидыПлатежейВГосБюджет.Налог Тогда
	ИмяПКО = "ПлатежиВБюджет";
	ПКО = НайтиПравило(Источник, ИмяПКО);
	//ВыгрузитьПоПравилу(РасходыПоСтрахованию,
	//					Неопределено,
	//					Неопределено,
	//					Неопределено,
	//					"ПлатежиВФонды",
	//					,
	//					,
	//					);				
					 	
КонецЕсли;
Показать

А если использовать закомментированный код, то ПКО2 должно идти первым в списке всех ПКО
10. igorilla 24 03.03.15 10:21 Сейчас в теме
(9) Xershi, "Если Источник = Перечисления.ВидыПлатежейВГосБюджет.Налог Тогда" вот такого я не хочу делать, новые значения перечисления добавляются частенько, я не хочу каждый раз код добавлять, хочу универсальное решение, позволяющее отследить ситуацию, когда значение не найдено.
11. Xershi 1551 03.03.15 10:36 Сейчас в теме
(10) igorilla86, пиши тогда:
Если Источник <> Перечисления.ВидыПлатежейВГосБюджет.Налог Тогда
12. Xershi 1551 03.03.15 10:36 Сейчас в теме
(10) igorilla86, перечисление это должна быть статика иначе какое это перечисление...
13. igorilla 24 03.03.15 10:52 Сейчас в теме
(12) Xershi, как я писал в своем первом сообщении. у меня есть конфа, которую мы из типовой УТ годовалого релиза запилили, добавлять новое мы не хотим, так как конфа узкоспециализированная, нас наше перечисление "Хоз.операции" полностью устраивает, а ошибок при выгрузке хочется избежать каким-то универсальным путем без постоянных редакций.
Но вы мне своим листингом подсказали идею, так что спасибо)
14. igorilla 24 03.03.15 11:47 Сейчас в теме
Вопрос решился таким кодом, имя соответствия меняется в зависимости от варианта выгрузки, через внешнюю обработку или через внутренние.

Если Параметры.ОбменЧерезКонвертацию Тогда
СоответствиеЗначений = ПКО.ЗначенияПредопределенныхДанных;
Иначе
	СоответствиеЗначений = ПКО.Значения;
КонецЕсли;

Если СоответствиеЗначений[Источник] = Неопределено Тогда
	Отказ = Истина;
КонецЕсли;
Показать
15. Федосеев 19.03.15 07:55 Сейчас в теме
(14) igorilla86, Можно прописать если на этапе загрзке значение перечисления неопределено то ставить дефолтное
Оставьте свое сообщение

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