1С бухгалтерия

При обмене с ккм офлайн товары выгружаются частично. Да, в настройках стоит выгрузка только с остатками, но даже при наличии остатков товары выгружаются не все. Конфигурация: Розница, редакция 3.0 (3.0.9.105)

Прохождение по отладчику привело к следующим результатм:

Изначально все происходит в процедуре из общего модуля МенеджерОфлайнОборудованияКлиент:

Процедура НачатьВыгрузкуДанныхНаККМ(ИдентификаторУстройства,
	УникальныйИдентификатор, ОповещениеПриЗавершении, ОтображатьСообщения = Истина) Экспорт
 
	// замер производительности
	КлючеваяОперация = "ОбщийМодуль.МенеджерОфлайнОборудованияКлиент.ВыгрузкаДанныхНаККМ";
	ОбщегоНазначенияБПОКлиент.ЗамерВремениБПО(КлючеваяОперация, ОповещениеПриЗавершении);
 
	НаборВыгружаемыхДанных = Новый Структура;
	НаборВыгружаемыхДанных.Вставить("Настройки", Истина);
	НаборВыгружаемыхДанных.Вставить("ПрайсЛист", Истина);
	НаборВыгружаемыхДанных.Вставить("Заказы",	 Истина);
	НаборВыгружаемыхДанных.Вставить("ПолныйПрайсЛист", Ложь);
 
	Контекст = Новый Структура;
	Контекст.Вставить("СледующееОповещение"     , ОповещениеПриЗавершении);
	Контекст.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор);
	Контекст.Вставить("ОтображатьСообщения"     , ОтображатьСообщения);
	Контекст.Вставить("НаборВыгружаемыхДанных"  , НаборВыгружаемыхДанных);
	Контекст.Вставить("Команда", "ВыгрузитьДанные");
 
	НачатьВыгрузкуДанныхНаККМПроверкаПодключенияРасширения(ИдентификаторУстройства, Контекст);
 
КонецПроцедуры

Уже здесь настораживает параметр ПолныйПрайсЛист, который равен Ложь. И дальнейшие исследования показали что именно в этом и кроется секрет.

Далее в модуле МенеджерОфлайнОборудованияВызовСервера можно встретить такое условие:

Если НаборВыгружаемыхДанных.ПрайсЛист Тогда
 
	ПрайсЛист = МенеджерОфлайнОборудованияКлиентСервер.ПрайсЛистККМ();
	ПолнаяВыгрузкаПрайсЛиста = Ложь;
	МенеджерОфлайнОборудованияПереопределяемый.ПриВыгрузкеПрайсЛиста(ОфлайнОборудование, ПрайсЛист, ПолнаяВыгрузкаПрайсЛиста);
	ПрайсЛист.Вставить("ПолнаяВыгрузка", Ложь);
 
ИначеЕсли НаборВыгружаемыхДанных.ПолныйПрайсЛист Тогда
 
	ПрайсЛист = МенеджерОфлайнОборудованияКлиентСервер.ПрайсЛистККМ();
	ПолнаяВыгрузкаПрайсЛиста = Истина;
	МенеджерОфлайнОборудованияПереопределяемый.ПриВыгрузкеПрайсЛиста(ОфлайнОборудование, ПрайсЛист, ПолнаяВыгрузкаПрайсЛиста);
	ПрайсЛист.Вставить("ПолнаяВыгрузка", Истина);
 
КонецЕсли;

Наш параметр преобразуется в параметр ПолнаяВыгрузка со значением Ложь.

Ну и наконец в процедуре ПодключаемоеОборудованиеOfflineВызовСервера.ПолучитьТоварыКВыгрузкеККМ встречается запрос, в котором происходит дополнительная фильтрация(при условии что ПолнаяВыгрузка=Ложь) выгружаемых данных по вот такому подзапросу:

ВЫБРАТЬ
	ТоварыНаСкладахИзменения.Регистратор КАК Регистратор
ПОМЕСТИТЬ РегистраторыТоварыНаСкладах
ИЗ
	РегистрНакопления.Запасы.Изменения КАК ТоварыНаСкладахИзменения
ГДЕ
	ТоварыНаСкладахИзменения.Узел = &Узел
	И &РегистрироватьПриИзмененииОстатка
;

Т.е. выгружаются не все остатки по регистру накопления ТоварыНаСкладах, а только те, по которым зарегистрированы изменения на узле из плана обмена ОбменСПодключаемымОборудованиемOffline.
Почему при выгрузке в процедуре НачатьВыгрузкуДанныхНаККМ значение ПолныйПрайсЛист устанавливается в Ложь, а ПрайсЛист в значение Истина остается загадкой. Никаких условий при этом нет, чтобы можно было как-то повлиять на процесс выгрузки.

Для себя сделал расширение, чтобы можно было выгружать либо полностью, либо типовым методом.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".