Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Создание документов на основании

Создание документов на основании
Я
   example221
 
28.01.20 - 12:48
Добрый день форумчане,помогите выполнить задание,еще слишком зеленый,чтоб понять)
Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.28)
обычный
база на серваке
ТЗ:Создать кнопку ввод платного ДКП(в документах Заказ на автомобиль,поступление автомобилей),на основании должен вывестись док реалезации товаров с хоз операцией АктОбОказании услуг,в нем 1 номекулатурная позиция(1. Номенклатура ЦБ014366, НДС должно быть 20%.2. Если Акт нельзя создать на основании тех документов, то делай её отдельным документом, но заполнять по тем.3. Дата сч.-фактуры соответствует дате акта),на основание его должны формироваться сет на оплату и счетФактурыВыданный,все в фоне,+ проверка и предупреждение если что то не пошло.
формы печати  АктВыполненыхРабот(2шт),счетНаОплату(1шт),СчетФактураВыданный(2шт)
Не прошу полное решение а навождение на решение.
Справился только с созданием кнопок,ахаха,и встал не знаю как начать.
https://pastenow.ru/7V4SF
   DrWatson
 
1 - 28.01.20 - 13:00
Разберись сначала с пунктом 2. Можно док. реализации делать на основании тех документов или нельзя?
   example221
 
2 - 28.01.20 - 13:05
(1) Как это можно понять?можно или нет.
   example221
 
3 - 28.01.20 - 13:05
   Масянька
 
4 - 28.01.20 - 13:09
(3) Ты не понял.
Есть некоторые условия, при наличии которых нельзя ввести акт. Вот это и нужно выяснять.
По задаче: открой реализацию и посмотри, как и почему она вводится на основании. Ну, и потом с остальными док-ами.
В принципе, ничего сложного и заумного.
   example221
 
5 - 28.01.20 - 13:10
(4) ааа,угу щас посмотрю,пасиб
   example221
 
6 - 28.01.20 - 13:21
(4) (1) Хмм документ реализация товаров в данный момент не вводится на основании заказа и поступления.я так понимаю,что от меня и хотят чтоб я добавил такую функцию по нажатию на кнопку,
он в водится щас для https://pastenow.ru/7V58F
а кодом так 
ОбработкаЗаполненияОтказ = НЕ дкОбработкаЗаполнения(ЭтотОбъект, Основание);
    
    Если НЕ обЗначениеНеЗаполнено(ПодразделениеКомпании) Тогда
        Если обПолучитьПраваИНастройкиПользователя(ПодразделениеКомпании,"ЗакрытиеЗаказовПоПодразделению",ЭтотОбъект) Тогда
            ЗакрытиеЗаказовПоПодразделению=Перечисления.ВариантыОтветов.Да;
        Иначе
            ЗакрытиеЗаказовПоПодразделению=Перечисления.ВариантыОтветов.Нет;
        КонецЕсли; 
    КонецЕсли; 
    
    Если ОбработкаЗаполненияОтказ Тогда Возврат; КонецЕсли;
    
    Если Не Основание = Неопределено Тогда
        Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказВнутренний") ИЛИ ТипЗнч(Основание) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
            Контрагент = Неопределено; ДоговорВзаиморасчетов = Неопределено;
            ТипЦен = обПраво("ОсновнойТипЦенПродажи",Права,,ЭтотОбъект);    
        КонецЕсли;
        ХозОперация = Справочники.ХозОперации.РеализацияТоваров;
        Если Основание.ХозОперация = Справочники.ХозОперации.РасходныйСкладскойОрдер Тогда
            Если Не обЗначениеНеЗаполнено(Основание.ВладелецТовара) Тогда
                Если ТипЗнч(Основание.ВладелецТовара) = Тип("СправочникСсылка.Контрагенты") Тогда
                    Контрагент = Основание.ВладелецТовара;
                    ОбработкаРеквизита("Контрагент");
                КонецЕсли;
            КонецЕсли;
            Для Каждого СтрТовар Из Товары Цикл
                ОбработкаРеквизита("Товары.Номенклатура", СтрТовар);
            КонецЦикла;
        ИначеЕсли Основание.ХозОперация = Справочники.ХозОперации.ПеремещениеТоваров И НЕ обЗначениеНеЗаполнено(Основание.СкладПолучатель) И Основание.СкладПолучатель.Розничный Тогда
            ТипЦен = Основание.СкладПолучатель.ТипЦенРозничнойТорговли;
            Для Каждого СтрТовар Из Товары Цикл
                ОбработкаРеквизита("Товары.Номенклатура", СтрТовар);
            КонецЦикла;
        ИначеЕсли ТипЗнч(Основание)=Тип("ДокументСсылка.ПоступлениеТоваров") ИЛИ
            ТипЗнч(Основание)=Тип("ДокументСсылка.АвансовыйОтчет") Тогда
            Контрагент = Неопределено;
            ДоговорВзаиморасчетов = Неопределено;
            ТипЦен = обПраво("ОсновнойТипЦенПродажи",Права,,ЭтотОбъект);
            ВалютаДокумента = обВалютаТипаЦены(Неопределено,ТипЦен,Ложь);
            СтруктураКурса = обКурсДляВалюты(ВалютаДокумента,Дата);
            КурсДокумента  = СтруктураКурса.Курс / ?(СтруктураКурса.Кратность = 0, 1, СтруктураКурса.Кратность);
            Для Каждого СтрТовар Из Товары Цикл
                СтрТовар.Цена = обПолучитьЦену(ТипЦен,СтрТовар.Номенклатура,?(Ссылка.Пустая(),Дата,МоментВремени()),,ВалютаДокумента,КурсДокумента, СтрТовар.ХарактеристикаНоменклатуры, СтрТовар.ЕдиницаИзмерения, ПодразделениеКомпании);
                ОбработкаРеквизита("Товары.Цена",СтрТовар);
            КонецЦикла; 
        ИначеЕсли ТипЗнч(Основание)=Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            //Для ввода на основании заказа покупателя будем отгружать товары,

            //зарезервированные под данный заказ на данном складе

            Товары.Очистить();
            ЗаполнитьРезервамиКонтрагента(Основание);
        КонецЕсли;
    КонецЕсли;
    // если ввели на основании, но при этом не заполнили ставки НДС, то исправимся

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

    Попытка СкладКомпании=Основание.СкладПолучатель Исключение КонецПопытки;
   example221
 
7 - 28.01.20 - 13:24
Я понимаю что могу глупости спрашивать,но рил еще слабо понимаю,месяц ток работаю)
   example221
 
8 - 28.01.20 - 13:27
И конструктором не воспользоваться,тк я делаю это по кнопке и надо в процедуре нажатия на кнопку
   DrWatson
 
9 - 28.01.20 - 15:43
(6) А документы Заказ на автомобиль и Поступление автомобилей, это какие-то специальные документы? В списке есть Заказ покупателя, Поступление товаров. Это не они?
   example221
 
10 - 28.01.20 - 15:45
(9) Нет не они,это разные
   DrWatson
 
11 - 28.01.20 - 16:02
В обработчике кнопки:
ДокРеализация = Документы.РеализацияТоваров.СоздатьДокумент();
ДокРеализация.Дата = ТекущаяДата();
ДокРеализация.Заполнить(Ссылка);
ДокРеализация.Записать(РежимЗаписиДокумента.Проведение);

В док. реализации
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеАтомобилей") Тогда
        // Код заполнения документа

    КонецЕсли;
КонецПроцедуры

Со счет-фактурой - посмотреть как она вводится из реализации, сделать так же с поправкой, что документ нужно сразу записывать. Может ещё есть какое-нибудь программное формирование счетов-фактур, например групповое. Тогда взять код оттуда.

Как это заработает. Можно уж подумать о фоновом формировании.
   example221
 
12 - 28.01.20 - 16:10
(11) спасибо огромное,я вообще не знал как это начать этого думаю хватит,перегуглил не нашел,может как то не правильно вопрос формирую
   DrWatson
 
13 - 28.01.20 - 16:15
(12) Искал по словам "Пример заполнения документа на основании".
Возможно, нашел пример для управляемых форм. Но эти моменты, вроде, не менялись. Для обычных должно быть так же.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.