Выгрузка данных из LS Торговля 2.0 в 1С Бухгалтерия 2.0

Учет товаров оптово-розничной сети (магазины и склады)
hamlet2k
Сообщения: 4
Зарегистрирован: Ср, 27 ноя 2013, 03:56

Выгрузка данных из LS Торговля 2.0 в 1С Бухгалтерия 2.0

Непрочитанное сообщение hamlet2k » Ср, 27 ноя 2013, 16:14

Введение.
Возможно, кому-то это будет интересно...
В небольшом интернет-магазине ведется учет в программе "LS Торговля".
Бухгалтерские услуги на аутсорсе и для бухгалтеров нужна выгрузка первичных документов (приход-расход).

Начальные данные.
Торговля 2.0 установлена на ОС Линукс (дистрибутив основанный на Slackware). Установка проблем не вызвала:
1. Устанавливается wine;
2. Устанавливаем торговлю.
И всё, можно работать.
1С Бухгалтерия 2.0 находится, соответственно в бухгалтерской конторе. Т.к. учет простой УСН, только розничная торговля, то для отражения расхода будут формироваться только документы "Отчет о розничных продажах". Для прихода - "Поступление товаров и услуг".

Что было сделано.
1. Устанавливаем СУБД Firebird для вашей ОС с сайта http://www.firebirdsql.su
2. Пишем скрипт с запросом нужных нам данных:

Код: Выделить всё

connect localhost://home/hamlet/.wine/drive_c/Lugasoft/Toros/data/toros.fdb user SYSDBA password masterkey;
set NAMES WIN1251;
SELECT 
	OGLAV.OPER AS "Operation", 
	OGLAV.NMR AS "Number", 
	OGLAV.DATA AS "Data",
	OGLAV.TIMN AS "CreationTime", 
	OGLAV.SUM_R AS "DocSumm", 
	DOKUM.PRX AS "Quantity", 
	DOKUM.CEN_R AS "DocPrice", 
	POSTU.CEN_S AS "PostuPrice", 
	S_TOVAR.NAMEP AS "Tovar", 
	S_OBEKT.NAMEP AS "Customer",
	"Otpravitel".NAMEP AS "Otpravitel", 
	S_OBEKT.ADRES AS "Adres",
	S_GRUP0.NAMEV AS "TovarParent0", 
	S_GRUP1.NAMEV AS "TovarParent1" 
FROM 
	OGLAV
		LEFT JOIN DOKUM
			LEFT JOIN POSTU
				LEFT JOIN S_TOVAR
					LEFT JOIN S_GRUP0 
						ON SUBSTRING(S_TOVAR.TOVAR FROM 1 FOR 1) = S_GRUP0.GRUP0 
					LEFT JOIN S_GRUP1 
						ON SUBSTRING(S_TOVAR.TOVAR FROM 1 FOR 3) = S_GRUP1.GRUP1 
					ON S_TOVAR.TOVAR = POSTU.TOVAR 
				ON POSTU.NTV_S = DOKUM.NTV_S AND POSTU.NMR_S = DOKUM.NMR_S
			ON OGLAV.NMR = DOKUM.NMR
		LEFT JOIN S_OBEKT
			ON OGLAV.OBEKT_P = S_OBEKT.OBEKT
		LEFT JOIN S_OBEKT AS "Otpravitel"
			ON OGLAV.OBEKT_R = "Otpravitel".OBEKT
WHERE 
	OGLAV.DATA BETWEEN '01.01.2013' AND '31.12.2013'
;
quit;
Назовём наш файл "script.sql"
3. Пишем скрипт запуска утилиты isql, идущей в комплекте с СУБД, для линукса он выглядит примерно так:

Код: Выделить всё

# Запуск программы
/opt/firebird/bin/isql -q -i ./script.sql -o ./results.txt
для виндовсов будет почти то же самое, только пути нужно прописать другие и с другимы слэшами. Назовём этот файл "script.sh"
4. Уф, самое лёгкое закончилось. Теперь нужно в script.sql выставить нужный период выгрузки и запускаем "script.sh" (в виндовс .cmd или .bat) и получаем результат выгрузки в текстовом файле "results.txt"
5. Теперь самое сложное: написать для бухгалтерии обработку, которая сможет интерпретировать данные из полученного файла в набор объектов 1С. Но, к счастью, обработка такая уже есть и если мне позволит администратор, я хотел бы прикрепить её к сообщению.

Итог
Вот таким нехитрым способом налажен обмен первичными документами между LS Тоговлей и 1C Бухгалтерией. И мы избавлены от необходимости покупать 1С "Управление торговлей" (или "Розницу") и бухгалтера избавлены от ручного набивания документов и справочников.

hamlet2k
Сообщения: 4
Зарегистрирован: Ср, 27 ноя 2013, 03:56

Непрочитанное сообщение hamlet2k » Пт, 29 ноя 2013, 03:23

А вот и сама обработка, спасибо администрации сайта за возможность прикреплять файлы :)
Это не универсальная обработка на все случаи жизни. А сделана под конкретные задачи. Но вы можете, при необходимости, доработать её под себя. На сайте firebird'а даже есть пример подключения к базе из 1С напрямую.
Вложения
т_ЗагрузкаТорос.zip
Обработка для 1С Бухгалтерии 2.0 для загрузки данных из LS Торговли 2.0
(19.98 КБ) 64 скачивания

Ответить