Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Бэк-офисы платформы 1С

Обработка выгрузки/загрузки данных из Далион Тренд : Бэк-офисы платформы 1С

29.03.2024 1:27


04.02.2016 10:15
Tigra_N
 
Недавно купили Далион Тренд и столкнулись с проблемой.
Дело в том, что я из Армении, и соответственно, все наименования номенклатуры на армянском. При подключении оборудования к Далиону возникают проблемы с терминалами сбора данных и весами с печатью этикеток DIGI.
У меня есть загрузчик для весов, который считывает наименования, плу коды, цену и т.д. из XML файла и выгружает их в весы. Структура файла строго определена (все данные о выгружаемой номенклатуре должны быть между <Report> и </Report>):

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Report>
<CodeSort>1</CodeSort>// это поле обязательно должно быть, его значение не меняется
<Codе>1</Codе> // ПЛУ номенклатуры
<GoodName2>Նարինջ մեծ</GoodName2> // название номенклатуры, выражение между <GoodName2> и </GoodName2> на армянском (юникод)
<PriceOut2>2500</PriceOut2> // цена номенклатуры
<IsPiece>0</IsPiece> // 0 означает весовой товар, 1 - штучно-весовой
<SellByDate>0</SellByDate> // срок годности, значение - число, означает количство дней, начиная от сегодняшнего дня
</Report>
</NewDataSet>

Помогите создать внешнюю обработку для выгрузки в такой файл.

Второй проблемой является выгрузка/загрузка данных из терминала сбора данных. Мой терминал работает на Windows CE. Для нее написана программа сбора данных на базе Superkit, которая выгружает/загружает файл формата CSV. Файл Импорта (входной) , формат файла – CSV, разделитель «;» Имя по-умолчанию SCANIN.DAT , путь к файлу настраивается в программе.

Структура файла следующая:
P;8594404110110;Վաֆլի Գրանդ Քենդի Մու-Մու կգ;0;1;4605664000197;;шт //<ШТРИХКОД> - максимально 64 символа; <НАЗВАНИЕ> - максимально 128 символов, сейчас
назавание на армянском; <ЦЕНА> - CURRENCY, разделитель целой и дробной части «.»; <КОЛИЧЕСТВО> - FLOAT; <ССЫЛОЧНЫЙ ШК ДЛЯ ГРУППОВЫХ ТОВАРОВ> - максимально 64 символа, последнее значение не используется, но должно присутствовать; ;;кг - нет описания, но без этого окончания не будет работать.

Файл Экспорта (выходной) , формат файла – CSV, разделитель «;» Имя по-умолчанию SCANOUT.DAT, путь к файлу настраивается в программе.
Структура файла следующая:
P;4820080724322;2.000 //Префикс записи «P»; <ШТРИХКОД> - 64 символа; <КОЛИЧЕСТВО> - FLOAT.

Для ТСД тоже нужна обработка выгрузки/загрузки.
Помогите решить эти два вопроса.
К Атолу обращался за помощью - молчат.
Служба поддержки Далион говорит, что очень заняты.
Очень нужна помощь.
04.02.2016 12:39
KirillHome
 
какой - UTF-8, UTF-16, UTF-32?

Для двух записей как будет выглядеть - так:

Код:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
 <Report>
   <CodeSort>1</CodeSort>//	это поле обязательно должно быть, его значение не меняется
   <Codе>1</Codе>	//	ПЛУ номенклатуры
   <GoodName2>Նարինջ մեծ</GoodName2>	//	название номенклатуры, выражение между <GoodName2> и </GoodName2> на армянском (юникод)
   <PriceOut2>2500</PriceOut2>	//	цена номенклатуры
   <IsPiece>0</IsPiece>	//	0 означает весовой товар, 1 - штучно-весовой
   <SellByDate>0</SellByDate>	//	срок годности, значение - число, означает количство дней, начиная от сегодняшнего дня
 </Report>
 <Report>
   <CodeSort>1</CodeSort>//	это поле обязательно должно быть, его значение не меняется
   <Codе>2</Codе>	//	ПЛУ номенклатуры
   <GoodName2>Նարինջ մեծ2</GoodName2>	//	название номенклатуры, выражение между <GoodName2> и </GoodName2> на армянском (юникод)
   <PriceOut2>2500.00</PriceOut2>	//	цена номенклатуры
   <IsPiece>0</IsPiece>	//	0 означает весовой товар, 1 - штучно-весовой
   <SellByDate>0</SellByDate>	//	срок годности, значение - число, означает количство дней, начиная от сегодняшнего дня
 </Report>
