Консультация № 135254
04.05.2008, 08:33
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты. Помогите, запутался. 1с 8.1. УПП 1.2
Есть Справочник "Единицы Измерения", Справочник "Классификатор Единиц Измерения", Справочник "Номенклатура", который также содержит в себе единицу измерения.
Как правильно (написание кода) вытащить единицу измерения, чтобы при создании(написании кода) документа, у которого есть табличная часть с реквизитом "Единица Измерения", этот
реквизит был корректно заполнен.
Код Единицы Измерения вытаскиваю из ДБФ. И нахожу по нему Базовую Единицу Измерения в Классификаторе Единиц Измерения. С этим проблем нет. Как дальше правильно поступить?
Исправьте мой код.
Спасибо. Очень жду ответов.

Приложение:
БазЕдИзм=Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(СтрЗаменить(СокрЛП(ФайлДБФЕдИзм.ID_1C_S),Символ(160),"")); Если Не БазЕдИзм = НЕопределено Тогда Если ОбъектНоменклатуры.БазоваяЕдиницаИзмерения = БазЕдИзм Тогда //ОбъектНоменклатуры - Владелец Единицы Измерения.Отбор1=НовыйCтруктура("Наименование",БазЕдИзм.Наименование);//Отбор1=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазЕдизм);Выборка1=Справочники.ЕдиницыИзмерения.Выбрать(,ОбъектНоменклатуры.Ссылка,Отбор1,); Если Выборка1.Следующий() Тогда ЕдИзм = Выборка1.ПолучитьОбъект(); КонецЕсли; КонецЕсли; КонецЕсли;Стр = Док.Товары.Добавить();//Док - Документ "Поступление Товаров и Услуг"Стр.ЕдиницаИзмерения = ЕдИзм;//Реквизит Табличной части

Обсуждение

Неизвестный
04.05.2008, 09:01
общий
это ответ
Здравствуйте, Роман Андреевич!
При создании элемента справочника Номенклатура, создается единица хранения остатков (элемент справочника Единицы измерения), в этой единице нужно указать единицу по классификатору, и др. поля. Потом сохранить единицу, потом записать эту единицу в поле ЕдиницаХраненияОстатков.
Неизвестный
04.05.2008, 17:32
общий
это ответ
Здравствуйте, Роман Андреевич!

Вы можете открыть выборку подчинённого номенклатуре справочника единиц измерения, и найти нужный элемент по наименованию или коду (чем представлена единица товара в таблице DBF?).

В Приложении код функции, возвращающей <i>базовую единицу</i> товара. В ней параметр Товар - элемент справочника Номенклатура, Товар.БазоваяЕдиница - базовая единица товара.

Успехов!
С уважением, Владимир.

Приложение:
Функция ВернутьБазовуюЕдиницуТовара(Товар) Перем ЕдиницыТовара; Перем ТипБазовойЕдиницы; Если ПустоеЗначение(Товар) = 1 Тогда // проверка на всякий случай глТрассировка("Не задан товар!",0); Возврат 0; КонецЕсли; ТипБазовойЕдиницы = Товар.БазоваяЕдиница; ЕдиницыТовара = СоздатьОбъект("Справочник.Единицы"); ЕдиницыТовара.ИспользоватьВладельца(Товар); ЕдиницыТовара.ВыбратьЭлементы();/////////////////////////////////////// обратите внимание на этот цикл: Пока ЕдиницыТовара.ПолучитьЭлемент()=1 Цикл Если ЕдиницыТовара.Единица = ТипБазовойЕдиницы Тогда Возврат ЕдиницыТовара.ТекущийЭлемент(); КонецЕсли; КонецЦикла;/////////// вот создание элемента подчинённого справочника: // если дошли до этого места, то у товара нет базовой единицы измерения // нужно ее создать и вернуть Если ПустоеЗначение(Товар.БазоваяЕдиница) = 1 Тогда Сообщить("У товара "+СокрЛП(Товар.Наименование)+РазделительСтрок+ "не задан тип базовой единицы!"); Возврат 0; КонецЕсли; ЕдиницыТовара.Новый(); ЕдиницыТовара.Единица = Товар.БазоваяЕдиница; ЕдиницыТовара.Наименование = Товар.БазоваяЕдиница.Наименование; // коэффициент у базовой единицы может быть равен только 1. ЕдиницыТовара.Коэффициент = 1; Попытка ЕдиницыТовара.Записать(); Исключение глТрассировка("Невозможно создать базовую единицу товара "+СокрЛП(Товар.Наименование),0); Возврат 0; КонецПопытки; Возврат ЕдиницыТовара.ТекущийЭлемент();КонецФункции
Форма ответа