Имя: Пароль:
1C
1С v8
Создание документов на основании
0 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
1 DrWatson
 
28.01.20
13:00
Разберись сначала с пунктом 2. Можно док. реализации делать на основании тех документов или нельзя?
2 example221
 
28.01.20
13:05
(1) Как это можно понять?можно или нет.
3 example221
 
28.01.20
13:05
4 Масянька
 
28.01.20
13:09
(3) Ты не понял.
Есть некоторые условия, при наличии которых нельзя ввести акт. Вот это и нужно выяснять.
По задаче: открой реализацию и посмотри, как и почему она вводится на основании. Ну, и потом с остальными док-ами.
В принципе, ничего сложного и заумного.
5 example221
 
28.01.20
13:10
(4) ааа,угу щас посмотрю,пасиб
6 example221
 
28.01.20
13:21
(4) (1) Хмм документ реализация товаров в данный момент не вводится на основании заказа и поступления.я так понимаю,что от меня и хотят чтоб я добавил такую функцию по нажатию на кнопку,
он в водится щас для https://pastenow.ru/7V58F
а кодом так
ОбработкаЗаполненияОтказ = НЕ дкОбработкаЗаполнения(ЭтотОбъект, Основание);
    
    Если НЕ обЗначениеНеЗаполнено(ПодразделениеКомпании) Тогда
        Если обПолучитьПраваИНастройкиПользователя(ПодразделениеКомпании,"ЗакрытиеЗаказовПоПодразделению",ЭтотОбъект) Тогда
            ЗакрытиеЗаказовПоПодразделению=Перечисления.ВариантыОтветов.Да;
        Иначе
            ЗакрытиеЗаказовПоПодразделению=Перечисления.ВариантыОтветов.Нет;
        КонецЕсли;
    КонецЕсли;
    
    Если ОбработкаЗаполненияОтказ Тогда Возврат; КонецЕсли;
    
    Если Не Основание = Неопределено Тогда
        Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказВнутренний") ИЛИ ТипЗнч(Основание) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
            Контрагент = Неопределено; ДоговорВзаиморасчетов = Неопределено;
            ТипЦен = обПраво("ОсновнойТипЦенПродажи",Права,,ЭтотОбъект);    
        КонецЕсли;
        ХозОперация = Справочники.ХозОперации.РеализацияТоваров;
        Если Основание.ХозОперация = Справочники.ХозОперации.РасходныйСкладскойОрдер Тогда
            Если Не обЗначениеНеЗаполнено(Основание.ВладелецТовара) Тогда
                Если ТипЗнч(Основание.ВладелецТовара) = Тип("СправочникСсылка.Контрагенты") Тогда
                    Контрагент = Основание.ВладелецТовара;
                    ОбработкаРеквизита("Контрагент");
                КонецЕсли;
            КонецЕсли;
            Для Каждого СтрТовар Из Товары Цикл
                ОбработкаРеквизита("Товары.Номенклатура", СтрТовар);
            КонецЦикла;
        ИначеЕсли Основание.ХозОперация = Справочники.ХозОперации.ПеремещениеТоваров И НЕ обЗначениеНеЗаполнено(Основание.СкладПолучатель) И Основание.СкладПолучатель.Розничный Тогда
            ТипЦен = Основание.СкладПолучатель.ТипЦенРозничнойТорговли;
            Для Каждого СтрТовар Из Товары Цикл
                ОбработкаРеквизита("Товары.Номенклатура", СтрТовар);
            КонецЦикла;
        ИначеЕсли ТипЗнч(Основание)=Тип("ДокументСсылка.ПоступлениеТоваров") ИЛИ
            ТипЗнч(Основание)=Тип("ДокументСсылка.АвансовыйОтчет") Тогда
            Контрагент = Неопределено;
            ДоговорВзаиморасчетов = Неопределено;
            ТипЦен = обПраво("ОсновнойТипЦенПродажи",Права,,ЭтотОбъект);
            ВалютаДокумента = обВалютаТипаЦены(Неопределено,ТипЦен,Ложь);
            СтруктураКурса = обКурсДляВалюты(ВалютаДокумента,Дата);
            КурсДокумента  = СтруктураКурса.Курс / ?(СтруктураКурса.Кратность = 0, 1, СтруктураКурса.Кратность);
            Для Каждого СтрТовар Из Товары Цикл
                СтрТовар.Цена = обПолучитьЦену(ТипЦен,СтрТовар.Номенклатура,?(Ссылка.Пустая(),Дата,МоментВремени()),,ВалютаДокумента,КурсДокумента, СтрТовар.ХарактеристикаНоменклатуры, СтрТовар.ЕдиницаИзмерения, ПодразделениеКомпании);
                ОбработкаРеквизита("Товары.Цена",СтрТовар);
            КонецЦикла;
        ИначеЕсли ТипЗнч(Основание)=Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            //Для ввода на основании заказа покупателя будем отгружать товары,
            //зарезервированные под данный заказ на данном складе
            Товары.Очистить();
            ЗаполнитьРезервамиКонтрагента(Основание);
        КонецЕсли;
    КонецЕсли;
    // если ввели на основании, но при этом не заполнили ставки НДС, то исправимся
    Для Каждого СтрокаТовар Из Товары Цикл
        Если НЕ обЗначениеНеЗаполнено(СтрокаТовар.СтавкаНДС) Тогда Продолжить; КонецЕсли;
        Если обЗначениеНеЗаполнено(СтрокаТовар.Номенклатура) Тогда Продолжить; КонецЕсли;
        СтрокаТовар.СтавкаНДС=СтрокаТовар.Номенклатура.СтавкаНДС;
        Если НЕ обЗначениеНеЗаполнено(СтрокаТовар.СтавкаНДС) Тогда
            ОбработкаРеквизита("Товары.СтавкаНДС",СтрокаТовар);
        КонецЕсли;
    КонецЦикла;
    // если вводили документ на основании перемещения, то подправим склад
    Попытка СкладКомпании=Основание.СкладПолучатель Исключение КонецПопытки;
7 example221
 
28.01.20
13:24
Я понимаю что могу глупости спрашивать,но рил еще слабо понимаю,месяц ток работаю)
8 example221
 
28.01.20
13:27
И конструктором не воспользоваться,тк я делаю это по кнопке и надо в процедуре нажатия на кнопку
9 DrWatson
 
28.01.20
15:43
(6) А документы Заказ на автомобиль и Поступление автомобилей, это какие-то специальные документы? В списке есть Заказ покупателя, Поступление товаров. Это не они?
10 example221
 
28.01.20
15:45
(9) Нет не они,это разные
11 DrWatson
 
28.01.20
16:02
В обработчике кнопки:
ДокРеализация = Документы.РеализацияТоваров.СоздатьДокумент();
ДокРеализация.Дата = ТекущаяДата();
ДокРеализация.Заполнить(Ссылка);
ДокРеализация.Записать(РежимЗаписиДокумента.Проведение);

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

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

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