1С:Предприятие 7.7 конф "Комплексная" Обработка спр. Номенклатура

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

Но она не дает результата. В какую сторону смотреть?"
"1) Запишите номенклатуру после установки единицы. Не Номенклатура.Записать(), а ТекНоменклатура.Записать().
2) Вот это вот "СпрЕдиниц.ВыбратьЭлементы();" зачем ?
3) Не помню точно, но в "СпрЕдиниц.НайтиПоРеквизиту("ОКЕИ",Шт,) " лучше установить ФлагГлобальногоПоиска в 0"
Пробовал - пишет объект не выбран. Даже через транзакцию - результат ноль.
"Да, это я 7.7 подзабыл.
У элемента "ТекНоменклатура" нет смысл что-либо устанавливать.
"Номенклатура.БазоваяЕдиница = ТекЕдиница; Номенклатура.Записать()" - должно быть."
Так и пробую, почему то не работает? Пробовал и внутри "Если" и с "наружи". После записи значение читает, сам справочник(форма) имеет другое значение, но читает его из этого места. Я потерялся. В предидущих вариантах я не обратил внимания, что сами справочники остались и создавал их за ново. Все создавались и записывались согласно подчиненности при каждом запуске обработки.
""Сообщить("Записали " +ТекНоменклатура.Наименование + " " + ТекНоменклатура.БазоваяЕдиница);"

Вот эта строка правильно отрабатывает?"
Да, да. И единицы пишет правильно. А вот при открытии справочника ... пусто. Да и при выполнении самой обработки по второму разу, она уже ни чего там не видит.(Как будто запись на диск запрещена).
По "Родителю" то же правильно отрабатывает, если справочник единиц удалить - пишет что его нет.
"ТекНоменклатура = Номенклатура.ТекущийЭлемент();

Я думаю, что вот эта строка лишняя. Я обычно обращаюсь к реквизиту в таких случаях без указания "ТекущийЭлемент()"
Просто: Номенклатура.ЕдИзм  или как там.
Попробуйте."
О чудО!!! На не спозиционированном метод "Сообщить" перестал видеть единицы, а вот в справочнике все записалось. Всем огромное спасибо. А автору "рабочего" ответа огромнейшее.
Читают тему
(гостей: 1)

Быстрый переход