Каталог решений - «1С:Розница 8. Ювелирный магазин» — дополнительные поля в списках ДМДК, временное решение для печати DataMatrix, заполнение партий для ДМДК по артикулам/штрихкодам

«1С:Розница 8. Ювелирный магазин» — дополнительные поля в списках ДМДК, временное решение для печати DataMatrix, заполнение партий для ДМДК по артикулам/штрихкодам

«1С:Розница 8. Ювелирный магазин» — дополнительные поля в списках ДМДК, временное решение для печати DataMatrix, заполнение партий для ДМДК по артикулам/штрихкодам

В наличии

В связи с обязанностью организаций отражать остатки (а чуть позже, и выбытие в рознице) — многим придется или обновлять/дорабатывать свою систему, или переходить на систему со встроенной поддержкой ГИИС ДМДК.
Мы решили использовать ПП 1С:Розница 8. Ювелирный магазин.
О самом процессе упомяну лишь вскользь, т.к. существуют инструкции и по настройке туннеля stunnel, и вебинары по пользованию программой. Но на этапе заведения остатков ряд вещей мы посчитали неудобными, потому доработали их, так или иначе, об этом и расскажу.
В то же время, на данном портале нет (пока) ветки обсуждения по «ГИИС ДМДК» и «1С:Розница 8. Ювелирный магазин», и, я надеюсь, тут получится создать некоторое обсуждение на тему статьи или около.

Категория:

Описание

Добрый день, коллеги.

Итак, исходим из того, что

1. У вас есть "обезличенный" ключ ЭЦП для работы с ГИИС ДМДК через веб-сервис

2. Установлен и настроен stunnel, инструкции по интеграции https://dmdk.ru/

3. По адресу 127.0.0.1:1500/ws/v1/exchange.wsdl

(или любому, настроенному вами) вы видите, что веб-сервис отвечает (в общем, вы видите, что XML какой-то по этому адресу отображается).

 

Наконец, переходим к 1с.

4. Систему вы, разумеется , тоже настроили — по вебинару ( https://youtu.be/y8RDjei6h7w ) или текстовой инструкции Раруса из каталога обновлений

 

Протестировано на Розница 8. Ювелирный магазин, редакция 2.3 (2.3.10.39)

Основные сложности, с которыми пришлось (на данный момент) столкнуться.

1. Недостаточная информативность списков документов ДМДК
До 15.01.22 было необходимо отправить все партии ювелирных изделий, и получить ИНП (индивидуальные номера партий). В общем, сразу за этим -УИНы (уникальные идентификационные номера) каждого изделия внутри партии.

Так вот! Если мы отправляем разом 50-100- больше партий, то отслеживать их состояние очень сложно, и форма документа выглядит вот так

 

 

Что, как нам кажется, максимально неинформативно.

Причина — такой вариант настройки Динамического списка Формы списка документа.

Дополнительная неприятная мелочь — в "Еще -Изменить форму" недоступен реквизит Ссылка.

 

 

Заберем форму списка в расширение и заменим принцип формирования динамического списка — укажем запрос:

 

ВЫБРАТЬ
	ПередачаОстатковЮИГИИСДМДКВложенныеПартии.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПередачаОстатковЮИГИИСДМДКВложенныеПартии.НомерСтроки) КАК УИНы
ПОМЕСТИТЬ вт
ИЗ
	Документ.ПередачаОстатковЮИГИИСДМДК.ВложенныеПартии КАК ПередачаОстатковЮИГИИСДМДКВложенныеПартии

СГРУППИРОВАТЬ ПО
	ПередачаОстатковЮИГИИСДМДКВложенныеПартии.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДокументПередачаОстатковЮИГИИСДМДК.Ссылка КАК Ссылка,
	ДокументПередачаОстатковЮИГИИСДМДК.ПометкаУдаления КАК ПометкаУдаления,
	ДокументПередачаОстатковЮИГИИСДМДК.Номер КАК Номер,
	ДокументПередачаОстатковЮИГИИСДМДК.Дата КАК Дата,
	ДокументПередачаОстатковЮИГИИСДМДК.Проведен КАК Проведен,
	ДокументПередачаОстатковЮИГИИСДМДК.Организация КАК Организация,
	ДокументПередачаОстатковЮИГИИСДМДК.ТипПартии КАК ТипПартии,
	ДокументПередачаОстатковЮИГИИСДМДК.МоментВремени КАК МоментВремени,
	СтатусыИнформированияГИИСДМДК.Статус КАК Статус,
	вт.УИНы КАК УИНы
