Имя: Пароль:
1C
1С v8
В регистр бухгалтерии "Управленческий" Радченко
0 Волшебный Радченко
 
07.07.14
10:25
В регистр бухгалтерии "Управленческий" выводятся данные оперативно проведённых документов. Ошибка в самом коде не присутствует. Компилятор не ругается.
Вот листинг обработки документа "ОказаниеУслуги", в чём траблы не понимаю. Добавление новой структуры было после комментария Регистр Управления и до конца закрывающего КонецЕсли.
Процедура ОбработкаПроведения(Отказ, Режим)
    Запрос = Новый Запрос;
    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |    ОказаниеУслугиПереченьНоменклатуры.Количество,
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        |    ОказаниеУслугиПереченьНоменклатуры.Сумма,
        |    ОстаткиМатериаловОстатки.КоличествоОстаток,
        |    СтоимостьМатериаловОстатки.СтоимостьОстаток,
        |    ОстаткиМатериаловОстаткиНаСкладе.КоличествоОстаток КАК КоличествоНаСкладе
        |ИЗ
        |    Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки
        |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
        |                &МоментВремени,
        |                Материал В (&СписокНоменклатурыДокумента)
        |                    И Склад = &СкладВДокументе) КАК ОстаткиМатериаловОстаткиНаСкладе
        |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстаткиНаСкладе.Материал
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки
        |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал
        |ГДЕ
        |    ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |ДЛЯ ИЗМЕНЕНИЯ
        |    РегистрНакопления.ОстаткиМатериалов.Остатки,
        |    РегистрНакопления.СтоимостьМатериалов.Остатки";
        Запрос.УстановитьПараметр("СкладВДокументе",Склад);
    Иначе
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |    ОказаниеУслугиПереченьНоменклатуры.Количество,
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        |    ОказаниеУслугиПереченьНоменклатуры.Сумма,
        |    ОстаткиМатериаловОстатки.КоличествоОстаток,
        |    СтоимостьМатериаловОстатки.СтоимостьОстаток
        |ИЗ
        |    Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки
        |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки
        |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал
        |ГДЕ
        |    ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |ДЛЯ ИЗМЕНЕНИЯ
        |    РегистрНакопления.ОстаткиМатериалов.Остатки,
        |    РегистрНакопления.СтоимостьМатериалов.Остатки";
    КонецЕсли;
        Запрос.УстановитьПараметр("МоментВремени",МоментВремени());
        Запрос.УстановитьПараметр("СписокНоменклатурыДокумента",ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура"));
        Запрос.УстановитьПараметр("Ссылка",Ссылка);
            ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
            Пока ВыборкаРезультатаЗапроса.Следующий() Цикл    
            КонецЦикла;
        Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
            Если Режим = РежимПроведенияДокумента.Оперативный Тогда
                Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
                    Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null, 0,ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе);
                    Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда
                        Сообщить("Материала" + СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + "имеется только" + Остаток);
                    Отказ = Истина;
                    Возврат;
                    КонецЕсли;
                
                КонецЕсли;
            КонецЕсли;
    Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
        Движение = Движения.СтоимостьМатериалов.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;
        Движение.Склад = Склад;
        Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
        
    // Второ типа регистр стоимости материалов расход
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Материал = ВыборкаРезультатаЗапроса.Номелкатура;
        СтоимостьМатериала = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0,ВыборкаРезультатаЗапроса.СтоимостьОстаток / ВыборкаРезультатаЗапроса.КоличествоОстаток);
        Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
    // По регистру Управленческий
    // Первая проводка \\
     Движение = Движения.Управленческий.Добавить();
     Движение.СчетДт = ПланыСчетов.Основной.ДебиторскаяЗадолженность;
     Движение.СчетКт = ПланыСчетов.Основной.Капитал;
     Движение.Период = Дата;
     Движение.Сумма = ВыборкаРезультатаЗапроса.Сумма;
     Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Клиенты] = Клиент;
    // Вторая проводка
     Движение = Движения.Управленческий.Добавить();
     Движение.СчетДт = ПланыСчетов.Основной.Капитал;
     Движение.СчетКт = ПланыСчетов.Основной.Товары;
     Движение.Период = Дата;
     Движение.Сумма = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
     Движение.КоличествоКт = ВыборкаРезультатаЗапроса.Количество;
     Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ВыборкаРезультатаЗапроса.Номенклатура;
    
    КонецЕсли;
        //sale
        Движение = Движения.Продажи.Добавить();
        Движение.Период = Дата;
        Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;
        Движение.Клиент = Клиент;
        Движение.Мастер = Мастер;
        Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
        Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма;
        Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
            Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
        Иначе
            Движение.Стоимость = 0;
        КонецЕсли;
    КонецЦикла;
    Движения.ОстаткиМатериалов.Записать();
    Движения.СтоимостьМатериалов.Записать();
    Движения.Продажи.Записать();
КонецПроцедуры
1 Волшебный Радченко
 
07.07.14
10:26
П.с. Первый раз пользуюсь форумом, вставил код как получилось.
2 МихаилМ
 
07.07.14
10:26
у радченко есть свой форум.
3 Segate
 
07.07.14
10:27
А вопрос то?
4 Волшебный Радченко
 
07.07.14
10:27
Можно ссылку?
5 Wobland
 
07.07.14
10:27
(0) это ты хвастаешься?
6 Волшебный Радченко
 
07.07.14
10:27
В регистр бухгалтерии "Управленческий" "НЕ" выводятся данные оперативно проведённых документов. А, боже..
7 Wobland
 
07.07.14
10:28
(6) в регистр данные вообще не принято выводить. это тебе не отчёт какой-нибудь
8 GROOVY
 
07.07.14
10:29
9 Волшебный Радченко
 
07.07.14
10:30
(8) Спасибо
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс