Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 16:02

Заполнение реквизита табличной части документа (строки, из справочника наименования, внутри документа)

Автор lostandleft, 01 окт 2018, 08:56

0 Пользователей и 1 гость просматривают эту тему.

lostandleft

Здравствуйте.
Волею судеб нужно сваять пару документов в 1с 77.
Вроде бы как все шло нормально, но наткнулся на нерешаемую для себя задачу, просто никак не могу понять как это делается. А к сожалению, по 1с77, как по умирающей платформе уже никаких обучающих ютуб роликов нет, да и форумы не пестрят пояснениями, видимо все разрабатывалось на этой платформе в те далекие года, когда было не модно делиться знаниями, и зарабатывать аудиторию в Ютуб.

Пожалуйста подскажите как решить задачу.
Дано: Документ созданный с помощью конструктора наименование-Идетификатор: ВводОстатков.
Имеет табличную часть и реквизит: Наименование_ТМЦ, тип значения - Справочник.Номенклатура
В форме документа, в диалоговой части существует кнопка Заполнить.

При нажатии на кнопку происходит запрос с стороннему DBF файлу, из которого берется Код номенклатуры.
С этим я справился, вытащил код номенклатуры, и с помощью такой команды, перевел его в удобочитаемый понятный вид - т.е. вытащил наименование.

Процедура ЗапросОстатка(ИмяРеквизита="")

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

//Вторым этапом нужно как-то вписать найденное значение ТМЦ в реквизит табличной части Наименование_ТМЦ
//Пробовал так
        //Наименование_ТМЦ=НайденноеТМЦ
//Не работает

//Пробовал так
        // ОткрытьПодбор("Справочник.Номенклатура","Код",,0,"");
        //  УстановитьЗначениеВПодборе("Код","000000003")
//Не работает, подбор открывается и не закрывается, ничего не происходит значение наименования в табличной части не появляется.


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

Помогите пожалуйста, если это возможно, мой мозг просто не понимает чего хочет 1с и как сделать так, чтобы заполнить строку в документе.
Методом научного тыка перебрал уйму различных вариантов, правда, очень старался сам несколько дней, не получается.
Я очень старался, я понял что по всей видимости нужно использовать ПОДБОР, но я не понимаю как это работает, просто не понимаю, читал помощник, но голова не понимает.
Помогите пожалуйста кодом, если возможно.

PS Конфигурация 1с бухгалтерия, если это имеет какое-то значение

alexandr_ll

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

//Вторым этапом нужно как-то вписать найденное значение ТМЦ в реквизит табличной части Наименование_ТМЦ
        Наименование_ТМЦ=НайденноеТМЦ;

lostandleft

Цитата: alexandr_ll от 01 окт 2018, 10:12
Попробуйте так:
    НоваяСтрока();
НайденноеТМЦ=ПолучитьПустоеЗначение("Справочник.Номенклатура");;
    СпрНомер = СоздатьОбъект("Справочник.Номенклатура");
    Если СпрНомер.НайтиПоКоду("000000003")=1 Тогда
        НайденноеТМЦ=СпрНомер.ТекущийЭлемент();   
        Сообщить(НайденноеТМЦ);
//В сообщить показывается правильно найденное значение наименования ТМЦ
    Иначе
        Предупреждение("Элемент с заданным наименованием не найден");
    КонецЕсли;

//Вторым этапом нужно как-то вписать найденное значение ТМЦ в реквизит табличной части Наименование_ТМЦ
        Наименование_ТМЦ=НайденноеТМЦ;


Уважаемый Человек!!!!!
На написал же в комментариях в коде, что пробовал!!! - Не работает, не происходит ничего, ни ошибок вообще ничего

alexandr_ll

Обратите внимание на эту строку:
НайденноеТМЦ=СпрНомер.ТекущийЭлемент();
а у вас
  НайденноеТМЦ=СпрНомер.ТекущийЭлемент().Наименование;

lostandleft

Цитата: alexandr_ll от 01 окт 2018, 10:23
Обратите внимание на эту строку:
НайденноеТМЦ=СпрНомер.ТекущийЭлемент();
а у вас
  НайденноеТМЦ=СпрНомер.ТекущийЭлемент().Наименование;

Заработало!!!! Я Вас безумно благодарю!
Вы не могли бы пояснить почему так происходит?
Я почему-то думал что нужно прямое соответсвие наименования, ведь в строку наименование вводится!
Чего я только не пробовал, а тут не хватило видимо базового понимания. Поясните пожалуйста, чтоб я впреть на грабли не наступал!

alexandr_ll

Цитата: lostandleft от 01 окт 2018, 11:14
Цитата: alexandr_ll от 01 окт 2018, 10:23
Обратите внимание на эту строку:
НайденноеТМЦ=СпрНомер.ТекущийЭлемент();
а у вас
  НайденноеТМЦ=СпрНомер.ТекущийЭлемент().Наименование;

Заработало!!!! Я Вас безумно благодарю!
Вы не могли бы пояснить почему так происходит?
Я почему-то думал что нужно прямое соответсвие наименования, ведь в строку наименование вводится!
Чего я только не пробовал, а тут не хватило видимо базового понимания. Поясните пожалуйста, чтоб я впреть на грабли не наступал!
В вашем документе в качестве реквизита выступает ссылка на справочник номенклатура, поэтому и передавать в него следует именно ссылку, а не наименование. Если бы реквизит имел тип "Строка", тогда бы передавалось именно наименование.
От того, что одинаково выглядят ссылка и наименование суть не меняется, просто у элемента справочника основное представление в виде наименования (может быть и другим).
Метод НайтиПоКоду() возвращает именно ссылку на элемент справочника.

lostandleft

Спасибо за пояснения! Правда чего я только не пробовал, по видимому Подбор, который я выше писал тоже по этому же не работает.
Спасибо еще раз!

Кстати, как это через подбор реализовтаь? Чисто из любопытства, если возможно, поясните, конечто если это времени много не займет.
Форма подбора открывается, но выбор наименования и занесение в табличную часть не делается.

alexandr_ll

Цитата: lostandleft от 01 окт 2018, 12:16
Спасибо за пояснения! Правда чего я только не пробовал, по видимому Подбор, который я выше писал тоже по этому же не работает.
Спасибо еще раз!

Кстати, как это через подбор реализовтаь? Чисто из любопытства, если возможно, поясните, конечто если это времени много не займет.
Форма подбора открывается, но выбор наименования и занесение в табличную часть не делается.
Для реализации подбора в модуле формы должны использоваться две процедуры Подбор() с методом открытьПодбор() и  ОбработкаПодбора(), переносящая результаты подбора в документ.
Все это используется при интерактивном заполнении документа.
Примеры посмотрите в любом документе с табличной частью и реквизитом Номенклатура.

lostandleft


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск