Имя: Пароль:
1C
 
Подскажите как присвоить элементу справочника значение
0 Platon
 
11.10.04
15:01
У меня в справочнике надо заполнить элемент
Наименование, и единицу измерения только вот единица измерения не присваивается т.к. она в элемент другого справочника
Как это сделать ?
Спр.Наименование=ТабЗнач.Наименование;
Спр.ЕдИзм=ТабЗнач.Ед; ??? не катит
1 Волшебник
 
11.10.04
15:02
почему?
2 Platon
 
11.10.04
15:03
Извиняюсь не единицу измерения а счёт.
       Если тз.НайтиЗначение(СокрЛП(спр.НомерР3),стр,"Код")=1 Тогда
           тз.ТекущаяСтрока(стр);
           Если сч.НайтиПоКоду(тз.Сч)=1 Тогда
               спр.СубСчет10=сч.ТекущийЭлемент();
           КонецЕсли;
       КонецЕсли;
3 Очень смешно
 
11.10.04
15:06
(2) Никогда не видел, чтобы так на найденной строке позиционировались
4 Platon
 
11.10.04
15:08
(3) А как надо?
5 Очень смешно
 
11.10.04
15:09
(4) тз.ПолучитьСтрокуПоНомеру(стр);
6 France
 
11.10.04
15:13
(5) а если этот самый "СТР" не известен?
7 Очень смешно
 
11.10.04
15:18
(6) Мы говорим про код в (2).
Там "СТР" известен. Если не известен, то его надо найти
8 France
 
11.10.04
15:27
(7) в (2) "Стр" как раз таки неизвестен, и НайтиЗначение() в "Стр" возвращает номер строки с нужным значением..

(0) -весь код в студию...
9 Platon
 
11.10.04
15:36
Вот весь код
Процедура Сформировать()
   Перем стр;
   
   спр=СоздатьОбъект("Справочник.Материалы");
   спр1=СоздатьОбъект("Справочник.Материалы");
   ед=СоздатьОбъект("Справочник.ЕдиницыИзмерений");
   сч=СоздатьОбъект("Счет.Основной");

   тз=СоздатьОбъект("ТаблицаЗначений");
   сз=СоздатьОбъект("СписокЗначений");
   
   ДБФ = СоздатьОбъект("XBase");
   
   ИмяФайла = СокрЛП(ВыбФайл);
   
   Если ФС.СуществуетФайл(ИмяФайла) = 0 Тогда
       Предупреждение("Файл не найден " + ИмяФайла);
       Возврат
   КонецЕсли;
   
   Если спр1.НайтиПоНаименованию("Запчасти ОГМ",0,1) = 0 тогда
       Сообщить("Не найден");
       Возврат;
   Иначе
       Род1=спр1.ТекущийЭлемент();
   КонецЕсли;
   
   //Запись Номенклатурных в список если начин с 52 +++++++++++++++++++++++++++++++++++++++++++++++++++
   спр1.ПорядокКодов();    
   спр1.ВыбратьЭлементы();
   Пока спр1.ПолучитьЭлемент()=1 Цикл
       
       Если спр1.ЭтоГруппа()=0 Тогда
           Если Лев(СокрЛП(спр1.Код),2)<>"52" Тогда
               Продолжить;
           Иначе
               Если спр1.Родитель<>Род1 Тогда
                   i=i+1;
                   сз.ДобавитьЗначение(спр1.Код);
                   
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
       Состояние("Заполняю список использованных номенклатурных в диапазоне от 520000 до 529999 найдено: "+i);
   КонецЦикла;
   //**********************************************    
   тз.НоваяКолонка("Код");
   тз.НоваяКолонка("Сч");
   тз.УдалитьСтроки();
   ДБФ.ОткрытьФайл(ИмяФайла);
   Для з=1 По ДБФ.КоличествоЗаписей() Цикл
       ДБФ.Перейти(з);
       тз.НоваяСтрока();
       i=i+1;
       тз.Код=(СокрЛП(ДБФ.KODR));                    // код в R3
       тз.Сч=(СокрЛП(ДБФ.SH));                    // код в R3
       
       Состояние("Размер списка "+з);
   КонецЦикла;
   ДБФ.ЗакрытьФайл();  

   //*************************************************    
   НачатьТранзакцию();
   Если спр.НайтиПоНаименованию("Запчасти ОГМ",0,1) = 0 тогда
       Сообщить("Не найден");
       Возврат;
   Иначе
       Род=спр.ТекущийЭлемент();
   КонецЕсли;
   спр.ПорядокРеквизита("НомерР3");

   спр.ИспользоватьРодителя(Род);
   спр.ВыбратьЭлементы();
   Пока спр.ПолучитьЭлемент()=1 Цикл
       
           
       
       спр.Наименование=Лев(СокрЛП((Лев(СокрЛП(спр.Наименование),1)+Нрег(Прав(СокрЛП(спр.Наименование),СтрДлина(СокрЛП(спр.Наименование))-1)))),(СтрДлина(СокрЛП(спр.Наименование))-3));               // Наименование в 1с         2
       Если СокрЛП(спр.ЕД)="ШТ" Тогда
           ед.НайтиПоНаименованию("шт",0,1);
           спр.ЕдиницаИзмерения=ед.ТекущийЭлемент();             // Единица измерения в 1с    3
       ИначеЕсли СокрЛП(спр.ЕД)="КМП" Тогда
           ед.НайтиПоНаименованию("компл",0,1);
           спр.ЕдиницаИзмерения=ед.ТекущийЭлемент();             // Единица измерения в 1с    3
       КонецЕсли;
       Если тз.НайтиЗначение(СокрЛП(спр.НомерР3),стр,"Код")=1 Тогда
           тз.ПолучитьСтрокуПоНомеру(стр);
           Если сч.НайтиПоКоду(тз.Сч)=1 Тогда
               спр.СубСчет10=сч.ТекущийЭлемент();
           КонецЕсли;
       КонецЕсли;
       
       спр.Записать();
       
   КонецЦикла;
ЗафиксироватьТранзакцию();    
КонецПроцедуры
10 Platon
 
11.10.04
16:24
Кажется понял там надо вместо  спр.СубСчет10=сч.ТекущийЭлемент();
сделать  спр.СубСчет10=сч.ТекущийСчет();
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший