Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация данных поле ЕдиницаПоКлассификатору-->ЕдиницаИзмерения,ЕдиницаПоКлассификатору

Конвертация данных поле ЕдиницаПоКлассификатору-->ЕдиницаИзмерения,ЕдиницаПоКлассификатору
Я
   Игорь_МММ
 
31.03.19 - 09:06
Как это сделать? в конф.источнике единицы измерения в документах - это Ссылка.КлассификаторЕдиницИзмерения, а в конф.приемнике - составной тип,КлассификаторЕдиницИзмерения и ЕдиницаИзмерения
 
 
   Игорь_МММ
 
1 - 31.03.19 - 09:18
(0)+ в источнике альтернативные единицы с коэффициентами заданы в тч Номенклатуры.
   PuhUfa
 
2 - 31.03.19 - 09:18
И что тебя смущает?
   Игорь_МММ
 
3 - 31.03.19 - 09:25
(2) нужно что-то вроде:
Если Единица(переданная из источника)<> Приемник.ЕдиницаИзмерения (тип=ЕдиницаПоКлассификатору) Тогда найти ЕдиницаИзмерения (тип=справочник.ЕдиницыИзмерения) по Владельцу и Наименованию
вопрос в том где это (в каких обработчиках) организовать?
   PuhUfa
 
4 - 31.03.19 - 09:52
(3) А зачем? У тебя в источнике есть тип, в приемнике есть такой же тип... вот и выгружай тип в тип, зачем изобретать грабли?
   Игорь_МММ
 
5 - 31.03.19 - 10:43
(4) в приемнике же в доках может стоять либо единица номенклатуры (базовая, она по классификатору) либо альтернативная из справочника ЕдиницыИзмерения. Там не должно быть произвольной единицы по классификатору
   Игорь_МММ
 
6 - 31.03.19 - 10:45
(5)+ пока идея такая : Единицу передать в параметр и в ПослеЗагрузки обработать
   hhhh
 
7 - 31.03.19 - 12:07
(5) ну сделай 2 правила.
   GreyK
 
8 - 31.03.19 - 12:58
(6) Зачем в параметр передавать?
Если ЕдиницаИзмерения.Коэффициент = 1 Тогда
ИмяПКО = "ЕдиницыПоКлассификатору";
Иначе
ИмяПКО = "ЕдиницыИзмерения";
КонецЕсли;
   Игорь_МММ
 
9 - 31.03.19 - 15:26
(8) ну а что такое "ЕдиницаИзмерения.Коэффициент = 1"? Передается  ЕдиницаПоКлассификатору, у нее нет коэф-та
   GreyK
 
10 - 31.03.19 - 15:41
(9) Тогда я тебя не недопонимаю, у тебя везде коэффициент = 1, значит и выгружай как ЕдиницаПоКлассификатору. В чём вопрос в (0)!?
   Игорь_МММ
 
11 - 31.03.19 - 16:16
(10) у СправочникСсылка.КлассификаторЕдиницИзмерения нет такого реквизита - Коэффициент.
   PuhUfa
 
12 - 31.03.19 - 16:36
(5) какая разница, что может стоять в приемнике. Ты переносишь данные, в источнике это КлассификаторЕдиницИзмерения значит и в приемнике это должно быть КлассификаторЕдиницИзмерения
   GreyK
 
13 - 31.03.19 - 17:10
(11) В документах реквизит ЕдиницаИзмерения не всегда нужно заполнять, нужно смотреть по конфигурации, в справочнике номенклатуры тоже не нужно, если единица измерения базовая.
   Игорь_МММ
 
14 - 31.03.19 - 17:26
(12) (13) для конкретики - переношу в унф.
чисто логически: поступит 10 шт или 10 упаковок или 10 ... (чего?)- и разницы нет)?
   GreyK
 
