Имя: Пароль:
1C
1С v8
Как обратиться к ТЧ другого документа
0 steeshiy
 
12.03.19
13:39
Приветствую!

Подскажите, пожалуйста, как обратиться к ТЧ другого документа?
В ТЧ документа ПСА необходимо подтянуть при выборе номенклатуры цену из ТЧ документа ПрайсЛист. т. е в справочнике Номеклатура цен на номенклатуры нет, только наименование номеклатуры. Цены устанавливаются в ТЧ документа ПрайсЛист.
1 DrWatson
 
12.03.19
13:43
(0) При выборе номенклатуры вызываешь функцию получения цены номенклатуры. Как получать? Запросом, наверное.
2 catena
 
12.03.19
13:43
Табличная часть.Найти (Tabular section.Find)
Табличная часть (Tabular section)
Найти (Find)
Синтаксис:

Найти(<Значение>, <Колонки>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)

Тип: Строка.
Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми.
Если параметр не указан, поиск осуществляется по всей табличной части.
Значение по умолчанию: Пустая строка.
Возвращаемое значение:

Тип: Строка табличной части; Неопределено.
Строка, которая содержит искомое значение. Если значение не найдено, то возвращается значение Неопределено.
Описание:

Осуществляет поиск значения в указанных колонках табличной части.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Метод эффективно использовать для поиска уникальных значений.
Пример:

НайденнаяСтрока = Состав.Найти(ТекТовар, "Номенклатура");
Если НайденнаяСтрока = Неопределено Тогда
    Предупреждение(НСтр("ru = 'Товар не найден!';"
     + " en = 'Article not found!'"));
Иначе
    Количество = НайденнаяСтрока.Количество;
КонецЕсли;
3 Aleksandr N
 
12.03.19
13:45
Все-таки такую информацию лучше получать из регистров.
4 steeshiy
 
12.03.19
13:53
Получил запросом. Но, при изменении номеклатуры, цена остается прежней..?
5 steeshiy
 
12.03.19
14:47
В общем, в прайс листе номеклатуры много, а я получил только по первой строке...
Как получить именно из нужной строки? Условие в запросе?
Сейчас так:

&НаСервере
Функция ПолучитьЦену()
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПрайсЛистСостав.ВидЛома,
        |    ПрайсЛистСостав.Цена
        |ИЗ
        |    Документ.ПрайсЛист.Состав КАК ПрайсЛистСостав";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ВыборкаДетальныеЗаписи.Цена;
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    
    
КонецФункции // ()
6 sqr4
 
12.03.19
14:53
(5) не надо творить фигню, делайте нормально. Данные из документа прайс лист пишутся в регистр или должны писаться, обязаны. Дальше получаете данные из регистра запросом. А запрос по документам в данном случае это и функционал не рабочий и хреновое обучение.
И в запросы надо условия ставить!!! И если ничего не найдено, то что вернет ваша функция???
7 DrWatson
 
12.03.19
17:19
(5) Функция ПолучитьЦену() по замыслу получает цену чего? Наверное, какой-то определенной номенклатуры. Откуда функция узнает для какой номенклатуры нужно получить цену? Самый правильный вариант будет - передать параметром функции.
Дальше, что с этой ссылкой делать. В конструкторе на закладке Условия добавить одно условие ПрайсЛистСостав.Номенклатура = &Номенклатура. В результате появится строчка в запросе и строчка в коде для установки параметра запроса. Вот эту номенклатуру в параметр запроса и нужно передать.
Конечно это не всё что следует предусмотреть. Но на вопрос из (5) отвечает.
8 breezee
 
12.03.19
17:25
Почитайте книжку. Рано вам еще цену получать. Там есть примеры
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший