Имя: Пароль:
1C
1С v8
Не могу понять причину ошибки..
0 notbrain
 
28.11.14
09:06
Имеем: Ут 11.1 и имеем некую обработку, которая должна из XML файла загружать данные в документ ПрочееОприходованиеТоваров.

Нажатие по кнопке "выгрузка и 77" дает список всех xml файлов, при выборе xml файла подтверждаю запись документа и выпадает ошибка, что каталог "С:\xx\xx" не найден (это реальный каталог, из которого я выбирал файл xml)

&НаСервере
Процедура ИмпортXMLСервер(ПутьКФайлу)

    
Объект.Организация = Справочники.Организации.НайтиПоНаименованию("Общество с ограниченной ответственностью «Рога»",1);
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеИзПроизводства;
Объект.Склад = Справочники.Склады.НайтиПоНаименованию("Склад Упаковки",1);
    
ИмяФайла = ПутьКФайлу;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
Объект.Товары.Очистить();
//Объект.ДатаПлатежа = НачалоДня(ТекущаяДата());
Документ = ДокументDOM.ПолучитьЭлементыПоИмени("Документ");
ДокНо = Документ[0].getAttribute("Номер");
ДокДа = Документ[0].getAttribute("От");
Объект.Комментарий = "Загружено из 1с 7.7 ("+ДокНо+", "+ДокДа+") "+Строка(ТекущаяДата());
СуммаОбщая = 0;
Товар = ДокументDOM.ПолучитьЭлементыПоИмени("Товар");
    Для Позиц=0 По Товар.Количество()-1 Цикл
        НоваяСтрока = Объект.Товары.Добавить();
        Код = Товар[Позиц].getAttribute("Код");
        //Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Код);
        Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Код);

        Если Номенклатура.Пустая()
            Тогда
                Сообщить("Номенклатура с артикулом "+Код+" не найдена! Невозможно загрузить документ!");
                Объект.Товары.Очистить();
                Возврат;
            КонецЕсли;
            
        //ЦенаБезНдс = Товар[Позиц].getAttribute("Цена");    
        //ЦенаСНДС = (ЦенаБезНдс*(100+Число(Лев(Номенклатура.СтавкаНДС,СтрДлина(Номенклатура.СтавкаНДС)-1))))/100;    
        //НДСЦены = Число(ЦенаСНДС) - Число(ЦенаБезНдс);    
        
        //Перечисления.СтавкиНДС.НДС10.    
        НоваяСтрока.КоличествоУпаковок = Товар[Позиц].getAttribute("Количество");
        НоваяСтрока.Количество = Товар[Позиц].getAttribute("Количество");
        //НоваяСтрока.Цена = ЦенаСНДС;//Товар[Позиц].getAttribute("Цена");
        НоваяСтрока.Цена = Товар[Позиц].getAttribute("Цена");

        НоваяСтрока.Номенклатура = Номенклатура;
        //НоваяСтрока.СтавкаНДС = Номенклатура.СтавкаНДС;
        //НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
        НоваяСтрока.Упаковка = Номенклатура.ЕдиницаИзмерения;
        //НоваяСтрока.Склад = Объект.Склад;
        
        //НоваяСтрока.СуммаНДС = Число(НДСЦены)*Число(Товар[Позиц].getAttribute("Количество"));
        
        //НоваяСтрока.СуммаСНДС = Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество"));
        //НоваяСтрока.Сумма = Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество")); //Число(Товар[Позиц].getAttribute("Цена"))*Число(Товар[Позиц].getAttribute("Количество"));
        НоваяСтрока.Сумма = Число(Товар[Позиц].getAttribute("Цена"))*Число(Товар[Позиц].getAttribute("Количество"));
        //НоваяСтрока.СуммаВзаиморасчетов = Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество")); //Товар[Позиц].getAttribute("Цена");
        //СуммаОбщая = Число(СуммаОбщая) + Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество"));
        НоваяСтрока.СтатьяРасходов = ПланыВидовХарактеристик.СтатьиРасходов.СебестоимостьПродаж;
    КонецЦикла;
    //Объект.СуммаВзаиморасчетов = СуммаОбщая;
    //Объект.СуммаДокумента = СуммаОбщая;
    ЧтениеXML.Закрыть();
    
    //ПереместитьФайл(ПутьКФайлу, ПутьКФайлу+".bak");
    
    ПараметрыЗаписи = Новый Структура;
    ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
    Записать(ПараметрыЗаписи);
    Сообщить("Спасибо за сотрудничество! Документ успешно загружен!");
    
    
    ТолькоПросмотр = Истина;
    
    
    
    ВЦ = Справочники.ВидыЦен.НайтиПоНаименованию("Рога",1);
    
    ДокН = Документы.ПередачаТоваровМеждуОрганизациями.СоздатьДокумент();
    ДокН.Дата = ТекущаяДата();
    ДокН.Организация = Справочники.Организации.НайтиПоНаименованию("Общество с ограниченной ответственностью «Рога»",1);
    ДокН.ОрганизацияПолучатель = Справочники.Организации.НайтиПоНаименованию("Общество с ограниченной ответственностью «Рога2»",1);
    ДокН.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию;
    ДокН.Склад = Справочники.Склады.НайтиПоНаименованию("Склад Упаковки",1);
    ДокН.Валюта = Справочники.Валюты.НайтиПоРеквизиту("НаименованиеПолное","Российский рубль");
    
    ДокН.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоРеквизиту("НаименованиеПолное","Российский рубль");
    //Объект.ЦенаВключаетНДС = Ложь;
    ДокН.ЦенаВключаетНДС = Истина;

    //Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
    ДокН.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
    ДокН.ВидЦены = ВЦ;
    ИмяФайла = ПутьКФайлу;
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ИмяФайла);
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    ДокН.Товары.Очистить();
    ДокН.ДатаПлатежа = НачалоДня(ТекущаяДата());
    Документ = ДокументDOM.ПолучитьЭлементыПоИмени("Документ");
    ДокНо = Документ[0].getAttribute("Номер");
    ДокДа = Документ[0].getAttribute("От");
    ДокН.Комментарий = "Загружено из 1с 7.7 ("+ДокНо+", "+ДокДа+") "+Строка(ТекущаяДата());
    СуммаОбщая = 0;
    Товар = ДокументDOM.ПолучитьЭлементыПоИмени("Товар");
    Для Позиц=0 По Товар.Количество()-1 Цикл
        НоваяСтрока = ДокН.Товары.Добавить();
        Код = Товар[Позиц].getAttribute("Код");
        //Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Код);
        Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Код);

        Если Номенклатура.Пустая()
            Тогда
                Сообщить("Номенклатура с артикулом "+Код+" не найдена! Невозможно загрузить документ!");
                Объект.Товары.Очистить();
                Возврат;
            КонецЕсли;
            
        //ЦенаБезНдс = Товар[Позиц].getAttribute("Цена");    
        //ЦенаСНДС = (ЦенаБезНдс*(100+Число(Лев(Номенклатура.СтавкаНДС,СтрДлина(Номенклатура.СтавкаНДС)-1))))/100;    
        //НДСЦены = Число(ЦенаСНДС) - Число(ЦенаБезНдс);    
        
        //Перечисления.СтавкиНДС.НДС10.    
        НоваяСтрока.КоличествоУпаковок = Товар[Позиц].getAttribute("Количество");
        НоваяСтрока.Количество = Товар[Позиц].getAttribute("Количество");
        
        НоваяСтрока.ВидЦены = ВЦ;
        
        //НоваяСтрока.Цена = ЦенаСНДС;//Товар[Позиц].getAttribute("Цена");
        НоваяСтрока.Цена = Товар[Позиц].getAttribute("Цена");

        НоваяСтрока.Номенклатура = Номенклатура;
        НоваяСтрока.СтавкаНДС = Номенклатура.СтавкаНДС;
        //НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
        НоваяСтрока.Упаковка = Номенклатура.ЕдиницаИзмерения;
        //НоваяСтрока.Склад = Объект.Склад;
        
        //НоваяСтрока.СуммаНДС = Число(НДСЦены)*Число(Товар[Позиц].getAttribute("Количество"));
        
        //НоваяСтрока.СуммаСНДС = Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество"));
        //НоваяСтрока.Сумма = Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество")); //Число(Товар[Позиц].getAttribute("Цена"))*Число(Товар[Позиц].getAttribute("Количество"));
        НоваяСтрока.СуммаСНДС = Товар[Позиц].getAttribute("Цена")*Число(Товар[Позиц].getAttribute("Количество"));

        НоваяСтрока.Сумма = Число(Товар[Позиц].getAttribute("Цена"))*Число(Товар[Позиц].getAttribute("Количество"));
        
        //НоваяСтрока.СуммаВзаиморасчетов = Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество")); //Товар[Позиц].getAttribute("Цена");
        //СуммаОбщая = Число(СуммаОбщая) + Число(ЦенаСНДС)*Число(Товар[Позиц].getAttribute("Количество"));
        //НоваяСтрока.СтатьяРасходов = ПланыВидовХарактеристик.СтатьиРасходов.СебестоимостьПродаж;
    КонецЦикла;
    ДокН.СуммаВзаиморасчетов = СуммаОбщая;
    ДокН.СуммаДокумента = СуммаОбщая;
    ЧтениеXML.Закрыть();
    ПереместитьФайл(ПутьКФайлу, ПутьКФайлу+".bak");
    ПараметрыЗаписи = Новый Структура;
    ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
    ДокН.Записать(РежимЗаписиДокумента.Запись); //Записать(ПараметрыЗаписи);
    
    ДокО  = ДокН.Ссылка.ПолучитьОбъект();
    //    
    СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(ДокО);
    ЦеныРассчитаны = ПродажиСервер.ЗаполнитьЦены(
        ДокО.Товары, // Табличная часть
        , // Массив строк или структура отбора
        Новый Структура( // Параметры заполнения
            "Дата, Валюта, ВидЦены, ПоляЗаполнения",
            ДокО.Дата,
            ДокО.Валюта,
            ВЦ,
            "Цена, ВидЦены"
        ),
        Новый Структура( // Структура действий с измененными строками
            "ПересчитатьСумму, ПересчитатьСуммуСНДС, ПересчитатьСуммуНДС",
            "КоличествоУпаковок", СтруктураПересчетаСуммы, СтруктураПересчетаСуммы));
    ДокО.Записать(РежимЗаписиДокумента.Запись);
    ДокО.Записать(РежимЗаписиДокумента.Проведение);

    //
    
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИз77(Команда)
    Режим = РежимДиалогаВыбораФайла.Открытие;
    Файл = Новый ДиалогВыбораФайла(Режим);
    Файл.Фильтр = "Документы XML(*.xml)|*.xml;";
    Файл.Заголовок = "Выберете файл для загрузки";
    Файл.Каталог = "C:\obmen\77\";
    КатНач = Файл.Каталог;
    Файл.Выбрать();
    ПутьКФайлу = Файл.ПолноеИмяФайла;
    Если НРег(Файл.Каталог)<>НРег(КатНач) Тогда Сообщить("Для выбора файлов загрузки разрешен только каталог установленный по умолчанию"); Возврат; КонецЕсли;
    Если Не Объект.Ссылка.Пустая() Тогда Сообщить("Для загрузки данных необходимо создать новый документ"); Возврат; КонецЕсли;
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("После загрузки данных документ будет записан. Продолжить?", Режим, 0);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    ИмпортXMLСервер(ПутьКФайлу);
    //Для Каждого Крандибобик Из Объект.Товары Цикл
    //    Идентификатор = Крандибобик.ПолучитьИдентификатор();
    //    ЭтаФорма.Элементы.Товары.ТекущаяСтрока = Идентификатор;
        //
    //    ТекущаяСтрока = ЭтаФорма.Элементы.Товары.ТекущиеДанные;
    //    СтруктураДействий = Новый Структура;
                
    //    ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,Объект);
    //    ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
    //    РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
        //
    //КонецЦикла;
    //ОбновитьЗависимыеРеквизитыФормы();
    //ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
    //РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
1 notbrain
 
28.11.14
09:08
блин как то через ж разбился код
2 notbrain
 
28.11.14
09:12
&НаКлиенте
Процедура ЗагрузитьИз77(Команда)
    Режим = РежимДиалогаВыбораФайла.Открытие;
    Файл = Новый ДиалогВыбораФайла(Режим);
    Файл.Фильтр = "Документы XML(*.xml)|*.xml;";
    Файл.Заголовок = "Выберете файл для загрузки";
    Файл.Каталог = "C:\obmen\77\";
    КатНач = Файл.Каталог;
    Файл.Выбрать();
    ПутьКФайлу = Файл.ПолноеИмяФайла;
    Если НРег(Файл.Каталог)<>НРег(КатНач) Тогда Сообщить("Для выбора файлов загрузки разрешен только каталог установленный по умолчанию"); Возврат; КонецЕсли;
    Если Не Объект.Ссылка.Пустая() Тогда Сообщить("Для загрузки данных необходимо создать новый документ"); Возврат; КонецЕсли;
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("После загрузки данных документ будет записан. Продолжить?", Режим, 0);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    ИмпортXMLСервер(ПутьКФайлу);
    //Для Каждого Крандибобик Из Объект.Товары Цикл
    //    Идентификатор = Крандибобик.ПолучитьИдентификатор();
    //    ЭтаФорма.Элементы.Товары.ТекущаяСтрока = Идентификатор;
        //
    //    ТекущаяСтрока = ЭтаФорма.Элементы.Товары.ТекущиеДанные;
    //    СтруктураДействий = Новый Структура;
                
    //    ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,Объект);
    //    ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
    //    РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
        //
    //КонецЦикла;
    //ОбновитьЗависимыеРеквизитыФормы();
    //ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
    //РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
3 notbrain
 
28.11.14
09:12
ну вот, миста, не дает редактировать
4 Defender aka LINN
 
28.11.14
09:21
(0) Ничего, что клиент и сервер - не одна и та же машина?
5 DmitriyDI
 
28.11.14
09:21
(3) никто не скажет, по такому коду в чем дело, скорее всего права, если каталог реально есть, я бы посмотрел права доступа на этот каталог пользователей user1c
6 DmitriyDI
 
28.11.14
09:22
(5) + сетевой путь к папке