Имя: Пароль:
1C
Админ
Закрытие месяца УПП
0 новичОК1991
 
11.08.13
14:50
Добрый день, есть задача, выбрать документы КССТ, РМВ,РПЗ и РСВ и перезаполнить я сделал так:
            //Отменяем проведение документов
        ВыборкаРПЗ = Документы.РаспределениеПрочихЗатрат.Выбрать(НачПериода, КонПериода);
        Пока ВыборкаРПЗ.Следующий() Цикл
           Док = ВыборкаРПЗ.ПолучитьОбъект();
           Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        КонецЦикла;
      
        ВыборкаРМВ = Документы.РаспределениеМатериаловНаВыпуск.Выбрать(НачПериода, КонПериода);
        Пока ВыборкаРМВ.Следующий() Цикл
           Док1 = ВыборкаРМВ.ПолучитьОбъект();
           Док1.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        КонецЦикла;
      
        ВыборкаКССТ = Документы.КорректировкаСтоимостиСписанияТоваров.Выбрать(НачПериода, КонПериода);
        Пока ВыборкаКССТ.Следующий() Цикл
                  Док2 = ВыборкаКССТ.ПолучитьОбъект();
              Док2.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        КонецЦикла;
      
        ВыборкаРС = Документы.РасчетСебестоимостиВыпуска.Выбрать(НачПериода,КонПериода);
        Пока ВыборкаРС.Следующий() Цикл
        
        ДокРС = ВыборкаРС.ПолучитьОбъект();
        ДокРС.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    
        КонецЦикла;    

//Заполняем документы
Если ВыборкаКССТ = Неопределено   Тогда
    Док2 =Документы.КорректировкаСтоимостиСписанияТоваров.СоздатьДокумент();
Иначе    
    Док2.Заполнить(ВыборкаКССТ);
КонецЕсли;    
    Док2.Дата = ДатаЗакрытия;
    Док2.Организация = Организация;
    Док2.Ответственный = Ответственный;
    Док2.Записать(РежимЗаписиДокумента.Проведение);
    
    
    
//Заполнение документа Распределение материалов на выпуск                            
Если ВыборкаРМВ = Неопределено Тогда
    Док1 = Документы.РаспределениеМатериаловНаВыпуск.СоздатьДокумент();
Иначе     
    Док1.Заполнить(ВыборкаРМВ);
КонецЕсли;    
    Док1.ОтражатьВБухгалтерскомУчете = Истина;
    Док1.Дата = ДатаЗакрытия;
    Док1.Ответственный = Ответственный;
    Док1.Организация = Организация;
//тч Продукция
    Если Док1.Продукция.Количество() > 0 Тогда
        Ответ = Вопрос("В документе (Распределение материалов на выпуск) уже присутствуют строки!
            |При заполнении будет очищена табличная часть ""Продукция""
            |Продолжить?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
        Если Не Ответ = КодВозвратаДиалога.Да Тогда
            Возврат;
        КонецЕсли;
        Док1.Продукция.Очистить();
    КонецЕсли;
    
    ТаблицаПродукция = Док1.Продукция.Выгрузить();
    УправлениеПроизводством.ЗаполнитьПродукциюПоВыпуску(Док1, ТаблицаПродукция);
    
    ТаблицаПродукция.ЗаполнитьЗначения(Перечисления.ВидыВыпуска.Выпуск,"ВидВыпуска");
    Док1.Продукция.Загрузить(ТаблицаПродукция);
    
    Для каждого СтрокаТабличнойЧасти из Док1.Продукция Цикл
        ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, Док1, Ложь);
    КонецЦикла;
//ТЧ Материалы    
        
    Док1.Материалы.Очистить();
    
    УправлениеПроизводством.ЗаполнитьМатериалыПоОстаткамНЗП(Док1, Док1.Материалы,,Истина,,,,,,Истина);
    
    Для Каждого СтрокаТабличнойЧасти Из Док1.Материалы Цикл
        СтрокаТабличнойЧасти.ВидВыпуска = Перечисления.ВидыВыпуска.Выпуск;
        ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, Док1, Ложь);
    КонецЦикла;
//Вычитаем НЗП
    Док1.ВычестьИнвентаризациюНЗП();
//ТЧ Распределение материалов
    Док1.ЗаполнитьТаблицуРаспределенияМатериалов();
//ТЧ Распределение возвратных отходов    
    Док1.ЗаполнитьВозвратныеОтходыПоСпецификации();
    Док1.Записать(РежимЗаписиДокумента.Проведение);
    
//Заполнение документа Распределение прочих затрат    
Если ВыборкаРПЗ = Неопределено Тогда
    Док = Документы.РаспределениеПрочихЗатрат.СоздатьДокумент();
Иначе    
    Док.Заполнить(ВыборкаРПЗ);
КонецЕсли;    
    Док.Дата = ДатаЗакрытия;
    Док.ОтражатьВБухгалтерскомУчете=Истина;
    Док.Организация = Организация;
    Док.Ответственный = Ответственный;
    //Док.Подразделение = РежимДиалогаВопрос.ДаНет;
//тч Продукция
    Если Док.Продукция.Количество() > 0 Тогда
        Ответ = Вопрос("В документе уже присутствуют строки!
            |При заполнении табличная часть будет очищена!
            |Продолжить?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
        Если Не Ответ = КодВозвратаДиалога.Да Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    Док.Продукция.Очистить();
    
    ТаблицаПродукция = Док.Продукция.Выгрузить();
    УправлениеПроизводством.ЗаполнитьПродукциюПоВыпуску(Док, ТаблицаПродукция);
    ТаблицаПродукция.ЗаполнитьЗначения(Перечисления.ВидыВыпуска.Выпуск,"ВидВыпуска");
    Док.Продукция.Загрузить(ТаблицаПродукция);
// ТЧ Прочие затраты
    
    Если Док.Проведен Тогда
        Предупреждение("Заполнение возможно только в непроведенном документе");
        Возврат;
    КонецЕсли;
    
    Если Док.ПрочиеЗатраты.Количество() > 0 Тогда
        Ответ = Вопрос("В документе уже присутствуют строки!
            |При заполнении табличная часть будет очищена!
            |Продолжить?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
        Если Не Ответ = КодВозвратаДиалога.Да Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    Док.ЗаполнитьПрочиеЗатратыПоОстаткам();
//ВычестьНЗП
    Док.ВычестьНЗП();
//ТЧ Распределение затрат
    Если Док.ЗатратыНаПродукцию.Количество() > 0 Тогда
        Ответ = Вопрос("В документе уже присутствуют строки!
            |При заполнении табличная часть будет очищена!
            |Продолжить?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
        Если Не Ответ = КодВозвратаДиалога.Да Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;

    Док.ЗаполнитьРаспределениеЗатратНаПродукцию();
    Док.Записать(РежимЗаписиДокумента.Проведение);
    
    
//Документ Расчет себестоимости
    
    Если  ВыборкаРС = Неопределено ТОгда
        ДокРС = Документы.РасчетСебестоимостиВыпуска.СоздатьДокумент();
        ДокРС.ОтражатьВБухгалтерскомУчете = Истина;
        ДокРС.ОтражатьВМеждународномУчете = Ложь;
        ДокРС.ОтражатьВНалоговомУчете = Ложь;
        ДокРС.ОтражатьВУправленческомУчете = Ложь;
        ДокРС.Дата = ДатаЗакрытия;
        ДокРС.Организация = Организация;
        ДокРС.Ответственный = Ответственный;
        ДокРС.ВыполняемыеДействия.Очистить();
        ДокРС.ЗаполнитьВыполняемыеДействия(Истина);
        ДокРС.Записать(РежимЗаписиДокумента.Проведение);
    
  Иначе
  
    
        ДокРС.ДополнительныеСвойства.Очистить();  
        ДокРС.Заполнить(ВыборкаРС);
        ДокРС.ОтражатьВБухгалтерскомУчете = Истина;
        ДокРС.ОтражатьВМеждународномУчете = Ложь;
        ДокРС.ОтражатьВНалоговомУчете = Ложь;
        ДокРС.ОтражатьВУправленческомУчете = Ложь;
        ДокРС.Дата = ДатаЗакрытия;
        ДокРС.Организация = Организация;
        ДокРС.Ответственный = Ответственный;

        //Если ДокРС.ВыполняемыеДействия.Количество() > 0 Тогда
        //Ответ = Вопрос("В документе уже присутствуют строки." + Символы.ПС
        //             + "При заполнении они будут удалены!" + Символы.ПС
        //             + "Продолжить?", РежимДиалогаВопрос.ДаНет,,
        //             КодВозвратаДиалога.Нет);
        //Если Не Ответ = КодВозвратаДиалога.Да Тогда
        //    Возврат;
        //КонецЕсли;
        ДокРС.ВыполняемыеДействия.Очистить();
        //КонецЕсли;
        ДокРС.ЗаполнитьВыполняемыеДействия(Истина);
        //ДокРС.ПолучитьФорму().Открыть();
        ДокРС.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
1 PR
 
11.08.13
14:52
Продолжай, мы заинтригованы
2 jarett
 
11.08.13
14:53
у меня в 22 года мозги другим заняты были.
3 новичОК1991
 
11.08.13
14:54
Мне надо выбрать запросом эти документы, затем отменить их проведение, потом очистить, потом заполнить и провести.
4 новичОК1991
 
11.08.13
14:54
подскажите как реализовать запрос и выборку по нему?
5 новичОК1991
 
11.08.13
14:58
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    КорректировкаСтоимостиСписанияТоваров.Ссылка КАК ДокКССТ,
                  |    РаспределениеМатериаловНаВыпуск.Ссылка КАК ДокРМВ,
                  |    РаспределениеПрочихЗатрат.Ссылка КАК ДокРПЗ,
                  |    РасчетСебестоимостиВыпуска.Ссылка КАК ДокРСВ
                  |ИЗ
                  |    Документ.КорректировкаСтоимостиСписанияТоваров КАК КорректировкаСтоимостиСписанияТоваров,
                  |    Документ.РаспределениеМатериаловНаВыпуск КАК РаспределениеМатериаловНаВыпуск,
                  |    Документ.РаспределениеПрочихЗатрат КАК РаспределениеПрочихЗатрат,
                  |    Документ.РасчетСебестоимостиВыпуска КАК РасчетСебестоимостиВыпуска
                  |ГДЕ
                  |    КорректировкаСтоимостиСписанияТоваров.Дата МЕЖДУ &НачПериода И &КонПериода
                  |    И РаспределениеМатериаловНаВыпуск.Дата МЕЖДУ &НачПериода И &КонПериода
                  |    И РаспределениеПрочихЗатрат.Дата МЕЖДУ &НачПериода И &КонПериода
                  |    И РасчетСебестоимостиВыпуска.Дата МЕЖДУ &НачПериода И &КонПериода" ;
                  
                Запрос.УстановитьПараметр("НачПериода", НачПериода);
                Запрос.УстановитьПараметр("КонПериода", КонПериода);  
                Результат = Запрос.Выполнить();
                мЗакрытияМесяца = Результат.Выбрать();
                Пока     мЗакрытияМесяца.Следующий()   цикл
                    ДокКССТ =мЗакрытияМесяца.Получить(0);
                    ДокРМВ = мЗакрытияМесяца.Получить(1);
                    ДокРПЗ = мЗакрытияМесяца.Получить(2);
                    ДокРСВ = мЗакрытияМесяца.Получить(3);
                КонецЦикла;
6 новичОК1991
 
11.08.13
14:59
Как получить документ и распровести его?
7 PR
 
11.08.13
14:59
(6) Ты хоть книжки по 1С открывал?
8 новичОК1991
 
11.08.13
15:01
{Форма.ЗакрытиеМесяца.Форма(290)}: Метод объекта не обнаружен (Записать)
         ДокКССТ.Записать(РежимЗаписиДокумента.ОтменаПроведения);
9 новичОК1991
 
11.08.13
15:02
что не так?
10 jarett
 
11.08.13
15:03
(5) я всю жизнь клюшечником был. восьмерку видел и даже маленько делал на ней что-то... но этот код сразу в доменную печь.
11 PR
 
11.08.13
15:03
(9)                     ДокКССТ =мЗакрытияМесяца.Получить(0);
                    ДокРМВ = мЗакрытияМесяца.Получить(1);
                    ДокРПЗ = мЗакрытияМесяца.Получить(2);
                    ДокРСВ = мЗакрытияМесяца.Получить(3);


Что это за бредятина?
12 новичОК1991
 
11.08.13
15:05
объясни подробно,как надо?
13 новичОК1991
 
11.08.13
15:05
если не затруднит конечно.......
14 PR
 
11.08.13
15:07
(12) Надо ДокКССТ =мЗакрытияМесяца.ДокКССТ;
Ну это если не рассматривать этот странный экзотический вариант "Сесть и прочитать документацию".
15 PR
 
11.08.13
15:09
(14) Там дальше вообще мрак, нужно еще метод ПолучитьОбъект использовать.
Если в падлу читать книжки, лучше сразу бросать нахрен это сложное неблагодарное дело.
16 новичОК1991
 
11.08.13
15:15
как сделаю обработку отпишу! у меня всё получится
17 PR
 
11.08.13
15:18
(16) Вот это другое дело. Удачи :))
18 shuhard
 
11.08.13
17:54
(16) не стоит омрачать форум
19 новичОК1991
 
11.08.13
18:13
чем?
20 ILM
 
гуру
11.08.13
19:26
(16) Интересно узнать итоги, после вашего закрытия месяца )))
Но лучше сначала книжки открыть и почитать.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой