1С Предприятие 8.2 (8.2.19.130)
Управление производственным предприятием для Украины р. 1.3
Есть удаленные торговые точки (тт), там стоит программа ShopDesk. Из неё на сервер выгружаются файлы типа *.TCUDOC - поступления товаров и услуг и инвентаризации.
При запуске 1с пользователем Obmen из сервера в Документы загружаются все что есть "Поступления товаров и услуг", а вот файлы с инвентаризацией не хотят.
Подскажите где может быть прописана такая обработка или путь от куда брать для загрузки в 1с файлы.
Процедура ПриНачалеРаботыСистемы()
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.ПроверитьВерсиюПлатформы("8.3.6.2299", "8.2.19.130");
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.УстановитьПроизвольныйЗаголовокПриложения();
// ОбновлениеВерсииИБ
ОбновлениеИнформационнойБазыКлиент.ВыполнитьОбновлениеИнформационнойБазы();
// Конец ОбновлениеВерсииИБ
// отработка параметров запуска системы
Если ОбработатьПараметрыЗапуска(ПараметрЗапуска) Тогда
Возврат;
КонецЕсли;
// ОбновлениеКонфигурации
ОбновлениеКонфигурацииКлиент.ПроверитьОбновлениеКонфигурации();
// Конец ОбновлениеКонфигурации
// ЗавершениеРаботыПользователей
СоединенияИБКлиент.УстановитьКонтрольРежимаЗавершенияРаботыПользователей();
// Конец ЗавершениеРаботыПользователей
// Конец СтандартныеПодсистемы
//РаботаСВнешнимОборудованием
МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
//Конец РаботаСВнешнимОборудованием
КонецПроцедуры
.
.
.
Функция ОбработатьПараметрыЗапуска(Знач ПараметрЗапуска)
Перем Результат;
Результат = Ложь;
// СтандартныеПодсистемы
// Есть ли параметры запуска
Если ПустаяСтрока(ПараметрЗапуска) Тогда
Возврат Результат;
КонецЕсли;
// Параметр может состоять из частей, разделенных символом ";".
// Первая часть - главное значение параметра запуска.
// Наличие дополнительных частей определяется логикой обработки главного параметра.
ПараметрыЗапуска = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска, ";");
ЗначениеПараметраЗапуска = Врег(ПараметрыЗапуска[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);
КонецЕсли;
Процедура ПередНачаломРаботыСистемы(Отказ)
// СтандартныеПодсистемы
// Получим параметры работы клиента за одно обращение к серверу
// Чтобы при повторном вызове этой функции не было обращений к серверу
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента();
Если НЕ ПараметрыРаботыКлиента.ПользователюРазрешенЗапускКонфигурации Тогда
Предупреждение(НСтр("ru = 'Вам не назначена роль ""Пользователь"". Запуск конфигурации невозможен.'"));
Отказ = Истина;
Возврат; //Дальше нет необходимости выполнения, т.к. могут быть ошибки нарушения прав
КонецЕсли;
Если Не Отказ Тогда
СтандартныеПодсистемыКлиент.ДействияПередНачаломРаботыСистемы(Отказ);
КонецЕсли;
// Конец СтандартныеПодсистемы
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.ПроверитьВерсиюПлатформы("8.3.6.2299", "8.2.19.130");
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.УстановитьПроизвольныйЗаголовокПриложения();
// ОбновлениеВерсииИБ
ОбновлениеИнформационнойБазыКлиент.ВыполнитьОбновлениеИнформационнойБазы();
// Конец ОбновлениеВерсииИБ
// отработка параметров запуска системы
Если ОбработатьПараметрыЗапуска(ПараметрЗапуска) Тогда
Возврат;
КонецЕсли;
// ОбновлениеКонфигурации
ОбновлениеКонфигурацииКлиент.ПроверитьОбновлениеКонфигурации();
// Конец ОбновлениеКонфигурации
// ЗавершениеРаботыПользователей
СоединенияИБКлиент.УстановитьКонтрольРежимаЗавершенияРаботыПользователей();
// Конец ЗавершениеРаботыПользователей
// Конец СтандартныеПодсистемы
//РаботаСВнешнимОборудованием
МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
//Конец РаботаСВнешнимОборудованием
КонецПроцедуры
Дальнейшие варианты:
1. Берете и вызываете процедуру регламентного задания из обработки и идете отладчиком.
Смотрите почему не попадает в СоздатьИнвентаризацияТоваровНаСкладе.
2. Смотрите журнал регистрации или в консоле заданий какая ошибка происходит при выполнении СоздатьИнвентаризацияТоваровНаСкладе
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);
КонецПопытки;
Если ЕстьОшибка=1 Тогда
НашлиФайл = НайтиФайлы(ПолноеИмяФайла).Количество();
Если НашлиФайл<>0 Тогда
ПереместитьФайл(ПолноеИмяФайла,СтрЗаменить(ПолноеИмяФайла,ФайлТЦУ,ФайлТЦУ_other));//файл
КонецЕсли;
Попытка
ДокInventory.Записать(РежимЗаписиДокумента.Проведение); [i](970 строка)[/i]
ЧтениеXML.Закрыть();
ПереносФайлов(ОснПараметры,0);
Исключение
ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
ДокInventory.Записать(РежимЗаписиДокумента.Запись);
ЧтениеXML.Закрыть();
ПереносФайлов(ОснПараметры,1);
КонецПопытки;
Уберите попытку и оставьте то что в исключении
ДокInventory.Записать(РежимЗаписиДокумента.Запись);
ЧтениеXML.Закрыть();
ПереносФайлов(ОснПараметры,1);
Batchir @ Вчера, 22:49
,
Так? (По крайней мере так не ругается ни на что)
Попытка
// ДокInventory.Записать(РежимЗаписиДокумента.Проведение);
// ЧтениеXML.Закрыть();
// ПереносФайлов(ОснПараметры,0);
Исключение
// ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
ДокInventory.Записать(РежимЗаписиДокумента.Запись);
ЧтениеXML.Закрыть();
ПереносФайлов(ОснПараметры,1);
КонецПопытки;
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;
КонецФункции
мТЧ.Вставить("DocumentDetail" + Формат(нСтр, "ЧГ = 0"), мТЧСтр);
Petre @ Сегодня, 11:03
,
Спасибо) Ошибка ушла.
А тут осталась. При попытке оставить Исключение зависает.
Попытка
ДокInventory.Записать(РежимЗаписиДокумента.Проведение); [i](970 строка)[/i]
ЧтениеXML.Закрыть();
ПереносФайлов(ОснПараметры,0);
Исключение
ПолучОшибки(ОписаниеОшибки(),ОснПараметры);
ДокInventory.Записать(РежимЗаписиДокумента.Запись);
ЧтениеXML.Закрыть();
ПереносФайлов(ОснПараметры,1);
КонецПопытки;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua