Имя: Пароль:
1C
1С v8
Загрузка номенклатуры и упаковок при переходе УТ10->УТ11
0 ZANDER
 
28.03.25
07:09
Здравствуйте!
Имеется:
Платформа 8.3 (8.3.25.1546)
УТ11 (11.5.20.101)

Переходим с УТ10 на УТ11. Обмен через Ексель-файл. Сначала загружаю Номенклатуру, устанавливая флаг ИспользоватьУпаковки и выставляя флажок ИндивидуальныйНабор. И вторым ходом, из второго файла, загружаем УпаковкиЕдиницыИзмерения. Вот код:

Загрузка Номенклатуры:

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

	КонецЦикла;
КонецПроцедуры


После этого запускаем загрузку УпаковокЕдиницИзмерения:

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


После загрузки в УТ11 появляются следующие проблемы:
1. В справочнике Номеклатуры, открытом непосредственно, не видны элементы, только группы видны. При этом в Подборе все элементы видны и доступны. Можно войти в режим редактирования элемента.
2. Не появляется индивидуальный набор упаковок. Флажок Индивидуального набора установлен.

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

Читал вот это:
Как в УТ 11.4 программно создать индивидуальный набор упаковок номенклатуры?
Использовал. Это видно, что использовал. Но не помогает.

Кто подскажет? кто сталкивался?
1 2S
 
27.03.25
16:56
а чем типовой не устраивает? Там одну строчку в правилах подправить всего )
2 Мультук
 
гуру
27.03.25
17:18
(0)

Создайте уже одну номенклатуру с нужными упаковками вручную и сравните реквизиты (глазами в консоле запросов) с созданной программно.


И еще нескромный вопрос, а ФО про упаковки включена ?
3 ZANDER
 
27.03.25
19:09
(2) Да, включена. Попробую посмотреть в консоли запросов
4 ZANDER
 
27.03.25
19:55
Феноменально! я добавил номенклатуру вручную и её не видно. Такое бывает вообще?

Хотя пока добавлял, понял, что может быть не заполнено - объем и вес одной единицы в форме самой Номенклатуры. Но при этом, эти данные вводятся в Упаковке. Зачем такой огород? Непонятно пока ничего
5 ZANDER
 
27.03.25
21:08
Видимость отрегулировал. Нашел здесь:
Не отображается элемент в справочнике номенклатура

Установил стандартные настройки. Ведь это додуматься надо или случайно найти
6 Serg_1960
 
28.03.25
15:52
"Зачем такой огород? Непонятно пока ничего" - если одним словом, то это многовариантность. А если коротко, то учёт в разрезе упаковок можно не вести, но тогда всё равно "где-то" придётся указывать единицу измерения для номенклатуры.
   Кстати: помимо общей настройки в программе, есть индивидуальная настройка ведения учета как в карточке вида номенклатуры, так и непосредственно в самой номенклатуре. В итоге: актуальность указания единицы измерения в карточках номенклатуры - сохраняется.
7 ZANDER
 
28.03.25
16:52
(6) да, Вы правы.

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

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