ИЗ
	Документ.ПередачаОстатковЮИГИИСДМДК КАК ДокументПередачаОстатковЮИГИИСДМДК
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыИнформированияГИИСДМДК КАК СтатусыИнформированияГИИСДМДК
		ПО ДокументПередачаОстатковЮИГИИСДМДК.Ссылка = СтатусыИнформированияГИИСДМДК.Документ
		ЛЕВОЕ СОЕДИНЕНИЕ вт КАК вт
		ПО (вт.Ссылка = ДокументПередачаОстатковЮИГИИСДМДК.Ссылка)

Так мы сможем привести форму к следующему виду:
** попутно мы на форму в конфигураторе вывели реквизит Ссылка, и теперь можем ИНП отобразить — скриншот см ниже

 

 

2.Невозможность печатать УИНы (временная)

Хорошо, мы получили ИНП, потом УИНы на все изделия.

Но в 1С:Розница 8. Ювелирный магазин печатать УИНы пока нельзя (штатными средствами). Мы обратились в техподдержку, и нам ответили, что механизм печати будет, но сроков никаких не назвали. Посольку функционал все равно будет, мы приняли решение найти обходной путь.

Один хороший человек из тематического чата в телеграмме (посвященного ДМДК вообще) выложил свою небольшую программу — которая умеет считывать текстовый файл определенного формата (примеры в архиве есть), и печатать по ним УИНы.

 

https://drive.google.com/drive/folders/1zvvIXPQsXssJoKsHo5cpU_pUyb-CjWJj?sort=13&direction=a

 

Так что — сделаем небольшую модификацию к документу "РегистрацияОстатковЮИГИИСДМДК". Заберем форму документа в расширение, добавим над табличной частью кнопку, вызывающую команду "ВыгрузитьФайлДляПечати"

 


&НаКлиенте
Процедура Р_МакВыгрузитьФайлДляПечатиПосле(Команда)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Заголовок = "Выберите имя файла для сохранения";
	Диалог.МножественныйВыбор = Ложь;
	Диалог.Фильтр = "Текстовый файл(*.txt)|*.txt";
	//Вызов собственно диалога на экран

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

  КонецЕсли;
   
  если ИмяФайла<>"" тогда   
   		Файл = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
		текст=ПолучитьТекстВыгрузкиНаСервере();
		Файл.Записать(текст);
		Файл.Закрыть();
  конецесли;
	

КонецПроцедуры


&НаСервере
функция ПолучитьТекстВыгрузкиНаСервере()
	
	ТекстВыгрузки="";
	
	//УИН;ШК;Наименование;Артикул;Размер;Вес;Вставка
	//6432200090123456;1234567890123;Наименование;Артикул;Размер;Вес;Вставка	
	ТЗ = Объект.Товары.Выгрузить();
	
	ТЗ.Колонки.Добавить("ШК");
	ТЗ.Колонки.Добавить("Артикул");
	ТЗ.Колонки.Добавить("Размер");
	ТЗ.Колонки.Добавить("Вес");
	ТЗ.Колонки.Добавить("Вставка");
	
	Сч=1;
	
	Для каждого Стр Из ТЗ Цикл
	
		ПолучитьДанныеОНом(Стр);
		
		если сч>1 тогда
					
			ТекстВыгрузки=ТекстВыгрузки+Символы.ПС;	
		Иначе			
			ТекстВыгрузки="УИН;ШК;Наименование;Артикул;Размер;Вес;Вставка"+Символы.ПС;
		конецесли;

		
		//не должно быть ;!
		Строка=""
		+Строка(Стр.уин)+";"
		+СокрЛП(Стр.ШК)+";"
		+лев(Стр.Наименование,25)+";"
		+СокрЛП(Стр.Артикул)+";"
		+Строка(Стр.Размер)+";"
		+Строка(Стр.Вес)+";"
		+Строка(Стр.Вставка)+";"
		;

		ТекстВыгрузки=ТекстВыгрузки+Строка;
		Сч = Сч + 1;
		
	КонецЦикла;
	
	//Сообщить("ок");
	
	Возврат ТекстВыгрузки
КонецФункции


Процедура ПолучитьДанныеОНом(стр)

	Запрос = новый запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	Штрихкоды.Владелец КАК Владелец,
	               |	МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод
	               |ПОМЕСТИТЬ ВТ_МаксШК
	               |ИЗ
	               |	РегистрСведений.Штрихкоды КАК Штрихкоды
	               |ГДЕ
	               |	Штрихкоды.Владелец = &Ссылка
	               |
	               |СГРУППИРОВАТЬ ПО
	               |	Штрихкоды.Владелец
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	Номенклатура.Артикул КАК Артикул,
	               |	Номенклатура.ор_Вставка КАК Вставка,
	               |	Номенклатура.ор_Размер КАК Размер,
	               |	Номенклатура.ор_ВесВГраммах КАК Вес,
	               |	ВТ_МаксШК.Штрихкод КАК ШК
	               |ИЗ
	               |	Справочник.Номенклатура КАК Номенклатура
	               |		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_МаксШК КАК ВТ_МаксШК
	               |		ПО ВТ_МаксШК.Владелец = Номенклатура.Ссылка
	               |ГДЕ
	               |	Номенклатура.Ссылка = &Ссылка"  ;
	
	Запрос.УстановитьПараметр("Ссылка",Стр.Номенклатура);
	выборка = запрос.Выполнить().Выбрать();
	если выборка.Следующий() тогда
		ЗаполнитьЗначенияСвойств(Стр,выборка);
	КонецЕсли;
	
КонецПроцедуры // 

Теперь мы можем получить файл из документа, а затем загрузим его в программу "printtags.exe".

Там же и распечатаем (и, при достаточном желании, редактируем в режиме Дизайнер).

 

 

3. Небольшая модификация, которая нам позволила быстро заполнить партии.

(под партиями понимаем документы передачи остатков, на которые мы и получаем ИНП)
Дело в том, что некоторые вещи у поставщиков мы уточняли, высылая им xls-файлы, где всегда был идентификатор (артикул или штрихкод). Так что.. я воспользовался другой (своей же) публикацией, в которой описывал, как в УТ11, КА2, ERP (с некоторыми отличиями — и к Рознице 2) к любому документу с табличной частью Товары добавить возможность "загружать из внешнего файла". Пример расширения есть по ссылке, но листинг под Ювелирную Розницу я приведу здесь

 


&НаКлиенте
Процедура Расш_Загр_ЗагрузитьИзВнешнегоФайлаПосле(Команда)

	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ЗагружатьЦены", Истина);
	ПараметрыФормы.Вставить("ЗагружатьСуммы", Истина);
	ПараметрыФормы.Вставить("ЦенаВключаетНДС", ложь);

	ПараметрыФормы.Вставить("ЗагружатьГТД", ложь);
	ПараметрыФормы.Вставить("ЗагружатьКоличество", Истина);

	ПараметрыФормы.Вставить("ИмяТЧ", "Товары");
	
	ОткрытьФорму(
		"Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма",
		ПараметрыФормы,
		ЭтаФорма,
		УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура Расш_Загр_ОбработкаВыбораПеред(ВыбранноеЗначение, ИсточникВыбора)
	Если ИсточникВыбора.ИмяФормы = "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма" Тогда
		
		ПолучитьЗагруженныеТоварыИзХранилища(ВыбранноеЗначение);
		
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(РезультатВыбора)
	
	ТоварыИзХранилища = ПолучитьИзВременногоХранилища(РезультатВыбора.АдресТоваровВХранилище);
	ИмяТЧ = РезультатВыбора.ИмяТЧ;
	
	Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
		СтрокаТЧТовары = Объект[ИмяТЧ].Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
		
		СтруктураДействий = Новый Структура;

			
		КэшированныеЗначения = ОбработкаТабличнойЧастиТоварыКлиентСервер.СтруктураКэшируемыхЗначений();
		ОбработкаТабличнойЧастиТоварыСервер.ОбработатьСтрокуТЧСервер(СтрокаТЧТовары, СтруктураДействий, КэшированныеЗначения);

		Попытка
			СтрокаТЧТовары.вес = СтрокаТЧТовары.Номенклатура.ор_ВесВГраммах;	
		исключение
		КонецПопытки;
	КонецЦикла;
	

	СобытияФормРТ.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");


КонецПроцедуры

 

has been added to your cart:
Оформление заказа