Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Загрузка данных из ShopDesk (*.TCUDOC)          
yoj Подменю пользователя
сообщение 19.12.17, 17:54
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

1С Предприятие 8.2 (8.2.19.130)
Управление производственным предприятием для Украины р. 1.3

Есть удаленные торговые точки (тт), там стоит программа ShopDesk. Из неё на сервер выгружаются файлы типа *.TCUDOC - поступления товаров и услуг и инвентаризации.
При запуске 1с пользователем Obmen из сервера в Документы загружаются все что есть "Поступления товаров и услуг", а вот файлы с инвентаризацией не хотят.
Подскажите где может быть прописана такая обработка или путь от куда брать для загрузки в 1с файлы.

yoj Подменю пользователя
сообщение 20.12.17, 11:28
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

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

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

КонецФункции

Batchir Подменю пользователя
сообщение 21.12.17, 12:29
Сообщение #3

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

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

Где-то в конфигураторе или за его границами)))
Если серверная БД и выполняется автоматом, то скорее всего в регламентных заданиях.
Если файловая БД и в константах стоит пользователь Obmen для выполнения заданий, то опять нужно смотреть регл. задания.
Если пользователь имеет возможность нажимать где-то кнопки, то скорее всего реализовано в виде обработки (может и во внешних быть вообще).

Сообщение отредактировал Batchir - 21.12.17, 12:33

Спасибо сказали: yoj,

yoj Подменю пользователя
сообщение 22.12.17, 11:17
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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 Подменю пользователя
сообщение 22.12.17, 17:09
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

Процедура ПриНачалеРаботыСистемы()
    
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.ПроверитьВерсиюПлатформы("8.3.6.2299", "8.2.19.130");
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.УстановитьПроизвольныйЗаголовокПриложения();
    
    // ОбновлениеВерсииИБ
    ОбновлениеИнформационнойБазыКлиент.ВыполнитьОбновлениеИнформационнойБазы();
    // Конец ОбновлениеВерсииИБ
    
    // отработка параметров запуска системы
    Если ОбработатьПараметрыЗапуска(ПараметрЗапуска) Тогда
        Возврат;
    КонецЕсли;
    
    // ОбновлениеКонфигурации
    ОбновлениеКонфигурацииКлиент.ПроверитьОбновлениеКонфигурации();
    // Конец ОбновлениеКонфигурации
    
    // ЗавершениеРаботыПользователей
    СоединенияИБКлиент.УстановитьКонтрольРежимаЗавершенияРаботыПользователей();
    // Конец ЗавершениеРаботыПользователей
    
    // Конец СтандартныеПодсистемы
    
    //РаботаСВнешнимОборудованием
    МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
    //Конец РаботаСВнешнимОборудованием
    
КонецПроцедуры

Batchir Подменю пользователя
сообщение 22.12.17, 18:00
Сообщение #6

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Дальнейшие варианты:
1. Берете и вызываете процедуру регламентного задания из обработки и идете отладчиком.
Смотрите почему не попадает в СоздатьИнвентаризацияТоваровНаСкладе.
2. Смотрите журнал регистрации или в консоле заданий какая ошибка происходит при выполнении СоздатьИнвентаризацияТоваровНаСкладе

Спасибо сказали: yoj,

yoj Подменю пользователя
сообщение 25.12.17, 15:05
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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 Подменю пользователя
сообщение 25.12.17, 22:49
Сообщение #8

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Уберите попытку и оставьте то что в исключении
ДокInventory.Записать(РежимЗаписиДокумента.Запись);
                ЧтениеXML.Закрыть();
                ПереносФайлов(ОснПараметры,1);


Сообщение отредактировал Batchir - 25.12.17, 22:52

yoj Подменю пользователя
сообщение 26.12.17, 9:03
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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


yoj Подменю пользователя
сообщение 26.12.17, 10:23
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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 Подменю пользователя
сообщение 26.12.17, 11:03
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

yoj @ Сегодня, 10:23 * ,
мТЧ.Вставить("DocumentDetail" + Формат(нСтр, "ЧГ = 0"), мТЧСтр);


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

yoj Подменю пользователя
сообщение 26.12.17, 14:24
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 15:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!