#0
by mcwolf
Доброго времени суток! Уважаемые гуру подскажите чайнику =) Питаюсь сделать обработку в 1с 7.7 Торговля+Склад, но что-то не выходит до конца доделать опыта не хватает (не судите строго я только начал изучать) Обработка: //Ограничения на входящие файлы XML: //1) В первой строке обязателен заголовок XML вида <?xml version="1.0" encoding="windows-1251"?> . и собственно сам XML: <?xml version="1.0" encoding="utf-8"?> <gw_srv_rsp> Получается есть теги <DAT>....</DAT> между этих тегов есть <P>...</P> но их может быть несколько но добавляет только первый. Как сделать так чтоб расходная накладная создавалась со всеми позициями указаними в тегах <DAT>....</DAT>?
#1
by Тьма
Для начала было бы неплохо исправить некоторые ошибки 1. По условию Если xml_Прочитать("</DAT>")=1 Тогда предполагается, что xml_Прочитать возвращает 0, если данный тег не найден в следующей строке. Однако 0 возвращается только в случае конца файла. 2. Делать цикл по условию на итератор (пока получить строку файла) и внутри цикла менять этот итератор (уже упомянутое условие) - дурной тон. У тебя каждая вторая строка в файле из-за этого не обрабатывается. 3. Ветвление с сообщением Сообщить ("Элемент с заданным наименованием не найден: " +Товар); не в том условии. Там 2 Если и по смыслу это счастье должно быть в первом. 4. Поиск по наименованию - это плохо. Там код в файле для этого есть. Разумеется, код не должен быть доступен пользователю для изменения. П.С. Лично я разбор этого файла со шлюза делаю так: После посылки АШТТП запроса получаю ответ в одну переменную и работаю с ней. В этой переменной ищу теги DAT и /DAT, выделяю таким образом один чек. Уже в этом чеке ищу строчку "P C=" (или можно так же выделять по очереди по тегу <Р> </Р>) и уже в нем ищу код, цену и количество. Там будут еще нюансы, связанные с возвратными чеками, отменой чека, скидками в чеке (если в Т400 не запрещены скидки, что стоит сделать). Возможно, будет еще много других нюансов, так как описания формата этого файлика в глаза не видел :)
#2
by mcwolf
Спасибо за столь обширный ответ. Я мало чего понял :)) но понял что я еще очень далеко от истины =)
#3
by mcwolf
И еще вопросик есть компонента ecrT400.dll есть пример работы с 1С 8 Код проверен на версии ecrT400.dll — 1.0.4.515, 1С версии 8.2.16.362. Приведенный пример кода написан для управляемого приложения. Результат = «Ошибка соединения МИНИ Т400: «+КодОшибки; Аналогично запускаются и остальные команды, методом t400me. Может кто-то видел код для 7-ки?
#4
by Тьма
Я заметил, что ты не используешь 1с-ные функции работы со строками Найти и Сред. Может, с ними будет попроще? Что-то типа: Делаю все обычным АШТТП запросом, без ВК. Вот так продажи получаю. Правда, с четвертой версией шлюза этот код перестал работать, но меня пока устраивает третья :)
#5
by Тьма
+И да, ПреобразоватьСтрокуВУТФ8 можно заменить просто на сокрлп - там с кодировками некая шняга, в заголовке указан УТФ, а принимает файл только в АНСИ. Хотя если руками загружать на шлюз, нужен УТФ. :)
#6
by Тьма
Если сильно хочешь через ВК, то отличия для 7.7 невелики: ПодключитьВнешнююКомпоненту(«ecrmini.t400?); пишешь
#7
by mcwolf
Насколько я понял можно еще юзать ecrT400.dll и можно будет вытащить нужные данные со шлюза? Или есть другие способы чтения отчётов Мини Т400, потому что за день много продаж а вручную вбивать пипец как долго...
#8
by Тьма
Есть и другие. В есть пример ХТТП-запроса к шлюзу. Также этот метод описан в документации по ссылке . Кроме того, непосредственно в интерфейсе шлюза можно выгрузить ручками же хмл-файл с продажами или же эксель-файл с теми же данными - если работа с экселем по каким-то причинам представляется более предпочтительной.
#9
by mcwolf
Если тебе не сложно можешь показать как пользоваться твоими указаниями на моём примере?
#12
by Тьма
Ну... а что неясно в ? По поводу твоего примера - надо заменить /////// это не вполне оптимально, но работать должно лучше. С февраля 2013. На шлюз третьей версии ХТТП-запросом, единственно что 1с не умеет посылать ХТТП-запросы размером более 500Кб, по подсказке с этого форума отправляю vbs-скриптом, который, впрочем, все равно создается и вызывается из 1С. На шлюз четвертой - формируется хмл и оператор ручками на шлюзе его грузит. Их есть у меня :)
#13
by mcwolf
Если сделать замену ка ты говоришь то на каждую позицию создается новая накладная, а нужно чтоб создавалась накладная согласно <DAT>...</DAT>, Если поставить "Если xml_Прочитать("</DAT>")=1 Тогда" то года оно разбивает по <DAT>...</DAT> но считывает только первые <P> а остальные пропускает.
#14
by monsterZE
все не читал.. но в чем проблема? =) читаешь строки при <DAT> поднимаешь флаг нового документа пока не </DAT> пихаешь строки в документ по <p></p> вот тебе для примера.. что-то аналогичное только у меня собирается в тз и по колонкам тз_на_форме выводится нужное (чтоб прощее добавлять новое) Состояние("Загрузка файла обмена ПП"); Предупреждение("Ошибка в структуре файла обмена, текущее ПП пропущено",5);
#16
by mcwolf
В принципе то оно так но теперь все записывается в одну накладную... а нужно чтоб на каждый <DAT> создавалась новая накладная.
#17
by mcwolf
Спасибо Вам за ответ но я вернусь к первому посту "не судите строго я только начал изучать"
#18
by mcwolf
Ах да и еще забыл записывает в одну накладную и все равно только первые позиции <P> остальные пропускает...
#19
by Тьма
Сейчас досмотрелся - это чудо юнисистемское пишет каждый чек в одну строчку. Ну а твой код из каждой строчки берет только один товар. Так что твоя процедурка xml_Прочитать этого не отработает и придется тебе писать два цикла - один по строкам, а второй по поиску в текущей строке открывающего и закрывающего тега <P>. Потом уже вырванную серединку можешь скормить своей процедуре. После нахождения первого закрывающего тега обрезаешь строку справа и ищешь в новой строке и т.д. пока все теги <P> не будут найдены. Смотри описание функция работы со строками Найти и Сред.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: USN_Acc8.ert и USN_Acc8.xml
- v7: 1С V7.7 в сети
- v7: AddIn.XMLParser + 1С 7.7 = Нет переносов, всё в одну строку (XML)
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: commerceML offers.xml import.xml
- v7: Помогите с компонентой V7 plus работа с XML
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- УТ 11 + Штрих-ФР-К + Терминал - отказываются работать(
- Программно обойти рлс
- Запрос в цикле (или цикл в запросе)?
- УТ 11, документ Поступление, переход по Enter
- v8: 1C и MS Exchange Server
- Нумерация документов в РИБ
- Как отловить событие кнопки "Обновить" в форме списка?
- Универсальный отчёт в таблицу значений
- 1С 8.3. Динамический список на форме. Видимость параметра.
- обработка. поиск по справочникам и документам. 1с 8.3.4
- Кассовая смена закрывается сама собой.
- классика жанра: внешняя обработка для УФ
- СКД и запрос выдают разные результаты
- После обновления БП "У пользователя недостаточно прав..." при записи документа
- Дополнительные поля в колонке "итог" в запросе
- Перенос данных из УТ 10.3 в БП 2.0
- Подключение внешней обработки к документу
- v7: ИндексированнаяТаблица. что вместо "ПолучитьСтрокуПоНомеру" ?
- Сохранение таб дока в pdf
- ПолучитьИзВременногоХранилища( Есть ли ограничениея на размер передаваемых данны