Имя: Пароль:
1C
1С v8
Помощь в списании
0 Sa6nek6
 
12.09.13
17:58
Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    БС_ОчисткаТекущегоГодаОчистка.Материал КАК Материал,
        |    СУММА(БС_ОчисткаТекущегоГодаОчистка.Количество) КАК КоличествоВДокументе,
        |    СУММА(БС_ОчисткаТекущегоГодаОчистка.Сумма) КАК СуммаСписания,
        |    БС_ОчисткаТекущегоГодаОчистка.Ссылка
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    Документ.БС_ОчисткаТекущегоГода.Очистка КАК БС_ОчисткаТекущегоГодаОчистка
        |ГДЕ
        |    БС_ОчисткаТекущегоГодаОчистка.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    БС_ОчисткаТекущегоГодаОчистка.Материал,
        |    БС_ОчисткаТекущегоГодаОчистка.Ссылка
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокДт, 0) КАК СуммаОстаток,
        |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстаток,
        |    ЕСТЬNULL(ХозрасчетныйОстатки.Субконто3, ""Документы.ОтчетПроизводстваЗаСмену.ПустаяСсылка()"") КАК Субконто3,
        |    ВТ.Материал КАК Материал,
        |    ВТ.КоличествоВДокументе КАК КоличествоВДокументе,
        |    ВТ.СуммаСписания КАК СуммаСписания
        |ИЗ
        |    ВТ КАК ВТ
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , Субконто1 = &Номенклатура) КАК ХозрасчетныйОстатки
        |        ПО (ХозрасчетныйОстатки.Субконто1 = ВТ.Ссылка.Продукция)
        |ИТОГИ
        |    СУММА(СуммаОстаток),
        |    СУММА(КоличествоОстаток),
        |    МАКСИМУМ(КоличествоВДокументе),
        |    МАКСИМУМ(СуммаСписания)
        |ПО
        |    Материал";
        Запрос.УстановитьПараметр("Период",  МоментВремени());
        Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("43.01"));
        Запрос.УстановитьПараметр("Ссылка",  Ссылка);
        Запрос.УстановитьПараметр("Номенклатура",  Продукция);
        Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        ОстатокПоПартиям =  Запрос.Выполнить().Выгрузить();                    
        Пока Выборка.Следующий() Цикл
            Если Выборка.КоличествоОстаток< Выборка.КоличествоВДокументе Тогда            
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Не хватает " + Строка(Выборка.КоличествоВДокументе - Выборка.КоличествоОстаток) + " единиц номенклатуры " + Продукция + ". Проведение невозможно.";
                Сообщение.Сообщить();
                Отказ = Истина;            
            КонецЕсли;             
            Если Отказ Тогда
                Продолжить;
            КонецЕсли;
            Если НЕ ЗначениеЗаполнено(СчетЗатрат) Тогда
                    Предупреждение("Укажите счет затрат для списания мертвых отходов!");
                    Отказ = Истина;
                    Возврат;
            КонецЕсли;
                
            ОсталосьСписать  = Выборка.КоличествоВДокументе;
            
            ВыборкаДЗ = Выборка.Выбрать();             
            Пока ВыборкаДЗ.Следующий() И ОсталосьСписать <> 0 Цикл
                Проводки = Движения.Хозрасчетный;
                Проводка = Проводки.Добавить();
                Проводка.Период = Дата;
                Проводка.Организация = Организация;
            Если ВыборкаДЗ.Материал = Отходы Тогда
                Проводка.СчетКт = СчетЗатрат;
                Если ЗначениеЗаполнено(Субконто1) Тогда
                    БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,1,Субконто1);
                КонецЕсли;
                Если ЗначениеЗаполнено(Субконто2) Тогда
                    БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,2,Субконто2);
                КонецЕсли;
                Если ЗначениеЗаполнено(Субконто2) Тогда
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,3,Субконто3);
                КонецЕсли;
                    Если Проводка.СчетКт.УчетПоПодразделениям Тогда
                    Проводка.ПодразделениеКт = ПодразделениеЗатрат;    
                КонецЕсли;
                КСписанию = Мин(ОсталосьСписать, ВыборкаДЗ.КоличествоОстаток);
                Проводка.СчетДт = СчетУчетаПродукции;
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,1,Продукция);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,2,СкладОтправитель);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,3,ВыборкаДЗ.Субконто3);
                Проводка.КоличествоДт = -КСписанию;
                Проводка.Сумма = 0;
                Проводка.Содержание = "мертвые отходы тек.года";
            Иначе     
                КСписанию = Мин(ОсталосьСписать, ВыборкаДЗ.КоличествоОстаток);
                СуммаСписания = ?(ВыборкаДЗ.КоличествоОстаток = КСписанию,ВыборкаДЗ.СуммаОстаток,ВыборкаДЗ.СуммаОстаток/ВыборкаДЗ.КоличествоОстаток * КСписанию);                    
                Проводка.СчетДт = БС_схОбщегоНазначения.ПолучитьСчетУчетаНоменклатуры(ВыборкаДЗ.Материал);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,1,ВыборкаДЗ.Материал);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,2,СкладПолучатель);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,3,Субконто3);
                Проводка.СчетКт = СчетУчетаПродукции;
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,1,Продукция);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,2,СкладОтправитель);
                БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,3,ВыборкаДЗ.Субконто3);
                ПлановаяЦена = БС_схОбщегоНазначения.ПолучитьПлановуюСтоимостьНоменклатуры(ВыборкаДЗ.Материал,Дата);
                Проводка.Сумма           = Окр(СуммаСписания,2);
                Проводка.КоличествоДт = КСписанию;
                Проводка.КоличествоКт = КСписанию;
                Проводка.Содержание   = "Очистка продукции";
                ОсталосьСписать = ОсталосьСписать - КСписанию;
                
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
            КонецЕсли;
1 Sa6nek6
 
12.09.13
17:59
Материал отходов в таблчаст 1 шт она все проводки делает нормально а по отходу две а нужна одна все уже пересмотрел не знаю что делать тыкнете пальцем кто
2 France
 
12.09.13
17:59
помощь.
3 Sa6nek6
 
12.09.13
18:01
именно по отходу такая шляпа, а отход тоже надо списать на партию
4 Sa6nek6
 
12.09.13
18:58
Народ
5 hhhh
 
12.09.13
20:02
наверно, одной строчке ВТ соответствует 2 строчки остатков. Думаю из-за Субконто3
Основная теорема систематики: Новые системы плодят новые проблемы.