8.х Обработка номенклатуры

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Adminspb, 28 дек 2007.

  1. TopicStarter Overlay
    Adminspb
    Offline

    Adminspb Опытный в 1С

    Регистрация:
    18 дек 2006
    Сообщения:
    116
    Симпатии:
    0
    Баллы:
    26
    При конвертирования из 8.0 в 8.1 сохраненных в 8.0 только справочников
    (Справочник номенклатуры, справ. ед. из, классиф. ед изм, валюты и т.п )
    получилась ситуация
    Элемент номенклатуры
    - базовая единица заполнена.
    - Табличная часть (единиц измерения) заполнена.

    НО ЕдиницаДляОтчетов -не выбрана
    ЕдиницаХраненияОстатков - не выбрана
    т.е. поъхоже ссылки на ед. из. утерены при конфертировании.

    Задача проставить каждом элементе номенклатуры в соответствие
    ЕдиницаДляОтчетов и ЕдиницаХраненияОстатков Базовую еденицу Измерения


    Делаю так

    Ссылка = Справочники.Номенклатура.НайтиПоКоду(" Код элемента");
    Элемент = Ссылка.ПолучитьОбъект();


    Запрос2 = Новый Запрос;
    Запрос2.Текст = "ВЫБРАТЬ
    | ЕдиницыИзмерения.Ссылка,
    | ЕдиницыИзмерения.Владелец,
    | ЕдиницыИзмерения.Код,
    | ЕдиницыИзмерения.Наименование,
    | КлассификаторЕдиницИзмерения.Ссылка КАК Ссылка1,
    | КлассификаторЕдиницИзмерения.Код КАК Код1
    |ИЗ
    | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторЕдиницИзмерения КАК КлассификаторЕдиницИзмерения
    | ПО ЕдиницыИзмерения.ЕдиницаПоКлассификатору = КлассификаторЕдиницИзмерения.Ссылка
    |ГДЕ
    | ЕдиницыИзмерения.Владелец = &Владелец
    | И ЕдиницыИзмерения.ЕдиницаПоКлассификатору.Код = &ЕдиницаИзмПоКл";

    Запрос2.УстановитьПараметр("Владелец",Справочники.Номенклатура.НайтиПоКоду(Ссылка.Код).Ссылка);
    Запрос2.УстановитьПараметр("ЕдиницаИзмПоКл",Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(Элемент.БазоваяЕдиницаИзмерения.Код).Ссылка );

    Результат2 = Запрос2.Выполнить();
    ВыборкаЭЛ = Результат2.Выбрать();

    Если ВыборкаЭЛ.Количество()=1 Тогда
    Сообщить ("Правим этот элемент",СтатусСообщения.БезСтатуса);
    Элемент.ЕдиницаДляОтчетов = ВыборкаЭЛ.ЕдиницыИзмерения.Ссылка;
    Элемент.ЕдиницаХраненияОстатков = ВыборкаЭЛ.ЕдиницыИзмерения.Ссылка;

    КонецЕсли;


    Элемент.Записать();



    Где я не прав?
    Подскажите пожалуйста!! Горю на работе....
  2. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Зачем так сложно - то. Просто берете с диска ИТС обработку УниверсальныеПодборИОбработкаОбъектов.epf. Находите элементы справочника с незаполнеными единицами. А потом на закладке обработки в Произвольном алгоритме пишите что-то вроде:

    Код:
    ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка);
    Если ВыборкаЕдиниц.Следующий() Тогда
    НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
    Иначе
    НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
    НайденнаяЕдиницаОбъект.Наименование            = СокрЛП(Объект.БазоваяЕдиницаИзмерения);
    НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения;
    НайденнаяЕдиницаОбъект.Коэффициент             = 1;
    НайденнаяЕдиницаОбъект.Владелец                = Объект.Ссылка;
    
    Попытка
    НайденнаяЕдиницаОбъект.Записать();
    Исключение
    Сообщить("Не удалось записать единицу хранения остатков: " + ОписаниеОшибки(), СтатусСообщения.Важное);
    КонецПопытки;
    
    НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка;
    КонецЕсли;
    
    Объект.ЕдиницаХраненияОстатков = НайденнаяЕдиница;
    Объект.ЕдиницаДляОтчетов = НайденнаяЕдиница;
    Объект.Записать();
    
  3. TopicStarter Overlay
    Adminspb
    Offline

    Adminspb Опытный в 1С

    Регистрация:
    18 дек 2006
    Сообщения:
    116
    Симпатии:
    0
    Баллы:
    26

    У меня справочник ЕдиницыИзмерения уже заполнен...утеряны ссылки на ед.изм. из элементов справчоника номенклатуры. Зачем из создавать? ...Надо найти и указатиь на них...

Поделиться этой страницей