Множественные дополнительные реквизиты в УТ 11.5 (11.4)

15.10.23

Учетные задачи - Логистика, склад и ТМЦ

Реализация множественных дополнительных реквизитов в расширении конфигурации УТ 11.5 (11.4).

Скачать файлы

Наименование Файл Версия Размер
Множественные дополнительные реквизиты в УТ 11.4:
.cfe 92,05Kb
17
.cfe 1.0 92,05Kb 17 Скачать
Множественные дополнительные реквизиты в УТ 11.5:
.zip 84,47Kb
7
.zip 1.0 84,47Kb 7 Скачать

Добрый день, уважаемые коллеги!

Недавно столкнулся с необходимостью поддержки множественного выбора в дополнительных реквизитах номенклатуры. К сожалению 1С:Управление торговлей 11.4 "из коробки" не поддерживает этот функционал. Поиск в Интернетах привел к статье @bad_wag Создание множественного дополнительного реквизита. Управление торговлей 11, однако предложенное им решение поддерживает единственный дополнительный реквизит с множественным выбором. Это было не совсем то, что нужно. Точнее совсем не то. Мне требовалась поддержка любого количества дополнительных реквизитов с множественным выбором и пришлось пилить самому.

Для желающих повторить это решение - описываю подробно, а для тех кому лень - в конце статьи есть ссылка для скачивания готового расширения конфигурации.

Если требуется поддержка множественных дополнительных реквизитов в других (кроме Номенклатуры) формах - это делается по аналогии с формой Номенклатуры. Те кому совсем лень - обращайтесь, доработаю за соответствующее вознаграждение.

Итак, поехали!

 

Включение признака множественного выбора для доп. реквизита

Для того, чтобы пользователь мог задавать реквизиты, для которых он хочет выбирать несколько значений, необходим признак, который будет отличать такие дополнительные реквизиты от других. К сожалению, механизм расширений в 1С на момент написания статьи не поддерживает добавление реквизитов в План видов характеристик, поэтому для хранения значений признака я создал регистр:

 

 

В модуле менеджера Плана видов характеристик Дополнительные реквизиты и сведения создал функцию, для более удобного обращения к регистру:

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

 

Для отражения значения признака на форме, в ПриСозданииНаСервере создаю реквизит и элемент формы и присваиваю значение из регистра:

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

 

Для записи измененного признака обрабатываю событие ПослеЗаписиНаСервере:

&НаСервере
Процедура МРек_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
	ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.МРек_МножественныйВыбор(Объект.Ссылка, ЭтаФорма.МРек_МножественныйВыбор);
КонецПроцедуры

 

Т.к. было принятно решение, что множественный выбор будет поддерживаться только для типа Дополнительные значения (с иерархией и без) то нужно управлять доступностью элемента формы при изменении типа и при открытии формы:

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

&НаКлиенте
Процедура МРек_ПриОткрытииПосле(Отказ)
	МРек_ТипЗначенияПриИзмененииПосле();
КонецПроцедуры

 

С этого момента в настройках дополнительных реквизитов можно устанавливать признак множественного выбора. Осталось научиться правильно отображать их на формах и управлять ими.

Продолжаем:

 

Доработка модуля УправлениеСвойствамиСлужебный

Функция ЗначенияСвойств(ДополнительныеСвойстваОбъекта, Наборы, ЭтоДополнительноеСведение) возвращает таблицу со значениями свойств объекта, однако, если в табличной части ДополнительныеРеквизиты хранится несколько строк для одного свойства - функция вернет только последнее значение. Это необходимо исправить.

Я выбрал возможно не совсем оптимальных с точки зрения производительности путь, но зато наименее затрагивающий исходный текст функции

1. Добавляем к результату запроса колонку для хранения признака, что значение уже устанавливалось:

	ОписаниеСвойств = Запрос.Выполнить().Выгрузить();
	ОписаниеСвойств.Индексы.Добавить("Свойство");
	ОписаниеСвойств.Колонки.Добавить("Значение");
	#Вставка
	ОписаниеСвойств.Колонки.Добавить("ЗначениеУстановлено", Новый ОписаниеТипов("Булево"));
	#КонецВставки

 

2. В цикле по дополнительным свойствам объекта если значение уже устанавливалось - новое значение дописываем в массив (предварительно создав):

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

 

3. Сразу после этого цикла все значения являющиеся массивами преобразуем в соответствующее количество строк:

...
	КонецЦикла;

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

	Возврат ОписаниеСвойств;

КонецФункции

 

Эти доработки порождают новую проблему. При отображении свойств (дополнительных реквизитов) на форме используются уникальные идентификаторы наборов и свойств, но теперь они у нас могут повторяться, поэтому нам требуется:

 

Доработка модуля УправлениеСвойствами

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

&ИзменениеИКонтроль("ЗаполнитьДополнительныеРеквизитыВФорме")
Процедура МРек_ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект, ПоляНадписей, СкрытьУдаленные)
...

	ОписаниеСвойств.Колонки.Добавить("ИмяРеквизитаЗначение");
	ОписаниеСвойств.Колонки.Добавить("СтрокаСсылочногоТипа");
	ОписаниеСвойств.Колонки.Добавить("ИмяСсылочногоРеквизитаЗначение");
	ОписаниеСвойств.Колонки.Добавить("ИмяУникальнаяЧасть");
	ОписаниеСвойств.Колонки.Добавить("ДополнительноеЗначение");
	ОписаниеСвойств.Колонки.Добавить("Булево");
	#Вставка
	ОписаниеСвойств.Колонки.Добавить("ИмяГрупповаяЧасть"); // Для элементов множественного выбора
	#КонецВставки
...

	// Создание реквизитов.
	ДобавляемыеРеквизиты = Новый Массив();

	#Вставка
	МРек_Счетчик = 1000;	
	#КонецВставки
	Для каждого ОписаниеСвойства Из ОписаниеСвойств Цикл
...

		#Удаление
		ОписаниеСвойства.ИмяУникальнаяЧасть = 
		СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Набор.УникальныйИдентификатор())), "-", "x")
		+ "_"
		+ СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Свойство.УникальныйИдентификатор())), "-", "x");
        #КонецУдаления
		
		#Вставка
        ОписаниеСвойства.ИмяГрупповаяЧасть = 
        СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Набор.УникальныйИдентификатор())), "-", "x")
        + "_"
        + СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Свойство.УникальныйИдентификатор())), "-", "x");
		ОписаниеСвойства.ИмяУникальнаяЧасть = 
		ОписаниеСвойства.ИмяГрупповаяЧасть
		+ "_"
        + Прав(МРек_Счетчик, 3);
		МРек_Счетчик = МРек_Счетчик + 1;
		#КонецВставки
...

 

Далее в цикле создания элементов формы анализирую признак множественного выбора и создаю необходимые группы, элементы управления и команды добавления дополнительного значения для реквизита:

	// Создание элементов формы.
	Для Каждого ОписаниеСвойства Из ОписаниеСвойств Цикл
...

		Иначе
			Родитель = ЭлементРазмещения;
		КонецЕсли;

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

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

 

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

...

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

 

Также доработки требует Процедура УдалитьСтарыеРеквизитыИЭлементы(Форма). В цикле удаления необходимо удалить созданные команды:

Процедура МРек_УдалитьСтарыеРеквизитыИЭлементы(Форма)

	УдаляемыеРеквизиты = Новый Массив;
	Для каждого ОписаниеСвойства Из Форма.Свойства_ОписаниеДополнительныхРеквизитов Цикл
...
		#Вставка                                  
		ГрупповаяЧасть = Лев(УникальнаяЧасть, СтрДлина(УникальнаяЧасть)-4);
		Команда = Форма.Команды.Найти("Команда_"+ГрупповаяЧасть);
		Если Команда <> Неопределено Тогда
			Форма.Команды.Удалить(Команда);
		КонецЕсли;
		#КонецВставки	
	КонецЦикла;
...

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

Дополнительно в модуль добавлена Процедура МРек_УдалениеРеквизитаИСвязанныхЭлементов(Форма, ИмяРеквизита) для удаления реквизита и элементов при нажатии на [х]:

