8.х Программное заполнение счетов в документе упр приложение

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

  1. TopicStarter Overlay
    electr
    Offline

    electr

    Регистрация:
    1 июл 2013
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Суть: конфа Бп 3.0, есть внешняя обработка в ней в процедуре на сервере создаю доки Комплектации в цикле по каждому комплекту. Заполняю таб часть необходимой номенклатурой и шапку документа. В шапке у комплекта есть счет и в табличной части есть счет учета, как их заполнить программно ? Порылся в модуле формы документа комплектация: есть событие при изменении (выполняются соотвественно на клиенте) комплекта в шапке и комплектующих в таб части документа, эти события вызывают процедуры заполнения счетов. Та, что заполняет счет в шапке при изменении комплекта ЗаполнитьСчетаУчета("Номенклатура", ЭтаФорма). Пытаюсь получить форму своего документа и уже использовать эту процедуру на клиенте. Не

    Код:
    &НаСервере
    Пока ЗаписиВыб.Следующий() Цикл
                   
                    ДетЗаписи = ЗаписиВыб.Выбрать();
                    ДокКомплектации = Документы.КомплектацияНоменклатуры.СоздатьДокумент();
                    ДокКомплектации.Дата = НачПериода ;
                    ДокКомплектации.Ответственный = ПараметрыСеанса.ТекущийПользователь;
                    ДокКомплектации.СпособУчетаНДС = Перечисления.СпособыУчетаНДС.УчитываетсяВCтоимости;
    
                    ДокКомплектации.Склад = Объект.СкладГП;
                    ДокКомплектации.ВидОперации = Перечисления.ВидыОперацийКомплектацияНоменклатуры.Комплектация;
                    ДокКомплектации.Номенклатура = ЗаписиВыб.НоменклатураКомплект;
                    ДокКомплектации.Организация = Объект.ОрганизацияП;
                   
                    // заполним табличную часть документа комплектации               
                    Пока ДетЗаписи.Следующий() Цикл
                        Стр = ДокКомплектации.Комплектующие.Добавить();
                        ДокКомплектации.Количество =  ДетЗаписи.КоличествоКомплект;
                        Стр.Номенклатура = ДетЗаписи.Номенклатура;
                        Стр.Количество = ДетЗаписи.КоличествоКомплект * ДетЗаписи.Количество;
                        Стр.НомерГТД = ДетЗаписи.НоменклатураНомерГТД;
                        Стр.СтранаПроисхождения = ДетЗаписи.НоменклатураСтранаПроисхождения;
                    КонецЦикла;
                   
                     ЗаполнитьСчетаДоковКомпл(ДокКомплектации); // передать объект на клиент
    
                    ДокКомплектации.Записать();
    КонецЦикла;
    
    
    &НаКлиенте
    Процедура ЗаполнитьСчетаДоковКомпл(ДокКомплектации)
        ФормаДок = ДокКомплектации.ПолучитьФорму("ФормаДокумента"); // здесь получаю форму и пытаюсь заполнить счета 
        ЗаполнитьСчетаУчета("Номенклатура", ФормаДок)
    КонецПроцедуры
    
    
    Мне ругается про сервер на процедуру ЗаполнитьСчетаДоковКомпл(ДокКомплектации); Если уберу на клиенте и поставлю НаКлиентеНаСервере, тогда нельзя будет получить форму. Что делать ? или может есть какой способ быстрый и легкий?
  2. Galich
    Offline

    Galich Опытный в 1С

    Регистрация:
    6 июн 2014
    Сообщения:
    276
    Симпатии:
    9
    Баллы:
    29
    Вы объект не правильно передаете с сервера на клиент. Используйте РеквизитФормыВЗначение, ЗначениеВРеквизитФормы. Вроде как-то так называются.
    Вначале передаете на сервер объект, потом возвращайте на клиент.
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.756
    Симпатии:
    509
    Баллы:
    204
    С сервера на клиента вы никак не перейдете принудительно, а с клиента на сервер - вполне.
    Возвращение на клиента происходит "автоматом" после того, как отработает серверная процедура/функция.
    ЗаполнитьСчетаДоковКомпл(ДокКомплектации) - если это процедура клиентская - у вас ничего не получится ее вызвать.
    а, ну да, она у вас на клиенте. все правильно ругается :)

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