Для УТ очень надо. Форма ФормаПросмотраДокумента. Добавить на форму Команду и связать с процедурой. Также добавить Булево Отладка или удалить кусок кода
//arshanskiyav+
&НаСервере
Функция НайтиНоменклатуруПоНаименованию(Наименование)
Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(Наименование,Истина);
Возврат(Новый Структура("Номенклатура,ЕдИзм",Номенклатура,Номенклатура.ЕдиницаИзмерения));
КонецФункции
&НаСервере
Функция НайтиЕдИзмПоНаименованию(Наименование)
Возврат(Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(Наименование,Истина));
КонецФункции
&НаКлиенте
Процедура СопоставитьПоНаименованию(Команда)
//СопоставитьПоНаименованиюНаСервере();
Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
Элементы.ТабличнаяЧасть.ТекущаяСтрока=СтрокаТЧ.ПолучитьИдентификатор();
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
ТабЧасть = сбисЭлементФормы(ЭтаФорма,"ТабличнаяЧасть");
СбисСтрокаТабличнаяЧастьДоИзменения(МестныйКэш, ТабЧасть);
НайденнаяНом=НайтиНоменклатуруПоНаименованию(СтрокаТЧ.Название);
СтрокаТЧ.Номенклатура=НайденнаяНом.Номенклатура;
Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
СтрокаТЧ.ЕдИзмОрг=НайденнаяНом.ЕдИзм;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.ЕдИзмОрг) и ЗначениеЗаполнено(СтрокаТЧ.ЕдИзм) Тогда
СтрокаТЧ.ЕдИзмОрг=НайтиЕдИзмПоНаименованию(СтрокаТЧ.ЕдИзм);
КонецЕсли;
Если Отладка Тогда
Сообщить(СтрокаТЧ.Название);
Сообщить(НайденнаяНом);
КонецЕсли;
ТабЧасть = сбисЭлементФормы(ЭтаФорма,"ТабличнаяЧасть");
СбисСтрокаТабличнаяЧастьПриИзменении(МестныйКэш, ТабЧасть);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//arshanskiyav-
Продуктивностью не отличается, т.к. сбисовские обработчики регистрируют каждое изменение в dbf, но это намного быстрее, нежели вручную!
Комментариев нет:
Отправить комментарий