![]() |
|
УТ 11.4. выгрузка в ККМ офлайн - пустой файл выгрузки | ☑ | ||
---|---|---|---|---|
0
Misty
07.11.19
✎
05:17
|
Добрый день. УТ 11.4.8.73. Настроила ККМ офлайн. Подключаемое оборудование - Офлайн оборудование, ККМ, АТОЛ:ККМ Офлайн. Формат обмена - фронтол 5.Правило обмена - указала склад, остатки, цены. В самом правиле если посмотреть список товаров, то они отображаются - и цена и ШК. В самом обмене тоже показывает список товаров, жму выгрузить - появляется сообщение, что выполняется выгрузка данных в ККМ офлайн. Потом -данные успешно выгружены. Создаются в папке обмена два файла - товарный и флаг выгрузки. Но сам файл с базой товаров - пустой. Там только три строчки : ##@@&&
# $$$REPLACEQUANTITY Подскажите, в чем дело? Спасибо |
|||
1
ДенисЧ
07.11.19
✎
05:22
|
В отладчике, вестимо...
|
|||
2
Misty
07.11.19
✎
08:41
|
Сначала выполняется команда КассаТоварыВыгрузить из обработки выгрузки
&НаКлиенте Процедура КассыТоварыВыгрузить(Команда) ТекущиеДанные = Элементы.КассыККМ.ТекущиеДанные; Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.ПравилоОбмена) Тогда ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыполненияОбмена", ЭтотОбъект); МенеджерОфлайнОборудованияКлиент.НачатьВыгрузкуДанныхНаККМ(ТекущиеДанные.ПодключаемоеОборудование, УникальныйИдентификатор, ОписаниеОповещения); Иначе ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Команда не может быть выполнена для указанного объекта'")); КонецЕсли; КонецПроцедуры Потом Процедура НачатьВыгрузкуДанныхНаККМ(ИдентификаторУстройства, УникальныйИдентификатор, ОповещениеПриЗавершении, ОтображатьСообщения = Истина) Экспорт НаборВыгружаемыхДанных = Новый Структура; НаборВыгружаемыхДанных.Вставить("Настройки", Истина); НаборВыгружаемыхДанных.Вставить("ПрайсЛист", Истина); НаборВыгружаемыхДанных.Вставить("Заказы", Истина); НаборВыгружаемыхДанных.Вставить("ПолныйПрайсЛист", Ложь); Контекст = Новый Структура; Контекст.Вставить("СледующееОповещение" , ОповещениеПриЗавершении); Контекст.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор); Контекст.Вставить("ОтображатьСообщения" , ОтображатьСообщения); Контекст.Вставить("НаборВыгружаемыхДанных" , НаборВыгружаемыхДанных); Контекст.Вставить("Команда", "ВыгрузитьДанные"); Так как команда "ВыгрузитьДанные", то идет по ветке выгрузка данных а не выгрузка товаров. Процедура НачатьВыполнениеКоманды(ОповещениеПриЗавершении, Команда, ВходныеПараметры = Неопределено, ОбъектДрайвера, Параметры, ПараметрыПодключения) Экспорт ВыходныеПараметры = Новый Массив(); // Выгрузка товаров в ККМ Offline. Если Команда = "ВыгрузитьТовары" Тогда Товары = ВходныеПараметры[0]; ЧастичнаяВыгрузка = ВходныеПараметры[1]; РасширеннаяВыгрузка = ВходныеПараметры[2]; НачатьВыгрузкуТоваров(ОповещениеПриЗавершении, Параметры, Товары, ЧастичнаяВыгрузка, ВыходныеПараметры, РасширеннаяВыгрузка); // Выгрузка данных ИначеЕсли Команда = "ВыгрузитьДанные" Тогда Товары = ВходныеПараметры.ДанныеДляВыгрузки.ПрайсЛист; ЧастичнаяВыгрузка = НЕ ВходныеПараметры.ДанныеДляВыгрузки.ПрайсЛист.ПолнаяВыгрузка; РасширеннаяВыгрузка = Истина; НачатьВыгрузкуТоваров(ОповещениеПриЗавершении, Параметры, Товары, ЧастичнаяВыгрузка, ВыходныеПараметры, РасширеннаяВыгрузка); И опять тот же вопрос - почему??? |
|||
3
ДенисЧ
07.11.19
✎
08:54
|
А НачатьВыгрузкуТоваров() что говорит?
|
|||
4
Misty
07.11.19
✎
09:02
|
Процедура ВыгрузкаТоваровЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыходныеПараметры = ДополнительныеПараметры.ВыходныеПараметры; Если Результат Тогда Разделитель = ПолучитьРазделитель(); ЧастичнаяВыгрузка = ДополнительныеПараметры.ЧастичнаяВыгрузка; РасширеннаяВыгрузка = ДополнительныеПараметры.РасширеннаяВыгрузка; Товары = ДополнительныеПараметры.Товары; ИмяФайла = ДополнительныеПараметры.ИмяФайла; ИмяФайлаФлага = ДополнительныеПараметры.ИмяФайлаФлага; ФорматОбмена = ДополнительныеПараметры.ФорматОбмена; Файл = Новый ТекстовыйДокумент(); Результат = СформироватьФайлТоваров(Файл, РасширеннаяВыгрузка, ЧастичнаяВыгрузка, ФорматОбмена, Разделитель, Товары, ВыходныеПараметры); Функция СформироватьФайлТоваров Здесь Для Каждого Товар Из Товары.Товары Цикл эта таблица пустая |
|||
5
ДенисЧ
07.11.19
✎
09:08
|
"ДенисЧ ▶ НачатьВыгрузкуТоваров() что говорит?"
" Misty ▶ Процедура ВыгрузкаТоваровЗавершение" https://sun9-29.userapi.com/c1758/u1963376/69082462/x_d6acd088.jpg |
|||
6
Misty
07.11.19
✎
09:11
|
Процедура НачатьВыгрузкуТоваров(ОповещениеПриЗавершении, Параметры, Товары, ЧастичнаяВыгрузка, ВыходныеПараметры, РасширеннаяВыгрузка)
ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении); ДополнительныеПараметры.Вставить("ВыходныеПараметры", ВыходныеПараметры); ДополнительныеПараметры.Вставить("ИмяФайла", Параметры.БазаТоваров); ДополнительныеПараметры.Вставить("ИмяФайлаФлага", Параметры.ФлагВыгрузки); ДополнительныеПараметры.Вставить("Товары", Товары); ДополнительныеПараметры.Вставить("РасширеннаяВыгрузка", РасширеннаяВыгрузка); ДополнительныеПараметры.Вставить("ЧастичнаяВыгрузка", ЧастичнаяВыгрузка); Налоги = ОфлайнОборудованиеАтолККМВызовСервера.ПолучитьНомераНалоговНаККМПоУмолчанию(); Если Параметры.Свойство("НомерНалога0") И ЗначениеЗаполнено(Параметры.НомерНалога0) Тогда Налоги.НомерНалога0 = Параметры.НомерНалога0; КонецЕсли; Если Параметры.Свойство("НомерНалога10") И ЗначениеЗаполнено(Параметры.НомерНалога10) Тогда Налоги.НомерНалога10 = Параметры.НомерНалога10; КонецЕсли; Если Параметры.Свойство("НомерНалога18") И ЗначениеЗаполнено(Параметры.НомерНалога18) Тогда Налоги.НомерНалога18 = Параметры.НомерНалога18; КонецЕсли; Если Параметры.Свойство("НомерНалогаБезНДС") И ЗначениеЗаполнено(Параметры.НомерНалогаБезНДС) Тогда Налоги.НомерНалогаБезНДС = Параметры.НомерНалогаБезНДС; КонецЕсли; Если Параметры.Свойство("НомерНалога20") И ЗначениеЗаполнено(Параметры.НомерНалога20) Тогда Налоги.НомерНалога20 = Параметры.НомерНалога20; КонецЕсли; ДополнительныеПараметры.Вставить("Налоги", Налоги); Если Параметры.Свойство("ФорматОбмена") Тогда ДополнительныеПараметры.Вставить("ФорматОбмена", Параметры.ФорматОбмена); Иначе ДополнительныеПараметры.Вставить("ФорматОбмена", 0); КонецЕсли; ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузкаТоваровЗавершение", ЭтотОбъект, ДополнительныеПараметры); |
|||
7
ДенисЧ
07.11.19
✎
09:32
|
(6) Истинная женщина... Начала, но не показала...
Ты же заметила, что привела всего маленький кусочек этой процедуры? |
|||
8
Misty
07.11.19
✎
09:34
|
Процедура НачатьВыгрузкуТоваров(ОповещениеПриЗавершении, Параметры, Товары, ЧастичнаяВыгрузка, ВыходныеПараметры, РасширеннаяВыгрузка)
ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении); ДополнительныеПараметры.Вставить("ВыходныеПараметры", ВыходныеПараметры); ДополнительныеПараметры.Вставить("ИмяФайла", Параметры.БазаТоваров); ДополнительныеПараметры.Вставить("ИмяФайлаФлага", Параметры.ФлагВыгрузки); ДополнительныеПараметры.Вставить("Товары", Товары); ДополнительныеПараметры.Вставить("РасширеннаяВыгрузка", РасширеннаяВыгрузка); ДополнительныеПараметры.Вставить("ЧастичнаяВыгрузка", ЧастичнаяВыгрузка); Налоги = ОфлайнОборудованиеАтолККМВызовСервера.ПолучитьНомераНалоговНаККМПоУмолчанию(); Если Параметры.Свойство("НомерНалога0") И ЗначениеЗаполнено(Параметры.НомерНалога0) Тогда Налоги.НомерНалога0 = Параметры.НомерНалога0; КонецЕсли; Если Параметры.Свойство("НомерНалога10") И ЗначениеЗаполнено(Параметры.НомерНалога10) Тогда Налоги.НомерНалога10 = Параметры.НомерНалога10; КонецЕсли; Если Параметры.Свойство("НомерНалога18") И ЗначениеЗаполнено(Параметры.НомерНалога18) Тогда Налоги.НомерНалога18 = Параметры.НомерНалога18; КонецЕсли; Если Параметры.Свойство("НомерНалогаБезНДС") И ЗначениеЗаполнено(Параметры.НомерНалогаБезНДС) Тогда Налоги.НомерНалогаБезНДС = Параметры.НомерНалогаБезНДС; КонецЕсли; Если Параметры.Свойство("НомерНалога20") И ЗначениеЗаполнено(Параметры.НомерНалога20) Тогда Налоги.НомерНалога20 = Параметры.НомерНалога20; КонецЕсли; ДополнительныеПараметры.Вставить("Налоги", Налоги); Если Параметры.Свойство("ФорматОбмена") Тогда ДополнительныеПараметры.Вставить("ФорматОбмена", Параметры.ФорматОбмена); Иначе ДополнительныеПараметры.Вставить("ФорматОбмена", 0); КонецЕсли; ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузкаТоваровЗавершение", ЭтотОбъект, ДополнительныеПараметры); Если ЧастичнаяВыгрузка Тогда НачатьПроверкуОбработанностиФайла(ОписаниеОповещения, Параметры.БазаТоваров); // Проверяем обработанность файла. Иначе ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина); // Продолжаем выгрузку. КонецЕсли; КонецПроцедуры Процедура ВыгрузкаТоваровЗавершение(Результат, ДополнительныеПараметры) Экспорт ВыходныеПараметры = ДополнительныеПараметры.ВыходныеПараметры; Если Результат Тогда Разделитель = ПолучитьРазделитель(); ЧастичнаяВыгрузка = ДополнительныеПараметры.ЧастичнаяВыгрузка; РасширеннаяВыгрузка = ДополнительныеПараметры.РасширеннаяВыгрузка; Товары = ДополнительныеПараметры.Товары; ИмяФайла = ДополнительныеПараметры.ИмяФайла; ИмяФайлаФлага = ДополнительныеПараметры.ИмяФайлаФлага; ФорматОбмена = ДополнительныеПараметры.ФорматОбмена; Файл = Новый ТекстовыйДокумент(); Результат = СформироватьФайлТоваров(Файл, РасширеннаяВыгрузка, ЧастичнаяВыгрузка, ФорматОбмена, Разделитель, Товары, ВыходныеПараметры); Если (ФорматОбмена < 4 ИЛИ ФорматОбмена = 7) И НЕ ЧастичнаяВыгрузка Тогда СформироватьСтавкиНДС(Файл, ДополнительныеПараметры.Налоги); КонецЕсли; Если Результат Тогда Попытка Файл.Записать(ИмяФайла, "windows-1251"); Если Не ПустаяСтрока(ИмяФайлаФлага) Тогда Файл.Очистить(); Файл.Записать(ИмяФайлаФлага, "windows-1251"); КонецЕсли; Исключение ВыходныеПараметры.Добавить(999); ОписаниеОшибки = НСтр("ru='Не удалось записать файл товаров по адресу: %Адрес%'"); ВыходныеПараметры.Добавить(СтрЗаменить(ОписаниеОшибки, "%Адрес%", ИмяФайла)); Результат = Ложь; КонецПопытки; КонецЕсли; РезультатВыполнения = Новый Структура("Результат, ВыходныеПараметры", Результат, ВыходныеПараметры); ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеПриЗавершении, РезультатВыполнения); Иначе РезультатВыполнения = Новый Структура("Результат, ВыходныеПараметры", Ложь, ВыходныеПараметры); ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеПриЗавершении, РезультатВыполнения); КонецЕсли; КонецПроцедуры #КонецОбласти |
|||
9
Misty
07.11.19
✎
09:35
|
в Процедуре ВыгрузкаТоваровЗавершение файл с товарами уже пустой
|
|||
10
ДенисЧ
07.11.19
✎
09:35
|
Пошагово будем? Я вместо отладчика?
Результат = СформироватьФайлТоваров(Файл, РасширеннаяВыгрузка, ЧастичнаяВыгрузка, ФорматОбмена, Разделитель, Товары, ВыходныеПараметры); Что тут? |
|||
11
Misty
07.11.19
✎
09:43
|
Результат = истина
Функция СформироватьФайлТоваров(Файл, РасширеннаяВыгрузка, ЧастичнаяВыгрузка, ФорматОбмена, Разделитель, Товары, ВыходныеПараметры) Результат = Истина; Файл.ДобавитьСтроку("##@@&&"); Файл.ДобавитьСтроку("#"); Если РасширеннаяВыгрузка Тогда Если ЧастичнаяВыгрузка Тогда Файл.ДобавитьСтроку("$$$REPLACEQUANTITY"); Иначе Файл.ДобавитьСтроку("$$$DELETEALLWARES"); Файл.ДобавитьСтроку("$$$DELETEALLBARCODES"); Файл.ДобавитьСтроку("$$$DELETEALLASPECTREMAINS"); Файл.ДобавитьСтроку("$$$ADDQUANTITY"); КонецЕсли; Для Каждого ТекГруппа Из Товары.ГруппыТоваров Цикл ДанныеДляЗаполнения = Новый Структура; ДанныеДляЗаполнения.Вставить("Код", Формат(ТекГруппа.Код, "ЧН=0; ЧГ=0")); ДанныеДляЗаполнения.Вставить("Наименование", ПодготовитьСтроку(ТекГруппа.Наименование)); ДанныеДляЗаполнения.Вставить("КодРодительскойГруппы", Формат(ТекГруппа.КодГруппы, "ЧН=0; ЧГ=0")); ДобавитьСтрокуВФайл(Файл, Разделитель, ДанныеДляЗаполнения, ФорматОбмена, Истина); КонецЦикла; Иначе Если ЧастичнаяВыгрузка Тогда Файл.ДобавитьСтроку("$$$REPLACEQUANTITY"); Иначе Файл.ДобавитьСтроку("$$$DELETEALLWARES"); Файл.ДобавитьСтроку("$$$DELETEALLBARCODES"); Файл.ДобавитьСтроку("$$$DELETEALLASPECTREMAINS"); Файл.ДобавитьСтроку("$$$ADDQUANTITY"); КонецЕсли; КонецЕсли; Для Каждого Товар Из Товары.Товары Цикл Если Результат Тогда Параметры = Новый Структура; Параметры.Вставить("Разделитель", Разделитель); Параметры.Вставить("Уровень", "Номенклатура"); Параметры.Вставить("РасширеннаяВыгрузка", РасширеннаяВыгрузка); Параметры.Вставить("ФорматОбмена", ФорматОбмена); Параметры.Вставить("Источник", Товар); Если ЗначениеЗаполнено(Товар.КодЕдиницыИзмерения) Тогда Для Каждого ЕИ Из Товары.ЕдиницыИзмерения Цикл Если ЕИ.Код = Товар.КодЕдиницыИзмерения Тогда Параметры.Вставить("БазоваяЕИ", ЕИ.Наименование); Прервать; КонецЕсли; КонецЦикла; Иначе Параметры.Вставить("БазоваяЕИ", ""); КонецЕсли; ДополнитьФайл(Результат, Файл, ВыходныеПараметры, Параметры); Иначе Прервать; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции |
|||
12
Misty
07.11.19
✎
09:43
|
таблица товаров пустая
|
|||
13
ДенисЧ
07.11.19
✎
09:44
|
Продолжим пошаговое выполненение
строка Для Каждого Товар Из Товары.Товары Цикл Что в ТОвары.Товары7 |
|||
14
Misty
07.11.19
✎
09:45
|
ничего, отладчик в этот цикл не попадает
|
|||
15
ДенисЧ
07.11.19
✎
09:48
|
(14) То есть Товары.Товары - пустая? Так а что выгружать-то будем? )))
Ищи в начале, где она заполняется... Вероятно, есть некая ТЗ на форме, и рядом кнопка заполнить... |
|||
16
Misty
07.11.19
✎
09:49
|
Если Команда = "ВыгрузитьТовары" Тогда
Товары = ВходныеПараметры[0]; ЧастичнаяВыгрузка = ВходныеПараметры[1]; РасширеннаяВыгрузка = ВходныеПараметры[2]; НачатьВыгрузкуТоваров(ОповещениеПриЗавершении, Параметры, Товары, ЧастичнаяВыгрузка, ВыходныеПараметры, РасширеннаяВыгрузка); // Выгрузка данных ИначеЕсли Команда = "ВыгрузитьДанные" Тогда Товары = ВходныеПараметры.ДанныеДляВыгрузки.ПрайсЛист; ЧастичнаяВыгрузка = НЕ ВходныеПараметры.ДанныеДляВыгрузки.ПрайсЛист.ПолнаяВыгрузка; РасширеннаяВыгрузка = Истина; НачатьВыгрузкуТоваров(ОповещениеПриЗавершении, Параметры, Товары, ЧастичнаяВыгрузка, ВыходныеПараметры, РасширеннаяВыгрузка); вот здесь я так понимаю заполняется, только идет по ветке выгрузить данные а не выгрузить товары |
|||
17
Misty
07.11.19
✎
09:51
|
и мне так кажется что это косяк 1с. Вот думала может кто сталкивался с таким или все таки это где то в настройках что то я не указала
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |