8.х Создание программно документа на основании

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем JohnConnor, 3 апр 2014.

  1. TopicStarter Overlay
    JohnConnor
    Offline

    JohnConnor Опытный в 1С

    Регистрация:
    1 сен 2012
    Сообщения:
    85
    Симпатии:
    0
    Баллы:
    26
    если в документе КС3 стоит галочка предъявлена счет фактура, необходимо создать документ Счет фактуру полученна на основании КС3, и галочку выключить. Написал код, который созадет счет фактуру, но не передает в нее данные. Вопрос к знатокам, как создать документ на основании и передать в него данные ???
    Код:
        Выборка=Документы.ИмпСправкаОСтоимостиРаботКС3.Выбрать();
       
        пока Выборка.Следующий()Цикл
            КС3=Выборка.ПолучитьОбъект();
            если  КС3.ПредъявленСчетФактура=истина
                 тогда
                Номер=КС3.НомерВходящегоСчетаФактуры;
                Дата=КС3.ДатаВходящегоСчетаФактуры;
               
                НовДок=Документы.СчетФактураПолученный.СоздатьДокумент();
                НовДок.Заполнить(Основание);
                НовДок.ПолучитьФорму().Открыть();
               
               
               
                //НовДок.Записать()
                КС3.ПредъявленСчетФактура=ЛОЖЬ;
                Сообщить(Выборка);
            иначе
                продолжить
            КонецЕсли;
            КонецЦикла;
    
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Код нужно прописывать в Обработчике заполнения, он срабатывает при создании объектов на основании. Так же этот обработчик срабатывает при использовании метода Заполнить() у объекта.
  3. TopicStarter Overlay
    JohnConnor
    Offline

    JohnConnor Опытный в 1С

    Регистрация:
    1 сен 2012
    Сообщения:
    85
    Симпатии:
    0
    Баллы:
    26
    я только учусь 1с, не совсем понел где находиться обработчик заполнения ?
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В модуле объекта. Если только учитесь - купите конфу для обучения программирования, с ней же идет очень хорошая книга, читайте и изучайте. Много чего нового откроете для себя...
  5. TopicStarter Overlay
    JohnConnor
    Offline

    JohnConnor Опытный в 1С

    Регистрация:
    1 сен 2012
    Сообщения:
    85
    Симпатии:
    0
    Баллы:
    26
    спасибо за советы,
    но в моем случае я не могу описать в документе , это все должна делать обработка в которой написан этот код
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В модуле объекта документа, который заполняется на основании. Курите книги!!!-Cigar-
  7. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    1. Что за переменная Основание? Где она инициализируется?
    2. После сброса флага в документе КСЗ. Документ надо записывать.
    3. Что это за конфа? Вы уверены, что в СФ. есть заполнение на основании как вы пишите.
  8. mcGreg
    Offline

    mcGreg

    Регистрация:
    29 апр 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Основание не переменная, а параметр, передаваемый на открываемую форму.
    Из клиента вызывается форма к примеру :
    Форм=ОткрытьФорму("Документ.Бронирование.Форма.СнятьОформить",Парам,,,ВариантОткрытияОкна.ОтдельноеОкно,,,РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    В "Парам" Запихиваем все необходимые параметры, которые считываются в открываемой форме ТИП "Парам":
    Парам=новый Структура;
    Если в структуру вставить:
    Парам.Вставить("Основание",ДокументОснование);
    Где ДокументОснование это ссылка на документ из которого тянем данные. Тогда в открывающейся форме, в процедуре:
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    отлавливаем параметр:
    Если Параметры.Свойство("Основание") тогда
    //вся начинка которая нам нужна из параметра: ДОК=Параметры.Основание; и т.д.
    КонецЕсли;

    в теле условия перекидываем из ДОК (или из Параметры.Основание) нужные данные на новый (создающийся) объект.

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