Доброго времени суток. Пишу правило выгрузки через КД, рарус в бп 2.0. Но возникла проблема сдвумя справочниками, Ставки НДС(частично уже решил) И ХозОперации. Конвертация происходит СПР = Перечисления. Подскажите как лучше это произвести. Что бы выгружалось все эдентично.
---
Условие должно выглядеть как то так:

Если Источник.Предопределенный Тогда
  ИмяПКО = "СтавкиНДС";
ИначеЕсли Источник.Ставка = 10 Тогда // или как тут можно однозначно идентифицировать значение ставки
  Значение = "НДС10";
КонецЕсли;
---
PhoenixAOD, в чем именно сложность?
---
PhoenixAOD, получилось у тебя решить проблему?
---
Можно и по такому варианту
http://1c8k.wordpress.com/2012/12/24/%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0­%B0%D1%86%D0%B8%D1%8F-%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA­-%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD­%D0%B8%D0%B5/
---
<Свойство>
 <Код>8</Код>
 <Наименование>СтавкаНДС --> СтавкаНДС</Наименование>
 <Порядок>800</Порядок>
 <Источник Имя="" Вид=""/>
 <Приемник Имя="СтавкаНДС" Вид="Реквизит" Тип="ПеречислениеСсылка.СтавкиНДС"/>
<ПередВыгрузкой>Ставка = Источник.СтавкаНДС.Получить(Параметры.ДатаКонцаПериодаВыгрузки).Ставка;

Если Ставка = 0 Тогда
 Значение = "БезНДС";

ИначеЕсли Ставка = 18 Тогда
 Значение = "НДС18";

ИначеЕсли Ставка = 10 Тогда
 Значение = "НДС10";

ИначеЕсли Ставка = 20 Тогда
 Значение = "НДС20";

Иначе
 Значение = "";
КонецЕсли;</ПередВыгрузкой>
</Свойство>
---
Совет в (4) можно использовать и в обратную сторону (в качестве "Значение" использовать поисковый реквизит справочника (например наименование). В этом случае надо будет передавать значение через ВходящиеДанные.
---
rgrisha, ваш вариант выводит точно так же, если сделать сделать через конвертацию значений. Почему то на НДС 10% не находится соответствие.
---
Если со ставками разобрался, то по ХозОперациям вижу два варианта: или по наименованию искать (тогда придется строго соблюдать идентичность наименований и ограничить ввод новых ХозОпераций только одной базой) либо по коду сопоставлять (справедливо правило как и для наименований). Еще можно создать РС в одной из баз и в ней хранить соответствие кодов или наименований элементов обеих баз, а в правилах, при выгрузке или загрузке, в зав-ти от того где расположен регистр, осуществлять по нему поиск нужного элемента. РС придется заполнять руками и при появлении новых элементов дополнять. Или, ограничив ввод новых элементов в одной из баз, при обмене добавляя новый элемент, тут же писать соответствие в РС, на случай если все-таки ручками что-то подправят. Но первичное сопоставление в РС все равно руками.
---
Если я правильно понял вопрос, то надо значения перечисления перенести в справочник.
В этом случае можно создать правило конвертации объектов "Перечисление" -> "Справочник" и воспользоваться закладкой "Конвертация значений". Там можно указать какое значение перечисления будет соответствовать какому значению справочника.
Вроде все.
---
1cmailru, у меня в обратном порядке, Справочник - Перечисления.
---
Ничего пока лучшего не придумали. У меня так для Справочник (УПП 1.3) -> Перечисление (77 комплексная)
```1c
    Источник_Строка = СокрЛП(Источник.РаботникиОрганизации.Получить(0).СтатьяТКРФ);//это по сути ссылка справочник.
    Если Найти(Источник_Строка,"Соглашение сторон, статья 78 Трудового кодекса Российской Федерации") > 0 Тогда
    Значение = "СоглашениеСторон";
    ИначеЕсли Найти(Источник_Строка,"Истечение срока трудового договора, статья 58 Трудового кодекса Российской Федерации, пункт 2") > 0
    или Найти(Источник_Строка,"п. 2 ст. 77 ТК. Истечение срока трудового договора") > 0 Тогда
    Значение = "ОкончаниеДоговора";
    ИначеЕсли Найти(Источник_Строка,"Увольнение по собственному желанию пункт 3 части первой статьи 77 Трудового кодекса Российской Федерации") > 0
    или Найти(Источник_Строка,"п. 3 ст. 77 ТК. Расторжение трудового договора по инициативе работника") > 0 Тогда // для выгрузки из 77 в УПП. Времено. Потом слить.
    Значение = "ПоСобственномуЖеланию";
    ИначеЕсли Найти(Источник_Строка,"Увольнение в связи с признанием работника полностью нетрудоспособным, пункт 5 статьи 81 Трудового кодекса Российской Федерации") > 0 Тогда
    Значение = "ПолнаяНетрудоспособность";
    ИначеЕсли Найти(Источник_Строка,"Увольнение в связи со смертью, пункт 6 части первой статьи 83 Трудового кодекса Российской Федерации") > 0
    или Найти(Источник_Строка,"п. 6 ст.83 ТК. Смерть работника либо работодателя - физ. лица, а также признание судом работника либо работодателя - физ. лица умершим") > 0 Тогда
    Значение = "Смерть";
    Иначе
    Значение = ";
    КонецЕсли;
```

Если это Вам так не нравиться ))), то можно свой узел создать типа (Это только при выгрузке. При загрузке тоже надо кодить.):
```1c
    ЗначениеСтатуса_Источник = Параметры.ЗначениеСтатуса_Источник;
    ЗначениеСтатуса_Приемник = Параметры.ЗначениеСтатуса_Приемник;

    УзелПарам=СоздатьУзел("ЗначениеСтатуса");
    УстановитьАтрибут(УзелПарам,"Имя","СтатусПроведения");
    УстановитьАтрибут(УзелПарам,"Тип","Строка");
    Если ЗначениеСтатуса_Источник.Проведен тогда
    Статус = "Проведен";
    Иначе
    Статус = "НеПроведен";
    КонецЕсли;
    одЗаписатьЭлемент(УзелПарам,"Значение",Статус);
    ДобавитьПодчиненный(ЗначениеСтатуса_Приемник, УзелПарам);
```
---
PhoenixAOD,
Если на момент написания правил обмена справочник заполнен, то "Конвертация значений" тоже подойдет, если значений еще нет, или надо реализовать какой-либо алгоритм переноса значений справочника в значения перечисления, то реализуем алгоритм и в конце алгоритма пишем как в
(4)
     Значение = "ИмяЭлементаПеречисленияКакОноЗаданоВКонфигураторе"

А сам алгоритм располагаем в обработчике события "При выгрузке" в правиле конвертации свойств.
Система сама подставляет указанное значение перечисления (т.е. она в xml хранит указанный идентификатор и при загрузке ищет значение перечисления по этому идентификатору)