Процедура МРек_УдалениеРеквизитаИСвязанныхЭлементов(Форма, ИмяРеквизита) Экспорт
	
	СтрокаОписания = Форма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(Новый Структура("ИмяРеквизитаЗначение", ИмяРеквизита))[0];
	Форма.Свойства_ОписаниеДополнительныхРеквизитов.Удалить(СтрокаОписания);
	
	МассивУдаляемых = Новый Массив();
	МассивУдаляемых.Добавить(ИмяРеквизита);
	
	Форма.Элементы.Удалить(Форма.Элементы[ИмяРеквизита]);
	Форма.ИзменитьРеквизиты(, МассивУдаляемых);
	
КонецПроцедуры

Доработка модуля УправлениеСвойствамиКлиент

Собственно сам модул не нуждается в доработках, но я разместил в нем пару функций для уменьшения объема кода в формах элементов в которых планируется поддерживать множественные реквизиты.

 
 Добавляемые функции

 

Доработка справочника Номенклатура

(По аналогии можно доработать любые другие объекты, где должны использоваться множественные дополнительные реквизиты)

Модуль формы элемента

 
 Добавляемые процедуры

Модуль менеджера

Для отображения неизменяемой карточки товара при открытии элемента номенклатуры используется табличный документ, который создается в модуле менеджера справочника функцией ТабличныйДокументКарточкиНоменклатуры(Номенклатура, НастройкиВидимостиИЗаголовков, ДляПечати)

Для корректного перехода к дополнительным реквизитам при двойном клике его также необходимо доработать введя счетчик реквизитов аналогично модулю УправлениеСвойствами:

...
	#Область ДополнительныеРеквизиты

	Запрос = Новый Запрос;
	Запрос.Текст = 
...

		#Вставка
		МРек_Счетчик = 1000;
		#КонецВставки
		Для Каждого ДопРеквизит Из ДополнительныеРеквизиты Цикл
...

			ИмяЭлементаДопРеквизита =  "ДополнительныйРеквизитЗначение_" 
			+ СтрЗаменить(ВРег(Строка(ДопРеквизит.НаборСвойств.УникальныйИдентификатор())), "-", "x")
			+ "_"
			#Удаление
			+ СтрЗаменить(ВРег(Строка(ДопРеквизит.Свойство.УникальныйИдентификатор())), "-", "x");
			#КонецУдаления
			#Вставка
			+ СтрЗаменить(ВРег(Строка(ДопРеквизит.Свойство.УникальныйИдентификатор())), "-", "x")
			+ "_"
	        + Прав(МРек_Счетчик, 3);
			МРек_Счетчик = МРек_Счетчик + 1;
			#КонецВставки
...

 

Заключение

В результате всего вышеизложенно получаем на форме элемента справочника Номенклатура следующую картину:

 

 

Указанные доработки позволяют использовать любое количество дополнительных реквизитов объектов поддерживающих множественный выбор. Получение значений множественного выбора возможно с помощью стандартной функции БСП УправлениеСвойствами.ЗначенияСвойств(...), куда в качестве четвертого параметра можно передать строку с именем дополнительного реквизита. Функция возвращает массив содержащий значения запрошенного (или запрошенных) дополнительных реквизитов и/или сведений.

Пользуйтесь и делитесь впечатлениями.

 

Обновление 15.10.2023 года

Внесены изменения в модули, заимствованные в режиме "Изменение и контроль" для совместимости с версией конфигурации "Управление торговлей 11.5.14.69"

Расширение конфигурации множественные реквизиты торговля

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 22800 руб.

21.04.2017    90212    105    39    

191

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210240    621    524    

439

Модуль "Ответственное хранение" или фулфилмент (FBS / FBO) для 1С:УТ 11.5, КА 2.5, ERP 2.5

Логистика, склад и ТМЦ Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Модуль "Ответственное хранение" для 1С (УТ 11.5, КА 2.5, ERP 2.5) позволяет организовать учет ответственного хранения товаров с весовыми характеристиками, в том числе со сроком годности и личным кабинетом Поклажедателя. Модуль реализован в виде расширения конфигурации, устанавливается в режиме 1С:Предприятие 8 за 5 минут по инструкции, что позволяет оставить конфигурацию 1С на стандартной поддержке и продолжать получать стандартные обновления от фирмы "1С".

60000 руб.

09.06.2020    34352    27    57    

54

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150757    365    375    

501

AS WMS: автоматизация склада с адресным хранением с помощью ТСД

Логистика, склад и ТМЦ Платформа 1С v8.3 Россия Платные (руб)

Подсистема управления складом AS WMS для конфигураций на платформе 1С 8. AS WMS – готовое решение для эффективного управления адресным складом. Внедрение системы AS WMS способствует быстрому отбору товара, ускорению инвентаризации, снижению зависимости от персонала, исключению пересорта. AS WMS встраивается в любую конфигурацию на платформе 1С 8 и работает как единая система без обменов. В учетной системе нет необходимости менять процессы под AS WMS (например, вводить ордерную схему), AS WMS использует стандартные документы по товародвижению вашей учетной системы.

40000 руб.

26.07.2023    3239    13    0    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1292 28.02.22 19:46 Сейчас в теме
Ни слова про отчеты, а в них доп реквизиты используются активно, как будет себя вести система при отборах и группировках?
2. Brawler 454 28.02.22 21:16 Сейчас в теме
(1) Скорее всего будет весело.
Например, если в динамический список (например списка той же номенклатуры) вытащить такой множественный реквизит, то велика вероятность дублирования ключевого поля Ссылка и как следствие не сформируется список.
А в отчетах скорее всего будет задвоение данных.
3. DrWeb3 71 01.03.22 03:13 Сейчас в теме
(1) Хороший вопрос, но в конкретно этом решении мы не пользуемся отборами по множественным реквизитам. Нужно пробовать, ибо БСП в общем-то заточена под множественные реквизиты. По крайней мере частично. Возьмите хотя бы упомянутую УправлениеСвойствами.ЗначенияСвойств(...). Она возвращает именно массив значений свойства и которого, например УправлениеСвойствами.ЗначенияСвойства(...) тупо берёт нулевой элемент.

Понятно, что подобными вещами нужно пользоваться с умом. Задвоение можно при желании получить и стандартными путями. Через сегменты например, но сегменты не так удобно редактировать.
4. malikov_pro 1292 01.03.22 04:38 Сейчас в теме
(3) "БСП в общем-то заточена под множественные реквизиты" - на уровне платформы 8.3.16, а функционал только завезут в 8.3.21
https://wonderland.v8.1c.ru/blog/vozmozhnost-raboty-s-mnozhestvennymi-kharakteristikami/

"Через сегменты например" - постоянно натыкаюсь в типовых отчетах на отдельный подзапрос по сегментам, но там полноценное отношение "много-ко-многим"

Для группировок логически простого решения нет, предположу что в 8.3.21 будут брать либо первый элемент либо сумму элементов.
5. Kim1C 178 13.08.22 14:11 Сейчас в теме
В модуле формы используется вызов процедуры:
УправлениеСвойствами.МРек_УдалениеРеквизитаИСвязанныхЭлементов(ЭтаФорма, ИмяРеквизита);

в описании в коде не нашел этой функции в разделе доработки модуля УправлениеСвойствами. Предполагаю там удаляется реквизит формы + элемент формы, отображаемый на форме + строчка из ТЧ по таблице добавленных реквизитов свойств
6. DrWeb3 71 30.08.22 17:17 Сейчас в теме
(5) Да, действительно, упустил. Спасибо. Исправил в статье. Вот эта процедура:

Процедура МРек_УдалениеРеквизитаИСвязанныхЭлементов(Форма, ИмяРеквизита) Экспорт
	
	СтрокаОписания = Форма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(Новый Структура("ИмяРеквизитаЗначение", ИмяРеквизита))[0];
	Форма.Свойства_ОписаниеДополнительныхРеквизитов.Удалить(СтрокаОписания);
	
	МассивУдаляемых = Новый Массив();
	МассивУдаляемых.Добавить(ИмяРеквизита);
	
	Форма.Элементы.Удалить(Форма.Элементы[ИмяРеквизита]);
	Форма.ИзменитьРеквизиты(, МассивУдаляемых);
	
КонецПроцедуры
Показать


Строчка из табличной части не удаляется, т.к. ТЧ формируется при записи заново.
Оставьте свое сообщение