8.х Ошибка при заполнении пустого атрибута справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем smaximaa, 11 май 2016.

  1. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Пишу обработку которая будет заполнять незаполненный атрибут Идентификатор в справочнике Лицевые счета. Для заполнения использую типовую функцию ПолучитьИдентификаторЛС.
    Пока код такой:
    СправочникСсылка - реквизит который ссылается на СправочникСсылка.КВП_ЛицевыеСчета
    СправочникОбъект - реквизит который ссылается на СправочникОбъект.КВП_ЛицевыеСчета
    Код:
        КоличестоЗаполненных = 0;
        Если СправочникСсылка.Идентификатор = ""
            Тогда
          
            Пока Истина Цикл
                КоличестоЗаполненных = КоличестоЗаполненных + 1;
                СправочникОбъект.Идентификатор = ПолучитьИдентификаторЛС( ,СправочникСсылка.Наименование);
              
                Попытка
                    СправочникОбъект.Записать();
                Исключение
                    Предупреждение("Не удалось записать объект """ + СправочникОбъект + """!|" + ОписаниеОшибки(), 60);
                КонецПопытки;
              
                ОбработкаПрерыванияПользователя();
            КонецЦикла;
          
            Сообщить("Количество заполненных лицевых счетов: "+Строка(КоличестоЗаполненных));
          
            Иначе Сообщить("Все идентификаторы лицевых счетов заполнены");  
        КонецЕсли;
    
    И при исполнении возникает ошибка:
    Последнее редактирование: 11 май 2016
  2. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.025
    Симпатии:
    51
    Баллы:
    54
    В отладчике что возвращает ПолучитьИдентификаторЛС( ,СправочникСсылка.Наименование);
    Еще раз что такое СправочникОбъект? Напишите, где вы его инициализируете, откуда оно появляется.
  3. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Пишет что Переменная не определена.
    СправочникОбъект это реквизит обработки имеющий тип СправочникОбъект.КВП_ЛицевыеСчета, это не переменная
  4. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.025
    Симпатии:
    51
    Баллы:
    54
    1. СправочникОбъект.Идентификатор = ПолучитьИдентификаторЛС( ,СправочникСсылка.Наименование);
    Что же вы хотите в качестве идентификатора, если функция не верно отрабатывает?
    Разбирайтесь с этой типовой функцией, что за параметры принимает, что возвращает и что вообще делает (может она форму для заполнения открывает!! =))
  5. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Мне надо строковое значение, а функция как раз возвращает значение с типом строка.
    С функцией я разбирался, тут дело не в ней, вместо неё вставлял рандомное строковое значение и всё равно такая же ошибка.
  6. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.025
    Симпатии:
    51
    Баллы:
    54
    Ну я же спросил, что возвращает эта функция ПолучитьИдентификаторЛС( ,СправочникСсылка.Наименование);
    Вы сказали, что переменная не определена..
    "Элемент не выбран" посмотрите отладчиком, что такое СправочникОбъект в момент присваивания ему идентификатора
  7. olegsemenov2005
    Offline

    olegsemenov2005 Новичок в 1С

    Регистрация:
    5 май 2014
    Сообщения:
    48
    Симпатии:
    3
    Баллы:
    4
    Похоже в "СправочникОбъект" совсем не объект.
    Добавь перед циклом
    СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
  8. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.025
    Симпатии:
    51
    Баллы:
    54
    Лучше вообще не называть свои переменные СправочникОбъект, Объект, СправочникСсылка, Ссылка.
    В некоторых случаях такие двусмысленности могут привести к ошибке.
    http://developerslife.ru/14567
  9. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Подсказали как делать: надо было создать запрос и результат выгрузить в ТЗ, и дальше работать с ней
    Код прилагается:
    Код:
    Если ПодсчитатьКоличество() = 0 Тогда
            Сообщить("Все идентификаторы лицевых счетов заполнены");
        Иначе
       
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    КВП_ЛицевыеСчета.Ссылка КАК Ссылка
            |ИЗ
            |    Справочник.КВП_ЛицевыеСчета КАК КВП_ЛицевыеСчета
            |ГДЕ
            |    КВП_ЛицевыеСчета.Идентификатор ПОДОБНО """"";
                           
        Результат = Запрос.Выполнить().Выгрузить();
       
        КоличестоЗаполненных = 0;
        Попытка
        Для каждого Строка Из Результат Цикл
            КоличестоЗаполненных = КоличестоЗаполненных + 1;
            Объект = Строка.Ссылка.ПолучитьОбъект();
            Объект.Идентификатор = ПолучитьИдентификаторЛС( ,Объект.Наименование);
            Объект.Записать();
            Сообщить(Объект.Наименование + " записан");
            ОбработкаПрерыванияПользователя();
        КонецЦикла;
        Исключение
            Предупреждение("Не удалось записать объект """ + Объект + """!|" + ОписаниеОшибки(), 60);
        КонецПопытки;
       
        Сообщить("Количество записанных лицевых счетов: "+Строка(КоличестоЗаполненных));
       
        КонецЕсли;    
    --- Объединение сообщений, 11 май 2016 ---
    учту)
Похожие темы
  1. Bajik
    Ответов:
    2
    Просмотров:
    1.290
  2. Anikolai
    Ответов:
    2
    Просмотров:
    1.410
  3. materiy_boec
    Ответов:
    0
    Просмотров:
    1.047
  4. fire_on_line
    Ответов:
    12
    Просмотров:
    6.021
  5. sidrik36ad
    Ответов:
    3
    Просмотров:
    455
Загрузка...

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