Имя: Пароль:
1C
1C 7.7
v7: Подскажите как лучше сделать проверку в обходе ТЗ по строкам и колонкам
0 zladenuw
 
06.10.11
18:34
Есть ТбЗн с колонками
ТбЗн.НоваяКолонка("Загружать");
ТбЗн.ВыводитьПиктограммы("Загружать");
ТбЗн.НоваяКолонка("TypeRef");
ТбЗн.НоваяКолонка("New");
ТбЗн.НоваяКолонка("Наименование");
ТбЗн.НоваяКолонка("Родитель");
ТбЗн.НоваяКолонка("Счет");
ТбЗн.НоваяКолонка("Артикул");
ТбЗн.НоваяКолонка("БазЕдиница");
ТбЗн.НоваяКолонка("нБазЕдиница");
ТбЗн.НоваяКолонка("БухВидПрод");
ТбЗн.НоваяКолонка("нБухВидПрод");
ТбЗн.НоваяКолонка("Вид");
ТбЗн.НоваяКолонка("нВид");
ТбЗн.НоваяКолонка("Участок");
ТбЗн.НоваяКолонка("нУчасток");
ТбЗн.НоваяКолонка("Склад");
ТбЗн.НоваяКолонка("нСклад");
ТбЗн.НоваяКолонка("Мастер");
ТбЗн.НоваяКолонка("нМастер");
ТбЗн.НоваяКолонка("МастеровНаПоддон");
ТбЗн.НоваяКолонка("нМастеровНаПоддон");
ТбЗн.ВидимостьКолонки("БухВидПрод",0);
ТбЗн.ВидимостьКолонки("нБухВидПрод",0);

После загрузки в нее данных делаю выборку,
ТбЗн.ВыбратьСтроки();
   Пока ТбЗн.ПолучитьСтроку()=1 Цикл
       Если ТбЗн.Загружать<>2 Тогда
           Продолжить;
       КонецЕсли;
       Для й=2 по ТбЗн.КоличествоКолонок() Цикл
           лИмяРеквизита ="";
           ТбЗн.ПолучитьПараметрыКолонки(й,,,,лИмяРеквизита);
           Сообщить(ТбЗн.получитьЗначение(ТбЗн.НомерСтроки,лИмяРеквизита));
       КонецЦикла;
   КонецЦикла;
Как лучше реализовать проверку на изм реквизит, приставка н это новый, если значение пустое то пропускать колонку, если нет и отличается то присваивать реквизиту.
Сразу получить и новый реквизит ? но как тогда реализовать пропуск колонки... Вообщем запутался :(
1 zladenuw
 
06.10.11
19:10
вообщем получилось так. Все спасибо :)
   ТбЗн.ВыбратьСтроки();
   Пока ТбЗн.ПолучитьСтроку()=1 Цикл
       Если ТбЗн.Загружать<>2 Тогда
           Продолжить;
       КонецЕсли;
       
       лТипСпр = "";
       ТбЗн.ПолучитьПараметрыКолонки(2,,,,лТипСпр);
       лТипСпр=ТбЗн.получитьЗначение(ТбЗн.НомерСтроки,лТипСпр);
       
       Если лТипСпр = "M" Тогда
           Спр = CreateObject("Справочник.Материалы");
       ИначеЕсли лТипСпр ="IH" Тогда
           Спр = СоздатьОбъект("Справочник.ТМЦ");
       ИначеЕсли ((лТипСпр = "PF") or (лТипСпр = "SM")) Тогда
           Спр = СоздатьОбъект("Справочник.Номенклатура");
       КонецЕсли;
       
       Артикул = "";
       ТбЗн.ПолучитьПараметрыКолонки(7,,,,Артикул);
       Артикул=ТбЗн.получитьЗначение(ТбЗн.НомерСтроки,Артикул);
       Если Спр.НайтиПоРеквизиту( "Артикул", Артикул, 1) = 1 Тогда
           //
       Иначе
           Спр.Новый();
           Для п=3 по 6 Цикл
               лИмяРеквизита ="";
               ТбЗн.ПолучитьПараметрыКолонки(п,,,,лИмяРеквизита);
               Значение = ТбЗн.получитьЗначение(ТбЗн.НомерСтроки,лИмяРеквизита);
               Спр.УстановитьАтрибут(лИмяРеквизита,Значение);
           КонецЦикла;
       КонецЕсли;    
       СпрВид = Спр.Вид();        
           
       Для й=4 по ТбЗн.КоличествоКолонок() Цикл
           лИмяРеквизита ="";
           ТбЗн.ПолучитьПараметрыКолонки(й,,,,лИмяРеквизита);
           Значение = ТбЗн.получитьЗначение(ТбЗн.НомерСтроки,лИмяРеквизита);
           Попытка
               НовЗначение =  ТбЗн.получитьЗначение(ТбЗн.НомерСтроки,"н"+лИмяРеквизита);
           Исключение
               НовЗначение = 0;
           КонецПопытки;    
           Если ПустоеЗначение(НовЗначение)=1 Тогда                                                                      
               й = й +1;
               Продолжить;
           Иначе
               //Для к = 1 по Метаданные.Справочник(СпрВид).Реквизит() Цикл  
               //    Реквизит = Строка(Метаданные.Справочник(СпрВид).Реквизит(к).Идентификатор);
                   Спр.УстановитьАтрибут(лИмяРеквизита,НовЗначение);
                       Период = Метаданные.Справочник(СпрВид).Реквизит(лИмяРеквизита).Периодический;                        
                       Если Период = 1 Тогда
                           Спр.ИспользоватьДату(ДатаЗагр, 1);
                       КонецЕсли;
           //    КонецЦикла;    
           КонецЕсли;            
       КонецЦикла;
       Спр.Записать();
   КонецЦикла;
2 filh
 
07.10.11
10:13
приходи еще!
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.