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

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