Форматы исходящих накладных (DBF, XML)
Сервер ИСС Мед-Заказ производите промежуточную обработку накладных поставщиков прихзодящих в РАЗНЫХ форматах к единому формату требуемому аптекой. В настоящий момент доступны следующие форматы выходных файлов:
- DBF. Описание можно скачать здесь. Для данного формата доступно различные наименвоание файла:
- Имя файла содержит регистрационный номер сервера MedZakaz предваренный буквой n. Например накладныя с внутренним номером 908345 будет иметь имя файла такое — n908345.dbf. Данный формат совместим с программой 1С версии 7.7 которая очень неохотно работает с именами файлов длиннее 12 символов.
- Имя файла содержит наименование поставщика и номер накладной поставщика. Например для Аптеки-Холдинг с накладной №АХ1-0984369/0 имя файла будет следующее nАптекаХолдингАХ1_0984369_0.dbf
- Имя файла содержит наименование поставщика, номер накладной поставщика и сумму накладной. Например накладная из пункта 2 с суммой 1915 будет выглядеть так nАптекаХолдингАХ1_0984369_0_1915.dbf
- XML формат. внутри накладной содержится вся требуемая информация по товарам и по накладной, имя файла идентично пункту 1.2 — nАптекаХолдингАХ1_0984369_0.xml
Все образцы накладных Вы можете просмотреть в архиве скачав его здесь.
Как получить из 1С доступ к справочнику наименований в ИСС Мед-Заказ
Для загрузки внутреннего справочника ИСС Мед-Заказ в 1С Вы можете воспользоваться следующим способом.
- Установите серверную версию FireBird на компьютер с базой программы Мед-Заказ. Как это сделать описано тут.
- Найдите в папке с программой файл gds32.dll и удлаите его. Если такого файла нет, то искать в других местах не нужно.
- На компьютер с программой 1С установите ODBC драйвер. Скачать драйвер можно отсюда http://www.firebirdsql.org/en/odbc-driver/ Загружайте драйвер согласно Вашей версии Windows, т.е. 32-х, либо 64-х разрядную версию.
- Согласно Вашему мировоззрению и логике Вашей программы 1С написать загрузку справочников из программы Мед-Заказ. Код для внешней обработки приведен ниже.
Подключение к базе ИСС Мед-Заказ.
ИмяБД = "C:\MedZakaz\medzakaz.fdb"; //Указывается пусть к базе. В сети указывается в слеюущем формате
// <Имя компьютера>:<Путь к базе на локальном компьютере>
// Например: Server:C:\MedZakaz\MedZakaz.FDB
ПользовательБД = "SYSDBA";
ПарольПользователяБД = "masterkey";
БД=CreateObject("ADODB.Connection");
БД.ConnectionString =
"DRIVER=Firebird/InterBase(r) driver;" +
"PWD=" + ПарольПользователяБД + ";" +
"UID=" + ПользовательБД + ";" +
"DBNAME=" + ИмяБД;
Попытка
БД.Open();
Исключение
Сообщить(ОписаниеОшибки());
Предупреждение("Не удалось подключиться к IB ...")
КонецПопытки;
Вывод справочника наименований из базы данных.
Запрос=СоздатьОбъект("ADODB.Recordset");
Запрос.ActiveConnection = БД;
Запрос.Source = "select rn.code, rn.trade_name || ' ' || rn.full_form_name, rn.fabr_name from tbl_reestr_names rn";
Запрос.Open();
Пока Запрос.Eof()=0 Цикл
Сообщить("Код - " + Запрос.Fields(0).Value);
Сообщить("Торговое наименование - " + Запрос.Fields(1).Value);
Сообщить("Производитель - " + Запрос.Fields(2).Value);
Запрос.MoveNext();
КонецЦикла;
Запрос.Close();
Получение списка накладных.
Запрос=СоздатьОбъект("ADODB.Recordset");
Запрос.ActiveConnection = БД;
Запрос.Source = "select pd.id, pd.distrib_num_doc, pd.distrib_data_doc, pd.sum_by_distrib, pd.sum_rozn, " +
" pd.num_doc, pd.data_doc "
" from tbl_prihod_doc pd"
" where (tpd.data_doc>='" + ВыбНачПериода + "') and (tpd.data_doc<='" + ВыбКонПериода + "')";
Запрос.Open();
Пока Запрос.Eof()=0 Цикл
Сообщить("ID накладной в базе - " + Запрос.Fields(0).Value);
Сообщить("Номер накладной поставщика- " + Запрос.Fields(1).Value);
Сообщить("Дата накладной поставщика - " + Запрос.Fields(2).Value);
Сообщить("Сумма накладной по поставщику- " + Запрос.Fields(3).Value);
Сообщить("Розничная сумма накладной - " + Запрос.Fields(4).Value);
Сообщить("Внутренний номер накладной- " + Запрос.Fields(5).Value);
Сообщить("Дата оприходования накладной - " + Запрос.Fields(6).Value);
Запрос.MoveNext();
КонецЦикла;
Запрос.Close();
Получение товаров накладной.
Для того чтобы получить список товаров накладной, Вам необходимо получить доступ по внутреннему номеру накладной (нулевое поле из предыдущего запроса).
Запрос=СоздатьОбъект("ADODB.Recordset");
Запрос.ActiveConnection = БД;
Запрос.Source = "select PDL.ID,PDL.PRIHOD_DOC_ID,PDL.TRADE_NAME_ID,PDL.FABR_NAME_ID, " +
" PDL.QNT,PDL.QNT_PACK,PDL.SERIES_TOVAR, PDL.GDATE,PDL.DATE_MADE,PDL.NDS,PDL.PRICE_IZG, " +
" PDL.PRICE_REESTR, PDL.PRICE_POST,PDL.PRICE_DISTR_NO_NDS, PDL.PRICE_DISTR, " +
" PDL.PRICE_MAX,PDL.PRICE_ROZN,PDL.NUMGTD,PDL.SERTIF,PDL.SERTDATE,PDL.SERTGIVE, " +
" PDL.SERTORG, PDL.PRICE_FIRST_DISTR_NO_NDS,PDL.PRICE_FIRST_DISTR, " +
" PDL.CODE_TOVAR,PDL.EAN13,PDL.GNVLS, " +
" TN.TRADE_NAME, FN.FABR_NAME " +
" FROM TBL_PRIHOD_DOC_LINES PDL " +
" LEFT OUTER JOIN TBL_TRADE_NAME TN ON TN.SERVER_ID=PDL.TRADE_NAME_ID " +
" LEFT OUTER JOIN TBL_FABR_NAME FN ON FN.SERVER_ID=PDL.FABR_NAME_ID " +
" where pdl.prihod_doc_id=" + НомерНакладной;
Запрос.Open();
Пока Запрос.Eof()=0 Цикл
Сообщить("Торговое наименование - " + Запрос.Fields(27).Value);
Сообщить("Производитель - " + Запрос.Fields(28).Value);
Сообщить("Цена изготовителя - " + Запрос.Fields(10).Value);
Сообщить("Цена реестра - " + Запрос.Fields(11).Value);
Сообщить("Цена поставщика с НДС - " + Запрос.Fields(14).Value);
Сообщить("Розничная цена - " + Запрос.Fields(16).Value);
Сообщить("Количество - " + Запрос.Fields(4).Value);
Запрос.MoveNext();
КонецЦикла;
Запрос.Close();
Описание процедуры импорта строки продаж
procedure AddLine(UNQ : string; //Уникальный номер строки продажи
TradeName : string; //Торговое наименование
FabrName : string; // Производитель
PriceDistrib : real; //Закупочная цена
PriceRozn : real; // Продажная цена
QntSale : real; // Проданное количество
DataSale : string; // Дата продажи
NumCheck : string; // Номер чека
DataPrihod : string; // Дата прихода
NameDistrib : string;// Поставщик товара
)',
Загрузка остатков из процедуры
procedure AddLine(TradeName : string; //Наименование
FabrName : string; //Производитель
PriceDistrib : real; //Цена поставщика
PriceRozn : real; //Цена розничная
CurBalance : real; //Текущий баланс
Series : string; //Серия
Artikul : string; //Артикул
EAN13 : string; //Штрих-код заводской
DistribName : string; //Поставщик
SrokGodnosty : string; //Срок годности
DataPrihod : string; //Дата прихода
PriceIzg : real = 0) // Цена изготовителя
Восстановление дат заказов
Для восстановления дат заказов в случае сбоя при обновлении — воспользуйтесь программой ZakazRepair. Сохраните программу на свой компьютер и запустите ее для восстановления информации.
Установка FireBird ODBC драйвера
Для работы версии программы МедЗаказ Учет требуется установка FireBird ODBC драйвера.
- Заходим на страницу http://www.firebirdsql.org/en/odbc-driver/
- Находим последнюю версию соответствующую Вашей операционной системы
- Загружаем и устанавливаем драйвер на свой компьютер
- После установки драйвера заходим в Панель управления — Администрирование — Источники данных (ODBC)
- Добавляем источник данных. Параметры источника следующие:
Имя источника данных — CASH
База данных — путь к базе данных согласно правилам СУБД FireBird
Клиент — имя библиотеки для подключения к СУБД FireBird. Обычно это библиотека gds32.dll
Пользователь — обычно SYSDBA
Пароль — обычно masterkey
Символьная таблица — WIN1251
Диалект — 3
Свойства идентификатора — оставить галочку около «в кавычках», остальные убрать.
После выстановки всех параметров можно нажать кнопку «Проверка соединения». Должна выйти надпись об успешном соединении. После настройки этих параметров программа регистратора версии выше 305 запустится успешно.