Frontol 6 выгрузка справочника Товары

1. aximo 2137 04.01.24 21:37 Сейчас в теме
Подскажите команду для файла report.txt, что бы - при отправке его во фронтол _ получить полностью справочник товаров в каталог в любом читаемом формате

Если такая команда есть конечно

Используется фронтол 6
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1556 05.01.24 00:19 Сейчас в теме
(1) если это отчет (report) из фронтол в этом файле информация по товару только его SKU и цена, наименования в нем нет,
но если это список выгрузки в фронтол
тогда список товаров это csv
1 столб SKU
2 ШК
3 Наим
....
5 Цена
3. aximo 2137 05.01.24 09:24 Сейчас в теме
Интересует получения справочника товаров из фронтола наименее затратным способом
4. independ 1556 05.01.24 10:34 Сейчас в теме
(3) sql запрос к базе firebird фронтол, таблица wares (могу ошибаться но в xpos база sqlite так называется)
еще вариант через через импорт экспорт в фронтол администратор выбрать таблицу товаров, сохранить в csv
https://atol-kassa.ru/frontol-perenos-nastroek-i-tovarov-iz-odnoj-programmy-v-druguyu/
5. aximo 2137 05.01.24 13:08 Сейчас в теме
(4) это понятно, а есть что-то попроще - для пользователя... выгружать из базы - слишком много действий
6. independ 1556 05.01.24 13:16 Сейчас в теме +2 $m
(5) Для пользователя? Нужно получить список товаров из базы фронтол (код,наим,шк,цена) условно за 1 клик мышкой?
Нет такого простого решения, скрипт писать придется к базе firebird фронтол
7. aximo 2137 05.01.24 14:59 Сейчас в теме
(6) у вас случайно нет такого скрипта? Не посоветуете на чем написать такое?
8. independ 1556 05.01.24 16:30 Сейчас в теме
(7) можно не из базы фронтол, а из текстового файла загрузки товаров, например на OneScript, только товары без групп (каталогов)
	ФайлФронтол="D:\goods.txt";
	ФайлHTML="D:\goods.html";
	Текст = Новый ТекстовыйДокумент;
	Текст.Прочитать(ФайлФронтол);
	КоличествоСтрок = Текст.КоличествоСтрок();
	Массив=Новый Массив;
	Массив.Добавить("<ht ml>");
	Массив.Добавить("<body>");
	Массив.Добавить("<table border>");
	Для Строка = 1 По КоличествоСтрок Цикл
		МассивСтр=СтрРазделить(Текст.ПолучитьСтроку(Строка),";",Истина);
		Если МассивСтр.Количество()>20 Тогда
			Массив.Добавить("<tr>");
			Массив.Добавить("<td>"+МассивСтр[0]+"</td>");
			Массив.Добавить("<td>"+МассивСтр[2]+"</td>");
			Массив.Добавить("<td>"+МассивСтр[4]+"</td>");
			Массив.Добавить("<td>"+МассивСтр[1]+"</td>");
			Массив.Добавить("</tr>");
		КонецЕсли;	
	КонецЦикла;
	Массив.Добавить("</table>");
	Массив.Добавить("</body>");
	Массив.Добавить("</html>");

	Текст = Новый ТекстовыйДокумент;
	Текст.ДобавитьСтроку(СтрСоединить(Массив,Символы.ПС));
	Текст.Записать(ФайлHTML);
        ЗапуститьПриложение(ФайлHTML,,Ложь);
Показать

можно кстати html открыть в excel или word
9. aximo 2137 05.01.24 17:18 Сейчас в теме
Все это я пробовал - goods формируется из внешней базы.

Задача именно получить товары из самого фронтола. Более того, я написал запрос для firebird, который получает мне необходимую таблицу данных


Но как это упростить - чтобы это делал пользователь - прошу совета….

Нужно оперировать товарами из фронтол, которых нет в базе источнике
10. independ 1556 06.01.24 12:36 Сейчас в теме
(9) 2 скрипта,
получаем из фронтол нужные таблицы
isql.exe -i sql.txt

sql.txt
CONNECT "localhost:E:\DATA\frontol6\MAIN.GDB" USER "SYSDBA" PASSWORD "masterkey";
SET HEADING OFF;
OUTPUT D:\DATA\frontol6\SPRT.txt;
SEL ECT ID,';',CODE,';',NAME from "SPRT";
OUTPUT D:\DATA\frontol6\BARCODE.txt;
SEL ECT WAREID,';',BARCODE from "BARCODE";
OUTPUT D:\DATA\frontol6\REMAIN.txt;
SELECT WAREID,';',ID fr om "REMAIN";
OUTPUT D:\DATA\frontol6\PRICEDATA.txt;
SELECT REMAINID,';',PRICE fr om "PRICEDATA";
QUIT;
Показать

получаем html отчет через onescript

	ПутьФронтол="D:\DATA\frontol6\";
	
	ФайлHTML="D:\DATA\frontol6\goods.html";

	Текст = Новый ТекстовыйДокумент;
	
	Коды=Новый Соответствие;
	Текст.Прочитать(ПутьФронтол+"REMAIN.txt",КодировкаТекста.UTF8);
	КоличествоСтрок = Текст.КоличествоСтрок();
	Для Строка = 1 По КоличествоСтрок Цикл
		МассивСтр=СтрРазделить(Текст.ПолучитьСтроку(Строка),";",Истина);
		Если МассивСтр.Количество()>1 Тогда
			Коды.Вставить(СокрЛП(МассивСтр[0]),СокрЛП(МассивСтр[1]));
		КонецЕсли;
	КонецЦикла;
	
	Цены=Новый Соответствие;
	Текст.Прочитать(ПутьФронтол+"PRICEDATA.txt",КодировкаТекста.UTF8);
	КоличествоСтрок = Текст.КоличествоСтрок();
	Для Строка = 1 По КоличествоСтрок Цикл
		МассивСтр=СтрРазделить(Текст.ПолучитьСтроку(Строка),";",Истина);
		Если МассивСтр.Количество()>1 Тогда
			Цены.Вставить(СокрЛП(МассивСтр[0]),Число(СокрЛП(МассивСтр[1])));
		КонецЕсли;
	КонецЦикла;
	
	Штрихкоды=Новый Соответствие;
	Текст = Новый ТекстовыйДокумент;
	Текст.Прочитать(ПутьФронтол+"BARCODE.txt",КодировкаТекста.UTF8);
	КоличествоСтрок = Текст.КоличествоСтрок();
	Для Строка = 1 По КоличествоСтрок Цикл
		МассивСтр=СтрРазделить(Текст.ПолучитьСтроку(Строка),";",Истина);
		Если МассивСтр.Количество()>1 Тогда
			ИД=СокрЛП(МассивСтр[0]);
			ШК=СокрЛП(МассивСтр[1]);
			ШК=""+Штрихкоды.Получить(ИД)+","+ШК;
			Штрихкоды.Вставить(ИД,ШК);
		КонецЕсли;
	КонецЦикла;
	
	Текст.Прочитать(ПутьФронтол+"SPRT.txt",КодировкаТекста.UTF8);
	КоличествоСтрок = Текст.КоличествоСтрок();
	
	Массив=Новый Массив;
	Массив.Добавить("<ht ml>");
	Массив.Добавить("<body>");
	Массив.Добавить("<table border>");
	Для Строка = 1 По КоличествоСтрок Цикл
		МассивСтр=СтрРазделить(Текст.ПолучитьСтроку(Строка),";",Истина);
		Если МассивСтр.Количество()>2 Тогда
			ИД=СокрЛП(МассивСтр[0]);
			Код=СокрЛП(МассивСтр[1]);
			Ном=СокрЛП(МассивСтр[2]);
			Цена=Цены.Получить(Коды.Получить(ИД));
			ШК=Штрихкоды.Получить(ИД);
			Массив.Добавить("<tr>");
			Массив.Добавить("<td>"+Код+"</td>");
			Массив.Добавить("<td>"+Ном+"</td>");
			Массив.Добавить("<td>"+Цена+"</td>");
			Массив.Добавить("<td>"+ШК+"</td>");
			Массив.Добавить("</tr>");    
		КонецЕсли;
	КонецЦикла;
	Массив.Добавить("</table>");
	Массив.Добавить("</body>");
	Массив.Добавить("</html>");
	
	Текст = Новый ТекстовыйДокумент;
	Текст.ДобавитьСтроку(СтрСоединить(Массив,Символы.ПС));
	Текст.Записать(ФайлHTML);
	
	ЗапуститьПриложение(ФайлHTML,,Ложь);


Показать
11. aximo 2137 06.01.24 15:38 Сейчас в теме
(9) супер! То, что нужно - а запрос готовый с соединениями таблиц не пробовали?



Тема это никакого отношения к 1с не имеет выходит….
12. independ 1556 06.01.24 16:15 Сейчас в теме
(11) по isql инфу искать непросто, как и синтаксис odbc, + в таблицах несколько десятков тысяч записей, здесь 1c скрипт справится как надо.
13. aximo 2137 06.01.24 20:16 Сейчас в теме
я написал 2 простейших запроса, которые помогли мне вытащить всю информацию, но как их "упростить" - пока не знаю:

CRE ATE VIEW MyWares AS
SEL ECT
sprt.id,
sprt.code,
sprt.mark,
sprt.parentid,
sprt.name,
sprt.text,
sprt.isware,
REMAIN.ID as remainid,
sprt.flags,
sprt.waretype,
barcode.BARCODE
FROM SPRT
LEFT JOIN BARCODE ON SPRT.ID = BARCODE.WAREID
LEFT JOIN REMAIN ON SPRT.ID = REMAIN.WAREID

SELECT
mywares.id,
mywares.code,
mywares.mark,
mywares.parentid,
mywares.name,
mywares.remainid,
mywares.isware,
mywares.text,
mywares.flags,
mywares.waretype,
mywares.barcode,
Pricedata.PRICE

FR OM MyWares

LEFT JOIN PRICEDATA ON MyWares.remainid = PRICEDATA.REMAINID

написано в менеджере для firebird
14. independ 1556 06.01.24 21:10 Сейчас в теме
(13) обычно пользователю весть список не нужен, нужен список с отбором по части наименования или цене (+/-) или шк, у меня для пользователей фронтол (xpos) сделаны несколько HTA приложений. Предполагаю в вашем случае нужно что-то подобное, какое нибудь браузерное окно, пара тройка полей отбора, кнопка показать + таблица результата, как оно будет под капотом данные получать из базы это неважно. Если сие нужно на кассе где нет обычной клавиатуры, то придется буквы нарисовать (для ввода наименования).
17. IlyaReznikov 23.01.24 09:32 Сейчас в теме
(13) Добрый день, дайте пожалуйста рабочий скрипт для выгрузки . Этот останавливается у меня на втором "SELECT". Сделать не могу ничего . Запускал в Database Workbench 5 Pro
Прикрепленные файлы:
15. aximo 2137 07.01.24 00:12 Сейчас в теме
У вас hta сделаны на каком-то строннем сервере или localhost ?

Ведь действительно, можно сделать через jscript запрос к базе данных на кассе и получить от туда что нужно?
16. independ 1556 07.01.24 08:59 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот