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

Как получить реквизит документа

Автор Sheriff, 27 апр 2018, 07:13

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

Sheriff

Всем доброго времени суток!
Конфа Бухгалтерия 2.0
В общем, есть документ "ОтгрузкаВагонов", в нём есть реквизит таб.части "Вагон", есть документ "РеализацияТМЗ". Так вот, документ "ОтгрузкаВагонов", является основанием документа "РеализацияТМЗ", в свою очередь, документ "РеализацияТМЗ", является основание для документа "Счет-фактура выданный". И этой счет фактуры мы создаём ЭСФ (электронный счет-фактура) и там есть раздел "Товары" и таб.часть, вот в одну из таб.частей, а точнее колонку "Дополнительные данные", нужно получить данные с документа "ОтгрузкаВагонов", а точнее реквезит "Вагон", т.е его номер.
Если прописывать
Если Не ЗначениеЗаполнено(СтрокаТаблицыТовары.ДополнительныеДанные) Тогда
СтрокаТаблицыТовары.ДополнительныеДанные = "Пример";
КонецЕсли;

То в ЭСФ в колонке "ДополнительныДанные", выходит слово "Пример", но, это как пример, а как получить данные с документа "ОтгрузкаВагонов"???

Sheriff

Дальше документа "РеализацияТМЗ" не идёт.
Как получить данные с документа "ОтгрузкаВагонов"?
Добавлено: 27 апр 2018, 08:25


ДокументыОтгрузкиВагонами - уже идет табличная часть, в которой есть реквизиты и ссылка на тот самый документ, в котором и есть номера этих самых вагонов.
Но номера вагонов, в документе "ОтгрузкаВагонов", тоже в таб.части находятся.

ДмитрийФ

Надо по ссылке на документ ОтгрузкаВагонов перебрать строки табличной части:

Для каждого Строка из ОтгрузкаВагонов.ИмяТЧ Цикл
    Сообщить(Строка.Вагон); // для отладки
КонецЦикла;


Sheriff

Цитата: ДмитрийФ от 27 апр 2018, 09:00
Надо по ссылке на документ ОтгрузкаВагонов перебрать строки табличной части:

Для каждого Строка из ОтгрузкаВагонов.ИмяТЧ Цикл
    Сообщить(Строка.Вагон); // для отладки
КонецЦикла;

{Обработка.ОбменЭСФ.МодульОбъекта(11902,25)}: Переменная не определена (ОтгрузкаВагонов)
      Для каждого Строка из <<?>>ОтгрузкаВагонов.Вагоны Цикл (Проверка: Толстый клиент (обычное приложение))
А если сделать
ОтгрузкаВагонов = документы.ОтгрузкаВагонов;
Для каждого Строка из ОтгрузкаВагонов.Вагоны Цикл
    Сообщить(Строка.Вагон); // для отладки
КонецЦикла;

То выходит
{Обработка.ОбменЭСФ.МодульОбъекта(11902)}: Поле объекта не обнаружено (Вагоны)
      Для каждого Строка из ОтгрузкаВагонов.Вагоны Цикл


alex0402

Цитата: Sheriff от 27 апр 2018, 09:15ОтгрузкаВагонов = документы.ОтгрузкаВагонов; Для каждого Строка из ОтгрузкаВагонов.Вагоны Цикл     Сообщить(Строка.Вагон); // для отладки КонецЦикла;

перебрать все документы? тогда

    ОтгрузкаВагонов = документы.ОтгрузкаВагонов.Выбрать();
    Пока ОтгрузкаВагонов.Следующий() Цикл
        Для каждого Строка из ОтгрузкаВагонов.ИмяТЧ Цикл
            Сообщить(Строка.Вагон); // для отладки
        КонецЦикла;
    КонецЦикла;

Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 27 апр 2018, 09:33
Цитата: Sheriff от 27 апр 2018, 09:15ОтгрузкаВагонов = документы.ОтгрузкаВагонов; Для каждого Строка из ОтгрузкаВагонов.Вагоны Цикл     Сообщить(Строка.Вагон); // для отладки КонецЦикла;

перебрать все документы? тогда

    ОтгрузкаВагонов = документы.ОтгрузкаВагонов.Выбрать();
    Пока ОтгрузкаВагонов.Следующий() Цикл
        Для каждого Строка из ОтгрузкаВагонов.ИмяТЧ Цикл
            Сообщить(Строка.Вагон); // для отладки
        КонецЦикла;
    КонецЦикла;


Все вагоны перебрал и в служебных сообщениях вышли номера.
Как номера с документа теперь, перенести в колонку "ДополнительныеДанные"?
Добавлено: 28 апр 2018, 08:57


Цитата: alex0402 от 27 апр 2018, 09:33
Цитата: Sheriff от 27 апр 2018, 09:15ОтгрузкаВагонов = документы.ОтгрузкаВагонов; Для каждого Строка из ОтгрузкаВагонов.Вагоны Цикл     Сообщить(Строка.Вагон); // для отладки КонецЦикла;

перебрать все документы? тогда

    ОтгрузкаВагонов = документы.ОтгрузкаВагонов.Выбрать();
    Пока ОтгрузкаВагонов.Следующий() Цикл
        Для каждого Строка из ОтгрузкаВагонов.ИмяТЧ Цикл
            Сообщить(Строка.Вагон); // для отладки
        КонецЦикла;
    КонецЦикла;


Судя по всему, как делать дальше, не подскажите?

Norfolk

Если Не ЗначениеЗаполнено(СтрокаТаблицыТовары.ДополнительныеДанные) Тогда
        ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
        ДокРеализацияТМЗ = ДокСчетФактура.ДокументОснование;//получаем документ реализация ТМЗ
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен
        ИскомаяСтрока = ДокОтгрузкаВагонов.[ИмяВашейТабЧасти].Найти(СтрокаТаблицыТовары.Товар); //ищем строку в табличной части
        //если нашли - проставляем реквизит, если не нашли такую строку - ничего не заполнится       
        Если ИскомаяСтрока <> Неопределено Тогда
            СтрокаТаблицыТовары.ДополнительныеДанные = ИскомаяСтрока.Вагон;
        КонецЕсли;
    КонецЕсли;

Sheriff

Цитата: Norfolk от 28 апр 2018, 10:27
Если Не ЗначениеЗаполнено(СтрокаТаблицыТовары.ДополнительныеДанные) Тогда
        ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
        ДокРеализацияТМЗ = ДокСчетФактура.ДокументОснование;//получаем документ реализация ТМЗ
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен
        ИскомаяСтрока = ДокОтгрузкаВагонов.[ИмяВашейТабЧасти].Найти(СтрокаТаблицыТовары.Товар); //ищем строку в табличной части
        //если нашли - проставляем реквизит, если не нашли такую строку - ничего не заполнится       
        Если ИскомаяСтрока <> Неопределено Тогда
            СтрокаТаблицыТовары.ДополнительныеДанные = ИскомаяСтрока.Вагон;
        КонецЕсли;
    КонецЕсли;

Если в строке:
ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
Оставить Ссылка.ДокументОснование; - то, будет ошибка, что переменная "Ссылка" не определена, если поставить ВыборкаТовары.СчетФактура.ДокументОснование; - то норм, но далее спотыкается на следующей ошибке
{Обработка.ОбменЭСФ.МодульОбъекта(11898)}: Значение не является значением объектного типа (ДокументОснование)
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен

Norfolk

Цитата: Sheriff от 28 апр 2018, 11:08
Цитата: Norfolk от 28 апр 2018, 10:27
Если Не ЗначениеЗаполнено(СтрокаТаблицыТовары.ДополнительныеДанные) Тогда
        ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
        ДокРеализацияТМЗ = ДокСчетФактура.ДокументОснование;//получаем документ реализация ТМЗ
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен
        ИскомаяСтрока = ДокОтгрузкаВагонов.[ИмяВашейТабЧасти].Найти(СтрокаТаблицыТовары.Товар); //ищем строку в табличной части
        //если нашли - проставляем реквизит, если не нашли такую строку - ничего не заполнится       
        Если ИскомаяСтрока <> Неопределено Тогда
            СтрокаТаблицыТовары.ДополнительныеДанные = ИскомаяСтрока.Вагон;
        КонецЕсли;
    КонецЕсли;

Если в строке:
ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
Оставить Ссылка.ДокументОснование; - то, будет ошибка, что переменная "Ссылка" не определена, если поставить ВыборкаТовары.СчетФактура.ДокументОснование; - то норм, но далее спотыкается на следующей ошибке
{Обработка.ОбменЭСФ.МодульОбъекта(11898)}: Значение не является значением объектного типа (ДокументОснование)
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен
Ну я же вам не дословный код привел...смотрите структуру вашей конфигурации. Если вы говорите, что документ "Реализация ТМЗ" вводится на основании документа "Отгрузка вагонов", то там должна быть ссылка на документ "Отгрузка вагонов". Подставляйте свои значения и все.
То есть логика примерно такая: вам нужно получить ссылку на документ "Отгрузка вагонов" из последнего документа. Как я понимаю они вводятся друг через друга, соответственно должен быть реквизит документ основание (ну либо похожий). Получаете ссылку, далее для каждой строки последнего дока ищете соответствующую строку в первом доке.
п.с.
нахождение документа "Отгрузка вагонов" вынесите перед циклом обхода товаров.

Sheriff

Цитата: Norfolk от 28 апр 2018, 11:12
Цитата: Sheriff от 28 апр 2018, 11:08
Цитата: Norfolk от 28 апр 2018, 10:27
Если Не ЗначениеЗаполнено(СтрокаТаблицыТовары.ДополнительныеДанные) Тогда
        ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
        ДокРеализацияТМЗ = ДокСчетФактура.ДокументОснование;//получаем документ реализация ТМЗ
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен
        ИскомаяСтрока = ДокОтгрузкаВагонов.[ИмяВашейТабЧасти].Найти(СтрокаТаблицыТовары.Товар); //ищем строку в табличной части
        //если нашли - проставляем реквизит, если не нашли такую строку - ничего не заполнится       
        Если ИскомаяСтрока <> Неопределено Тогда
            СтрокаТаблицыТовары.ДополнительныеДанные = ИскомаяСтрока.Вагон;
        КонецЕсли;
    КонецЕсли;

Если в строке:
ДокСчетФактура = Ссылка.ДокументОснование; //получаем документ счет-фактура
Оставить Ссылка.ДокументОснование; - то, будет ошибка, что переменная "Ссылка" не определена, если поставить ВыборкаТовары.СчетФактура.ДокументОснование; - то норм, но далее спотыкается на следующей ошибке
{Обработка.ОбменЭСФ.МодульОбъекта(11898)}: Значение не является значением объектного типа (ДокументОснование)
        ДокОтгрузкаВагонов = ДокРеализацияТМЗ.ДокументОснование;//получаем документ отгрузка вагонов, который нам нужен
Ну я же вам не дословный код привел...смотрите структуру вашей конфигурации. Если вы говорите, что документ "Реализация ТМЗ" вводится на основании документа "Отгрузка вагонов", то там должна быть ссылка на документ "Отгрузка вагонов". Подставляйте свои значения и все.
То есть логика примерно такая: вам нужно получить ссылку на документ "Отгрузка вагонов" из последнего документа. Как я понимаю они вводятся друг через друга, соответственно должен быть реквизит документ основание (ну либо похожий). Получаете ссылку, далее для каждой строки последнего дока ищете соответствующую строку в первом доке.
п.с.
нахождение документа "Отгрузка вагонов" вынесите перед циклом обхода товаров.
Там в общем дело в том, что документ Реализация, не вводится на основании док.Огрузка вагонов, этот документ, просто находится в табличной части, документа Реализации. (скрин)

Теги:

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

Рейтинг@Mail.ru

Поиск