kostromin63
31.10.2011, 11:33
1с:Предприятие 7.7, конфигурация "Комплексная" релиз 510. В справочнике "Номенклатура" пропали(очистились) базовые единицы измерения. Сами справочники "единиц" остались на месте. Для восстановления ситуации сделано:
1) Тестирование и исправление ИБ(с настройками - создавать объекты) - без положительного результата.
2) написана обработка:
//*******************************************
Процедура Выполнить()
Номенклатура = СоздатьОбъект("Справочник.Номенклатура");
СпрЕдиниц = СоздатьОбъект("Справочник.Единицы");
Шт = глЗначениеПоУмолчанию("ОсновнаяОКЕИ");
Номенклатура.ВыбратьЭлеме� �ты();
Пока Номенклатура.ПолучитьЭлем� �нт() = 1 Цикл
ТекНоменклатура = Номенклатура.ТекущийЭлеме� �т();
Если (ТекНоменклатура.ЭтоГруппа () = 1) ИЛИ (ПустоеЗначение(ТекНоменкл атура.БазоваяЕдиница) = 0) Тогда
// Сообщить("Пропускаем" + ТекЭлем.Наименование);
Продолжить;
Иначе
СпрЕдиниц.ВыбратьЭлементы( );
СпрЕдиниц.ИспользоватьВла� �ельца(ТекНоменклатура);
// СпрЕдиниц.ВыбратьЭлементы� �оРеквизиту("Владелец", ТекНоменклатура,,);
Если СпрЕдиниц.НайтиПоРеквизит� �("ОКЕИ",Шт,) = 1 Тогда
ТекЕдиница = СпрЕдиниц.ТекущийЭлемент();
ТекНоменклатура.БазоваяЕд� �ница = ТекЕдиница;
Попытка
Номенклатура.Записать();
Сообщить("Записали " +ТекНоменклатура.Наименова ние + " " + ТекНоменклатура.БазоваяЕд� �ница);
// Прервать; // для отладки, что бы не ждать конца обработки всего справочника
Исключение
Предупреждение( "Не выполнено сохр. спр. " + ТекНоменклатура + ОписаниеОшибки() +
РазделительСтрок + "Элемент не сохранен)", 60);
КонецПопытки;
Иначе
Сообщить("У номенклатуры " + ТекНоменклатура + " нет едниц");
КонецЕсли;
КонецЕсли;
КонецЦикла
Но она не дает результата. В какую сторону смотреть?
1) Тестирование и исправление ИБ(с настройками - создавать объекты) - без положительного результата.
2) написана обработка:
//*******************************************
Процедура Выполнить()
Номенклатура = СоздатьОбъект("Справочник.Номенклатура");
СпрЕдиниц = СоздатьОбъект("Справочник.Единицы");
Шт = глЗначениеПоУмолчанию("ОсновнаяОКЕИ");
Номенклатура.ВыбратьЭлеме� �ты();
Пока Номенклатура.ПолучитьЭлем� �нт() = 1 Цикл
ТекНоменклатура = Номенклатура.ТекущийЭлеме� �т();
Если (ТекНоменклатура.ЭтоГруппа () = 1) ИЛИ (ПустоеЗначение(ТекНоменкл атура.БазоваяЕдиница) = 0) Тогда
// Сообщить("Пропускаем" + ТекЭлем.Наименование);
Продолжить;
Иначе
СпрЕдиниц.ВыбратьЭлементы( );
СпрЕдиниц.ИспользоватьВла� �ельца(ТекНоменклатура);
// СпрЕдиниц.ВыбратьЭлементы� �оРеквизиту("Владелец", ТекНоменклатура,,);
Если СпрЕдиниц.НайтиПоРеквизит� �("ОКЕИ",Шт,) = 1 Тогда
ТекЕдиница = СпрЕдиниц.ТекущийЭлемент();
ТекНоменклатура.БазоваяЕд� �ница = ТекЕдиница;
Попытка
Номенклатура.Записать();
Сообщить("Записали " +ТекНоменклатура.Наименова ние + " " + ТекНоменклатура.БазоваяЕд� �ница);
// Прервать; // для отладки, что бы не ждать конца обработки всего справочника
Исключение
Предупреждение( "Не выполнено сохр. спр. " + ТекНоменклатура + ОписаниеОшибки() +
РазделительСтрок + "Элемент не сохранен)", 60);
КонецПопытки;
Иначе
Сообщить("У номенклатуры " + ТекНоменклатура + " нет едниц");
КонецЕсли;
КонецЕсли;
КонецЦикла
Но она не дает результата. В какую сторону смотреть?