8.х Значение поля "Владелец" не заполнено или заполнено неверно

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

  1. TopicStarter Overlay
    Reclaim
    Offline

    Reclaim

    Регистрация:
    13 ноя 2015
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Работаю в конфигурации ЗУП 2.5, создаю внешнюю обработку для загрузки данных. Вот часть кода, в которой выдается ошибка.
    ----------------------------------------------------------------------------------------------------------
    Если ЗначениеЗаполнено(БИК) Тогда
    Банк = Справочники.Банки.НайтиПоКоду(БИК);
    Если НЕ ЗначениеЗаполнено(Банк.Код) Тогда
    НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();
    НовыйЭлемент.Код = БИК;
    НовыйЭлемент.Наименование = БанкЭК;
    НовыйЭлемент.Город = ГородЭК;
    НовыйЭлемент.КоррСчет = КоррСчетЭК;
    НовыйЭлемент.Записать();
    НовыйЭЛ = Справочники.БанковскиеСчета.СоздатьЭлемент();
    НовыйЭЛ.Банк = БанкЭК;
    НовыйЭЛ.Записать();

    ----------------------------------------------------------------------------------------------------------
    Программа ругается и выдает такую ошибку: {Форма.Форма.Форма(115)}: Ошибка при вызове метода контекста (Записать) НовыйЭЛ.Записать();
    по причине: Значение поля "Владелец" не заполнено или заполнено неверно.

    Подскажите как избавиться от этой ошибки.
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Заполнить владельца - организацию либо контрагента.
  3. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Заполнить владельца.
  4. TerANik
    Offline

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

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    В дополнение к выше написанному. Справочник БанковскиеСчета является подчинённым справочнику Организации или если мне не изменяет и в зупе есть то Контрагенты.
    Соответственно необходимо указать владельца данного элемента, т.е. какой организации или контрагенту пренадлежит.
  5. TopicStarter Overlay
    Reclaim
    Offline

    Reclaim

    Регистрация:
    13 ноя 2015
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Суть проблемы еще заключается в том, что контрагент по ТЗ создается после вот этой проверки.

    Вот само ТЗ:
    3.2 Если значение в файле в колонке "J"(БИК) заполнено, поиск по коду в справочнике Банки. Т.е. код справочника = БИК из файла.
    3.2.1 Если Банк не найден, создать элемент справочника "Банки", код = "БИК" (колонка J), наименование = "БАНК ПОЛУЧАТЕЛЬ..." (колонка F), ГОРОД = "ГОРОД..." (колонка G), КоррСчет = "КОР. СЧЕТ" (колонка K). Записать новый элемент справочника "Банки".
    3.2.2 Следом, создать элемент справочника "БанковскиеСчета", реквизит "Банк" заполнить элементом справочника из п. 3.2.1, записать созданный элемент справочника ""БанковскиеСчета"
    3.2.3
    проверить запросом"
    ВЫБРАТЬ
    Контрагенты.Ссылка
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ГДЕ
    Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код"
    есть ли в системе контрагент, у которого основной банковский счет принадлежит банку с кодом (БИК-ом) банка из п.3.2
    Если контрагент не найден, создать новый элемент справочника "Контрагенты", наименование = наименование элемента справочника Банки из п.3.2,
    Основной банковский счет = БанковскийСчет из п.3.2.2.
    ИНН заполнить как ИНН из файла (колонка H)
    КПП заполнить как КПП из файла (колонка I)
    Записть элемент справочника "Контрагенты".
    3.2.4 - Если значение в файле в колонке "J"(БИК) НЕ заполнено, предполагается что банка нет.
    Ищем контрагнета в справочнике "Контрагенты" по наименвоанию, колонка "F"
    Если контрагент не найден, создаем контрагента аналогично п.3.2.3, Но реквизит "Основной банковский счет" не заполняется, никаких запросов проверки тоже нет, только алгоритм создания. Наименование = значение колонки "F"

    Вот код, который я прописываю (не судите строго, всего неделю как изучаю программирование 1с)------------------------------------------------------------------------------------

    Если ЗначениеЗаполнено(БИК) Тогда
    Банк = Справочники.Банки.НайтиПоКоду(БИК);

    Если НЕ ЗначениеЗаполнено(Банк.Код) Тогда
    НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();
    НовыйЭлемент.Код = БИК;
    НовыйЭлемент.Наименование = БанкЭК;
    НовыйЭлемент.Город = ГородЭК;
    НовыйЭлемент.КоррСчет = КоррСчетЭК;
    НовыйЭлемент.Записать();

    НовыйЭЛ = Справочники.БанковскиеСчета.СоздатьЭлемент();
    НовыйЭЛ.Владелец = ;
    НовыйЭЛ.Банк = БанкЭК;
    НовыйЭЛ.Записать();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Контрагенты.Ссылка
    |ИЗ
    | Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    | Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код";

    Запрос.УстановитьПараметр("Код", БИК);

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

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

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;

    ИначеЕсли РезультатЗапроса = 0 Тогда
    НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
    НовыйКонтрагент.Наименование = БанкЭК;
    НовыйКонтрагент.ОсновнойБанковскийСчет = НовыйЭЛ.НомерСчета;
    НовыйКонтрагент.ИНН = ИНН;
    НовыйКонтрагент.КПП = КПП;
    НовыйКонтрагент.Записать();
    КонецЕсли;

    ИначеЕсли НЕ ЗначениеЗаполнено(БИК) Тогда
    Сообщить("Банка нет");

    Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(БанкЭК);
    Если НЕ ЗначениеЗаполнено(Контрагент.Наименование) Тогда
    НовыйКонтрагент1 = Справочники.Контрагенты.СоздатьЭлемент();
    НовыйКонтрагент1.Наименование = БанкЭК;
    НовыйКонтрагент1.ИНН = ИНН;
    НовыйКонтрагент1.КПП = КПП;
    НовыйКонтрагент1.Записать();
    КонецЕсли;
    КонецЕсли;
    --- Объединение сообщений, 16 ноя 2015 ---
    Подскажите, где я ошибаюсь в написании кода
  6. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Вот здесь:
    Код:
    НовыйЭЛ.Владелец = ;
    НовыйЭЛ.Банк = БанкЭК;
  7. TopicStarter Overlay
    Reclaim
    Offline

    Reclaim

    Регистрация:
    13 ноя 2015
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Тут я закомментировать забыл, просто пытался понять откуда мне его взять
  8. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Код:
    НовыйЭЛ.Владелец = <Тут должна быть ссылка на контрагента или организацию>;
    НовыйЭЛ.Банк = НовыйЭлемент.Ссылка;
    ТЗ у Вас как-то неудачно скопировано. Из него не очень понятно, каким значением заполнять владельца. Уточните.
  9. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Тому извращенцу, который писал ТЗ оторвать руки по шею. Он никогда не видел, что несколько контрагентов могут в одном банке счета держать?

    Ну а для ТС - сначала ищите счет по номеру счета и БИК банка, если нашли - ничего делать не надо. Потом ищите контрагента по ИНН/КПП, если они заполнены, если нет - по наименованию. Если нашли контрагента - ему делайте счет, если нет - делайте нового контрагента и ему счет.
    Будет вам и владелец для счета.

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