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

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

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