</NewDataSet>
или как-то по другому?

Все "дополнительные признаки" - PLU номенклатуры; название на армянском; признак весовой/штучно-весовой; срок годности - где находятся - в справочнике номенклатуры или где-то ещё?
Нужно делать выгрузку по произвольному списку товаров? По всему списку товаров? По документам поступления/перемещения/изменения цен? Как-то ещё?
04.02.2016 15:16
Tigra_N
 
Цитата:
UNICODE какой - UTF-8, UTF-16, UTF-32?
Юникод UTF-8, но, по-моему, это не имеет значения, загрузчик решает эту проблему

Цитата:
Для двух записей как будет выглядеть - так:
да, точно так!

Цитата:
Все "дополнительные признаки" - PLU номенклатуры; название на армянском; признак весовой/штучно-весовой; срок годности - где находятся - в справочнике номенклатуры или где-то ещё?
1.название на армянском - берется из справочника номенклатуры
2.признак весовой/штучно-весовой - тоже оттуда, у справочника номенклатура есть реквизиты
а. весовой - тип булево
б. ВыгружатьВВесы - тип булево

PLU номенклатуры, срок годности - не знаю, сейчас пытаюсь выяснить, но никто не отвечает
цена номенклатуры берется из регистра сведений ЦеныНоменклатуры (измерения: Номенклатура, ХарактеристикаНоменклатуры, КатегорияЦен; ресурсы: Цена, Себестоимость)
04.02.2016 15:58
KirillHome
 
С ценой всё понятно, откуда она берётся.
Писать совсем уж универсальную обработку я не возьмусь (в которой бы пользователь выбирал, из каких справочников и по каким полям надо выбирать данные).
Поэтому - нужны полные явки/пароли для того, что нужно выбирать.
К примеру:
наименование на армянском - берём из справочника "Номенклатура", поле "Полное наименование" (ну, или какое-то другое).
И так по всем полям:
  1. ПЛУ номенклатуры
  2. название номенклатуры на армянском
  3. срок годности
  4. Признак весовой или нет (что такое штучно/весовой - я не понимаю от слова "совсем").
Потом будем думать - как выбирать.
А, ещё вопрос по поводу цены - она указывается в драмах или в лумах?
Т.е. в данном примере цена 25 драмов или 2500? Может ли быть цена не целым числом?


По идее, при запуске обработки у пользователя должны уточнить:
  1. Разделитель целой и дробной части для цены
  2. Используемая цена
  3. Имя файла вывода.
А в остальном - с этим всё более-менее понятно, не очень пока понятно - как выбрать по каким товарам выгрузить данные в файл.
Самый простой вариант - это в обработке добавить табличную часть "Товары", в которую пользователь сможет добавить сам нужные товары; хотя это и не самый правильный вариант.

И ещё - скорее всего придётся как-то очищать данные в весах. Как?
05.02.2016 15:32
Tigra_N
 
Цитата:
Писать совсем уж универсальную обработку я не возьмусь (в которой бы пользователь выбирал, из каких справочников и по каким полям надо выбирать данные).
Универсальная не нужна, есть готовая обработка в Далионе, могу экспортировать для ознакомления, но вряд ли обработка без конфигурации будет полезной.

Цитата:
Поэтому - нужны полные явки/пароли для того, что нужно выбирать
могу открыть доступ по teamviewer или похожей

Цитата:
наименование на армянском - берём из справочника "Номенклатура", поле "Полное наименование" (ну, или какое-то другое).
без разницы откуда брать, все равно полное наименование в основном будет совпадать с наименованием, желательно брать из поля "Полное наименование"

Цитата:
И так по всем полям:
1.ПЛУ номенклатуры //обработка Обработка.УправлениеВесами.Форма.ФормаТаблицаТоваров
2.название номенклатуры на армянском //справочник Номенклатура, реквизит НаименованиеПолное, тип Строка
3.срок годности //справочник Номенклатура, реквизит СрокХранения, тип Число
3.Признак весовой или нет //справочник Номенклатура, реквизит Весовой, тип Булево
Цитата:
что такое штучно/весовой - я не понимаю от слова "совсем"
например: продаем хлеб, кг хлеба стоит 10 руб. Мы не можем продать только 80% одного хлеба, его надо продать целиком, но при взвешивании он будет не 1 кг, а 1,2 кг. Вот тебе и получается один хлеб за 1,2 Х 10=12 рублей.
Думаю в карточке номенклатуры "ВыгружатьВВесы" = Истина и ед. измерения "кг", то значение <IsPiece>0</IsPiece> должно быть 0, а при ед. изм. "шт", должно быть 1

