|
v7: Конвертация данных. Перечисление = > Справочник | ☑ | ||
---|---|---|---|---|
0
FREEEEs
06.09.11
✎
08:50
|
Всем привет.
Столкнулся с проблемой, сломал мозг, гуглил, но не помогла и тут как в самом мега крайнем случае, задаю вопрос. Источник: ТиС 7.7 Приемник: Бухучет 7.7. Конвертирую справочник Номенклатура, там есть реквизит СтавкаНДС, так вот, этот реквизит в источнике является перечислением, а в приемнике справочником. Сделал правила, выгружает данные. НО НЕ ЗАГРУЖАЕТ ЭТУ СТАВКУ. (к примеру значение 18%). То есть потом заходя в приемник, что бы глянуть результат, открываю номенклатуру и там после "СтавкаНДС" тупо пустое. Вырвите мне глаз, обматерите, но только помогите! |
|||
1
ДенисЧ
06.09.11
✎
08:55
|
сделай правило строка->справочник.СтавкиНДС
Где ищи по наименованию При выгрузке назначь для реквизита это правило и сделай значение=Строка(Источник.СтавкаНДС); Или сделай предопределенные значения в справочнике ставок НДС. И сопоставь значения. |
|||
2
PaulBC
06.09.11
✎
09:00
|
(0) посмотри в типовых правилах ТИС - Бух
|
|||
3
FREEEEs
06.09.11
✎
09:19
|
сделай правило строка->справочник.СтавкиНДС
-- Нефига так не работает, опять же он после загрузки в списке не указывает значение. Как бы надо передать ссылку на новый элемент чтоль. |
|||
4
nicxxx
06.09.11
✎
09:23
|
в типовых ищи. там есть рабочий вариант. в реквизите Источнике на закладке Дополнительно пиши в функции:
Если Источник = Перечисление.СтавкиНДС.БезНДС Тогда Возврат 0; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС10 Тогда Возврат 10; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС20 Тогда Возврат 20; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС9_09 Тогда Возврат 9.09; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС16_67 Тогда Возврат 16.67; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС20_120 Тогда Возврат 20/120; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС10_110 Тогда Возврат 10/110; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС18 Тогда Возврат 18; ИначеЕсли Источник = Перечисление.СтавкиНДС.НДС18_118 Тогда Возврат 18/118; КонецЕсли; реквизит-приемник - Ставка (это число), включить поиск |
|||
5
FREEEEs
06.09.11
✎
10:02
|
Где именно это писать, на закладке "Дополнительно", тока поле описание.
|
|||
6
nicxxx
06.09.11
✎
10:04
|
у тебя конвертация версии 8 что ли?
|
|||
7
FREEEEs
06.09.11
✎
10:07
|
Конвертация данных 2.1 ))
|
|||
8
nicxxx
06.09.11
✎
10:10
|
ну я для 7.7 пример дал. для 8.х это надо написать в ПередВыгрузкой, и вместо Возврат написать Значение =
|
|||
9
FREEEEs
06.09.11
✎
10:13
|
Ну это ежу понятно что тупо писать Значение =
Но результата НЕТ. Значение в поле НЕ вставляется, хотя данные выгружает. Тем более писать Значение = "18%"; можно только для предопределённых записей. |
|||
10
nicxxx
06.09.11
✎
10:14
|
ну и посмотрел бы в типовой
|
|||
11
nicxxx
06.09.11
✎
10:16
|
ПКО. Источник - ПЕречисление.СтавкиНДС, Приемник - Справочник.СтавкиНДС.
2 ПКС: 1. источник - пустой, приемник - Ставка, включен поиск в ПередВыгрузкой пиши: СтроковоеЗначениеПеречисления = Строка(Источник); СтроковоеЗначениеПеречисления = СтрЗаменить(СтроковоеЗначениеПеречисления, " ", ""); СтроковоеЗначениеПеречисления = СтрЗаменить(СтроковоеЗначениеПеречисления, "%", ""); ПозицияНДС = Найти(СтроковоеЗначениеПеречисления, "НДС"); //это буквы "НДС" Если ПозицияНДС<>0 Тогда Значение = Число(Сред(СтроковоеЗначениеПеречисления, ПозицияНДС + 3)); Иначе Значение = Число(СтроковоеЗначениеПеречисления); КонецЕсли; 2. источник - пустой, приемник - наименование ПередВыгрузкой: Значение = СокрЛП(Источник); |
|||
12
FREEEEs
06.09.11
✎
10:24
|
Мда, не чего не изменилось...
короче надоело, спасибо |
|||
13
nicxxx
06.09.11
✎
10:28
|
ыыыы, хренасе ты рабочнике, за "надоело" деньги платят?
и если че, в Бух 77, в спр Номенклатура реквизит СтавкаНДС - Периодический, поэтому в ПриЗагрузке у ПКО Номенклатура надо еще вот это написать: ДатаУстановки = ФормДатаНач; Если Объект.ЭтоГруппа() = 0 Тогда УзлыПериодического = Узел.ВыбратьУзлы("Периодический"); Для СчУзлов = 0 По УзлыПериодического.КоличествоУзлов-1 Цикл УзелПериодического = УзлыПериодического.ПолучитьУзел(СчУзлов); Имя = УзелПериодического.ПолучитьАтрибут("Имя"); Периодический = СоздатьОбъект("Периодический"); Периодический.ИспользоватьОбъект(Имя, Объект); Выборка = УзелПериодического.ВыбратьУзлы("ПериодическоеЗначение"); Для Сч = 0 По Выборка.КоличествоУзлов-1 Цикл УзелЗначения = Выборка.ПолучитьУзел(Сч); ДатаЗнач = УзелЗначения.ПолучитьАтрибут("ДатаЗнач"); Значение = УзелЗначения.ПолучитьАтрибут("Значение"); Периодический.ДатаЗнач = ДатаЗнач; Периодический.Значение = Значение; Периодический.Записать(); КонецЦикла; КонецЦикла; КонецЕсли; |
|||
14
FREEEEs
06.09.11
✎
10:36
|
nicxxx
СПАСИБО БОЛЬШОЕ ! ТЫ БОГ 1С ! Вся проблема была именно в "Периодический" И скажи ещё: 1) Как определить что объект переодический 2) И твой код выше, он универсальный? то есть можно вставлять во все переодические реквизиты? |
|||
15
nicxxx
06.09.11
✎
10:47
|
1)посмотреть в конфигураторе
2)универсальный и кстати, в ПКО Номенклатура, в ПКС СтавкаНДС в обработчике ПередВыгрузкой напиши Отказ = Источник.ЭтоГруппа(), а то будет пытаться присвоить ставку ндс группам и как следствие выдавать ошибку |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |