|
|
|
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
|
приходи еще!
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |