Имя: Пароль:
1C
1С v8
Как записать данные в реквизит "ЕдиницыДляОтчетов" справочника Номенклатуры
0 SherifSP
 
31.08.12
16:16
НовНом.ЕдиницаДляОтчетов =  Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(Дбф.ED));
Возвращает пустое значение, хотя такие данные в справочнике есть
1 eklmn
 
гуру
31.08.12
16:21
Откуда он интересно есть если ты создаешь новыю номенклатуру?
2 del123
 
31.08.12
16:25
почему-то я не сомневался в авторе темы)
3 SherifSP
 
31.08.12
16:25
(1)Открыл справочник единицы измерения и посмотрел, там уже есть такая единица измерения
4 SherifSP
 
31.08.12
16:26
Справочник Единицы измерения подчинен справочнику Номенклатура
5 eklmn
 
гуру
31.08.12
16:26
(3) а владелец кто? наверно наименование у него "я будущее"
6 eklmn
 
гуру
31.08.12
16:27
ууу да тут тяжедейший случай
(2) че сразу не сказал ))
7 SherifSP
 
31.08.12
16:28
Получается надо искать не в справочнике ЕД.Изм. а в спр.Номенклатура?
8 del123
 
31.08.12
16:31
Читал справку по функции НайтиПОНаименованию()?  В частности описание параметров...
9 palpetrovich
 
31.08.12
16:32
(7) сначала находишь Номенклатуру, если есть, тогда:  
НайтиПоНаименованию(СокрЛП(Дбф.ED), , , НоменклатураВладелец)
10 eklmn
 
гуру
31.08.12
16:33
(9) у него элемент номенклатуры еще не записан даже
11 palpetrovich
 
31.08.12
16:34
(10) ну дык, тогда Записать для начала :)
12 palpetrovich
 
31.08.12
17:01
хм, я тут накидал чуток от скуки, а автор свалил ...ну не пропадать-же добру :)
// цикл по ДБФ-ке
НайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию(Дбф.Tovar);  // Tovar или как-там у тебя
Если НайденнаяСсылка =  Справочники.Номенклатура.ПустаяСсылка() Тогда // Элемент не найден, создаем
   НовыйОбъект = Справочники["Номенклатура"].СоздатьЭлемент();
   НовыйОбъект.УстановитьНовыйКод();
   НовыйОбъект.Наименование = Дбф.Tovar;
   // что там еще...
   // Базовая единица Измерения  (если есть)
   НайденнаяСсылкаКлЕд = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(Дбф.ED);
   Если НайденнаяСсылкаКлЕд = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда  // Элемент не найден, создаем
       НовыйОбъектКлЕд = Справочники["КлассификаторЕдиницИзмерения"].СоздатьЭлемент();
       НовыйОбъектКлЕд.УстановитьНовыйКод();
       НовыйОбъектКлЕд.Наименование = Дбф.ED;
       НовыйОбъектКлЕд.НаименованиеПолное = Дбф.ED;
       // что там еще...
       Попытка
           НовыйОбъектКлЕд.Записать();
           НовыйОбъект.БазоваяЕдиницаИзмерения = НовыйОбъектКлЕд.Ссылка;
       Исключение    КонецПопытки;
   КонецЕсли;
   Попытка   // промежуточная запись
       НовыйОбъект.Записать();
       НайденнаяСсылка = НовыйОбъект.Ссылка;
   Исключение    КонецПопытки;
КонецЕсли;
// единицы    
НайденнаяСсылкаЕд = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору", НовыйОбъект.БазоваяЕдиницаИзмерения, ,НайденнаяСсылка);
Если НайденнаяСсылкаЕд = Справочники.ЕдиницыИзмерения.ПустаяСсылка() Тогда  // Элемент не найден, создаем
   НовыйОбъектЕд = Справочники["ЕдиницыИзмерения"].СоздатьЭлемент();
   НовыйОбъектЕд.УстановитьНовыйКод();
   НовыйОбъектЕд.ЕдиницаПоКлассификатору = НовыйОбъект.БазоваяЕдиницаИзмерения;
   НовыйОбъектЕд.Наименование = НовыйОбъект.БазоваяЕдиницаИзмерения.Наименование;
   НовыйОбъектЕд.Владелец = НайденнаяСсылка;
   // что там еще...
   Попытка
       НовыйОбъектЕд.Записать();
       НовыйОбъект.ЕдиницаДляОтчетов = НовыйОбъектЕд.Ссылка;
   Исключение    КонецПопытки;
КонецЕсли;
Попытка  
   НовыйОбъект.Записать();
Исключение    КонецПопытки;
13 SherifSP
 
31.08.12
17:15
ниче себе от скуки
14 SherifSP
 
31.08.12
17:17
Я нашел как в типовой, только одна проблема туда передается справочник ссылка, а у меня справочник объект
15 SherifSP
 
31.08.12
17:17
// Процедура записывает единицу хранения остатков номенклатуры.
//
Процедура ПроверитьЕдиницуХраненияОстатков(Отказ)

   Если ЗначениеЗаполнено(ЕдиницаХраненияОстатков) Тогда
       Возврат;
   КонецЕсли;

   ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Ссылка);
   Если ВыборкаЕдиниц.Следующий() Тогда
       НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
   Иначе
       НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
       НайденнаяЕдиницаОбъект.Наименование            = БазоваяЕдиницаИзмерения.Наименование;
       НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
       НайденнаяЕдиницаОбъект.Коэффициент             = 1;
       НайденнаяЕдиницаОбъект.Владелец                = Ссылка;

       Попытка
           НайденнаяЕдиницаОбъект.Записать();
       Исключение
           Сообщить("Не удалось записать единицу хранения остатков: " + ОписаниеОшибки(), СтатусСообщения.Важное);
           Отказ = Истина;
           Возврат;
       КонецПопытки;

       НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка;
   КонецЕсли;

   ЕдиницаХраненияОстатков = НайденнаяЕдиница;

   Попытка
       ЗаписатьВФорме();
   Исключение
       Отказ = Истина;
   КонецПопытки;

КонецПроцедуры // ПроверитьЕдиницуХраненияОстатков()
16 del123
 
31.08.12
17:31
ну дак и посмотри как в этой же типовой туда ссылка передается, там тоже же из объекта
17 SherifSP
 
31.08.12
17:43
(16)Я могу получить ссылку с элемента, но пока не запишу она будит пустая(
18 del123
 
31.08.12
18:02
значит запиши сначала, а потом уже добавляй единицы измерения..)