Версия для печати темы (https://pro1c.org.ua/index.php?s=679a2d57003d6f719b1b4c6a9f970c92&showtopic=6032)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как программно ввести налоговую на основании реализации?

Автор: vbi 17.01.12, 16:20

Вроде ничего сложного :

Док = Обработки.ФормированиеНалоговыхНакладных.СоздатьДокумент();
Док.Заполнить(РеализацияСсылка);


Но на втором этапе из модуля объекта налоговой вызывается открытие формы. А потом если попытатся записать - то записывается пустой документ, хотя в форме все заполнено.

Как программно заполнить налоговую на основании реализации, так чтобы не открывалась форма налоговой?

Автор: Vofka 17.01.12, 16:29

Цитата
Док = Обработки.ФормированиеНалоговыхНакладных.СоздатьДокумент();
Док.Заполнить(РеализацияСсылка);

Это шо такое? smile.gif

Автор: vbi 17.01.12, 16:38

Извеняюсь, не то скопировал, потом часть вручную дописал biggrin.gif

Док = Документы.НалоговаяНакладная.СоздатьДокумент();
Док.Заполнить(РеализацияСсылка);


Та я думаю Вы меня поняли и так wink.gif

Автор: Flexy 17.01.12, 17:30

Док.Заполнить(Реализация.Ссылка);

Автор: vbi 17.01.12, 17:44

Цитата(Flexy @ 17.01.12, 17:30) *
Док.Заполнить(Реализация.Ссылка);


Я переменную просто назвал так:
РеализацияСсылка = Реализация.Ссылка;
Док.Заполнить(РеализацияСсылка);


Суть не в этом. Оно все нормально заполняет, но открывает форму документа. Так не хочется переносить процедуры из модуля документа в обработку. Их там очень много + после обновления нужно будет все заново переделывать sad.gif

Автор: Vofka 17.01.12, 18:00

Цитата
Док = Документы.НалоговаяНакладная.СоздатьДокумент();
Док.Заполнить(РеализацияСсылка)

У меня нормально создается...

Автор: vbi 17.01.12, 18:13

А формы налоговых не открываются? когда выполняется код "Док.Заполнить(РеализацияСсылка)"?

Автор: Vofka 17.01.12, 20:22

А да, открываются. Похоже, прийдётся самому писать заполнение НН (наверное, через обработку формирования НН), т.к. в самой НН везде указано ОткрыватьДокументы = Истина, который передается в обработку формирования НН и определяет будет ли открыта форма созданного документа.

Автор: vbi 18.01.12, 9:22

Да, я тоже смотрел по коду. Что ж, буду разбиратся в этой обработке. Если кто сталкивался и может подать еще идеи, буду признателен smile.gif

Автор: vbi 18.01.12, 10:23

Я вот думаю, а может в налоговую добавить какой реквизит, а в обработке заполнения попрописывать если этот реквизит ИСТИНА, тогда не открывать... Щас попробуем smile.gif

Автор: Vofka 18.01.12, 10:32

Не, ну если вариант править конфу допустим - то тогда вариантов реализации может быть много smile.gif

Автор: vbi 18.01.12, 11:30

По моему проще после обновления повосстанавливать условия в конфе, чем полностю переписывать код заполнения во внешней обработке. И даже если то что я направлю затрется, ничего страшного уж не произойдет smile.gif

Кстате, можно реализовать подписку на событие на "ОбработкаЗаполнения" в налоговой... Но подписка будет выполнятся после вызова процедуры "ОбработкаЗаполнения"? Тогда так не пойдет.

Или просто скопировать обработку заполнения как новую процедуру, сделать экспортной, подправить и дело в шляпе. И тогда так придется потом меньше восстанавливать после обновления...

А открываются налоговые потому что ошибка в коде (релиз УТП 1.2.5.2)

Вот Код:

    // сюда мы попадаем только, если по всем договорам можно сформировать налоговые накладные
    Если МожноФормироватьНалоговыеНакладные Тогда
                
        ОбработкаФормированияНН.ОткрыватьДокументы = Истина;
                
        // сформированные документы не будут записаны в базу
        ОбработкаФормированияНН.мНеЗаписыватьДокументы = Истина;
                
        ОбработкаФормированияНН.СформироватьНалоговыеДокументы();    
        Возврат;    

    КонецЕсли;


Там есть глобальная переменная такая: "мНеОткрыватьФормуДокумента"
вот она просто не используется, а нужно:

    // сюда мы попадаем только, если по всем договорам можно сформировать налоговые накладные
    Если МожноФормироватьНалоговыеНакладные Тогда
                
        ОбработкаФормированияНН.ОткрыватьДокументы = НЕ мНеОткрыватьФормуДокумента;
                
        // сформированные документы не будут записаны в базу
        ОбработкаФормированияНН.мНеЗаписыватьДокументы = НЕ мНеОткрыватьФормуДокумента;
                
        ОбработкаФормированияНН.СформироватьНалоговыеДокументы();    
        Возврат;    

    КонецЕсли;


Тогда все будет пучком smile.gif

Вот только осталась еще небольшая проблемка: Когда я создаю новую налоговую, потом вызываю из нее метод "Заполнить(Основание)", в обработке заполнения вызывается обработка формирования налоговых, которая создает новую налоговую и записывает ее. А ту что создал я программно и попытался заполнить - осталась пустой. Тоже как-то не хорошо...

Автор: vbi 18.01.12, 12:48

Вот так получилось создать налоговую:

        НовНакладная = Документы.НалоговаяНакладная.СоздатьДокумент();
        НовНакладная.Заполнить(Док.Реализации);

                // Найдем созданную налоговую
        з = Новый Запрос;
        з.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                  |    НалоговаяНакладная.Ссылка
                  |ИЗ
                  |    Документ.НалоговаяНакладная КАК НалоговаяНакладная
                  |ГДЕ
                  |    НалоговаяНакладная.ДокументВводаНаОсновании = &ДокументВводаНаОсновании";
        з.УстановитьПараметр("ДокументВводаНаОсновании",Док.Реализации);

        Выборка = з.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            НалоговаяНакладная = Выборка.Ссылка; // Нашли :)
        КонецЕсли;


Странно, что налоговую нельзя программно провести оперативно:
НалоговаяОб.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);



Ругается на второй параметр. А без второго параметра проводится нормально.

Автор: Vofka 18.01.12, 14:31

Т.е. надо было просто УТП обновить и всё пучком стало?

Автор: vbi 18.01.12, 15:27

Не знаю, я в 1.2.6.1 не смотрел еще исправлено ли

Автор: Vofka 18.01.12, 15:30

Так правили конфу сейчас или нет?

Автор: vbi 18.01.12, 16:14

Правил, на 1.2.6.1 пока не обновлял

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua