Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка данных из ShopDesk (*.TCUDOC)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
yoj
1С Предприятие 8.2 (8.2.19.130)
Управление производственным предприятием для Украины р. 1.3

Есть удаленные торговые точки (тт), там стоит программа ShopDesk. Из неё на сервер выгружаются файлы типа *.TCUDOC - поступления товаров и услуг и инвентаризации.
При запуске 1с пользователем Obmen из сервера в Документы загружаются все что есть "Поступления товаров и услуг", а вот файлы с инвентаризацией не хотят.
Подскажите где может быть прописана такая обработка или путь от куда брать для загрузки в 1с файлы.
yoj
yoj @ Вчера, 17:54 необходимо зарегистрироваться для просмотра ссылки ,
Процедура ПриНачалеРаботыСистемы()
    
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.ПроверитьВерсиюПлатформы("8.3.6.2299", "8.2.19.130");
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.УстановитьПроизвольныйЗаголовокПриложения();
    
    // ОбновлениеВерсииИБ
    ОбновлениеИнформационнойБазыКлиент.ВыполнитьОбновлениеИнформационнойБазы();
    // Конец ОбновлениеВерсииИБ
    
    // отработка параметров запуска системы
    Если ОбработатьПараметрыЗапуска(ПараметрЗапуска) Тогда
        Возврат;
    КонецЕсли;
    
    // ОбновлениеКонфигурации
    ОбновлениеКонфигурацииКлиент.ПроверитьОбновлениеКонфигурации();
    // Конец ОбновлениеКонфигурации
    
    // ЗавершениеРаботыПользователей
    СоединенияИБКлиент.УстановитьКонтрольРежимаЗавершенияРаботыПользователей();
    // Конец ЗавершениеРаботыПользователей
    
    // Конец СтандартныеПодсистемы
    
    //РаботаСВнешнимОборудованием
    МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
    //Конец РаботаСВнешнимОборудованием
    
КонецПроцедуры
.
.
.

Функция ОбработатьПараметрыЗапуска(Знач ПараметрЗапуска)

    Перем Результат;
    Результат = Ложь;
    
    // СтандартныеПодсистемы
    
    // Есть ли параметры запуска
    Если ПустаяСтрока(ПараметрЗапуска) Тогда
        Возврат Результат;
    КонецЕсли;
    
    // Параметр может состоять из частей, разделенных символом ";".
    // Первая часть - главное значение параметра запуска.
    // Наличие дополнительных частей определяется логикой обработки главного параметра.
    ПараметрыЗапуска = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска, ";");
    ЗначениеПараметраЗапуска = Врег(ПараметрыЗапуска[0]);
    
    // ЗавершениеРаботыПользователей
    Результат = СоединенияИБКлиент.ОбработатьПараметрыЗапуска(ЗначениеПараметраЗапуска, ПараметрыЗапуска);
    // Конец ЗавершениеРаботыПользователей
    
    // Конец СтандартныеПодсистемы
    
    // Код конфигурации
    // ...
    // Конец кода конфигурации

    // СтандартныеПодсистемы
    Возврат Результат;
    // Конец СтандартныеПодсистемы

КонецФункции
Batchir
Цитата(yoj @ 19.12.17, 17:54) необходимо зарегистрироваться для просмотра ссылки
Подскажите где может быть прописана такая обработка или путь от куда брать для загрузки в 1с файлы

Где-то в конфигураторе или за его границами)))
Если серверная БД и выполняется автоматом, то скорее всего в регламентных заданиях.
Если файловая БД и в константах стоит пользователь Obmen для выполнения заданий, то опять нужно смотреть регл. задания.
Если пользователь имеет возможность нажимать где-то кнопки, то скорее всего реализовано в виде обработки (может и во внешних быть вообще).
yoj
Batchir @ Вчера, 12:29 необходимо зарегистрироваться для просмотра ссылки ,
Есть в регламентных задачах. И в общих модулях. Пересмотрел все вроде правильно написано. От куда что брать и куда ложить.
Вот условие:
ИмяФайлаБезАдреса=Файл.Имя;
            ПолноеИмяФайла = Файл.ПолноеИмя;
            
            ОснПараметры.Вставить("ИмяФайлаБезАдреса", ИмяФайлаБезАдреса);
            ОснПараметры.Вставить("ПолноеИмяФайла", ПолноеИмяФайла);

            Если Лев(ИмяФайлаБезАдреса,5)="DOC_D" или Лев(ИмяФайлаБезАдреса,12)="DOC_RETURN_D" Тогда
                //находим код отдела в наименовании
                КодОтдела=СтрЗаменить(ИмяФайлаБезАдреса,"DOC_RETURN_D","");
                КодОтдела=СтрЗаменить(ИмяФайлаБезАдреса,"DOC_D","");
                
                СтрЧисло=Найти(КодОтдела,"_P");
                Знак=Сред(КодОтдела,1,СтрЧисло+1);
                КодОтдела=СтрЗаменить(КодОтдела,Знак,"");
                СтрЧисло=Найти(КодОтдела,"_");
                
                КодОтдела=Сред(КодОтдела,1,СтрЧисло-1);
              
                Склад=ПолучитьСклад(СокрЛП(КодОтдела),ОснПараметры);
                Если Склад=Справочники.Склады.ПустаяСсылка() ИЛИ Склад=Неопределено Тогда
                    ПолучОшибки("Не нашли стыковки склада {"+СокрЛП(КодОтдела)+"} "+СокрЛП(ИмяФайлаБезАдреса),ОснПараметры);
                    ПереносФайлов(ОснПараметры,1);
                    Продолжить;
                КонецЕсли;

И ниже вот:
ПолучДата=Дата_в_наименовании(ИмяФайлаБезАдреса,0);
                
                ОснПараметры.Вставить("Склад", Склад);
                ОснПараметры.Вставить("ПолучДата", ПолучДата);
                ОснПараметры.Вставить("КодОтдела", КодОтдела);

СоздатьОтчетОРозничныхПродажах(ОснПараметры);
            ИначеЕсли Лев(ИмяФайлаБезАдреса,13)="DOC_INVENTORY" Тогда
                СоздатьИнвентаризацияТоваровНаСкладе(ОснПараметры);
            ИначеЕсли Лев(ИмяФайлаБезАдреса,11)="DOC_ORDER_D" Тогда
                СоздатьЗаказПоставщику(ОснПараметры);
            ИначеЕсли (Лев(ИмяФайлаБезАдреса,12)="DOC_PAYOUT_D") ИЛИ (Лев(ИмяФайлаБезАдреса,17)="DOC_PAYTRANSFER_D") Тогда
                СоздатьПКО(ОснПараметры);    
            Иначе
                ПолучОшибки("Не смогли определить тип документа {"+СокрЛП(ИмяФайлаБезАдреса)+"} ",ОснПараметры);
                ПереносФайлов(ОснПараметры,1);
            КонецЕсли;

Файлы начинающиеся на DOC_D загружаются в Отчет о розничных продажах, а файлы DOC_INVENTORY в Инвентаризацию товаров на складе загружатся не хотят(((


необходимо зарегистрироваться для просмотра ссылки
yoj
yoj @ Сегодня, 11:17 необходимо зарегистрироваться для просмотра ссылки ,
Процедура ПередНачаломРаботыСистемы(Отказ)
    
    // СтандартныеПодсистемы
    
    // Получим параметры работы клиента за одно обращение к серверу
    // Чтобы при повторном вызове этой функции не было обращений к серверу
    ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента();
    
    Если НЕ ПараметрыРаботыКлиента.ПользователюРазрешенЗапускКонфигурации Тогда
        Предупреждение(НСтр("ru = 'Вам не назначена роль ""Пользователь"". Запуск конфигурации невозможен.'"));
        Отказ = Истина;        
        Возврат; //Дальше нет необходимости выполнения, т.к. могут быть ошибки нарушения прав
    КонецЕсли;     
    
    Если Не Отказ Тогда
        СтандартныеПодсистемыКлиент.ДействияПередНачаломРаботыСистемы(Отказ);
    КонецЕсли;
    
    // Конец СтандартныеПодсистемы
    
КонецПроцедуры

Процедура ПриНачалеРаботыСистемы()
    
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.ПроверитьВерсиюПлатформы("8.3.6.2299", "8.2.19.130");
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.УстановитьПроизвольныйЗаголовокПриложения();
    
    // ОбновлениеВерсииИБ
    ОбновлениеИнформационнойБазыКлиент.ВыполнитьОбновлениеИнформационнойБазы();
    // Конец ОбновлениеВерсииИБ
    
    // отработка параметров запуска системы
    Если ОбработатьПараметрыЗапуска(ПараметрЗапуска) Тогда
        Возврат;
    КонецЕсли;
    
    // ОбновлениеКонфигурации
    ОбновлениеКонфигурацииКлиент.ПроверитьОбновлениеКонфигурации();
    // Конец ОбновлениеКонфигурации
    
    // ЗавершениеРаботыПользователей
    СоединенияИБКлиент.УстановитьКонтрольРежимаЗавершенияРаботыПользователей();
    // Конец ЗавершениеРаботыПользователей
    
    // Конец СтандартныеПодсистемы
    
    //РаботаСВнешнимОборудованием
    МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
    //Конец РаботаСВнешнимОборудованием
    
КонецПроцедуры
Batchir
Дальнейшие варианты:
1. Берете и вызываете процедуру регламентного задания из обработки и идете отладчиком.
Смотрите почему не попадает в СоздатьИнвентаризацияТоваровНаСкладе.
2. Смотрите журнал регистрации или в консоле заданий какая ошибка происходит при выполнении СоздатьИнвентаризацияТоваровНаСкладе
yoj
Batchir @ 22.12.17, 18:00 необходимо зарегистрироваться для просмотра ссылки ,
на Инвентаризации 2 ошибки.
1. Ошибка времени выполнения:
Общий модуль.ТЦУ_ЗагрузкаПродаж.Модуль(970): Ошибка при вызове метода контекста (Записать) в модуле ОбщийМодуль.ТЦУ_ЗагрузкаПродаж.Модуль, строка 970
        Попытка
                Для каждого СтрокаXML Из ДокументXML.Detail Цикл
                    ЗначенияСтрокиXML= СтрокаXML.Значение;
                    Номенклатура=ПолучитьНоменклатуру(СокрЛП(ЗначенияСтрокиXML.GoodId),ОснПараметры);
                    Если Номенклатура=Справочники.Номенклатура.ПустаяСсылка() ИЛИ Номенклатура=Неопределено Тогда
                        ПолучОшибки("Не нашли номенклатуру по стыковке {"+СокрЛП(ЗначенияСтрокиXML.GoodId)+"} "+СокрЛП(ЗначенияСтрокиXML.GoodsItemName)+" "+СокрЛП(ПолноеИмяФайла),ОснПараметры);
                        Номенклатура=Справочники.Номенклатура.ПустаяСсылка();
                        //Продолжить;
                    КонецЕсли;
                    
                    Строка=ДокInventory.Товары.Добавить();
                    Строка.Номенклатура    = Номенклатура;
                    Строка.ЕдиницаИзмеренияМест = Номенклатура.ЕдиницаИзмеренияМест;
                    Строка.ЕдиницаИзмерения = Номенклатура.ЕдиницаДляОтчетов;
                    Строка.Коэффициент = Номенклатура.ЕдиницаДляОтчетов.Коэффициент;
                    ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(Строка, ДокInventory);
                    
                    Строка.Количество = Число(ЗначенияСтрокиXML.Quantity);
                    Строка.Качество = Справочники.Качество.Новый;
                КонецЦикла;
            Исключение
                
            КонецПопытки;
            
            Попытка    
                ДокInventory.Записать(РежимЗаписиДокумента.Проведение);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,0);
            Исключение
                ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
                ДокInventory.Записать(РежимЗаписиДокумента.Запись);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,1);
            КонецПопытки;


2. Ошибка времени выполнения:
Общий модуль.ТЦУ_ЗагрузкаПродаж.Модуль(138): Ошибка при вызове метода контекста (Переместить Файл) в модуле ОбщийМодуль.ТЦУ_ЗагрузкаПродаж.Модуль, строка 138
Если ЕстьОшибка=1 Тогда
        НашлиФайл = НайтиФайлы(ПолноеИмяФайла).Количество();
        Если НашлиФайл<>0 Тогда
            ПереместитьФайл(ПолноеИмяФайла,СтрЗаменить(ПолноеИмяФайла,ФайлТЦУ,ФайлТЦУ_other));//файл
        КонецЕсли;


Не успел отредактировать.
По 2 ошибку решил. Создал папку вручную)

По 1.Ошибка времени выполнения:
Общий модуль.ТЦУ_ЗагрузкаПродаж.Модуль(970): Ошибка при вызове метода контекста (Записать) в модуле ОбщийМодуль.ТЦУ_ЗагрузкаПродаж.Модуль, строка 970
Ошибка тут:
   Попытка    
                ДокInventory.Записать(РежимЗаписиДокумента.Проведение);  [i](970 строка)[/i]
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,0);
            Исключение
                ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
                ДокInventory.Записать(РежимЗаписиДокумента.Запись);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,1);
            КонецПопытки;


yoj @ Сегодня, 14:54 необходимо зарегистрироваться для просмотра ссылки ,

Выгрузил базу с сервера на локальный ПК.
Вылазит ошибка {ОбщийМодуль.ТЦУ_ЗагрузкаПродаж.Модуль(970)}: Ошибка при вызове метода контекста (Записать): Для данного документа возможность проведения отключена.
Batchir
Уберите попытку и оставьте то что в исключении
ДокInventory.Записать(РежимЗаписиДокумента.Запись);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,1);
yoj
Batchir @ Вчера, 22:49 необходимо зарегистрироваться для просмотра ссылки ,
Так? (По крайней мере так не ругается ни на что)
Попытка    
//                ДокInventory.Записать(РежимЗаписиДокумента.Проведение);
//                ЧтениеXML.Закрыть();
//                ПереносФайлов(ОснПараметры,0);
            Исключение
//                ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
                ДокInventory.Записать(РежимЗаписиДокумента.Запись);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,1);
            КонецПопытки;

yoj
yoj @ Сегодня, 9:03 необходимо зарегистрироваться для просмотра ссылки ,
И стало выбивать ошибку Фоновое задание. Ошибка выполнения.
{ОбщийМодуль.ТЦУ_ЗагрузкаПродаж.Модуль(409)}: Ошибка при вызове метода контекста (Вставить)
по причине:
Задано неправильное имя атрибута структуры

Функция ПолучитьРеквизитыXMLДокумента(ЧтениеXML)
    ДокументыXML = Новый Структура();
    
    мДОМ=новый ПостроительDOM;
    
    мДокументДОМ=мДОМ.Прочитать(ЧтениеXML);
    мРазыменовательПИ=мДокументДОМ.СоздатьРазыменовательПИ(мДокументДОМ);
    
    мЗапрос="/ArrayOfDocument/Document";
    мХПуть=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
    мРезультат=мХПуть.Вычислить(мДокументДОМ);
    мДокумент=мРезультат.ПолучитьСледующий();
    нДок=1;
    Пока мДокумент<>неопределено цикл
        мЗапрос="./*";
        мХПуть2=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
        мДанные=новый Структура;
        мРезультатЗапроса=мХПуть2.Вычислить(мДокумент);
        мОбход=мРезультатЗапроса.ПолучитьСледующий();
        Пока мОбход <>неопределено цикл
            Если  мОбход.ИмяЭлемента ="Detail" Тогда
                мЗапрос="./*";
                мХПуть3=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
                мТЧ=новый Структура;
                мРезультатЗапросаТЧ=мХПуть3.Вычислить(мОбход);
                мОбходТЧ=мРезультатЗапросаТЧ.ПолучитьСледующий();
                нСтр=1;
                Пока мОбходТЧ <>неопределено цикл                
                    мЗапрос="./*";
                    мХПуть4=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
                    мТЧСтр=новый Структура;
                    мРезультатЗапросаТЧСтр=мХПуть4.Вычислить(мОбходТЧ);
                    мОбходТЧСтр=мРезультатЗапросаТЧСтр.ПолучитьСледующий();
                    Пока мОбходТЧСтр <>неопределено цикл                
                        мТЧСтр.Вставить(мОбходТЧСтр.ИмяЭлемента,мОбходТЧСтр.ТекстовоеСодержимое);
                        мОбходТЧСтр=мРезультатЗапросаТЧСтр.ПолучитьСледующий();
                    конеццикла;
[i]409 строка[/i]        мТЧ.Вставить("DocumentDetail"+нСтр,мТЧСтр);
                    нСтр=нСтр+1;
                    мОбходТЧ=мРезультатЗапросаТЧ.ПолучитьСледующий();
                конеццикла;
                мДанные.Вставить("Detail",мТЧ);
                мОбход=мРезультатЗапроса.ПолучитьСледующий();
            Иначе
                мДанные.Вставить(мОбход.ИмяЭлемента,мОбход.ТекстовоеСодержимое);
                мОбход=мРезультатЗапроса.ПолучитьСледующий();
            КонецЕсли;
        конеццикла;
        ДокументыXML.Вставить("Document"+нДок,мДанные);
        нДок=нДок+1;
        мДокумент=мРезультат.ПолучитьСледующий();
    конеццикла;
        
    Возврат ДокументыXML;

КонецФункции
Petre
yoj @ Сегодня, 10:23 необходимо зарегистрироваться для просмотра ссылки ,
мТЧ.Вставить("DocumentDetail" + Формат(нСтр, "ЧГ = 0"), мТЧСтр);
yoj
Petre @ Сегодня, 11:03 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо) Ошибка ушла.
А тут осталась. При попытке оставить Исключение зависает.
 Попытка    
                ДокInventory.Записать(РежимЗаписиДокумента.Проведение);  [i](970 строка)[/i]
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,0);
            Исключение
                ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
                ДокInventory.Записать(РежимЗаписиДокумента.Запись);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,1);
            КонецПопытки;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.