|
Как программно заполнить документ операциябух? | ☑ | ||
---|---|---|---|---|
0
blueisacolour
27.09.16
✎
07:28
|
Добрый день.Переношу остатки из базы в базу.Создал обработку,что бы заполнить программно в док оперция.Обработка показывает запись,но в регистре пусто.Может что то делаю не так?В роде простой код:
Процедура СоздатьДокПоСальдо() Экспорт ТекОрганизация = ОбщегоНазначения.ПолучитьСписокГоловныхОрганизаций(); ВспСчет = ПланыСчетов.Типовой.НайтиПоКоду("000"); Документ = Документы.ОперацияБух.СоздатьДокумент(); Документ.Дата = ТекущаяДата(); Документ.Организация = ТекОрганизация; Документ.Автор = Пользователи.ТекущийПользователь(); Документ.Записать(РежимЗаписиДокумента.Запись); ТЗ = СформироватьЗапросПоОстатком(); РегБух = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей(); РегБух.Отбор.Регистратор.Значение = Документ.Ссылка; РегБух.Записать(); СуммаВДок = 0; Для каждого Стр Из ТЗ Цикл Док = РегБух.Добавить(); Док.Активность = Истина; Док.Период = Документ.Дата; Док.Регистратор = Документ.Ссылка; Док.Организация = ТекОрганизация; Док.СчетДт = Стр.Счет; Док.СчетКт = ВспСчет; Док.СубконтоДт.ОсновныеСредства = Стр.Субконто1; Док.Сумма = Стр.СуммаОстатковДт; СуммаВДок = СуммаВДок + Стр.СуммаОстатковДт; Док.Содержание = "Ввод остатков ОС на счет :" + ""+ Стр.Счет+"" + "на" + Документ.Дата; КонецЦикла; РегБух.Записать(Истина); Документ.СуммаОперации = СуммаВДок; Документ.Записать(РежимЗаписиДокумента.Запись); КонецПроцедуры Функция СформироватьЗапросПоОстатком() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТиповойОстатки.Счет, | ТиповойОстатки.Субконто1, | ТиповойОстатки.Субконто2, | ТиповойОстатки.Субконто3, | ЕСТЬNULL(ТиповойОстатки.СуммаОстатокДт, 0) КАК СуммаОстатковДт, | ЕСТЬNULL(ТиповойОстатки.СуммаОстатокКт, 0) КАК СуммаОстатковКт |ИЗ | РегистрБухгалтерии.Типовой.Остатки(&Дата, Счет = &Счет, , ) КАК ТиповойОстатки"; Запрос.УстановитьПараметр("Дата", '20160901'); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Типовой.НайтиПоКоду("2410")); Результат = Запрос.Выполнить().Выгрузить(); Возврат Результат; КонецФункции // () |
|||
1
1dvd
27.09.16
✎
07:35
|
РегБух.Отбор.Регистратор.ВидСравнения = ВидСравнения.Равно;
РегБух.Отбор.Регистратор.Значение = Документ.Ссылка; РегБух.Отбор.Регистратор.Использование = Истина; //РегБух.Записать(); РегБух.Очистить(); |
|||
2
Рэйв
27.09.16
✎
07:39
|
(0)Пиши в движения документа.Так проще, имхо
|
|||
3
blueisacolour
27.09.16
✎
07:45
|
Либо ОбменДанными поставить в истину
|
|||
4
jsmith
27.09.16
✎
08:01
|
(2)+1
РегБух = Документ.Типовой.СоздатьНаборЗаписей(); |
|||
5
blueisacolour
27.09.16
✎
08:09
|
запись есть в отладчике, даже флаг установил записовать истина
|
|||
6
Рэйв
27.09.16
✎
08:16
|
(4)Документ.Типовой - это уже набор:-) Так что просто
Движение=Документ.Типовой.Добавить(); И т.Д... |
|||
7
hhhh
27.09.16
✎
08:46
|
(5) у тебя
РегБух.Отбор.Регистратор.Значение = Документ.Ссылка; какое-то половинчатое. попробуй по-нормальноиу РегБух.Отбор.Регистратор.Установить(Документ.Ссылка); |
|||
8
blueisacolour
27.09.16
✎
08:52
|
Пробовал такой вариант,тоже никакой.
Процедура СоздатьДокПоСальдо() Экспорт ТекОрганизация = ОбщегоНазначения.ПолучитьСписокГоловныхОрганизаций(); ВспСчет = ПланыСчетов.Типовой.НайтиПоКоду("000"); Документ = Документы.ОперацияБух.СоздатьДокумент(); Документ.Дата = ТекущаяДата(); Документ.Организация = ТекОрганизация; Документ.Автор = Пользователи.ТекущийПользователь(); //Документ.Записать(РежимЗаписиДокумента.Запись); ТЗ = СформироватьЗапросПоОстатком(); //РегБух = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей(); //РегБух.Отбор.Регистратор.ВидСравнения = ВидСравнения.Равно; //РегБух.Отбор.Регистратор.Значение = Документ.Ссылка; //РегБух.Отбор.Регистратор.Использование = Истина; //РегБух.Очистить(); СуммаВДок = 0; //Документ.Движения.Типовой.Записывать = Истина; Для каждого Стр Из ТЗ Цикл РегБух = Документ.Движения.Типовой; Док = РегБух.Добавить(); Док.Активность = Истина; Док.Период = Документ.Дата; Док.Регистратор = Документ.Ссылка; Док.Организация = ТекОрганизация; Док.СчетДт = Стр.Счет; Док.СчетКт = ВспСчет; Док.СубконтоДт.ОсновныеСредства = Стр.Субконто1; Док.Сумма = Стр.СуммаОстатковДт; СуммаВДок = СуммаВДок + Стр.СуммаОстатковДт; Док.Содержание = "Ввод остатков ОС на счет :" + ""+ Стр.Счет+"" + "на" + Документ.Дата; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Идет запись таких позиц как :" + " " + Стр.Субконто1; Сообщение.Сообщить(); КонецЦикла; //РегБух.Записать(); Документ.СуммаОперации = СуммаВДок; Документ.Записать(РежимЗаписиДокумента.Запись); Документ.Движения.Типовой.Записать(); КонецПроцедуры |
|||
9
В тылу врага
27.09.16
✎
08:57
|
Это что за самописка с РБ Типовой?
|
|||
10
Dmitrii
гуру
27.09.16
✎
09:00
|
(8) >> РегБух = Документ.Движения.Типовой;
Это должно быть ДО цикла. А так получается ты в каждой итерации цикла пересоздаёшь заново набор записей. ИМХО правильный вариант в (7): В коде в (0) надо заменить строчку РегБух.Отбор.Регистратор.Значение = Документ.Ссылка на РегБух.Отбор.Регистратор.Установить(Документ.Ссылка). И не надо перед циклом выполнять лишнюю запись набора РегБух.Записать(). Запись достаточно выполнить после цикла. |
|||
11
hhhh
27.09.16
✎
09:02
|
(8) тут вообще тупая ошибка. зачем-то закомментировал
//Документ.Записать(РежимЗаписиДокумента.Запись); |
|||
12
mistеr
27.09.16
✎
09:08
|
(0) КД не предлагать?
Кстати, в учебнике есть пример как раз для операции. |
|||
13
blueisacolour
27.09.16
✎
09:15
|
(12) у меня конфу из Казахстана.Простите!!!Выигрузить по Правилу не получается,табличной части нет там!!!
Вот пробовал выше указанными советами,все не так. Процедура СоздатьДокПоСальдо() Экспорт ТекОрганизация = ОбщегоНазначения.ПолучитьСписокГоловныхОрганизаций(); ВспСчет = ПланыСчетов.Типовой.НайтиПоКоду("000"); Документ = Документы.ОперацияБух.СоздатьДокумент(); Документ.Дата = ТекущаяДата(); Документ.Организация = ТекОрганизация; Документ.Автор = Пользователи.ТекущийПользователь(); Документ.Записать(РежимЗаписиДокумента.Запись); ТЗ = СформироватьЗапросПоОстатком(); РегБух = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей(); //РегБух.Отбор.Регистратор.ВидСравнения = ВидСравнения.Равно; //РегБух.Отбор.Регистратор.Значение = Документ.Ссылка; //РегБух.Отбор.Регистратор.Использование = Истина; //РегБух.Очистить(); РегБух.Отбор.Регистратор.Установить(Документ.Ссылка); СуммаВДок = 0; //Документ.Движения.Типовой.Записывать = Истина; //РегБух = Документ.Движения.Типовой; Для каждого Стр Из ТЗ Цикл Док = РегБух.Добавить(); Док.Активность = Истина; Док.Период = Документ.Дата; Док.Регистратор = Документ.Ссылка; Док.Организация = ТекОрганизация; Док.СчетДт = Стр.Счет; Док.СчетКт = ВспСчет; Док.СубконтоДт.ОсновныеСредства = Стр.Субконто1; Док.Сумма = Стр.СуммаОстатковДт; СуммаВДок = СуммаВДок + Стр.СуммаОстатковДт; Док.Содержание = "Ввод остатков ОС на счет :" + ""+ Стр.Счет+"" + "на" + Документ.Дата; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Идет запись таких позиц как :" + " " + Стр.Субконто1; Сообщение.Сообщить(); КонецЦикла; //РегБух.Записать(); Документ.СуммаОперации = СуммаВДок; Документ.Записать(РежимЗаписиДокумента.Запись); //Документ.Движения.Типовой.Записать(); РегБух.Записать(); КонецПроцедуры |
|||
14
blueisacolour
27.09.16
✎
09:19
|
(12) можете дать ссылку на книгу,если не трудно
|
|||
15
mistеr
27.09.16
✎
09:30
|
||||
16
blueisacolour
27.09.16
✎
10:05
|
Спасибо всем,оказалось банальная ошибка.Организация имеет тип строка.Подправил.Удачи всем!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |