Всем привет! На днях столкнулся с такой ситуацией:
Настраивал клиенту выгрузку товара из розницы релиза 2.3.15.37 во фронтол 6.19. Вроде как все настроилось отлично, но в процессе работы клиент обнаружил следующее: При попытке продать стики на кассе получаем ошибку с сообщением о невозможности пробития данной продукции, т.к. марка не является иной маркируемой продукцией (точный текст не помню). У номенклатуры вид указан как никотиносодержащая продукция. Что заметил, при выгрузке товара в 55-ом поле файла выгрузки стояло число 7 (иная маркированная продукция), а должно быть 16, согласно руководству интегратора. Ковырнув немного код, обнаруживаем, что в модуле "ОфлайнОборудованиеАтолККМВызовСервера" в процедуре "ДополнитьФайл" находится следующее:
Если ЗначениеЗаполнено(Источник.ЭтоМаркированнаяПродукция) И Источник.ЭтоМаркированнаяПродукция Тогда
Если ФорматОбмена = 8 Тогда
Если Источник.ТипМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ИзделияИзМеха") ИЛИ Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.ИзделияИзМеха") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 2);
ИначеЕсли Источник.ТипМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ЛекарственныеПрепараты") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 3);
ИначеЕсли Источник.ТипМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ТабачнаяПродукция") ИЛИ Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.Табак") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 4);
ИначеЕсли Источник.ТипМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ОбувныеТовары") ИЛИ Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.Обувь") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 5);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.Фотоаппараты") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 8);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.Духи") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 9);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.Шины") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 10);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.ЛегкаяПромышленность") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 11);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.АльтернативныйТабак") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 12);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.МолочнаяПродукция") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 13);
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.УпакованнаяВода") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 15);
Иначе
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 7);
КонецЕсли;
Иначе
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 2);
КонецЕсли;
т.е. никакого упоминания о никотиносодержащей продукции нет. Решил добавить сюда строчку:
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.НикотиносодержащаяПродукция") Тогда //48921-05
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 16); //48921-05
Проверил - не взлетело. Чтоб не включать отладку на сервере решил проверить несколько варварским способом, и в строке ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 7) поменял значение на 16. Выгрузилось. Значит расширение работает. После недолгих поисков, а именно отловил откуда берется Источник.ВидМаркированнойПродукции попадаю в общий модуль "ПодключаемоеОборудованиеOfflineВызовСервера" и процедуру "ЗаполнитьВидПродукцииИС"
Вот ее код:
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
Если Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Алкогольная Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Ложь;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Табак Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.Табак;
ЗаписьТовар.ТипМаркированнойПродукции = Перечисления.ТипыМаркировкиККТ.ТабачнаяПродукция;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Обувь Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.Обувь;
ЗаписьТовар.ТипМаркированнойПродукции = Перечисления.ТипыМаркировкиККТ.ОбувныеТовары;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.ЛегкаяПромышленность Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.ЛегкаяПромышленность;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.МолочнаяПродукцияПодконтрольнаяВЕТИС ИЛИ Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.МолочнаяПродукцияБезВЕТИС Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.МолочнаяПродукция;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Шины Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.Шины;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Фотоаппараты Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.Фотоаппараты;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Велосипеды Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.Велосипеды;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.КреслаКоляски Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.КреслаКоляски;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Духи Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.Духи;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.АльтернативныйТабак Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.АльтернативныйТабак;
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.УпакованнаяВода Тогда
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина;
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.УпакованнаяВода;
КонецЕсли;
Как видим, никакого упоминания о никотиносодержащей продукции нет. Я добавил:
ИначеЕсли Номенклатура.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.НикотиносодержащаяПродукция Тогда //48921-05
ЗаписьТовар.ЭтоМаркированнаяПродукция = Истина; //48921-05
ЗаписьТовар.ВидМаркированнойПродукции = Перечисления.ВидыМаркированнойПродукцииБПО.НикотиносодержащаяПродукция; //48921-05
Проверил. Все заработало. Ниже прилагаю расширение. Как быть с базовой понятия не имею, на партнерской конференции 1С я уже написал.
P.S. В релизе 2.3.15.50 ситуация аналогичная, установлены все расширения. Поправив последний модуль, стала выгружаться никотиносодержащая продукция и в штрих-минипос.