Цитата:
А, ещё вопрос по поводу цены - она указывается в драмах или в лумах?
Т.е. в данном примере цена 25 драмов или 2500? Может ли быть цена не целым числом?
Цена указывается в драмах. В данном случае 2500 (две тысячи пятьсот драм). В конфигурации цены указывается 2500,00 т.е. две тысячи пятьсот драм ноль лум.
В весах настроено, чтобы дробная часть не показывалась, но кодга отправляю в весы 2500,00 на этикетке печатается 250000 (т.е двести пятьдесят тысяч). Это второстепення проблема, потом разберусь.

Цитата:
А в остальном - с этим всё более-менее понятно, не очень пока понятно - как выбрать по каким товарам выгрузить данные в файл.
Самый простой вариант - это в обработке добавить табличную часть "Товары", в которую пользователь сможет добавить сам нужные товары; хотя это и не самый правильный вариант.
Да, именно так и сделали в Далионе, я выгружать те товары, у которых реквизит ЗагружатьВВесы = Истина

Цитата:
И ещё - скорее всего придётся как-то очищать данные в весах. Как?
У меня есть программа, которая это делает. Думаю с этим не будет проблем. Мне не надо работать с весами на прямую, надо только выгружать в файл.
Файл после выгрузки в весы удалается.
05.02.2016 15:55
KirillHome
 
Цитата:
Tigra_N
1.ПЛУ номенклатуры //обработка Обработка.УправлениеВесами.Форма.ФормаТаблицаТоваров
Опять не понятно - данные можно брать из справочников, из регистров, из документов в конце концов, но уж ни как не из других обработок.

Без всяких проверок обработку могу бросить хоть сейчас (но без PLU - она не имеет смысла ).

Цитата:
Tigra_N
Цитата:
что такое штучно/весовой - я не понимаю от слова "совсем"
например: продаем хлеб, кг хлеба стоит 10 руб. Мы не можем продать только 80% одного хлеба, его надо продать целиком, но при взвешивании он будет не 1 кг, а 1,2 кг. Вот тебе и получается один хлеб за 1,2 Х 10=12 рублей.
Чем это отличается от яблок, дынь и арбузов?
Цитата:
Tigra_N Думаю в карточке номенклатуры "ВыгружатьВВесы" = Истина и ед. измерения "кг", то значение <IsPiece>0</IsPiece> должно быть 0, а при ед. изм. "шт", должно быть 1
Думаю, что необходимо полное описание правил формирования полей.
06.02.2016 11:16
Tigra_N
 
Цитата:
Без всяких проверок обработку могу бросить хоть сейчас (но без PLU - она не имеет смысла ).
пришли пожалуйста для тестирования, если надо я пошлю их обработку.

Цитата:
Опять не понятно - данные можно брать из справочников, из регистров, из документов в конце концов, но уж ни как не из других обработок.
Я так понимаю, они создают ТабличныйДокумент, где и записываются ПЛУ.

Цитата:
Процедура ЗаполнитьТаблицуТоваровНаСервере()

ОтфильтрованныеДанные = Обработки.УправлениеВесами.ПолучитьТоварыДляТаблицыТоваров(ГруппаВесов); //при добавлении весов, их группируем

ОтборПоПЛУ = Новый Структура("ПЛУ");
ОтборПоТовару = Новый Структура;

ТекущийСводоныйПЛУ = 1;

Для Каждого ТекСтрока Из ОтфильтрованныеДанные Цикл

// Проверим наличие товара в таблице
ОтборПоТовару.Вставить("Номенклатура", ТекСтрока.Номенклатура);

Если Константы.ИспользоватьХарактеристикиНоменклатуры.Получить() Тогда
ОтборПоТовару.Вставить("ХарактеристикаНоменклатуры", ТекСтрока.ХарактеристикаНоменклатуры);
КонецЕсли;

СтрокиТоваров = ТаблицаТоваров.НайтиСтроки(ОтборПоТовару);

Если СтрокиТоваров.Количество() > 0 Тогда
Продолжить;
КонецЕсли;

