|
Закрытие месяца УПП | ☑ | ||
---|---|---|---|---|
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) Интересно узнать итоги, после вашего закрытия месяца )))
Но лучше сначала книжки открыть и почитать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |