Как ни странно, нет публикаций по самому простому механизму регистрации оборота медикаментов в Честном Знаке (ЧЗ). А именно, связке обновляемой компоненты от 1с МДЛП (1.2.3.6) и УТ 10.3 (10.3.65.1). Почему именно такое решение является самым простым и надежным - потому что и первое и второе решение являются самыми простыми и в то же время самыми надежными, и наименее требовательными к железу. Изначально задача именно так и ставилась: минимизировать время внедрения и поддержки, создавая новые сущности (в обоих конфигурациях) только по необходимости. В итоге получилось полностью рабочее решение, требующее минимум усилий для поддержки.
Итак, основой синхронизации МДЛП-УТ является регистр GTIN - его создаем одинаковым в обоих базах. Сканируем товар - заполняем этот регистр, причем лучше это делать в УТ, то есть там нужно доделать формы документов Реализация и Поступление, добавив механизм удобного сканирования. Причем, тут есть некие "вилы": при сканировании раскладка должна быть латинской. Выход из положения - функция преобразования символов (можно также переключаться через winShell но практика показала что это не всегда срабатывает):
WshShell = Новый COMОбъект( "WScript.Shell" );
WshShell.SendKeys("a{ENTER}");
ВвестиСтроку(Стр,"",1);
Если КодСимвола(стр)<>97 Тогда
WshShell.SendKeys("+^",1);
WshShell.SendKeys("%^",1);
конецесли;
//или:
стр=стрзаменить(стр,"й","q");
стр=стрзаменить(стр,"ц","w");
стр=стрзаменить(стр,"у","e");
стр=стрзаменить(стр,"к","r");
стр=стрзаменить(стр,"е","t");
стр=стрзаменить(стр,"н","y");
стр=стрзаменить(стр,"г","u");
стр=стрзаменить(стр,"ш","i");
стр=стрзаменить(стр,"щ","o");
стр=стрзаменить(стр,"з","p");
стр=стрзаменить(стр,"х","[");
стр=стрзаменить(стр,"ъ","]");
стр=стрзаменить(стр,"ф","a");
стр=стрзаменить(стр,"ы","s");
стр=стрзаменить(стр,"в","d");
стр=стрзаменить(стр,"а","f");
стр=стрзаменить(стр,"п","g");
стр=стрзаменить(стр,"р","h");
стр=стрзаменить(стр,"о","j");
стр=стрзаменить(стр,"л","k");
стр=стрзаменить(стр,"д","l");
стр=стрзаменить(стр,"ж",";");
стр=стрзаменить(стр,"э","ы");
стр=стрзаменить(стр,"я","z");
стр=стрзаменить(стр,"ч","x");
стр=стрзаменить(стр,"с","c");
стр=стрзаменить(стр,"м","v");
стр=стрзаменить(стр,"и","b");
стр=стрзаменить(стр,"т","n");
стр=стрзаменить(стр,"ь","m");
стр=стрзаменить(стр,"б",",");
стр=стрзаменить(стр,"ю",".");
стр=стрзаменить(стр,"Й","Q");
стр=стрзаменить(стр,"Ц","W");
стр=стрзаменить(стр,"У","E");
стр=стрзаменить(стр,"К","R");
стр=стрзаменить(стр,"Е","T");
стр=стрзаменить(стр,"Н","Y");
стр=стрзаменить(стр,"Г","U");
стр=стрзаменить(стр,"Ш","I");
стр=стрзаменить(стр,"Щ","O");
стр=стрзаменить(стр,"З","P");
стр=стрзаменить(стр,"Х","[");
стр=стрзаменить(стр,"Ъ","]");
стр=стрзаменить(стр,"Ф","A");
стр=стрзаменить(стр,"Ы","S");
стр=стрзаменить(стр,"В","D");
стр=стрзаменить(стр,"А","F");
стр=стрзаменить(стр,"П","G");
стр=стрзаменить(стр,"Р","H");
стр=стрзаменить(стр,"О","J");
стр=стрзаменить(стр,"Л","K");
стр=стрзаменить(стр,"Д","L");
стр=стрзаменить(стр,"Ж",";");
стр=стрзаменить(стр,"Э","");
стр=стрзаменить(стр,"Я","Z");
стр=стрзаменить(стр,"Ч","X");
стр=стрзаменить(стр,"С","C");
стр=стрзаменить(стр,"М","V");
стр=стрзаменить(стр,"И","B");
стр=стрзаменить(стр,"Т","N");
стр=стрзаменить(стр,"Ь","M");
стр=стрзаменить(стр,"Б",",");
стр=стрзаменить(стр,"Ю",".");
При сканировании, можно определять номенклатуру по коду из честного знака, не обязательно ставить курсор на нужную строчку в документе (эту опцию в итоге лучше отключить, но для этого нужно чтобы все коды GTIN были заполнены в Номенклатуре - у нас они загружаются вместе с документами из таких систем как Кросс-маркет - но об этом будет в другой публикации).
После сканирования, данные пишутся в регистр GTIN (сами документы при этом остаются типовыми, все изменения затрагивают только формы). Оказалось, что иногда (повреждена упаковка) нужно иметь полный код, а не только вырезанный чистый GTIN - для этого в регистр введен реквизит Data. Все это происходит в базе УТ. Таким образом, мы сразу определяем функцию базы МДЛП - ТОЛЬКО обмен с сервером ЧЗ (и в отличии от решений, где напрямую прописываются все методы веб-запросов к ЧЗ, это решение БЫСТРЕЕ внедряется, а главное - оно обновляется фирмой 1с!). На рис.1 показаны основные доработки типового модуля МДЛП. В типовом модуле нет многих необходимых вещей (он не является рабочей конфигурацией и требует хотя-бы минимальных доработок, о чем, собственно, и пишу), например у Организации нет ИНН и КПП, у контрагента нет признака Прямого/Обратного порядка обмена с ЧЗ. Нет связки Поступления и Уведомления, нет связки с входящим документом поставщика - все это создаем, как видно из рис.2.
Перегружаться из УТ в МДЛП, очевидно, должны два типа документов: Реализация и Поступление. В типовой МДЛП нет Реализации - ее создаем с самым необходимым минимумом реквизитов (Все существующие объекты МДЛП не переименовываем - чтобы избежать сложностей с обновлениями, например, "_ДемоПоступлениеТоваров"). Отдельно стоит сказать о коде места деятельности, который нужно обязательно указывать в уведомлениях - самым надежным вариантом будет заносить его в УТ в связке с адресами контрагента, которых может быть множество (в простых случаях можно обойтись связкой только в МДЛП, но это ненадежно ибо рано или поздно попадется такой же Адрес но с другим кодом). Для этого меняем регистр в УТ 10.3 КонтактнаяИнформация - добавляем реквизит КодМД (а также добавляем его в: Функция ПолучитьСтруктуруЗаписиРегистра, Процедура СкопироватьДанныеАдреса, Процедура АдресДоставкиНачалоВыбора, Процедура ЗаполнитьЗапись, Записать и ДействиеФормыОК - в обработке РедактированиеКонтактнойИнформации).
В МДЛП не автоматизированы некоторые важные вещи, такие как учет Розницы и НезарегистрированныхМестДеятельности. Не прописаны процедуры заполнения Уведомлений на основе товарных документов (которые мы загружаем из УТ) - все это нужно прописать. И тут есть "вилы" с неочевидной структурой данных типовой МДЛП (в уведомлениях множество связанных ТЧ - для коробок отдельно, мы же, создавая регистр GTIN, поступили проще - просто добавили признак булево) - ее нужно "принять как есть", чтобы далее было легче поддерживать конфигурацию. В МДЛП много лишних запретов и тупиков, например, невозможность сброса Статуса уведомлений назад - и это все на начальном этапе сильно мешает, все это устранено в предлагаемой конфигурации.
В общем, по прошествии внедрения и эксплуатации всей этой системы, задача не кажется сложной - если знать что и как делать, все это автоматизируется довольно быстро. Нужно отметить что система находится в режиме доработки, например, сейчас дописывается автоматизация процесса перегрузки (сейчас идет загрузка правилОбмена по кнопке на форме документов ВыгрузитьВМДЛП, что, конечно, нужно кэшировать), формирования уведомлений (в правилахОбмена идет вызов заполнения Уведомления, но при любой ошибке этот процесс обрывается), обкатывается МобильноеРабочееМестоСклада (для сканирования с носимого планшета, а также можно будет пользоваться только им и не менять типовые формы УТ) - все это будет выложено, после обкатки.
По правилам Инфостарта, я не могу выкладывать код типовой УТ, поскольку вы должны ее вначале купить, поэтому выкладываю только свои доработки в формате обновления cfu. Устанавливаете вначале типовую УТ 10.3.65.1, разрешаете изменения с сохранением поддержки - в меню поддержка, и обновляете ее моим файлом.