По моему так.
---
1cmailru, так то оно так, но вот почемуто БезНДС и НДС18, заполняется, а вот НДС10 пустое значение в Бухии. И в чем проблема не могу понять((
---
1cmailru, так то оно так, но вот почемуто БезНДС и НДС18, заполняется, а вот НДС10 пустое значение в Бухии. И в чем проблема не могу понять(( Причем при выполнении алгоритма как написал rgrisha, возникает таже се сама ошибка при выгрузке: "Не найдено соотвествие значения для Источника", Именно на 10% НДС ругается.
---
PhoenixAOD, Значит надо внимательно посмотреть как написано "НДС10" в имени значения перечисления и в коде
Значение = "НДС10";
Тут или синтакситечская ошибка (типа "НДС10" и "Н ДС10"), или может быть в алгоритме Значение так остается неопределено.
// Попробуйте после
конецесли;
// написать чтото типа
Сообщить("Знач="+Значение);
---
Значит надо загрузить мд источника в КД, и проставить соответствие для НДС10 в ПКЗ (правилах конвертации значений).

Обычно ошибка "не найдено соответствие" выдается для предопределенных значений, для которых не проставлено соответствие
---
А вообще неплохо открыть книгу "Конвертация данных" Бояркина и Филатова на стр.124
---
С хоз операциями разобрался, а вот с НДС 10% запара, 18 и БезНДС сдела по предопределенным, там все пучком пошло, а вот 10 это не предопредленный элемент справочника, и он ни в какую не хочет выгружаться((( Че делать ума не приложу. Перепробовал все варианты, что были: От сюда http://www.softmaker.kz/articles/1s/konvertaciya-dannyx-1c-pravila-konvertacii-gruppy-svojstv-pkgs.html, и Бояркина перелопатил, не накает и все тут хоть ты тресни((
---
В конвертации есть типовой пример Число в Перечисление.
В правиле конвертации свойств в процедуре перед выгрузкой есть код

```1c
    Если Источник.СкидкаДляДистрибьютора = 30 Тогда

    Значение = "Скидка30";

    КонецЕсли;
```

Согласно ему Значение приравнивается к имени перечисления приемника, следовательно тебе необходимо оформить свои условия конвертации, для универсальности я бы сделал так

```1c
    значение = стрЗаменить(стрзаменить(источник.Наименование," ","),"%",");
```

только все таки предется придерживаться правил написания наименований ставок НДС
---
Хотя нет, вижу что НДС 10 не предопределенный элемент. В таком случае наверное лучше разделить ПКО ставок ндс на 2, в одном переносить предопределенные (конвертацией значений), в другом непредопределенные
---
И все таки проверьте, может кроме НДС10 еще каких-то непредопределенные значений не проставлены соответствия
---
Возвращаюсь опять к Вам Уважаемые, перепробовал вообще варианты, так же стоит острый вопрос в переносе НДС10, в источнике справочник Наименование 10%, значение число 10,00, в приемнике это пеерчисление наименование НДС10, синоним 10%, На 2 других БезНДС и НДС18% все без нареканий они предопределенные, а НДС10 не предопределенный в источнике.
---
Скрины бы с настройками правил конвертации объектов
Интересует: по каким полям идёт поиск объекта
есть ли какой код в обработчиках "перед выгрузкой" и других объекта?

и в качестве безумного совета: а не сделать ли в источнике ндс10 тоже предопределённым значением?
---
baldorc, про предопределенный это много сложнее, база очень большая за 150 Гектар перевалила, много лет документам.
---
Код есть:

```1c
    Если Источник.Ставка = 10 Тогда
    значение = "НДС10";
    КонецЕсли;
```

БезНДС и НДС18 через конвертацию значений идут так же хорошо, потому так их и оставил.
---
PhoenixAOD,
хм....а в рарусе в справочнике точно значение реквизита "ставка" числовое и равно 10?
---
baldorc, Да число, но там оно 10,00 записано. для 18% хватало 18 значение указать и все равно работало. А для 10% не канает
---
Есть подозрение, что не выполняется условие

```1c
    Если Источник.Ставка = 10 Тогда
```

Стоит попробовать выгрузить только элемент справочника ставок НДС, который 10%, и посмотреть, что там попадает в xml.
---
П(28) baldorc, проверял, значение пустое получается. Ваще не понимаю че за беда((( Другие спр нормально выгружаются, замещают найденные элементы, на то что нужно, ХозОперации идут как надо, а вот эти 10% убивают на повал просто(((
---
PhoenixAOD, Поработай в "В режиме отладки обработчиков выгрузи" (и загрузки) для "Универсального обмена ...". Посмотри.
---
PhoenixAOD, Правила каждый раз надо обновлять перед выгрузкой и смотреть, чтобы флаг отладки не стоял. И смотреть куда пишет.
---
в качестве эксперимента:

```1c
    Если Источник.Ставка = 10 Тогда
    значение = "НДС10";
    Иначе
    значение = "НДС10";
    КонецЕсли;
```

а вообще, если не сложно, то прикрепите сюда файл с правилами обмена
---
baldorc, можно вот он.
---
Судя вот по этим данныим из xml файла

<Свойство Имя="ЭтоГруппа" Тип="Булево">
  <Значение>true</Значение>
 </Свойство>
</Ссылка>
</Свойство><Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">
 <Пусто/>
</Свойство>
</Объект>
<Объект Нпп="23" Тип="ПеречислениеСсылка.СтавкиНДС" ИмяПравила="СтавкиНДС"><Ссылка Нпп="23">
 <Свойство Имя="{ИмяПредопределенногоЭлемента}" Тип="Строка">
  <Значение>БезНДС</Значение>
 </Свойство>
</Ссылка>
</Объект>

НДС10 ваще не находится(((
---
По идее, в моём примере

```1c
    Если Источник.Ставка = 10 Тогда
    значение = "НДС10";
    Иначе
    значение = "НДС10";
    КонецЕсли;
```

вне зависимости от ставки в справочнике-источнике ставка должна выгрузиться "НДС10"
а если попробовать так:

```1c
    Если Источник.Ставка = 18 Тогда
    значение = "НДС18";
    ИначеЕсли Источник.Ставка = 10 Тогда
    значение = "НДС10";
    ИначеЕсли Источник.Ставка = 0 Тогда
    значение = "БезНДС";
    Иначе
    значение = "НДС18";
    КонецЕсли;
```

и опять посмотреть что выгрузится
также стоит попробовать в конвертации значений добавить конвертацию пустого значения источника в НДС10, хотя это бред :)
---
baldorc, первый вариант не сработал((( Второй тоже самое((( Понять не могу в чем проблема(((
---
Причем второй вариант, тупо отключает поиск, и НДС вообще не выгружается, у меня такое уже было(((
---
тогда ситуация проясняется:
конвертация не понимает что такое "НДС10" и "НДС18" тоже ей незнакомо.
Можно попробовать вместо "НДС10" написать что-то типа "Перечисления.СтавкиНДС.НДС10"
и тоже самое вместо НДС18 и БезНДС
---
baldorc, пробовал. не прокатывает. НДС18 и БезНДС конвертация понимает и выгружает. А вот НДС10 нет.
---
Как вообще конвертируется Справочник в Перечисление? Через ПКО? Если так, то скриншоты ПКО для СтавкаНДС (Справочник -> Перечисление) можно увидеть? Иначе не понятно вообще.
---
Скриншоты не видны...
---
Вообще не видны?
---
403 Forbidden. Такую ошибку выдает при открытии.
---
у меня все в нормально
---
PhoenixAOD, "%" - как преобразует этот символ Xml. Посмотри что в xml-файле.
---
</Свойство><Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">
 <Пусто/>
</Свойство>

Это НДС 10%

</Свойство><Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">
 <Пусто/>
</Свойство>
</Объект>
<Объект Нпп="186" Тип="ПеречислениеСсылка.СтавкиНДС" ИмяПравила="СтавкиНДС"><Ссылка Нпп="186">
 <Свойство Имя="{ИмяПредопределенногоЭлемента}" Тип="Строка">
  <Значение>НДС18</Значение>
 </Свойство>

я это НДС18
---
При выгрузке выдает:
Не найдено соответствие для значения Источника
 Источник = 10%
 ТипИсточника = Справочник ссылка: Ставки НДС

и не выгружается это значение
---
Пиши как в (50) указали, в каждом правиле конвертации свойств, касающемся ставки НДС пиши "Если ... Значение = "НДС..."
Это надо будет сделать в каждом ПКО для данных ПКС.

По другому вряд ли получится.

Почему-то в типовых правилах для планов счетов разделяются ПКО для предопределенных значений, и для остальных счетов (и соответсвенно в ПКС прописывается Если ... ИмяПКО = "ПланСчетоПредопределенный" или ИмяПКО = ...")
---
И посмотри, что это сообщение выдаст перед сообщением в (49)
---
Вообще при конвертации справочника в перечисление есть 3 способа.
1. Передать значение перечисления в правиле конвертации свойства (СтавкаНДС -> СтавкаНДС).
Пример:
Значение = "БезНДС";
2. Тоже, что и выше, но вместо значения использовать выражение.
Пример:
Выражение = "Перечисления.СтавкиНДС.БезНДС";
3. Через ПКО.
---
Deveruchi, все это перепробовал((( Никаких результатов((( Как заколдованный круг какой то((
---
Когда первые 2 способа используешь, правило конвертации свойства убираешь?
---
Deveruchi, да убираю.
---
В самом ПКО ты не сможешь задать предопределенное значение перечисления приемника, только в ПКС
---
А у тебя точно в источник нет предопределенного значения Ставка НДС 10 ? Сделай для отладки вывод сообщения при выгрузке ставок НДС : Сообщить("Предопределенны" + Источник.Предопределенный) (это в событии "ПередВыгрузкой" для ПКО СтавкиНДС)
---
Там же для отладки можно задать: Сообщить(ТипЗнч(Источник)) Чтобы проверить тип. А то может другое правило какое ищется
---
Хотя если будешь писать в ПКС Значение = "НДС10", то возможно "ПередВыгрузкой", для ПКО СтавкиНДС и не отработает (проверить сейчас не могу). И кажется, если будешь писать в ПКС, то в нем не надо указывать ПКО
---
И вообще, пожалуй, проще сделать ставку НДС 10 предопределенной (добавить предопределенную ставку, и заменить на нее непредопредеелнную, на ИТС есть обработки по замене)
---
adva, это рарус 8.1, будь он проклят((
---
adva, а вот что проще вообще не согласен, база большая, 131000 позиций, документов приходов только в день делается около 250, не считая Z-отчетов и тд
---
adva, плюс 10 перефириек. Ваще не реально((
---
Скинь правила. Загружу посмотрю хоть.
---
Deveruchi, я его чуть выше выкладывал
---
сообщений много, хоть укажи где, а то все читать проблематично
---
Решен вопрос?
---
Посмотри как сделано в конвертации бухгалтерия 4.5 77 в бухгалтерия 2.0 или 1.6
---
Ты не там пишешь "Если ...", это надо писать в ПКС
---
Например так:

ПКО СтавкиНДС (здесь не надо)

ПКО Номенклатура
ПКС.СтавкаНДС (вот здесь и надо в "ПередВыгрузкой")
---
Сейчас попробую)))
---
странно, что до этого не попробовал, ответ был уже в (50), и кажется даже ранее
---
adva, пробовал, сразу отсек, потом решил через правило СтавкиНДС доканать, и все одно и тоже((
---
Чтобы посмотреть, где есть ссылки на ПКО Ставки НДС, встань на них, и выбери "Действия - Показать ссылки на ПКО". И во всех этих местах и надо будет исправить
---
тоже проделано?
---
adva, кажется нашел ошибку. подождите выргузится полностью номенклатура))) ошибок пока не выдает
---
Нет такая же беда((( долбанные 10% уволюсь нафиг((
---
Еще надо очистить ПКО

ПКО Номенклатура
ПКС.СтавкаНДС (здесь указано ПКО СтавкиНДС. Его надо очистить)

И выложи правила, после исправления, которые не помогли
---
теперь правило перестало работать вообще, посмотрю че за беда((
---
какое правило перестало работать? Если ты убрал ссылку на ПКО, и указал Значение = "НДС10", то правило вроде и не должно отрабатывать. А при загрузке грузится хоть? Ты много не грузи, делай отборы по номенклатуре, чтобы быстрее можно было проверять
---
adva, да прогрузка пошла в норме. Спасибо за помощь)))
---
но выгрузка вроде прошла без ошибок
---
Попробуй прикрепленные правила.
---
Условие должно выглядеть как то так:

Если Источник.Предопределенный Тогда
  ИмяПКО = "СтавкиНДС";
ИначеЕсли Источник.Ставка = 10 Тогда // или как тут можно однозначно идентифицировать значение ставки
  Значение = "НДС10";
КонецЕсли;
---
Всем спасибо, тему закрываю)))
---
```1c
    Ставка = Источник.СтавкаНДС;

    Если Ставка = 0 Тогда
    Значение = "БезНДС";

    ИначеЕсли Ставка = 18 Тогда
    Значение = "НДС18";

    ИначеЕсли Ставка = 10 Тогда
    Выражение = Строка("Перечисление.СтавкиНДС.НДС10");
```

в таком виде все пошло))