Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2018, 00:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

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

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

Оффлайн lostandleft

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Бухгалтер
Здравствуйте.
Волею судеб нужно сваять пару документов в 1с 77.
Вроде бы как все шло нормально, но наткнулся на нерешаемую для себя задачу, просто никак не могу понять как это делается. А к сожалению, по 1с77, как по умирающей платформе уже никаких обучающих ютуб роликов нет, да и форумы не пестрят пояснениями, видимо все разрабатывалось на этой платформе в те далекие года, когда было не модно делиться знаниями, и зарабатывать аудиторию в Ютуб.

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

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

Процедура ЗапросОстатка(ИмяРеквизита="")
 
    НоваяСтрока();
    СпрНомер = СоздатьОбъект("Справочник.Номенклатура");
    Если СпрНомер.НайтиПоКоду("000000003")=1 Тогда
        НайденноеТМЦ=СпрНомер.ТекущийЭлемент().Наименование   
        Сообщить(НайденноеТМЦ);
//В сообщить показывается правильно найденное значение наименования ТМЦ
    Иначе
        Предупреждение("Элемент с заданным наименованием не найден");
    КонецЕсли;
 
//Вторым этапом нужно как-то вписать найденное значение ТМЦ в реквизит табличной части Наименование_ТМЦ
//Пробовал так
        //Наименование_ТМЦ=НайденноеТМЦ
//Не работает
 
//Пробовал так
        // ОткрытьПодбор("Справочник.Номенклатура","Код",,0,"");
        //  УстановитьЗначениеВПодборе("Код","000000003")
//Не работает, подбор открывается и не закрывается, ничего не происходит значение наименования в табличной части не появляется.
 
 
КонецПроцедуры
Помогите пожалуйста, если это возможно, мой мозг просто не понимает чего хочет 1с и как сделать так, чтобы заполнить строку в документе.
Методом научного тыка перебрал уйму различных вариантов, правда, очень старался сам несколько дней, не получается.
Я очень старался, я понял что по всей видимости нужно использовать ПОДБОР, но я не понимаю как это работает, просто не понимаю, читал помощник, но голова не понимает.
Помогите пожалуйста кодом, если возможно.

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


Оффлайн alexandr_ll

  • *****
  • Сообщений: 801
  • РЕПУТАЦИЯ: 138
  • КПД: 17%
  • Регистрация: 2016-08-23
  • Сайт: 
  • Профессия: Программист 1С
Попробуйте так:
    НоваяСтрока();
НайденноеТМЦ=ПолучитьПустоеЗначение("Справочник.Номенклатура");;
    СпрНомер = СоздатьОбъект("Справочник.Номенклатура");
    Если СпрНомер.НайтиПоКоду("000000003")=1 Тогда
        НайденноеТМЦ=СпрНомер.ТекущийЭлемент();   
        Сообщить(НайденноеТМЦ);
//В сообщить показывается правильно найденное значение наименования ТМЦ
    Иначе
        Предупреждение("Элемент с заданным наименованием не найден");
    КонецЕсли;
 
//Вторым этапом нужно как-то вписать найденное значение ТМЦ в реквизит табличной части Наименование_ТМЦ
        Наименование_ТМЦ=НайденноеТМЦ;

Оффлайн lostandleft

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Бухгалтер
Попробуйте так:
    НоваяСтрока();
НайденноеТМЦ=ПолучитьПустоеЗначение("Справочник.Номенклатура");;
    СпрНомер = СоздатьОбъект("Справочник.Номенклатура");
    Если СпрНомер.НайтиПоКоду("000000003")=1 Тогда
        НайденноеТМЦ=СпрНомер.ТекущийЭлемент();   
        Сообщить(НайденноеТМЦ);
//В сообщить показывается правильно найденное значение наименования ТМЦ
    Иначе
        Предупреждение("Элемент с заданным наименованием не найден");
    КонецЕсли;
 
//Вторым этапом нужно как-то вписать найденное значение ТМЦ в реквизит табличной части Наименование_ТМЦ
        Наименование_ТМЦ=НайденноеТМЦ;

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

Оффлайн alexandr_ll

  • *****
  • Сообщений: 801
  • РЕПУТАЦИЯ: 138
  • КПД: 17%
  • Регистрация: 2016-08-23
  • Сайт: 
  • Профессия: Программист 1С
Обратите внимание на эту строку:
 
 НайденноеТМЦ=СпрНомер.ТекущийЭлемент();

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

Оффлайн lostandleft

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Бухгалтер
Обратите внимание на эту строку:
 
 НайденноеТМЦ=СпрНомер.ТекущийЭлемент();

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

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

Оффлайн alexandr_ll

  • *****
  • Сообщений: 801
  • РЕПУТАЦИЯ: 138
  • КПД: 17%
  • Регистрация: 2016-08-23
  • Сайт: 
  • Профессия: Программист 1С
Обратите внимание на эту строку:
 
 НайденноеТМЦ=СпрНомер.ТекущийЭлемент();

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

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

Оффлайн lostandleft

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Бухгалтер
Спасибо за пояснения! Правда чего я только не пробовал, по видимому Подбор, который я выше писал тоже по этому же не работает.
Спасибо еще раз!

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

Оффлайн alexandr_ll

  • *****
  • Сообщений: 801
  • РЕПУТАЦИЯ: 138
  • КПД: 17%
  • Регистрация: 2016-08-23
  • Сайт: 
  • Профессия: Программист 1С
Спасибо за пояснения! Правда чего я только не пробовал, по видимому Подбор, который я выше писал тоже по этому же не работает.
Спасибо еще раз!

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

Оффлайн lostandleft

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Бухгалтер


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
65 Сообщений
wise wise
42 Сообщений
alex0402
34 Сообщений
alexandr_ll
32 Сообщений
AIFrame AIFrame
32 Сообщений
LexaK
27 Сообщений
byte777
26 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
25 Сообщений
happynattion
22 Сообщений
antoneus
20 Сообщений

* Кто онлайн

  • Точка Гостей: 146
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal