|
ручная операция программно, не делает проводок??? | ☑ | ||
---|---|---|---|---|
0
mnimo
22.01.12
✎
21:57
|
ДокументОп=Документы.ОперацияБух.СоздатьДокумент();
ДокументОп.Дата=РабочаяДата; ДокументОп.Организация=Справочники.Организации.НайтиПоКоду("000000001"); ДокументОп.Содержание="Заполенно автоматичетски "; ДокументОп.СпособЗаполнения="Вручную"; Проводка=ДокументОп.Движения.Хозрасчетный.Добавить(); Проводка.СчетДт=ПланыСчетов.Хозрасчетный.НайтиПоКоду(СокрЛП(Результат.Счет)); Проводка.СчетКт=ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01"); Проводка.Период=РабочаяДата; Проводка.СубконтоДт.Контрагенты=Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1)); СписокДоговоров=Справочники.ДоговорыКонтрагентов.Выбрать(,Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1),,)); Пока СписокДоговоров.Следующий() Цикл Если СписокДоговоров.Наименование=СокрЛП(Результат.Субконто2) Тогда Если Не СписокДоговоров.Ссылка.Пустая() Тогда Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры]=СписокДоговоров.Ссылка; КонецЕсли; КонецЕсли; КонецЦикла; Проводка.Сумма=Сред(СокрЛП(Результат.СуммаОстаток),2); Проводка.Активность=Истина; //Проводка.Записать(); ДокументОп.Проведен=Истина; ДокументОп.СуммаОперации=Проводка.Сумма; ДокументОп.Записать(РежимЗаписиДокумента.Запись); Как записать проводку, вроде все создал а записать не могу. Ручная операция создается,все ок. |
|||
1
Ненавижу 1С
гуру
22.01.12
✎
22:13
|
набор записей надо записать
|
|||
2
mnimo
22.01.12
✎
22:31
|
ДокументОп=Документы.ОперацияБух.СоздатьДокумент();
ДокументОп.Дата=РабочаяДата; ДокументОп.Организация=Справочники.Организации.НайтиПоКоду("000000001"); ДокументОп.Содержание="Заполенно автоматичетски "; ДокументОп.СпособЗаполнения="Вручную"; ДокументОп.Проведен=Истина; ДокументОп.СуммаОперации=Сред(СокрЛП(Результат.СуммаОстаток),2); ДокументОп.Записать(РежимЗаписиДокумента.Запись); //Проводка=ДокументОп.Движения.Хозрасчетный.Добавить(); НаборЗаписей=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ДокументОп.Ссылка); Проводка=НаборЗаписей.Добавить(); Проводка.Регистратор=ДокументОп.Ссылка; Проводка.Период=ДокументОп.Дата; Проводка.СчетДт=ПланыСчетов.Хозрасчетный.НайтиПоКоду(СокрЛП(Результат.Счет)); Проводка.СчетКт=ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01"); Проводка.СубконтоДт.Контрагенты=Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1)); СписокДоговоров=Справочники.ДоговорыКонтрагентов.Выбрать(,Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1),,)); Пока СписокДоговоров.Следующий() Цикл Если СписокДоговоров.Наименование=СокрЛП(Результат.Субконто2) Тогда Если Не СписокДоговоров.Ссылка.Пустая() Тогда Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры]=СписокДоговоров.Ссылка; КонецЕсли; КонецЕсли; КонецЦикла; Проводка.Сумма=Сред(СокрЛП(Результат.СуммаОстаток),2); //Проводка.Активность=Истина; НаборЗаписей.Записать(); Не идет Все равно почему то???? |
|||
3
Savage
22.01.12
✎
22:35
|
Заполни организацию в строке набора записей. Когда-то давно была такая проблема.
|
|||
4
mnimo
22.01.12
✎
22:54
|
О ДА!!! Чудо!!! Всем спасибо!!! Читал про Организацию где то, но вот что то не применил((( Еще раз спасибо!!!
|
|||
5
fimanich
22.01.12
✎
22:57
|
(2) вообще, в коде много что можно бы подредактировать, имхо,
например, счет вот этот 91.01 предопределенный скорее всего, по коду искать не надо, а что-то типа Планы.Счетов.Бухгалтерский.<Имя>. Поиск контрагента и договора по наименованию, а договора еще и в цикле - это же вообще-то не айс. Вот это тоже сомнительно, неужто число нельзя вытянуть: ДокументОп.СуммаОперации=Сред(СокрЛП(Результат.СуммаОстаток),2); Без обид, просто на заметку, кури мат. часть. |
|||
6
fimanich
22.01.12
✎
23:01
|
+(5) а то код твой - неоптимальный уж больно, работать плохо будет, да еще может и некорректно, т.к. могут быть контрагенты и договора с одинаковыми наименованиями...
|
|||
7
mnimo
23.01.12
✎
06:46
|
Да не, не обижаюсь. Норм замечания, я же учусь буду стараться.)))
|
|||
8
mnimo
23.01.12
✎
08:03
|
ДокументОп=Документы.ОперацияБух.СоздатьДокумент();
ДокументОп.Дата=РабочаяДата; ДокументОп.Организация=Справочники.Организации.НайтиПоКоду("000000001"); ДокументОп.Содержание="Заполенно автоматичетски "; ДокументОп.СпособЗаполнения="Вручную"; ДокументОп.Проведен=Истина; ДокументОп.СуммаОперации=СокрЛП(Результат.СуммаОстаток)*(-1); ДокументОп.Записать(РежимЗаписиДокумента.Запись); НаборЗаписей=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ДокументОп.Ссылка); Проводка=НаборЗаписей.Добавить(); Проводка.Регистратор=ДокументОп.Ссылка; Проводка.Период=ДокументОп.Дата; Проводка.Организация=ДокументОп.Организация; Проводка.СчетДт=ПланыСчетов.Хозрасчетный.НайтиПоКоду(СокрЛП(Результат.Счет)); Проводка.СчетКт=ПланыСчетов.Хозрасчетный.ПрочиеДоходы; Если Результат.Субконто1.Ссылка=Справочники.Контрагенты.НайтиПоКоду(СокрЛП(Результат.Субконто1.Код)) И Не Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1)).Пустая() И Не Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1)).ПометкаУдаления Тогда Проводка.СубконтоДт.Контрагенты=Результат.Субконто1.Ссылка; КонецЕсли; СписокДоговоров=Справочники.ДоговорыКонтрагентов.Выбрать(,Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Результат.Субконто1),,)); Пока СписокДоговоров.Следующий() Цикл Если СписокДоговоров.Ссылка=Результат.Субконто2.Ссылка Тогда Если Не СписокДоговоров.Ссылка.Пустая() И Не СписокДоговоров.Ссылка.ПометкаУдаления Тогда Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры]=СписокДоговоров.Ссылка; КонецЕсли; КонецЕсли; КонецЦикла; Проводка.Сумма=Сред(СокрЛП(Результат.СуммаОстаток),2); НаборЗаписей.Записать(); Наверно так как то лучше будет??? |
|||
9
fimanich
23.01.12
✎
09:05
|
(8) Если Результат.Субконто1.Ссылка=Справочники.Контрагенты.НайтиПоКоду(СокрЛП(Результат.Субконто1.Код))
Это ты там что проверяешь? Что субконто1 - это справочник Контрагенты и оно заполнено, что ли? Так есть же методы проверки заполненного значения и типа, не надо искать ничего по коду. Так же и с договорами, никакого цикла не надо, никакого поиска по коду не надо, у тебя уже есть субконто2, проверяй на заполненность и тип и пиши в набор записей. Вот тоже не надо: Результат.Субконто1.Ссылка, т.к. там и так Ссылка, достаточно Результат.Субконто1 А вот это зачем: Сред(СокрЛП(Результат.СуммаОстаток),2); Если результат.СуммаОстаток - это число, то зачем ты его в строку, а потом еще Сред. Округляешь так, что ли? Так есть функция округления. |
|||
10
1Це
23.01.12
✎
09:09
|
>> ДокументОп.Проведен=Истина;
клинический случай |
|||
11
fimanich
23.01.12
✎
09:19
|
(10) ну да, скорее всего в метаданных Проведение данного документа запрещено...
|
|||
12
mnimo
23.01.12
✎
09:37
|
(10) Это не заметил да же.)))
|
|||
13
DSatan
23.01.12
✎
09:54
|
у ТС тяжелый понедельник :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |