7.7 1C Бухгалтерия обработка справочника Номенклатура

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем zala, 7 ноя 2012.

  1. TopicStarter Overlay
    zala
    Offline

    zala Опытный в 1С

    Регистрация:
    19 янв 2011
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Добрый вечер! очень срочно нужна помощь! конфигурация бухгалтерия типовая 548 релиз.
    Нужно обработать справочник номенклатуры так, чтобы присвоить Наименованию номенклатуры Полное наименование. Вот что получилось:


    Процедура Сформировать()

    Выб = СоздатьОбъект ("Справочник.Номенклатура");
    Выб.ВыбратьЭлементы();
    Пока Выб.ПолучитьЭлемент() = 1 Цикл
    Если Выб.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли;
    Если Выб.ПолнНаименование = "" Тогда
    Продолжить;
    КонецЕсли;
    Выб.Наименование = Выб.ПолнНаименование;
    Выб.Записать();

    КонецЦикла;

    КонецПроцедуры

    Но это не работает - выдает ошибку:

    Выб.Наименование = Выб.ПолнНаименование;
    {G:\НАИМ-ПОЛННАИМ.ERT(46)}: Изменено Наименование! Может быть нарушена последовательность выборки!



    Тогда сделала вот так:




    Процедура Сформировать()

    ТЗ = СоздатьОбъект ("СписокЗначений");
    Индекс = 1;
    Ном = ПолучитьПустоеЗначение("Справочник.Номенклатура");
    Выб = СоздатьОбъект ("Справочник.Номенклатура");
    Выб.ВыбратьЭлементы();
    Пока Выб.ПолучитьЭлемент() = 1 Цикл
    Если Выб.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли;
    Если Выб.ПолнНаименование = "" Тогда
    Продолжить;
    КонецЕсли;
    ТЗ.ДобавитьЗначение(Выб);
    КонецЦикла;

    Пока Индекс <= ТЗ.РазмерСписка() Цикл

    Ном = ТЗ.ПолучитьЗначение(Индекс);
    Ном.Наименование = Ном.ПолнНаименование;

    КонецЦикла;

    КонецПроцедуры



    Тоже не работает, выдает ошибку:
    Ном.Наименование = Ном.ПолнНаименование;
    {G:\НАИМ-ПОЛННАИМ.ERT(23)}: Не выбран элемент!
    Пробежалась отладчиком - не записывает в список значений.



    Помогите пожалуйста!!!
  2. TopicStarter Overlay
    zala
    Offline

    zala Опытный в 1С

    Регистрация:
    19 янв 2011
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Сама разобралась! Обьясню:так как основное представление справочника Номенклатура — наименование, а я его как раз меняла, то надо получить элементы в порядке кодов. Добавила одну лишь строчку и все ОК!!!

    Процедура Сформировать()

    Выб = СоздатьОбъект ("Справочник.Номенклатура");
    Выб.ПорядокКодов();
    Выб.ВыбратьЭлементы();
    Пока Выб.ПолучитьЭлемент() = 1 Цикл
    Если Выб.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли;
    Если Выб.ПолнНаименование = "" Тогда
    Продолжить;
    КонецЕсли;
    Выб.Наименование = Выб.ПолнНаименование;
    Выб.Записать();

    КонецЦикла;
    КонецПроцедуры

    В процессе нашла отличную статью, может понадобится кому http://www.house1c.ru/ShowArticle.aspx?ID=18&AspxAutoDetectCookieSupport=1
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Про счетчик забыли
    Код:
    Процедура Сформировать()
    
    ТЗ = СоздатьОбъект ("СписокЗначений");
    Индекс = 0;
    Ном = ПолучитьПустоеЗначение("Справочник.Номенклатура");
    Выб = СоздатьОбъект ("Справочник.Номенклатура");
    Выб.ВыбратьЭлементы();
    Пока Выб.ПолучитьЭлемент() = 1 Цикл
    Если Выб.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли;
    Если Выб.ПолнНаименование = "" Тогда
    Продолжить;
    КонецЕсли;
    ТЗ.ДобавитьЗначение(Выб);
    КонецЦикла;
    
    Индекс=0;
    Пока Индекс <= ТЗ.РазмерСписка() Цикл
    Индекс=Индекс+1;//вот здесь
    Ном = ТЗ.ПолучитьЗначение(Индекс);
    Ном.Наименование = Ном.ПолнНаименование;
    
    КонецЦикла;
    
    КонецПроцедуры
    
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Либо же отбирать элементы справочника запросом.
  5. Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    А напрямую присвоить не вариант?

    Код:
    Процедура Сформировать()
    Выб = СоздатьОбъект ("Справочник.Номенклатура");
    Выб.ВыбратьЭлементы();
    Пока Выб.ПолучитьЭлемент() = 1 Цикл
    Если Выб.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли;
    Если Выб.ПолнНаименование = "" Тогда
    Выб.ПолнНаименование = Выб.Наименование;
    Выб.Записать();
    КонецЕсли;
    КонецЦикла();
    КонецПроцедуры()
    Не?
  6. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    По задаче наоборот надо:
  7. Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Поменять местами :icon_avatar-174:
    Код:
     Выб.Наименование = Выб.ПолнНаименование ;
  8. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    При упорядочиванию по наименованию изменяется последовательность выборки. На что ТС и получила ошибку:

  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Смысл? Код-то с СЗ рабочий

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