«Учитывать МРЦ» включено, а цена не подставляется: куда на самом деле уходит скан марки в РМК УТ 11.5

24.08.26

Интеграция - Обмен с ГосИС

Галка «Учитывать МРЦ» стоит, табачные марки сканируются, а в чек падает старая цена из прайса. Я поставил хук на ОбработатьШтрихкоды — самое очевидное место — и он не сработал ни разу. История про то, куда в «Управлении торговлей» уходит скан маркированного товара, почему одна и та же галка в Рознице и в УТ означает разное, и где расширению вообще можно встать. С проверкой перехвата в три строки.

Жалоба, с которой всё началось

Розничная точка с табаком. «Управление торговлей» 11.5, кассир работает в РМК, всё как у всех.

Задача от клиента звучала так: «У нас включено “Учитывать МРЦ”, а цена из марки не подставляется. Почините».

Я открыл настройки. Галка стоит. Открыл подсказку под ней — там написано что-то про МРЦ. Сканирую марку на стенде — в строку чека падает цена из документа установки цен, та самая, старая. МРЦ, напечатанная на боку пачки в двух сантиметрах от кода, программу не интересует.

Ну ладно, думаю. Функция есть, работает криво, найду где и поправлю.

Через неделю у меня было девять версий расширения, пять зелёных прогонов тестов и очень недовольный клиент. Потому что чинить было нечего: этой функции в УТ нет вообще. Совсем. И галка тут ни при чём.

Дальше по порядку, потому что порядок в этой историисамое интересное.

 

Галка, которая никого не обманывала

Первым делом я пошёл читать подсказку под флажком. Дословно, из НСтр:

«При проверке поступления табачной продукции или при сканировании табачных кодов маркировки МРЦ будет распознаваться из состава кода маркировки или запрашиваться из сервиса ГИС МТ. МРЦ может использоваться при ведении классификаторов номенклатуры или для контроля цены при оформлении розничных продаж.»

Прочитайте её ещё раз медленно. Я вот прочитал быстро — и услышал ровно то, что хотел услышать: «МРЦ распознаётся из кода, значит будет в чеке».

А там написано другое. Распознаваться — да. Для контроля цены — да. Слова «подставляться» нет. Его никто и не обещал.

Подсказка честная. Обманул себя я сам, и, судя по форумам, не только я — жалоба «галка стоит, а цена не та» гуляет по темам про табак годами.

Но одно дело — вычитать это в тексте на форме. Другое — понять, что типовая делает вместо подстановки. Полез в конфигурацию.

 

В Рознице — подстановка, в УТ — контроль

Вот это место я показываю всем, кто спорит.

Открываем «Розницу» 2.3, общий модуль ШтрихкодированиеРМК, строка 95:

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

СтрокаТовары.Цена = СоставКодаМаркировки.МРЦ. Вот она, та самая подстановка, под тем самым флагом УчитыватьМРЦ. В Рознице всё работает ровно так, как человек ожидает.

Теперь открываем УТ 11.5 и ищем то же самое.

Я искал по всей конфигурации — по всем модулям выгрузки, а не наугад. Присвоение цены из МРЦ в УТ одно, и оно не присвоение. Общий модуль ШтрихкодированиеМОТП:

МаксимальнаяЦена = СтрокаКодаМаркировки.МРЦ;

Если МаксимальнаяЦена = 0 Тогда
    СоставКодаМаркировки = СтрокаКодаМаркировки.ДанныеРазбора.СоставКодаМаркировки;
    Если СоставКодаМаркировки <> Неопределено
        И СоставКодаМаркировки.Свойство("ВключаетМРЦ")
        И СоставКодаМаркировки.ВключаетМРЦ Тогда
        МаксимальнаяЦена = СоставКодаМаркировки.МРЦ;
    КонецЕсли;
КонецЕсли;

Если МаксимальнаяЦена < МинимальнаяЦена Тогда
    СтрокаКодаМаркировки.ТекстОшибки = НСтр("ru='МРЦ меньше минимальной розничной цены Р'");
КонецЕсли;

Максимальная розничная цена достаётся из марки и сравнивается с минимальной. Всё. Если МРЦ ниже МинРЦ — ругнётся. Цена в строке чека при этом не шевелится.

Одна библиотека, один флаг, один текст подсказки — и два совершенно разных потребителя. В Рознице подстановка цены, в УТ контроль цены. Ровно так, как в подсказке и написано, если читать её не как хочется, а как есть.

Тогда где в УТ вообще живёт МРЦ

Раз не в чеке, то где-то же должна.

В УТ штатная модель МРЦ — серии номенклатуры. Есть реквизит ВидыНоменклатуры.ИспользоватьМРЦМОТПСерии, есть СерииНоменклатуры.МаксимальнаяРозничнаяЦенаМОТП. Логика такая: пачки с разной МРЦ — это разные серии одного товара, у каждой серии своя цена, и дальше всё работает штатным механизмом цен.

Что интересно, конфигурация эту модель защищает. В ИнтеграцияИСМППереопределяемый есть процедура ПриОпределенииВозможностиВключенияОтключенияВеденияУчетаМРЦ, и в УТ у неё вот такое тело (через ИнтеграцияИСМПУТ):

Запрос.Текст =
    "ВЫБРАТЬ
    |	ВидыНоменклатуры.Ссылка
    |ИЗ
    |	Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
    |ГДЕ
    |	ВидыНоменклатуры.ИспользоватьМРЦМОТПСерии
    |	И ВидыНоменклатуры.ИспользоватьСерии";

ВидыНоменклатуры = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");

Если ВидыНоменклатуры.Количество() Тогда
    ВозможноОтключение = Ложь;
    ...
    ПричинаНевозможностиОтключения = Новый ФорматированнаяСтрока(ДанныеФорматированнойСтроки);
КонецЕсли;

То есть: если в базе есть виды номенклатуры, которые ведут МРЦ в сериях, — галку запрещено выключать, и на форме покажут, из-за кого именно.

А в Рознице та же процедура выглядит так:

Процедура ПриОпределенииВозможностиВключенияОтключенияВеденияУчетаМРЦ(ВозможноВключение,
    ПричинаНевозможностиВключения, ВозможноОтключение, ПричинаНевозможностиОтключения) Экспорт
    
    Возврат;
    
КонецПроцедуры

Пустая. Рознице нечего защищать, у неё МРЦ живёт в цене строки, а не в сериях.

Возвращаюсь к базе клиента, делаю два запроса. Видов номенклатуры с МРЦ в сериях — ноль. Серий с заполненной МРЦ — ноль.

Вот и весь ответ на вопрос «почему не работает». Галка включена, механизм, который она обслуживает, не заведён, а механизма, которого от неё ждут, в УТ нет в принципе.

Клиенту такое объяснять неприятно, но честно. Дальше начиналась собственно работа: сделать то, чего в конфигурации нет.

 

Я поставил хук на самое очевидное место

Дальше рассуждение, которое кажется железным. Сканирование штрихкодов в УТ проходит через ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(Форма, Объект, СтруктураПараметров, КэшированныеЗначения). Процедура экспортная, лежит в общем модуле, на входе форма, объект и всё, что нужно для заполнения строк. В Рознице подстановка цены сидит недалеко от аналогичного места. Значит, ставим &После на неё, ловим строки с марками, подменяем цену.

Собрал расширение. Развернул. Отсканировал марку.

Ничего.

Проверил, что расширение подключено. Подключено. Проверил, что процедура вызывается вообще, — поставил запись в лог прямо первой строкой обработчика. Тишина. Отсканировал обычный товар без маркировки — лог есть. Отсканировал марку — лога нет.

Вот в этот момент до меня начало доходить, что маркированный товар в РМК идёт вообще другой дорогой.

 

Куда на самом деле уходит скан марки

РМК в УТ — это не обработка. Отдельного объекта «РМК» в конфигурации нет: касса — это форма документа, Документ.ЧекККМ.Форма.ФормаДокументаРМК. Восемь с половиной тысяч строк в одном модуле. Приятного мало, но лезть надо туда.

Начало пути — обработчик завершения поиска по штрихкоду:

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

     Смотрите, что здесь происходит. Форма создаёт структуру с двумя ключевыми флагами и отдаёт её подписчикам через СобытияФормКлиент. А подписчик — это СобытияФормИСКлиентПереопределяемый, и вот что он делает с нашими флагами:

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

     Обратите внимание на условие. Там не «товар маркированный» — там Форма.ИспользоватьАкцизныеМарки. То есть если в базе включён учёт акцизных марок, стандартная обработка вырубается для любого скана в этой форме, а маркированный товар от обычного отделится позже, уже на сервере.

     И вся ветка Если ДополнительныеПараметры.СтандартнаяОбработка — та, в которой и живёт ОбработатьШтрихкоды, — просто не выполняется.

Дальше управление уходит на сервер, там разбирается код маркировки, и на выходе получается развилка в функции ПослеОбработкиШтрихкодов (привожу сокращённо, там ещё полсотни строк заполнения структур действий):

Если РезультатОбработкиШтрихкода.ТребуетсяОбработкаШтрихкода Тогда
    
    // ... сборка СтруктураДействийСДобавленнымиСтроками:
    // ЗаполнитьЦенуПродажи / ЗаполнитьУсловияРозничныхПродаж / ЗаполнитьСтавкуНДС ...
    
    ОбработатьШтрихкодыСервер(ДанныеДляОбработки, КэшированныеЗначения);
    
Иначе
    
    ОбработатьДобавлениеСтрокСоВскрытымиПотребительскимиУпаковкамиЛокализация(
        РезультатОбработкиШтрихкода.ДобавленныеСтроки,
        РезультатОбработкиШтрихкода.ИзмененныеСтроки);
    
    ОбработатьСтрокиТЧ(
        РезультатОбработкиШтрихкода.ДобавленныеСтроки,
        РезультатОбработкиШтрихкода.ИзмененныеСтроки,
        КэшированныеЗначения);
    
КонецЕсли;

А ОбработатьШтрихкодыСервер — это обёртка в одну строку:

Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
    
    ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтотОбъект,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
    
КонецПроцедуры

Вот и всё. Для маркированного товара берётся ветка Иначе, и ОбработатьШтрихкоды не вызывается вовсе. Хук стоял на процедуре, до которой марка не доезжает.

Мне на этот вывод потребовалось несколько версий расширения и один скриншот кассы от клиента. А проверяется он, как выяснилось, за минуту.

 

Проверка в три строки

Если у вас та же симптоматика — не гадайте, а перехватите событие сами. В харнессе на копии базы, с открытой формой РМК:

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

СобытияФормКлиент.ПриИзмененииЭлемента(ФормаРМК, "ТоварыПоискПоШтрихкоду", ДопПараметры);

Сообщить("СтандартнаяОбработка = " + ДопПараметры.СтандартнаяОбработка);

Подсунули обычный штрихкод — увидели Истина. Подсунули код маркировки — увидели Ложь. Значит, дальше по коду форма пойдёт мимо ОбработатьШтрихкоды, и ставить туда что-либо бессмысленно.

Три строки против недели догадок. Обидно, но полезно.

 

Три точки, в которые можно встать

Когда стало понятно, куда идёт марка, точки нашлись сами. Их три, и все — процедуры общих модулей, то есть годятся под &После без всяких фокусов:

1. ШтрихкодированиеИСМП.ЗаполнениеСохраняемойСтрокиШтрихкодовУпаковки — сюда приходит строка марки вместе с данными разбора. Здесь же в ПараметрыСканирования лежит СсылкаНаОбъект — ссылка на документ, из которого пришло сканирование. По ней отсекаются чужие документы: расширение не должно лезть в поступления и возвраты.

2. ЧекККМЛокализация.ОбработатьИзмененнуюСтроку — принимает форму целиком и конкретную строку товаров:

Процедура ОбработатьИзмененнуюСтроку(Форма, СтрокаТЧТовары, ПараметрыЗаполнения, Количество,
    ЭтоМаркируемаяПродукция = Истина) Экспорт

     Здесь под рукой форма целиком: и табличные части объекта, и реквизит формы ДанныеШтрихкодовУпаковокГосИС — типовая ищет марки именно в нём, а не в Объект.АкцизныеМарки. Это единственное удобное место, чтобы разложить строки по разной МРЦ.

3. ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ — сюда строки приезжают уже с ценой, проставленной из документа установки цен. Значит, подменять цену надо здесь, иначе типовая аккуратно затрёт то, что вы поставили раньше.

Связь между ними — собственный модуль расширения с ReturnValuesReuse = DuringRequest. Кэш живёт ровно один серверный вызов, и этого достаточно: все три шага происходят внутри одного вызова. Никаких регистров, никаких временных хранилищ — посчитали на первом шаге, забрали на третьем.

Отдельно скажу, чего я делать не стал. Расширение формы РМК — соблазнительно, там всё под рукой. Но платформа при заимствовании формы требует overlay всей структуры формы целиком (PropertyState → Form плюс Ext/Form.xml), а форма РМК живёт и меняется от релиза к релизу. Первое же обновление конфигурации — и вы чините форму, а не задачу. Свойства Module у формы в XML, кстати, не существует: попытка положить туда только модуль даёт «Свойство Module не входит в состав объекта метаданных Form». Проверено лбом.

 

Две пачки одного вида — и одна цена на обе

Расширение заработало. Клиент попробовал и вернулся: если пробить две пачки с разной МРЦ, обе получают одну цену.

Смотрю, как типовая ищет строку под марку. Функция ИнтеграцияИС.ПоляПоискаМаркируемойПродукции:

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

Номенклатура, характеристика, серия. Цены среди полей поиска нет. Две пачки одного вида без серий — это для типовой одна и та же строка, количество 2. И цена, естественно, одна.

Причём в конфигурации есть ровно тот флаг, который эту проблему решает:

Функция ТребуетсяПоискТоваровПриРаспределенииСУчетомЦены(СтрокаШтрихкод, ПараметрыСканирования)
    Возврат ОбщегоНазначенияИСКлиентСервер.ЭтоПродукцияМОТП(СтрокаШтрихкод.ВидПродукции)
        И ЗначениеЗаполнено(СтрокаШтрихкод.МРЦ)
        И (СтрокаШтрихкод.ВидУпаковки = Перечисления.ВидыУпаковокИС.Групповая
            Или СтрокаШтрихкод.ВидУпаковки = Перечисления.ВидыУпаковокИС.Потребительская)
        И ПараметрыСканирования.ИспользуетсяРаспределениеКодовПоТоварамСУчетомМРЦ;
КонецФункции

Красиво же. «Требуется поиск товаров при распределении с учётом цены» — прямо про нашу беду.

Я поискал, где этот флаг ставится в Истина. По всей конфигурации у него два вхождения: объявление в конструкторе параметров сканирования со значением Ложь — и чтение вот в этой функции. И всё. Пользовательской настройки к нему нет, программно его никто не поднимает.

Механизм заложен, провода протянуты, выключателя не поставили.

Добавить «Цену» в поля поиска через &После нельзя: обработчик &После на функцию не подменяет её результат — вернётся типовая структура, ваша уйдёт в никуда. Проверено экспериментом, и это отдельная маленькая боль. А &Вместо на эту функцию я ставить не рискнул: она общая для всех документов маркировки, и сломать ей сопоставление в поступлениях ради кассы — плохая сделка.

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

     ЧекККМ.Товары.ИдентификаторСтроки — это строка(36). Не число. UUID. Типовая его так и заполняет, в том же СобытияФормИСКлиентПереопределяемый:

Если ПустаяСтрока(СтрокаТЧ.ИдентификаторСтроки) И СтрокаТЧ.МаркируемаяПродукция = 1 Тогда
    СтрокаТЧ.ИдентификаторСтроки = Строка(Новый УникальныйИдентификатор);

Я честно ожидал число, получил строку, и пара часов ушла на «почему у меня не находится строка, которую я только что положил».

 

А ведь типовая умеет делить блок на пачки

Ещё одна находка, которую я чуть не пропустил.

Когда сканируется блок, цена пачки — это МРЦ блока, делённая на вложенность. Вложенность лежит в справочнике ШтрихкодыУпаковокТоваров, в реквизите КоличествоПотребительскихУпаковок, — обращаться в ГИС МТ для этого не нужно. Я эту арифметику написал сам.

А потом наткнулся на ШтрихкодированиеМОТП.РасчетМРЦПоСтрокамДерева:

Если РодительСтроки.ВидУпаковки = Перечисления.ВидыУпаковокИС.Групповая
    И СтрокаДерева.ВидУпаковки = Перечисления.ВидыУпаковокИС.Потребительская Тогда
    СтрокаДерева.МРЦ = РодительСтроки.МРЦ / РодительСтроки.КоличествоПотребительскихУпаковок;
КонецЕсли;

Та же формула, слово в слово. Типовая умеет.

Но пользы от этого ноль, и вот почему.

Во-первых, результат ложится в колонку МРЦ строки дерева упаковок — временной структуры на время обработки. Ни в документе ЧекККМ, ни в справочнике ШтрихкодыУпаковокТоваров нет ни одного реквизита с «МРЦ» в имени. Посчитали — и выбросили. Единственное место, где МРЦ в УТ хранится по-настоящему, — те самые серии.

Во-вторых, весь этот расчёт заперт вот за таким условием:

Процедура ЗапросИРасчетМРЦПоСтрокамДерева(ЗапрашиваемыеСтроки, ВычисляемыеСтроки, ПараметрыСканирования) Экспорт
    ...
    Если Не ОбщегоНазначенияИСМПКлиентСервер.ЗначениеПараметраСканированияЗапрашиватьДанныеСервисаИСМП(
            ПараметрыСканирования) Тогда
        Возврат;
    КонецЕсли;

Этот Возврат выкидывает и расчёт от родителя тоже. Хотя ему сервис не нужен вообще: это деление числа на число по данным, которые уже лежат в базе. Локальная арифметика заперта за флагом «ходить в ГИС МТ».

Заодно это объясняет, почему на стенде без доступа к сервису я эту ветку в глаза не видел.

 

Границы

Всё, что я показал, — из выгрузки «Управления торговлей» 11.5.22.182 и «Розницы» 2.3.25.23. Имена процедур и модулей вы найдёте и у себя, но номера строк и точный состав параметров от релиза к релизу плывут — проверяйте по своей конфигурации, а не по моим цитатам.

Про ERP ничего не скажу: не смотрел. Библиотека ИС МП там та же, потребители могут быть свои.

Флажок «Учитывать МРЦ» виден на форме, только если включён учёт табачной продукции, а переопределяемый метод про запрет отключения вызывается только в расширенной версии ГосИС. Так что «у меня и галки такой нет» — тоже нормальный сценарий.

И главное, что стоит сказать вслух. Стенд у меня был без оборудования: копия базы, файловый режим, ни сканера, ни ККТ, ни доступа к ГИС МТ. Логику и данные такой стенд проверяет прекрасно. Цепочку «сканер → касса» — не проверяет никак. Пять версий подряд у меня были зелёные тесты и неработающая касса у клиента, и это ровно потому, что тест дёргал мои процедуры напрямую, а не шёл дорогой, которой идёт реальный скан. Про это я напишу отдельно, там разговор длиннее.

 

Осадок

Задача, которая звучала как «почините галку», оказалась задачей про то, что галка не про это.

Больше всего цепляет вот что. Вся информация лежала в открытом виде и ждала, пока я догадаюсь посмотреть. Подсказка на форме честно говорила «для контроля цены». Функция в ШтрихкодированиеМОТП честно сравнивала МРЦ с минимальной ценой и ничего не присваивала. Развилка в форме РМК честно уводила маркированный товар в другую ветку. Ничего не было спрятано — я просто неделю чинил не то, потому что решил, что знаю, как оно устроено.

С тех пор, когда механизм «есть, но не работает», первым делом иду не в отладчик, а в поиск по конфигурации: где вообще упоминается то, что я собрался чинить. Если единственное упоминание — сравнение, а не присвоение, то чинить нечего, надо писать.

А клиенту в итоге пришлось объяснять так: функции нет, галка отвечает за другое, делаем расширение. Формулировка, которую никто не любит слышать, — поэтому к ней теперь прилагается скриншот с поиском по конфигурации и ровно одним найденным вхождением.

Если сталкивались с этой же историей в ERP или в свежих релизах УТ — напишите, что там с этой развилкой. У меня подозрение, что она живёт и здравствует, и хук на ОбработатьШтрихкоды не работает не только у меня.

Вступайте в нашу телеграмм-группу Инфостарт

маркировка МРЦ табак РМК Управление торговлей 11.5 ЧекККМ расширение конфигурации ИнтеграцияИСМП ГИС МТ Честный ЗНАК

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Обмен с ГосИС Бюджетный учет Регламентированный учет и отчетность Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление холдингом Химическая промышленность Государственные, бюджетные структуры Электротехника и микроэлектроника Машиностроение и приборостроение Металлургическая промышленность Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Автоматизация раздельного учета в 1С:Бухгалтерии по ГОЗ в соответствии с 275-ФЗ. Готовое решение для учета госконтрактов, формирования отчетности и контроля исполнения. Поддержка военной приемки, НИОКР и требований Минпромторга. Профессиональный консалтинг и регулярные обновления продукта

40000 руб.

28.08.2020    562446    3931    145    

1456

Бюджетный учет Обмен с ГосИС Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Государственные, бюджетные структуры Россия Бухгалтерский учет Платные (руб)

Доработка конфигурации 1С:Бухгалтерия предприятия, редакция 3.0. реализована в виде расширения. Предназначена для ведения раздельного учета и автоматизации заполнения отчетности исполнения контрактов ГОЗ в конфигурациях 1С БП КОРП, ПРОФ, Базовая, БИТ.ФИНАНС.

62220 руб.

16.08.2019    106561    329    95    

185

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Автоматизация учета ЕГАИС в 1С для оптовой торговли, производства и импорта алкогольной продукции. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

1091 руб.

15.12.2015    187153    1370    374    

420

Обмен с ГосИС 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия Бухгалтерский учет Платные (руб)

Модуль подходит для производителей и импортеров упакованной воды, молочной продукции, соковой продукции, пива и пивных напитков, безалкогольных напитков, морепродуктов, кормов для домашних животных, антисептики (список поддерживаемых товарных групп постоянно дополняется). Для оптовиков и розницы можно работать с любыми товарными группами по ЭДО.

45000 руб.

25.10.2024    7180    18    0    

18

Оптовая торговля Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Решение создано для помощи разработчикам, интеграторам и другим заинтересованным лицам по настройке системы маркировки обуви, одежды, лекарств, табака, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин. Задавайте вопросы по работе с ЦРПТ, GS1, ЭДО, Национальным каталогом, накоплен опыт и знания по данным темам.

20900 руб.

18.03.2019    126015    81    115    

207

Обмен с ГосИС Бухгалтер Пользователь 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 1С:РМК Ювелирная промышленность и торговля Россия Управленческий учет Платные (руб)

Интеграция для работы 1С с ГИИС ДМДК. Государственная интегрированная информационная система в сфере контроля за оборотом драгоценных металлов, драгоценных камней и изделий из них на всех этапах этого оборота.

80000 руб.

12.04.2022    27168    208    34    

55

Обмен с ГосИС Логистика, склад и ТМЦ Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Внешняя обработка для инвентаризации кодов маркировки в системе "Честный знак". Позволяет быстро определить и списать коды маркировки проданного, испорченного, утраченного (полный перечень причин списания указан ниже)  товара, которые всё ещё числятся за организацией. Привести в соответствие остатки маркированного товара программы 1С и системы "Честного знака".

6649 руб.

09.01.2024    19359    198    30    

180

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:Бухгалтерия Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная конфигурация Хамелеон Меркурий для взаимодействия с системой Меркурий (тестовый+рабочий+демо контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Основное отличие от других решений - работа через веб-интерфейс и API 2.0(API 2.1). Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом Меркурий, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе Меркурий и наоборот.

7000 руб.

08.11.2017    130889    278    153    

404
Для отправки сообщения требуется регистрация/авторизация