7.7 Заполнение реквизита табличной части СФ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем alexnoviy, 2 апр 2009.

  1. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток.

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

    P.S. Бухгалтерия 7.7, редакция 4.5 (7.70.504)
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Кажи весь код
    >Элемент в номенклатуре найден точно-это только слова

    Глянь в СФ ВводНаОсновании, фсё поймешь

    в двух словах
    НоваяСтрока();
    НазначитьТип("Товар", "Справочник.Номенклатура");
    Товар=ТвойТовар;
  3. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Весь код:
    Код:
    СчетФактура.НоваяСтрока();
    СчетФактура.НазначитьТип("Товар", "Справчник.Номенклатура");
    Если Товары.НайтиЭлемент(Док.Товар) = 1 Тогда
    Сообщить(Товары.ТекущийЭлемент());
    СчетФактура.Товар = Товары.ТекущийЭлемент();
    КонецЕсли;     
    СчетФактура.Записать();
    
    
    Док - РасходнаяНакладная. Наименование правильного товара при отработке сообщает.
    Причем, вот так работает:
    Код:
    Док.ВыгрузитьТабличнуюЧасть(СтрокиРН);
    СчетФактура.ЗагрузитьТабличнуюЧасть(СтрокиРН);
    
    
    Но при этом тянет почему-то не все. По той же причине не устраивает ВводНаОсновании.
    Присвоить как-то можно все-таки?
    Конфа типовая, не правленная ни на грамм.
  4. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    При условии сначала цикла по Док.Товар
    СчетФактура.НоваяСтрока();
    СчетФактура.НазначитьТип"Товар", "Справчник.Номенклатура");
    СчетФактура.Товар = Док.Товар;
    Должно работать
  5. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    С самого начала так и делал. Эффект тот же.
  6. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    говорю же, выкладывай код или обработку, так безпредметно
  7. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Суть в том, что есть расходная накладная, в ней есть строки. На основании этой накладной нужно создать счет фактуру с такими же строками. Шапка не интересует. Беру эту самую накладную, тупо делаю цикл по строкам и пытаюсь заполнить реквизит счета фактуры Товар. А вот не заполняет. Причем с реквизитами Субконто1, Субконто2, Субконто3 та же фигня (кстати, у всех них тип "Неопределенный"). Остальные реквизиты заполняются нормально. Вот весь код:
    Код:
    Если Док.ВыбратьСтроки() = 1 Тогда
    Пока Док.ПолучитьСтроку() = 1 Цикл
    СчетФактура.НоваяСтрока(); 
    СчетФактура.НазначитьТип("Товар", "Справчник.Номенклатура");
    СчетФактура.Товар = Док.Товар;
    СчетФактура.Количество = Док.Количество;
    КонецЦикла;
    КонецЕсли;
    СчетФактура.Записать();
    
    
    Так вот во всех строках Количество проставляется нужными значениями, а реквизит Товар - нет. То есть вообще не проставляется.
  8. Vlad
    Offline

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

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Че-то я не пойму. Может, конечно, туплю к вечеру да с похмела, но если конфа типовая и, как утверждает автор, там даже муха не сидела, а не то что программист, то неужели табличная часть СФ не заполняется на основании реализации?
  9. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Вот программист садится, что бы не заполняло.... а то бухи не знают чем занятся :)
  10. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Класс, это не весь код.
    Этот код во внешней обработке? в документе?
    Док.ВыбратьСтроки()
    Док-это что, откуда,...
    СчетФактура.НоваяСтрока();
    СчетФактура - созданный объект? или через ОткрытьФорму?
    Вопросов тьма, а тут на тебе "Вот весь код"
  11. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Код во внешней обработке. Док - документ РасходнаяНакладная, на основании которой и надо сделать счет фактуру (это как раз СчетФактура - созданный объект). Все описано в постах ранее. Расходник существует, многострочная часть существует. Заполняется нормально все, кроме реквизитов "Товар", "Субконто1", "Субконто2", "Субконто3". Вопрос. Каким образом возможно (или вообще невозможно) из кода заполнить таки эти реквизиты? Еще раз повторюсь - код, которыя я привел, отрабатывает нормально, за исключением случая, приведенного выше. Спасибо за внимание.


    По поводу бухов Вы однозначно правы. Но вот по поводу программиста, если честно, я не понял. Если интересно, вся та ерунда, по поводу котороя я спрашиваю, пишется в рамках интеграции 1С с другой системой.

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