Имя: Пароль:
1C
1С v8
Конвертация данных - Справочник - Перечисление
0 tabarigen
 
14.07.15
15:33
Переношу справочник номенкратура, в реквизитах есть СтавкаНДС, которая тоже создает ПКО. На этом ПКО и зациклился.

Смотрел книжку Бояркина там обратный пример Перечисления - Справочник.
ОбъектИсточник - СправочникСсылка.СтавкиНДС
ОбъектПриемник - ПеречислениеСсылка.СтавкиНДС.

Приемник имеет предопределенные значения НДС18, НДС18_118, НДС10, НДС10_110, НДС0, БезНДС.
Источник же имеет реквизиты - НалоговаяГруппаФР, Наименование, Ставка, ПометкаНаУдаление, а также предопределенные значения: ОснованяСтавкаНДС и БезНДС.

Так вот КД сама сопоставила предопределенное значение справочника БезНДС, соответствующему значению из перечисления.
ОсноннаяСтатья соответсвует НДС10. А как быть с теми значениями в приемнике для которых нету предопределенных значений. Их надо устанавливать в обработчиках событий (каких? ПКО? ПКС я не настраиваю, а обработчиков у ПКЗ нету).

Ясен пень, что их надо брать из Справочника.СтавкиНДС (содержит значения [10%, 18%, БезНДС]). Но как это сделать.
1 tabarigen
 
14.07.15
15:34
https://yadi.sk/i/Ehwhk8tuhrfLq
скрин настроек ПКЗ
2 daniel63
 
14.07.15
15:36
В демо базе есть пример, число в перечисление, тут тоже самое.
3 ixijixi
 
14.07.15
16:04
Обработчики "Правила конвертации свойств"
Перед выгрузкой
Значение - Неопределено. Конвертируемое значение свойства. Если значение определить в теле обработчика, то стандартная процедура получения значения не будет происходить.
4 tabarigen
 
14.07.15
16:09
Спасибо за наводку.
В демо базе действительно есть полностью идентичный пример.

В ПКО СтавкиНДС в обработчике перед выгрузкой прописал.

Приемник = Источник;

После выгрузки:
Если ПустоеЗначение(Источник) = 1 Тогда
    
    УзелСсылки = "НДС0";
    
ИначеЕсли Источник.Ставка = 0 Тогда
    
    УзелСсылки = "НДС0";
    
ИначеЕсли Источник.Ставка = 10 Тогда
    
    УзелСсылки = "НДС10";
    
ИначеЕсли Источник.Ставка = 9.09 тогда
    
    УзелСсылки = "НДС10_110";
    
ИначеЕсли Источник.Ставка = 18 тогда
    
    УзелСсылки = "НДС18";
    
ИначеЕсли Источник.Ставка = 15.25 тогда
    
    УзелСсылки = "НДС18_118";
    
ИначеЕсли Источник.Ставка = 20 тогда
    
    УзелСсылки = "НДС20";
    
ИначеЕсли Источник.Ставка = 16.67 тогда
    
    УзелСсылки = "НДС20_120";
    
ИначеЕсли Источник.Ставка < 5 тогда
    
    УзелСсылки = "НДС0";
    
ИначеЕсли Источник.Ставка < 14 тогда
    
    УзелСсылки = "НДС10";
    
ИначеЕсли Источник.Ставка < 19 тогда
    
    УзелСсылки = "НДС18";
    
Иначе
    
    УзелСсылки = "НДС20";
    
КонецЕсли;

Отказ = 1;



Вы выгрузке данных выдается ошибка


Начало выгрузки:   14.07.2015 16:08:36

Ошибка в обработчике события ПослеВыгрузкиОбъекта
    ПКО                    =  СтавкиНДС  (Справочник: Ставки НДС)
    Объект                 =  10%  (Ставки НДС)
    Обработчик             =  ПослеВыгрузкиОбъекта
    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,6)}: Процедура или функция с указанным именем не определена (ПустоеЗначение)
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9659)
    КодСообщения           =  43

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1620)}: Ошибка в обработчике события ПослеВыгрузкиОбъекта
    ПКО                    =  СтавкиНДС  (Справочник: Ставки НДС)
    Объект                 =  10%  (Ставки НДС)
    Обработчик             =  ПослеВыгрузкиОбъекта
    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,6)}: Процедура или функция с указанным именем не определена (ПустоеЗначение)
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9659)
    КодСообщения           =  43


p.s Как тут форматировать текст??
5 MadJhey
 
14.07.15
16:12
Процедура или функция с указанным именем не определена (ПустоеЗначение)
6 MadJhey
 
14.07.15
16:12
Куда засунул ПустоеЗначение?
7 tabarigen
 
14.07.15
16:15
в ПКО обработчик ПослеВыгрузки
8 MadJhey
 
14.07.15
16:23
Выгрузка из 7.7?
Если из 8 то не ЗначениеЗаполнено()

а зачем городить такой огород не проще ли использовать
в приВыгрузке
Если ставка=18 Тогда
Значение = "НДС18"
иначе ....
9 tabarigen
 
14.07.15
16:27
Выгрузка из 8.
Управление Аптекой -> Управление Аптечной сетью
10 MadJhey
 
14.07.15
16:29
Нет в 8.2 функции -  ПустоеЗначение, это 7.7
11 Naumov
 
14.07.15
16:31
(9) Демопример для 8.0 еще написан. с 8.1 ПустоеЗначение меняли на "не ЗначениеЗаполнено()"
12 tabarigen
 
14.07.15
17:22
Уфф... Только что Номенкоатура переносилась иерархически, и вдруг перестала. Что трогал не помню, но вроде в настройках порядок.
Скрин с настройками ниже
https://yadi.sk/i/10435D4ohrq7n.

Что за крестик у ПКО номенклатура?
13 VikingKosmo
 
14.07.15
17:26
Крестик означает, что поиск будет идти не только по ссылке, а и по полям поиска ЕМНИП
14 tabarigen
 
14.07.15
17:27
а почему не переходят группы?? Галочка напротив этогрупа и родитель стоят.
15 VikingKosmo
 
14.07.15
17:29
(14) ну ты спросил... Я ж понятия не имею, что там в правилах нарисовано то
16 tabarigen
 
14.07.15
19:59
https://yadi.sk/i/10435D4ohrq7n
ссылку дал ведь с настройками.
17 tabarigen
 
15.07.15
13:38
В общем дела такие парни.  Запарился я с вашей Конвертацией)) плюнул бы на все если бы не имел привычку доводить дело до конца.
В ПКО Перед выгрузкой пишу:

Приемник = Источник;

В ПКО После выгрузки пишу:

Если Не ЗначениеЗаполнено(Источник) = 1 Тогда
    
    УзелСсылки = "НДС0";
    
ИначеЕсли Источник.Ставка = 0 Тогда
    
    УзелСсылки = "НДС0";
    
ИначеЕсли Источник.Ставка = 10 Тогда
    
    УзелСсылки = "НДС10";
    
ИначеЕсли Источник.Ставка = 9.09 тогда
    
    УзелСсылки = "НДС10_110";
    
ИначеЕсли Источник.Ставка = 18 тогда
    
    УзелСсылки = "НДС18";
    
ИначеЕсли Источник.Ставка = 15.25 тогда
    
    УзелСсылки = "НДС18_118";
    
ИначеЕсли Источник.Ставка = 20 тогда
    
    УзелСсылки = "НДС20";
    
ИначеЕсли Источник.Ставка = 16.67 тогда
    
    УзелСсылки = "НДС20_120";
    
ИначеЕсли Источник.Ставка < 5 тогда
    
    УзелСсылки = "НДС0";
    
ИначеЕсли Источник.Ставка < 14 тогда
    
    УзелСсылки = "НДС10";
    
ИначеЕсли Источник.Ставка < 19 тогда
    
    УзелСсылки = "НДС18";
    
ИначеЕсли Источник.Ставка = Неопределено тогда
    
    УзелСсылки = "БезНДС";    
    
Иначе
    
    УзелСсылки = "НДС20";
    
КонецЕсли;

Отказ = 1;

В итоге у меня переносятся только НДС18%.
Та номенклатура у которой в базе источника стоит БезНДС принимает значение 0%.
НДС10% вообще не переносится. Единственное отличие в базе источника НДС 10% и 18% в том что 18% предопределенное значение.

Куда бы копнуть еще? Истина то рядом.
18 MadJhey
 
15.07.15
13:56
А ты настойчивый :).
Отлаживать планы обмены умеешь?
На http://www.youtube.com/watch?v=8uhKPaTEk90
Хотя косяк и так видно: У безндс в источнике какая ставка?
19 MadJhey
 
15.07.15
13:57
планы обмена
20 tabarigen
 
15.07.15
14:14
А нет никакой ставки у БезНДС. Пусто.
21 tabarigen
 
15.07.15
16:29
Пробую отладчиком перехватить обработчик ПКО.

В формируемом отладчиком модуле приемника нет моего кода обработчика ПКО, для того чтоб поставить точку останова.

В формируемом отладчиком модуле источника такой код есть, но там событие не перехватывается ибо событие это после выгрузки.

Как быть то?
22 Абыр
 
15.07.15
17:49
(21) В ПКО для ставок в обработчике "Перед выгрузкой" задавай в Приемник строковый идентификатор значения перечисления в базе-приемнике.
23 tabarigen
 
16.07.15
09:02
(22) че нить полегче для моего мозга сказали бы что ле)
24 MrKartez
 
16.07.15
10:59
У тебя каждый раз условие попадает в ЕСЛИ
Смотри, будет ставка 0, оно у тебя войдет во все ЕСЛИ, 0 же будет и меньше 5 и меньше 19 одновременно. Следовательно, будет возвращено последнее значение при <19. Самое простое что приходит на ум, сделать двойное условие. 5<СтавкаНДС и СтавкаНДС<19.
25 tabarigen
 
16.07.15
14:11
Так и не удалось правильно прописать условие ((((

В итоге всей номенклатуре установил НДС10. Благо ставка ндс одинаковая у всех.
26 tabarigen
 
16.07.15
15:22
Если кому интеречно как все решилось. То надо было галочку поставить не запоимнать выгруженные. Хз как но это помогло.