Имя: Пароль:
1C
1С v8
Программное создание документа "ЗаказПоставщику" УФ УТ 3
0 Casper211
 
25.10.16
09:53
Суть задачи просто создать ЗаказПоставщику в обработке и все.
Я программно создаю документ в своей обработке (вот код)


&НаСервере
Процедура СоздатьЗаказыСервер(Поставщики)

ДатаЗаказов = ТекущаяДата();
    Для Каждого ТекСтрока Из Поставщики Цикл

        Заказ = Документы.ЗаказПоставщику.СоздатьДокумент();
        Заказ.Организация           = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Заказ.Организация);
        
        Заказ.Дата = ДатаЗаказов;
        Заказ.Менеджер              = Пользователи.ТекущийПользователь();
        Заказ.Валюта                = ДоходыИРасходыСервер.ПолучитьВалютуУправленческогоУчета(Заказ.Валюта);
        
        Заказ.БанковскийСчет        = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
            Заказ.Организация,
            Заказ.ФормаОплаты,
            Заказ.БанковскийСчет);
        Заказ.Касса                 = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(
            Заказ.Организация,
            Заказ.ФормаОплаты,
            Заказ.Касса);
        Заказ.Склад                 = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(
            Заказ.Склад,
            ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовЗакупки"));
        Заказ.Приоритет             = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(Заказ.Приоритет);
        Заказ.Статус = Перечисления.СтатусыЗаказовПоставщикам.Согласован;
        НалогообложениеНДСПоУмолчаниюИзменено = Истина;
        ДоступностьНалогообложенияНДСПоУмолчанию = Истина;
        ЗаполнитьСтавкиНДС = Истина;
        НалогообложениеНДСПоУмолчанию = НДСОбщегоНазначенияСервер.ПолучитьНалогообложениеНДСПоУмолчанию(Заказ.Организация, Заказ.Контрагент, Заказ.Соглашение, Заказ.Дата, Ложь, Неопределено);
        Отбор = Новый Структура;
        Отбор.Вставить("Поставщик", ТекСтрока.Поставщик);
        Отбор.Вставить("Выбран",    Истина);
        Если Поставщики.Колонки.Количество()=2 Тогда
            Отбор.Вставить("Склад", ТекСтрока.Склад);
        КонецЕсли;
        
        СтрокиТовары = Товары.НайтиСтроки(Отбор);
        Для Каждого СтрокаТовар Из СтрокиТовары Цикл

            ЗаполнитьЗначенияСвойств(Заказ.Товары.Добавить(), СтрокаТовар);

        КонецЦикла;
        
        Заказ.Партнер = ТекСтрока.Поставщик;
        ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(ТекСтрока.Поставщик, Заказ.Контрагент);

        Если Поставщики.Колонки.Количество() = 2 Тогда
            Заказ.Склад = ТекСтрока.Склад;
        КонецЕсли;
        
        ЗакупкиСервер.ЗаполнитьНоменклатуруПоставщикаВТаблице(Заказ.Товары,ТекСтрока.Поставщик);
        Заказ.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры


и при проведении выводит Поле "Налогообложение" не заполнено хотя оно заполнено.не знаете в чем проблема?
1 Mankubus
 
25.10.16
09:55
(0) в какой строке заполняется Налогообложение?
2 Casper211
 
25.10.16
10:00
(1) НалогообложениеНДСПоУмолчанию = НДСОбщегоНазначенияСервер.ПолучитьНалогообложениеНДСПоУмолчанию(Заказ.Организация, Заказ.Контрагент, Заказ.Соглашение, Заказ.Дата, Ложь, Неопределено);
3 Defender aka LINN
 
25.10.16
10:01
(2) Ничего, что это переменная формы?
4 Мимохожий Однако
 
25.10.16
10:03
Встань отладчиком перед записью объекта и убедись, что заполнены нужные реквизиты.
5 Casper211
 
25.10.16
10:07
(3) это переменная формы. (4) такого реквизита нет.
я наверное лоханулся и не понимаю что и где это
6 Casper211
 
25.10.16
10:09
7 Мимохожий Однако
 
25.10.16
10:11
(6) обрати внимание на (3)
8 Casper211
 
25.10.16
10:11
(6) плохо получилось
9 Casper211
 
25.10.16
10:12
(7) как выйти из этой ситуации ?? Получить форму и записать ее значение?
10 Мимохожий Однако
 
25.10.16
10:12
(9) Надо получить объект и работать только с ним
11 novichok79
 
25.10.16
10:14
(9) посмотреть отладчиком как заполняется поле "Налогообложение" в модулях и написать соответствующий код в модуле процедуры создания?
12 Casper211
 
25.10.16
10:20
(11) &НаСервере
Процедура УстановитьНалогообложениеНДСПоУмолчанию(ПриОткрытииФормы = Ложь)
    
    НалогообложениеНДСПоУмолчаниюИзменено = Ложь;
    ДоступностьНалогообложенияНДСПоУмолчанию = Истина;
    ЗаполнитьСтавкиНДС = Ложь;
    
    // Импорт обработаем отдельно - для импорта налогообложение всегда ПродажаНеОблагаетсяНДС и не изменяется
    ЭтоИмпорт = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту ИЛИ
                 Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссиюИмпорт);
                
    Если ЭтоИмпорт Тогда
        ДоступностьНалогообложенияНДСПоУмолчанию = Ложь;
        Если НалогообложениеНДСПоУмолчанию <> Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС Тогда
            НалогообложениеНДСПоУмолчанию = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
            ЗаполнитьСтавкиНДС = Истина;
            НалогообложениеНДСПоУмолчаниюИзменено = Истина;
        КонецЕсли;
        Объект.ВернутьМногооборотнуюТару = Ложь;
        Объект.ТребуетсяЗалогЗаТару = Ложь;
        ВернутьМногооборотнуюТаруПриИзмененииСервер();
    Иначе
        НовоеНалогообложениеНДСПоУмолчанию       = НДСОбщегоНазначенияСервер.ПолучитьНалогообложениеНДСПоУмолчанию(Объект.Организация, Объект.Контрагент, Объект.Соглашение, Объект.Дата, Ложь, Неопределено);
        ДоступностьНалогообложенияНДСПоУмолчанию = НДСОбщегоНазначенияСервер.КонтрагентПлательщикНДС(Объект.Контрагент);
        Если НалогообложениеНДСПоУмолчанию <> НовоеНалогообложениеНДСПоУмолчанию Тогда
            ЗаполнитьСтавкиНДС = НДСОбщегоНазначенияСервер.НужноОбработатьНовоеНалогообложениеНДС(НалогообложениеНДСПоУмолчанию, НовоеНалогообложениеНДСПоУмолчанию);
            НалогообложениеНДСПоУмолчанию = НовоеНалогообложениеНДСПоУмолчанию;
            НалогообложениеНДСПоУмолчаниюИзменено = Истина;
        КонецЕсли;
    КонецЕсли;             
    
    Если НалогообложениеНДСПоУмолчаниюИзменено И ЗаполнитьСтавкиНДС И НЕ ПриОткрытииФормы Тогда
        КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
        НалогообложениеНДСПоУмолчаниюПриИзмененииСервер(КэшированныеЗначения);
    КонецЕсли;
    
    ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НалогообложениеНДСПоУмолчанию", "Доступность", ДоступностьНалогообложенияНДСПоУмолчанию);
    
КонецПроцедуры
13 Casper211
 
25.10.16
10:22
в модуле "ФормаДокумента" дока ЗаказПоставщику
14 Casper211
 
25.10.16
10:23
(10) а как получить объект  на сервере?
15 Casper211
 
25.10.16
10:25
(10) то есть получить объект  ? добавлять какие-то данные? и тогда записать?
16 Casper211
 
25.10.16
10:29
это нужно сделать на клиенте?
17 Мимохожий Однако
 
25.10.16
10:30
(15) (14) Ты его уже имеешь в переменной Объект.
18 Casper211
 
25.10.16
10:31
но если потом зайти в документ поменять поставщика, Налогообложение автоматически себе изменится стандартными методами. И все равно пишет не заполнена
19 Casper211
 
25.10.16
10:32
(17) (17) там у меня табличная часть, которая находится в моей обработке
20 Мимохожий Однако
 
25.10.16
10:35
(18) Сообщение дословно в студию. Зачем ты вцепился с модуль формы?
21 Casper211
 
25.10.16
10:35
22 novichok79
 
25.10.16
10:35
(12) так напиши свой (!!!) код заполнения, исходя из кода, которым заполняется в форме. разве это так сложно?
23 Casper211
 
25.10.16
10:36
(20) (20) Поле "Налогообложение" не заполнено
24 Мимохожий Однако
 
25.10.16
10:38
У тебя в (0) есть переменная Заказ. В эту переменную и пихай данные. А на форме посмотри, какой реквизит или алгоритм спрятался в поле "Налогообложение". Это поле в реквизит объект Заказ и запиши. А форма Заказа тебе не нужна СОВСЕМ.
25 Casper211
 
25.10.16
10:47
(22) так я все заполнил то что надо было, кроме этого налога. (24) я так и делал пихал в Заказ.

на форме документа поле "Налогообложение", как я понял, это не реквизит документа и найти его в объекте "Заказ"(то есть мой новый созданный документ) не могу
http://s46.radikal.ru/i111/1610/60/00056836377b.png
26 Casper211
 
25.10.16
10:50
а если программно провести, проводится.

Заказ.Записать(РежимЗаписиДокумента.Проведение);

но потом руками - нет
27 Casper211
 
25.10.16
11:00
УДАЛИТЬНалогообложениеНДС - дал значения этому реквизита и работает. Хотя это не он был в поле
28 Casper211
 
25.10.16
11:00
Всем спаксибо, критика всегда идет мне на пользу