15 - 31.03.19 - 17:30
(14) У номенклатуры есть базовая еденица по классификатору, что там указано, по тому и будет считать программа. В УНФ не проверял, сам попробуй, у меня на УНФ аллергия :)
   Игорь_МММ
 
16 - 31.03.19 - 17:52
(15) я сейчас не могу посмотреть, но по базовой-то может и будет считать, только из источника-то выгружается не в базовой, там другая единица, у нее относительно базовой коэф.
   Игорь_МММ
 
17 - 31.03.19 - 17:55
+ (16) буду завтра тестить в таком варианте:

В ПКС Единицу передаю в параметр и в ПослеЗагрузки:

Если ПараметрыОбъекта <> Неопределено тогда
    ТаблицаПараметровТовары = ПараметрыОбъекта["ТоварыТабличнаяЧасть"];
    Если ТаблицаПараметровТовары <> Неопределено Тогда
        Для Каждого СтрокаПараметров Из ТаблицаПараметровТовары Цикл
            Если Объект.ЕдиницаИзмерения <> СтрокаПараметров.ЕдИзм Тогда
                Отбор = Новый Структура;
                Отбор.Вставить
                ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("Наименование",СтрокаПараметров.ЕдиницаИзмерения,,Объект.Запасы[СтрокаПараметров.НомерСтроки].Номенклатура);
                Объект.Запасы[СтрокаПараметров.НомерСтроки].ЕдиницаИзмерения = ЕдиницаИзмерения;
            Иначе
                Объект.Запасы[СтрокаПараметров.НомерСтроки].ЕдиницаИзмерения = Объект.ЕдиницаИзмерения;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЕсли;
   Игорь_МММ
 
18 - 31.03.19 - 17:59
сорри)
вот так:
// определение ЕдиницыИзмерения //

Если ПараметрыОбъекта <> Неопределено тогда
    ТаблицаПараметровТовары = ПараметрыОбъекта["ТоварыТабличнаяЧасть"];
    Если ТаблицаПараметровТовары <> Неопределено Тогда
        Для Каждого СтрокаПараметров Из ТаблицаПараметровТовары Цикл
            Если Объект.ЕдиницаИзмерения <> СтрокаПараметров.ЕдИзм Тогда
                ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СтрокаПараметров.ЕдиницаИзмерения.Наименование,Истина,,Объект.Запасы[СтрокаПараметров.НомерСтроки].Номенклатура);
                Объект.Запасы[СтрокаПараметров.НомерСтроки].ЕдиницаИзмерения = ЕдиницаИзмерения;
            Иначе
                Объект.Запасы[СтрокаПараметров.НомерСтроки].ЕдиницаИзмерения = Объект.ЕдиницаИзмерения;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЕсли;
   Игорь_МММ
 
19 - 02.04.19 - 17:36
может кому понадобится ...) (рабочий вариант):

// определение ЕдиницыИзмерения //

Если ПараметрыОбъекта <> Неопределено тогда
    ТаблицаПараметровЗапасы = ПараметрыОбъекта["ЗапасыТабличнаяЧасть"];
    Если ТаблицаПараметровЗапасы <> Неопределено Тогда
        Для Каждого СтрокаПараметров Из ТаблицаПараметровЗапасы Цикл
            ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СтрокаПараметров.ЕдИзм,Истина);
            Если Объект.Запасы[СтрокаПараметров.НомерСтроки].Номенклатура.ЕдиницаИзмерения <> ЕдиницаПоКлассификатору Тогда
                ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СтрокаПараметров.ЕдИзм,Истина,,Объект.Запасы[СтрокаПараметров.НомерСтроки].Номенклатура);
                
                Объект.Запасы[СтрокаПараметров.НомерСтроки].ЕдиницаИзмерения = ЕдиницаИзмерения;
                
            Иначе
                
                Объект.Запасы[СтрокаПараметров.НомерСтроки].ЕдиницаИзмерения = ЕдиницаПоКлассификатору;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЕсли;

Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.