Для тех, кто впервые настраивает обмен между R-Keeper и 1С:Рарус-Общепит есть информация на сайтах:
Форум: "1С: Общепит 8 // 1C-Рарус: Общепит"
http://www.1c-menu.ru/forum/index.php?PAGE_NAME=read&FID=5&TID=535
Особенности применения обработки "Загрузка данных о реализации из программы R-Keeper v.6"
http://club-1c.com/page/index.html/_/1-8-2-1373872279/%D0%BE%D0%B1%D1%89%D0%B5%D0%BF%D0%B8%D1%82-%D0%BF%D0%BE%D0%B4%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0/%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B4%D0%B0%D0%BD%D0-r11287
Но данные изложены немного непоследовательно, хотя дают определенную информацию к успешному разрешению проблемы обмена. Попробуем изложить процедуру обмена по шагам, которая состоит из двух этапов:
1. Выгрузка данных в промежуточный файл из R-Keeper 6
В рабочем каталоге RK6 есть программа Transp32.exe, которая осуществляет выгрузку из файлов данных R-Keeper с расширением DB в файлы DBF.
Настройки хранятся в RKEEPER.INI, обычно менять их не надо.
В разделе [Transport] задается параметр - путь к папке выгрузки StockPath=С:\rk6\STOCK
Для выгрузки запускаем Transp32.exe (при регулярном использовании лучше сделать ярлык), пароль по умолчанию - "1".
Далее Меню "Файл" - "Выгрузка Склад", задается период.
После выгрузки в папке, заданной в RKEEPER.INI появляются следующие файлы:
Acheck.dbf - список чеков - TOTAL - 4 знака после запятой
ADcheck.dbf
Apcheck.dbf - оплата чеков BASESUMEQW, ORIGSUM - 4 знака после запятой
Archeck.dbf - блюда в чеках PAYSUM - 6 знаков после запятой
AVcheck.dbf
Categ.dbf - категории товаров
Charges.dbf - скидки
Control.dbf - служебная количество записей в других таблицах по точкам
Menu.dbf - перечень блюд
Modify.dbf - замены блюд
Money.dbf - оплаты по видам (нал, безнал, неплательщики, банкет)
Personal.dbf - персонал
Reasons.dbf
У R-Keeper есть особенность - суммы хранятся с точностью не до копеек а больше (4-6 знаков после запятой), поэтому иногда цифры могут "гулять" и не сходиться с Z-отчетом.
R-Keeper 7 использует для хранения данных SQL-сервер, для выгрузки служит отдельная программа kr7_dbf.exe.
Она раздаётся на партнерском сайте UCS, необходимо указать строку подключения к базе, классификацию блюд для экспорта и путь для экспорта DBF. Поля совпадают с выгрузкой r-keeper 6, только добавлены дополнительные поля в таблицы ARcheck (COMPLEX, CONTENT, VATNUM - номер НДС, VATPERCENT размер НДС в %) и Menu (COMPLEX).
Загрузка из R-Keeper 7 не проверялась, но скорее всего тоже будет работать.
2. Загрузка из файлов обмена в 1С:Общепит
В конфигурации используется обработка ОбщепитЗагрузкаRKeeper.epf, внешний вид приведен на рисунке
Путь "Соответствие" указываем такой же, как и при выгрузке (С:\rk6\STOCK). Выбираем организацию, подразделение, склад. Выбираем нужные параметры.
Сначала нажимаем "Заполнить соответствия".
При этом можно выбрать критерии: по полному совпадению наименований; по частичному совпадению наименований; по совпадению шифра R-keeper и кода 1C; по совпадению кода R-keeper и кода 1C. Если не все заполнено, можно заполнить соответствие руками.
Нажимаем "Получить номенклатуру", номенклатура из R-Keeper, которой нет в общепите, будет создана при выборе "Создавать товары".
По кнопке "Создать документы" можно создать следующие документы:
- Закрытие кассовой смены, с хоз. операцией Акт о реализации;
- Выпуск продукции, с хоз. операцией Выпуск с розничной реализацией;
- Установка цен номенклатуры.
При аккуратном использовании данной обработке обычно получается предсказуемый результат.
Проблемы при обновлении платформы на 8.3
В версии 8.3 во временное хранилище можно помещать только сериализуемые значения
После обновления конфигурации 1С:Рарус Общепит на версию 3.0.28 изменились требования к платформе, теперь необходимо работать в версии 1с 8.3.
Но возникла неожиданная проблема:
при выполнении кода
БД_ТС = ПолучитьИзВременногоХранилища(Объект.АдресВХДБФБД_ТС);
ПоместитьВоВременноеХранилище(БД_ТС, АдресВХДБФБД_ТС);
Объект xBase не сериализуется, поэтому не может быть помещен во временное хранилище.
Подробнее написано в ИТС: http://its.1c.ru/db/metod81#content:5293:1
Но от объяснения не становится легче.
Варианты решения:
1. Обновиться до конфигурации 3.0.29.7 (обращение в службу поддержки позволило исправить ошибку в новом релизе)
2. Исправить выгрузку:
&НаСервере
Перем БД_ТС; // Храним её пока на сервере
&НаСервере
Процедура УстановитьСоответствиеСервер(ОбъектСсылка, Соответствие)
Если БД_ТС = Неопределено Тогда // Возможно, выпрыгивали с сервера и переменная пропала
ИдентификаторКонфигурации = ЗначениеВСтрокуВнутр(Метаданные);
ИдентификаторКонфигурации = Сред(УбратьСимволы(ИдентификаторКонфигурации, "{}#"","),1,8);
ФайлТС = Объект.ПутьСоответствий + "\" +ИдентификаторКонфигурации + ".dbf";
ФайлИндексовТС = Объект.ПутьСоответствий + "\" + ИдентификаторКонфигурации + ".cdx";
//Надо открыть БД_ТС заново
БД_ТС = Новый XBase;
БД_ТС.ОткрытьФайл(ФайлТС, ФайлИндексовТС, Ложь);
БД_ТС.ТекущийИндекс = БД_ТС.индексы.Найти("IndSource");
КонецЕсли;
&НаСервере
Процедура ЗаполнитьНоменклатуруСервер(ЗаполнитьИзПродаж, ЗаполнитьБлюда, ЗаполнитьМодификаторы)
Объект.ТаблицаСоответствия.Очистить();
Если БД_ТС = Неопределено Тогда
//Надо открыть БД_ТС заново
ИдентификаторКонфигурации = ЗначениеВСтрокуВнутр(Метаданные);
ИдентификаторКонфигурации = Сред(УбратьСимволы(ИдентификаторКонфигурации, "{}#"","),1,8);
ФайлТС = Объект.ПутьСоответствий + "\" +ИдентификаторКонфигурации + ".dbf";
ФайлИндексовТС = Объект.ПутьСоответствий + "\" + ИдентификаторКонфигурации + ".cdx";
БД_ТС = Новый XBase;
БД_ТС.ОткрытьФайл(ФайлТС, ФайлИндексовТС, Ложь);
БД_ТС.ТекущийИндекс = БД_ТС.индексы.Найти("IndSource");
КонецЕсли;
&НаСервере
Функция ПроверитьТаблицуСоответствияСервер()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.БД_ТС = БД_ТС;
Возврат ОбработкаОбъект.ПроверитьТаблицуСоответствия();
КонецФункции
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.ПолныйРежимЗагрузкиДокументов = 1;
Объект.КоличествоЭлементовКипера = 0;
Объект.КоличествоЭлементов1С = 0;
Объект.СоздаватьНоменклатуру = 0;
Элементы.СтраницаДерево.Видимость = Ложь;
Элементы.СтраницаСоответствие.Видимость = Истина;
Элементы.ТаблицаСоответствияКоманднаяПанельТаблицыСоответствияИерархия.Доступность = Ложь;
Элементы.ТаблицаСоответствияКоманднаяПанельТаблицыСоответствияИерархияД.Пометка = Истина;
Объект.ВыгружатьДокументыНаДату = НачалоДня(ТекущаяДата());
Элементы.ГруппаСоздатьДокументы.Доступность = Ложь;
Объект.СтруктураПоискаСоответствия = Новый Структура("ШифрКипер,БлюдоМодификатор");
КонецПроцедуры
&НаСервере
Процедура ЗакрытьТС()
Попытка БД_ТС.ЗакрытьФайл();
Исключение КонецПопытки;
КонецПроцедуры
В модуле обработке, функции "ПроверитьТаблицуСоответствия()" убрать строки (так как БД_ТС передана перед вызовом метода):
БД_ТС = ПолучитьИзВременногоХранилища(АдресВХДБФБД_ТС);
ПоместитьВоВременноеХранилище(БД_ТС, АдресВХДБФБД_ТС);