// Попробуем поместить товар в его старый ПЛУ
Если ТекСтрока.ПЛУ <> 0 Тогда

ОтборПоПЛУ.ПЛУ = ТекСтрока.ПЛУ;

СтрокиТоваров = ТаблицаТоваров.НайтиСтроки(ОтборПоПЛУ);

Если СтрокиТоваров.Количество() = 1
И НЕ ЗначениеЗаполнено(СтрокиТоваров[0].Номенклатура) Тогда

СтрокиТоваров[0].Номенклатура = ТекСтрока.Номенклатура;
СтрокиТоваров[0].ХарактеристикаНоменклатуры = ТекСтрока.ХарактеристикаНоменклатуры;
СтрокиТоваров[0].ИспользованиеХарактеристик = ТекСтрока.ИспользованиеХарактеристик;
СтрокиТоваров[0].Цена = ТекСтрока.Цена;
СтрокиТоваров[0].ВнутреннийКод = ТекСтрока.ВнутреннийКод;

Продолжить;
КонецЕсли;

КонецЕсли;

// Найдем свободный ПЛУ, запишем товар в эту строку
Пока ТекущийСводоныйПЛУ < ТаблицаТоваров.Количество()
И ЗначениеЗаполнено(ТаблицаТоваров[ТекущийСводоныйПЛУ - 1].Номенклатура) Цикл
ТекущийСводоныйПЛУ = ТекущийСводоныйПЛУ + 1;
КонецЦикла;

ТекущаяСтрока = ТаблицаТоваров[ТекущийСводоныйПЛУ - 1];

ТекущаяСтрока.Номенклатура = ТекСтрока.Номенклатура;
ТекущаяСтрока.ХарактеристикаНоменклатуры = ТекСтрока.ХарактеристикаНоменклатуры;
ТекущаяСтрока.ИспользованиеХарактеристик = ТекСтрока.ИспользованиеХарактеристик;
ТекущаяСтрока.Цена = ТекСтрока.Цена;
ТекущаяСтрока.ВнутреннийКод = ТекСтрока.ВнутреннийКод;
КонецЦикла;

КонецПроцедуры // ЗаполнитьТаблицуТоваровНаСервере()
Цитата:
Чем это отличается от яблок, дынь и арбузов?
В принципе ничем.

Цитата:
Думаю, что необходимо полное описание правил формирования полей.
Давайте по порядку:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Report>
<CodeSort>1</CodeSort>// это поле не меняется, его так и запишем
<Codе>1</Codе> // ПЛУ номенклатуры, берем из ТаблицаТоваров
<GoodName2>Նարինջ մեծ</GoodName2> // название номенклатуры, берем из той же таблицы(ТаблицаТоваров)
<PriceOut2>2500</PriceOut2> // цена номенклатуры, берем из той же таблицы(ТаблицаТоваров)
<IsPiece>0</IsPiece> // если ед. измерения Номенклатуры текущей строки в таблице равна "кг", то значение IsPiece равна 0, если же ед. измерения Номенклатуры текущей строки в таблице равна "шт", то значение IsPiece равна 1
<SellByDate>0</SellByDate> // срок годности, его значения, я не имею понятия откуда надо брать. но это пока не критично. попробую узнать у тех. поддержки Далиона
</Report>
</NewDataSet>
06.02.2016 12:04
Tigra_N
 
есть еще регистр сведений ПЛУТоваровВВесах, думаю можно данные брать и оттуда.
06.02.2016 12:21
Tigra_N
 
я спрашивал про разницу весового и штучно-весового. мне привели пример, который мне все-таки непонятен, но все же:
у нас есть лимоны. цена лимона 10 рублей. мы выгружаем в весы штрих-код штучного товара. при покупке 6 лимонов, ставим все 6 лимонов на весы, вбиваем плу лимона, указываем количество 6шт. весы печатают штрих-код, который при сканировании на кассе будет автоматически считывать количество и цену 6 лимонов одновременно, т.е. кассиру не надо считать количество или 6 раз сканировать лимоны.
07.02.2016 01:22
MWWRuza
 
Ну, это как-бы "сводный ШК", который штучный, но при этом еще и количество в себе содержит... Я, в частности, не знаю, в каких УС это реализовано и как... Возможно как весовой, с целым числом веса, с отдельной единицей измерения... Но, это должны весы поддерживать.
Часовой пояс GMT +3, время: 01:27.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.