Имя: Пароль:
1C
1С v8
Требуется совет по переоценке ОС, загрузке из Excel
0 GreenDay1986
 
06.06.12
10:13
Загружаю из Ексель данные по переоценке. Использую конструкцию
СпрСсылка=Справочники.ОсновныеСредства.НайтиПоРеквизиту("Код",Код); где Код - код основного средства из файла Ексель. Хотелось бы загружаться не по коду а по инвентарному номеру. Но такого реквизита нет, т.к. Инвентарный номер является ресурсом регистра сведений. и следовательно конструкция
СпрСсылка=Справочники.ОсновныеСредства.НайтиПоРеквизиту("ИнвентарныйНомер",ИнНом) невозможна.
Кто - нибудь может подсказать как решить данную задачу? В каком направлении двигпться. Заранее спасибо.
1 GreenDay1986
 
06.06.12
10:13
Извиняюсь, забыл Конфигурация БП 2.0
2 salvator
 
06.06.12
10:14
А почему не НайтиПоКоду??
По теме - ищи запросом.
3 DrShad
 
06.06.12
10:16
а в РС разве не код записывается?
4 GreenDay1986
 
06.06.12
10:19
(2)Не хотят по коду. Наверное предрассудки :)
Запрос такой как понимаю, как к справочнику прицепиться теперь?
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    Рег.ИнвентарныйНомер,
   |    Рег.ОсновноеСредство
   |ИЗ
   |    РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&ДатаСведений) КАК Рег";
   
   Запрос.УстановитьПараметр("ДатаСведений", КонецДня(ТекущаяДата()));
(3) записывается, конструкцию не могу понять, там при обращении найти по реквизиту нет т.е.
СпрСсылка=РегистрыСведений.ПервоначальныйСведенияОСБУ.НайтиПоРеквизиту("ИнвентарныйНомер",Инном) тож невозможна
5 salvator
 
06.06.12
10:21
(4) Соединение РС со справочником. В (2) я имел в виду метод НайтиПоКоду вместо твоего НайтиПоРеквизиту("Код",Код)
6 GreenDay1986
 
06.06.12
10:24
(5) Им по инномеру надо, типа по нему предыдущие переоценки какой-то матерью делали :)
7 GreenDay1986
 
06.06.12
10:25
(5) насчет НайтиПоКоду() извиняюсь, затупил :)
8 xenos
 
06.06.12
10:26
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Организации.Ссылка,
   |    Организации.ИНН,
   |    Организации.КПП
   |ИЗ
   |    Справочник.Организации КАК Организации";
ТЗОрганизации = Запрос.Выполнить().Выгрузить();
       Отбор = Новый Структура();
       Отбор.Очистить();
       Отбор.Вставить("ИНН",СтрПП.ИННПлатильщика);
       Строки = ТЗОрганизации.НайтиСтроки(Отбор);
       Если Строки.Количество()=1 Тогда
           СтрПП.спрУчреждение= Строки[0].Ссылка;
       ИНачеЕсли  Строки.Количество()=0 Тогда
           СтрПП.спрУчреждение=Справочники.Организации.ПустаяСсылка();
           ОшибкиСправочников=Истина;
           Сообщить("Не наденны организации с ИНН: "+СтрПП.ИННПлатильщика+", КПП: "+СтрПП.КПППлатильщика);
       ИНачеЕсли  Строки.Количество() >1 Тогда
           СтрПП.спрУчреждение=Справочники.Организации.ПустаяСсылка();
           ОшибкиСправочников=Истина;
           Сообщить("Найденны несколько организаций с ИНН: "+СтрПП.ИННПлатильщика+", КПП: "+СтрПП.КПППлатильщика);
       КонецЕсли;    

Примерно так
9 Kreont
 
06.06.12
10:27
(4) Все правильно, запросом, а потом типа того:
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() > 1 Тогда
Сообщить("Есть дубли ИН");
Продолжить;
КонецЕсли;
Если Выборка.Следующий() Тогда
ОСоб = Выборка.ОсновноеСредство.ПолучитьОбъект();//Осли об нужен
ОСоб = Выборка.ОсновноеСредство;//а тут ссылка
...
Иначе
Сообщить("Не найден ОС");
КонецЕсли;
10 xenos
 
06.06.12
10:28
(9) Запрос в цикле?

Месье знает толк в извращениях.
11 Kreont
 
06.06.12
10:29
(10) это одноразовая задача, пофиг на время
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс