Выгружаю реквизит в файл

Новая тема
Показывать по 10 20 40 сообщений
так ерунда какая-то, совсем не то %(
{"VT","1",{"0",{{","0","0","0",","2"},
{"Код","Код","1","0","0",{"S","0","0","0","0","0"},","0",
{

}
},
{"ДатаПоступ","ДатаПоступ","1","0","1",{"D","0","0","0","0","0"},","0",
{

}
}}}}
вобщем, всем спасибо, благодаря вашим советам у меня появлялись умные мысли :)
все получилось через "списокзначений"

Пожалуйста :)
Только тот файл читать надо через ЗначениеИзФайла!!!
> читать надо через ЗначениеИзФайла!!!
с импортированием реквизита я приду завтра :))))
"Вот и я :)
что-то напутано с циклами. Ниже получается, что когда из справочника взят первый элемент, и из файла первый, они сравнились вставили дату, если ее нет, а дальше опять с первым элементом из файла сравнивается следующий элемент из справочника, а мне нужно чтобы при первом совпадении совпавшие коды больше не проходили по циклу...

Спис = СоздатьОбъект("СписокЗначений");
КолСтрок = Файл.КоличествоСтрок();


СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл

Если СпрНом.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Для А=1 По КолСтрок Цикл
Стр = Файл.ПолучитьСтроку(А);
Спис.УдалитьВсе();
Спис.ИзСтрокиСРазделителями(Стр);

ТекКод = Спис.ПолучитьЗначение(1);
ТекДатаПоступ = Спис.ПолучитьЗначение(2);  


Если (СпрНом.Код = ТекКод) и (ПустоеЗначение(СпрНом.ДатаПоступ)=1)Тогда
СпрНом.ДатаПоступ = ТекДатаПоступ;

Иначе
Сообщить ("Элемента с таким кодом нет в справочнике! Вероятно он был удален. Или реквизит уже заполнен");
продолжить;
КонецЕсли;
КонецЦикла
КонецЦикла;
КонецПроцедуры"
"Зачем цикл в цикле, лучше использовать поиск:

Спис = СоздатьОбъект("СписокЗначений");
КолСтрок = Файл.КоличествоСтрок();
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
Для А=1 По КолСтрок Цикл
   Стр = Файл.ПолучитьСтроку(А);
   Спис.УдалитьВсе();
   Спис.ИзСтрокиСРазделителями(Стр);

   ТекКод = Спис.ПолучитьЗначение(1);
   ТекДатаПоступ = Спис.ПолучитьЗначение(2);  

   Если СпрНом.НайтиПоКоду(ТекКод)=1 Тогда
       Если ПустоеЗначение(СпрНом.ДатаПоступ)=1 Тогда
           СпрНом.ДатаПоступ = ТекДатаПоступ;
           СпрНом.Записать();
       Иначе
           Сообщить ("Реквизит уже заполнен");
       КонецЕсли;
   Иначе
       Сообщить ("Элемента с таким кодом нет в справочнике!");
   КонецЕсли;
КонецЦикла;
"
Большое спасибо, работает :)
Читают тему
(гостей: 1)

Быстрый переход