Имя: Пароль:
1C
 
Выскакивает ошибка установите запись на объект
0 Nemirov
 
26.05.20
11:36
Вот такая ошибка лезит не вкурю в чем проблема. Подскажите в чем проблема.
{Документ.Заказ.МодульОбъекта(1381)}: Ошибка при установке значения атрибута контекста (KOD)
                        XBase.KOD = СтрЗаменить(ВременнаяТЗ[0].КодПоставщика, Символы.НПП, "");
по причине:
Перед выполнением операции установите объект на запись





           Иначе
            ИмяФайлаЗаказа = "ZakazKub.DBF";
            ПолноеИмяФайлаЗаказа = КаталогВременныхФайлов() + ИмяФайлаЗаказа;
            XBase = Новый XBase;
            XBase.Кодировка = КодировкаXBase.OEM;
            XBase.поля.Добавить("NAME","S",150,);
            XBase.поля.Добавить("KOD","S",15);
            XBase.поля.Добавить("ED","S",15,);
            XBase.поля.Добавить("KOL","N",15,3);
            XBase.СоздатьФайл(ПолноеИмяФайлаЗаказа);
            
            
                ФайлИзПапкиОбменаКодыПоставщиков ();
                ИмяФайлаКодовПоставщика = "CodIS.DBF";
                КаталогФайлаКодовПоставщика= КаталогВременныхФайлов();
                ПутьКФайлу = СокрЛП(КаталогФайлаКодовПоставщика +ИмяФайлаКодовПоставщика);
                
                XBaseКодыПоставщиков = Новый XBase; // создаем новый объект
                XBaseКодыПоставщиков.ОткрытьФайл(ПутьКФайлу,,Истина); // открытие файла
                XBaseКодыПоставщиков.Кодировка = КодировкаXBase.OEM;
                
                ТабЗначКодыПоставщика = Новый ТаблицаЗначений;
                ТабЗначКодыПоставщика.Колонки.Добавить("КодНоменклатуры",Новый ОписаниеТипов("Число"));
                ТабЗначКодыПоставщика.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
                ТабЗначКодыПоставщика.Колонки.Добавить("Контрагент",Новый ОписаниеТипов("Строка"));
                ТабЗначКодыПоставщика.Колонки.Добавить("КодПоставщика",Новый ОписаниеТипов("Число"));
                
                
                XBaseКодыПоставщиков.Первая();
                
                    Пока НЕ XBaseКодыПоставщиков.ВКонце() Цикл
                        КонтрИзDBF = СокрЛП(XBaseКодыПоставщиков.KONTR);
                    Если КонтрИзDBF = Контрагент.Наименование Тогда
                        
                        НовСтрока  = ТабЗначКодыПоставщика.Добавить();
                        НовСтрока.КодНоменклатуры      = СокрЛП(XBaseКодыПоставщиков.KODNOM);
                        НовСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(XBaseКодыПоставщиков.KODNOM));
                        НовСтрока.Контрагент   = СокрЛП(XBaseКодыПоставщиков.KONTR);
                        НовСтрока.КодПоставщика      = СокрЛП(XBaseКодыПоставщиков.KOD);
                        
                        XBaseКодыПоставщиков.Следующая();
                        
                    Иначе
                        XBaseКодыПоставщиков.Следующая();
                    КонецЕсли;
                КонецЦикла;
                
                XBaseКодыПоставщиков.ЗакрытьФайл();
                УдалитьФайлы(ПутьКФайлу);
                XBase.ОткрытьФайл(ПолноеИмяФайлаЗаказа);
                Для Каждого Строка Из Состав Цикл
                    Если Строка.Количество = 0 Тогда
                        Продолжить;
                    КонецЕсли;
                    
                    
                    Если ТабЗначКодыПоставщика.Количество() > 0 Тогда
                        
                        Построитель = Новый ПостроительЗапроса;
                        Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабЗначКодыПоставщика);
                        СтрокаОтбора = Построитель.Отбор.Добавить("Номенклатура");
                        СтрокаОтбора.ВидСравнения  = ВидСравнения.Равно;
                        СтрокаОтбора.Значение      = Строка.Номенклатура;
                        СтрокаОтбора.Использование = Истина;
                        Построитель.Выполнить();
                        ВременнаяТЗ = Построитель.Результат.Выгрузить();
                        Если ВременнаяТЗ.Количество() > 0 Тогда
                                            
                                                        XBase.NAME = СокрЛП(Строка.Номенклатура.Наименование);   //Строка из табличной части состав документа заказ
                            XBase.ED   = СокрЛП(Строка.ЕдиницаИзмерения.Наименование);
                            XBase.KOL  = Строка.Количество;
                                XBase.KOD = СтрЗаменить(ВременнаяТЗ[0].КодПоставщика, Символы.НПП, "");
                            XBase.Записать();                        
                        КонецЕсли;
                    КонецЕсли;    
                        
                    КонецЦикла;
                    XBase.ЗакрытьФайл();
            КонецЕсли;
1 Ёпрст
 
26.05.20
11:38
(0) Ну дык строку то создай новую, перед тем, как значения полей пихать
2 Ёпрст
 
26.05.20
11:39
в пустой файл
3 Ёпрст
 
26.05.20
11:42
И.. открывать его не надо, раз ты его тока создал
4 Ёпрст
 
26.05.20
11:42
Короче, XBase.Добавить() воткни и  XBase.ОткрытьФайл(ПолноеИмяФайлаЗаказа); выкинь
5 Nemirov
 
26.05.20
11:49
(4) Тю Еп..
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн