0
- 26.01.2012 - 09:40
|
Написал обработку по копированию регистров накоплений.. а теперь не могу ее до конца "добить", надо из БУ в НУ учет движения документа копировать. То что я сделал Клонирует пока только | |
1
- 26.01.2012 - 09:41
|
Процедура КнопкаВыполнитьНажатие(Кнопка) ОбъектКопирования = Документ1.ПолучитьОбъект(); Если Документ2.Пустая() Тогда НовыйДок = Документы.КорректировкаЗаписейРегистров.СоздатьДок умент(); НовыйДок.Дата = ТекущаяДата(); НовыйДок.Записать(); Документ2 = НовыйДок.Ссылка; Иначе НовыйДок = Документ2.ПолучитьОбъект(); КонецЕсли; НовыйДок.Ответственный = ОбъектКопирования.Ответственный; НовыйДок.Комментарий = "Скопирован обработкой!!!"; НовыйДок.ИспользоватьЗаполнениеДвижений = ОбъектКопирования.ИспользоватьЗаполнениеДвижений; НовыйДок.ТаблицаРегистровНакопления.Загрузить(Объе ктКопирования.ТаблицаРегистровНакопления.Выгрузить ()); НовыйДок.ТаблицаРегистровСведений.Загрузить(Объект Копирования.ТаблицаРегистровСведений.Выгрузить()); НовыйДок.ЗаполнениеДвижений.Загрузить(ОбъектКопиро вания.ЗаполнениеДвижений.Выгрузить()); // Загрузить(ОбъектКопирования.Подразделения.Выгрузит ь()); Для каждого Набор Из ОбъектКопирования.Движения Цикл Набор.Прочитать(); Если Набор.Количество() = 0 Тогда Продолжить; КонецЕсли; Сообщить(Набор.Метаданные().Имя); НаборТекущегоОбъекта = НовыйДок.Движения[Набор.Метаданные().Имя]; Для каждого ЗаписьНабора Из Набор Цикл НоваяЗапись = НаборТекущегоОбъекта.Добавить(); НоваяЗапись.Активность = ЗаписьНабора.Активность; Если Лев(ТипЗНЧ(НаборТекущегоОбъекта),18) = "Регистр накопления" Тогда Если НаборТекущегоОбъекта.Метаданные().ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления. Остатки Тогда НоваяЗапись.ВидДвижения = ЗаписьНабора.ВидДвижения; //НоваяЗапись.ВидРегистраНакопления="ПартииМатериало вВЭксплуатацииНалоговыйУчет"; КонецЕсли; КонецЕсли; НоваяЗапись.Период = ТекущаяДата(); Для каждого Измерение Из Набор.Метаданные().Измерения Цикл НоваяЗапись[Измерение.Имя] = ЗаписьНабора[Измерение.Имя]; КонецЦикла; Для каждого Ресурс Из Набор.Метаданные().Ресурсы Цикл НоваяЗапись[Ресурс.Имя] = ЗаписьНабора[Ресурс.Имя]; КонецЦикла; Для каждого Реквизит Из Набор.Метаданные().Реквизиты Цикл НоваяЗапись[Реквизит.Имя] = ЗаписьНабора[Реквизит.Имя]; КонецЦикла; КонецЦикла; НаборТекущегоОбъекта.Записать(); КонецЦикла; НовыйДок.Записать(); КонецПроцедуры | |
2
- 26.01.2012 - 10:44
| щас "они" чай попьют...... | |
3
- 26.01.2012 - 11:21
|
2-Andre2011 > Ну и нафига грязь рамазывать? В смысле, плодить сущности, затрудняющее текст? Получил ОбъектКопирования? Прекрасное название переменной. Продолжай в том же духе: Если Не Документ2.Пустая() Тогда //Здесь неплохо предупредить юзера, что документ попортиться может... ОбъектЗаписи = Документ2.ПолучитьОбъект(); Иначе ОбъектЗаписи = Документы.КорректировкаЗаписейРегистров.СоздатьДок умент(); //И сразу все, что отличается в шапке: ОбъектЗаписи.Дата = ТекущаяДата(); ОбъектЗаписи.Ответственный = .... КонецЕсли; //Все остальные реквизиты копируем из ОбъектаКопирования //P.S потом хорошо оформить циклом через метаданные ;) //А записать уже в конце Вот оформи текст, чтоб глаза не ломал. Читать тяжело очень. | |
4
- 26.01.2012 - 11:48
|
Спасибо! подскажите как в коде поменять чтобы получился из БУ -> НУ это мне важнее всего в цикле | |
5
- 26.01.2012 - 12:50
|
крутые кодеры пошли на 1це вот за такое на 1це и плюютцца | |
6
- 26.01.2012 - 12:58
| 5-Andre2011 > Ты документ зачем вводишь/изменяешь? Он регистратор для записей регистра? Может, проще после создания/изменения регистратора записать его с проведением? Нет? | |
7
- 26.01.2012 - 13:54
| VZ> Ну я так понимаю мне просто проще. Документ ввожу потому что надо скопировать со всему движениями по регистру. | |
8
- 26.01.2012 - 13:54
| VZ> Да, он регистратор для записей регистра | |
9
- 26.01.2012 - 13:55
|
Ответ так и не услышал ))) подскажите как в коде поменять чтобы получился из БУ -> НУ это мне важнее всего в цикле | |
10
- 26.01.2012 - 13:58
| 6-Helen 1986 >То ли дело - Хелен: сразу бородатой родилась.. | |
11
- 26.01.2012 - 14:20
|
Для каждого ЗаписьНабора Из Набор Цикл НоваяЗапись = НаборТекущегоОбъекта.Добавить(); Если Найти(нрег(ТипРегистра),"накопления")<>0 Тогда Если МетаданныеРегистра.ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления. Остатки Тогда НоваяЗапись.ВидРегистра = ПартииМатериаловВЭксплуатацииНалоговыйУчет.Добавит ь(); НоваяЗапись.ВидДвижения = ЗаписьНабора.ВидДвижения; КонецЕсли; ЗаполнитьЗначенияСвойств(НоваяЗапись, ЗаписьНабора,,"Период,Регистратор,ВидДвижения") Иначе ЗаполнитьЗначенияСвойств(НоваяЗапись, ЗаписьНабора,,"Период,Регистратор") КонецЕсли; НоваяЗапись.Период = ТекущаяДата(); КонецЦикла; КонецЕсли; КонецЦикла; // код взят из стандартной УПП - создание документа корректировка записей регистров | |
12
- 26.01.2012 - 14:39
|
кто нибудь подскажет все же..................... как в коде поменять чтобы получился из БУ -> НУ это мне важнее всего в цикле | |
13
- 26.01.2012 - 14:40
|
8-Andre2011 > Не надо проще. Тем более для конфы. Не надо вырывать у нее из зубов то, что она прекрасно делает сама. Например, заносит в регистр сведения из документа. Сделал документ? Ну так остановись. Просто запиши с опцией проведения. Оно само сообразит, какой регистр брать, и что туда писать. В модуле документа все прописано. | |
14
- 26.01.2012 - 14:53
| дело в том что задача - есть документы корректировка регистра накоплений набитые, они огромные мне надо обработкой скопировать проведенные из БУ в НУ. то есть точно такой же документ сделать но превратить в НУ. А в коде пока у меня получается только тупо клонировать | |
15
- 26.01.2012 - 15:15
| последний штрих - превратить при клонирование БУ в НУ не могу сделать... | |
16
- 27.01.2012 - 10:45
| //НоваяЗапись.ВидРегистраНакопления="ПартииМатериало вВЭксплуатацииНалоговыйУчет"; вот вместо этой именно строки надо сделать взаимнооднозначное переприсвоение рег.накоплений и сделать из БУ -> НУ, ну подскажите люди, как??? | |
17
- 06.02.2012 - 13:50
|
ну все, вроде код готов!!! (все заработало, переделано все с самого начала!) профи - посмотрите, что еще можно переделать для оптимизации??? | |
18
- 06.02.2012 - 13:51
|
Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Пер иод, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Акт ивность, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Вид Движения, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Орг анизация, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Под разделение, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Сче тУчета, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Ном енклатура, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Хар актеристикаНоменклатуры, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Сер ияНоменклатуры, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Док ументПередачи, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Физ Лицо, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Наз начениеИспользования, //| ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Скл адПолучатель, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Кол ичество, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Сто имость, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Пог ашеннаяСтоимость, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Код Операции, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Спи саниеПартий, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Док ументДвижения, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Док ументДвиженияПериод, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Ном ерКорСтроки, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Мом ентВремени |ИЗ | РегистрНакопления.ПартииМатериаловВЭксплуатацииБух галтерскийУчет КАК ПартииМатериаловВЭксплуатацииБухгалтерскийУчет |ГДЕ | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Рег истратор = &Регистратор"; Запрос.УстановитьПараметр("Регистратор", Документ); ТаблицаРасхода = Запрос.Выполнить().Выгрузить(); Если ТаблицаРасхода.Количество() = 0 Тогда Сообщить("Регистр ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОста тки - пуст. Документ Корректировка записей регистра - не создан."); Возврат; КонецЕсли; ТаблицаДвижений = Новый ТаблицаЗначений(); ТаблицаДвижений.Колонки.Добавить("ВидДвижения"); ТаблицаДвижений.Колонки.Добавить("Период"); ТаблицаДвижений.Колонки.Добавить("Организация"); ТаблицаДвижений.Колонки.Добавить("Подразделение"); ТаблицаДвижений.Колонки.Добавить("Номенклатура"); ТаблицаДвижений.Колонки.Добавить("СчетУчета"); ТаблицаДвижений.Колонки.Добавить("ФизЛицо"); ТаблицаДвижений.Колонки.Добавить("НазначениеИсполь зования"); ТаблицаДвижений.Колонки.Добавить("ХарактеристикаНо менклатуры"); ТаблицаДвижений.Колонки.Добавить("СерияНоменклатур ы"); ТаблицаДвижений.Колонки.Добавить("ДокументПередачи "); ТаблицаДвижений.Колонки.Добавить("Количество", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,3)) ; ТаблицаДвижений.Колонки.Добавить("Стоимость", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,2)) ; ТаблицаДвижений.Колонки.Добавить("ПогашеннаяСтоимо стьПР", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,3)) ; //ТаблицаДвижений.Колонки.Добавить("СуммаБезНДС", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,2)) ; Если ТаблицаРасхода.Количество() > 0 Тогда Попытка НачатьТранзакцию(); Для каждого Стр из ТаблицаРасхода Цикл ДвиженияДокумента = ТаблицаДвижений.Добавить(); ДвиженияДокумента.ВидДвижения = Стр.ВидДвижения; ДвиженияДокумента.Организация = Стр.Организация; ДвиженияДокумента.Подразделение = Стр.Подразделение; ДвиженияДокумента.Номенклатура = Стр.Номенклатура; ДвиженияДокумента.СчетУчета = Стр.СчетУчета; ДвиженияДокумента.ФизЛицо = Стр.ФизЛицо; ДвиженияДокумента.НазначениеИспользования = Стр.НазначениеИспользования; ДвиженияДокумента.Период = Документ.Дата; ДвиженияДокумента.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры; ДвиженияДокумента.СерияНоменклатуры = Стр.СерияНоменклатуры; ДвиженияДокумента.ДокументПередачи = Стр.ДокументПередачи; ДвиженияДокумента.Стоимость = Стр.Стоимость; ДвиженияДокумента.Количество = Стр.Количество; ДвиженияДокумента.ПогашеннаяСтоимостьПР = Стр.ПогашеннаяСтоимость; //ДвиженияДокумента.СуммаБезНДС = Стр.СуммаБезНДСОстаток; КонецЦикла; //Если Стр.Корректировки <> Неопределено И Стр.найденныйДляФормирования = Неопределено Тогда ДокументКорректировкаЗаписейРегистровНакопления = Документы.КорректировкаЗаписейРегистров.СоздатьДок умент(); ДокументКорректировкаЗаписейРегистровНакопления.Да та = Документ.Дата; ДокументКорректировкаЗаписейРегистровНакопления.Ко мментарий ="Создание копии документа"; ДокументКорректировкаЗаписейРегистровНакопления.Ус тановитьНовыйНомер(); СтрокаРегистра = ДокументКорректировкаЗаписейРегистровНакопления.Та блицаРегистровНакопления.Добавить(); СтрокаРегистра.Имя = "ПартииМатериаловВЭксплуатацииНалоговыйУчет"; СтрокаРегистра.Представление = "Партии материалов в эксплуатации (Налоговый учет)"; Ф = ДокументКорректировкаЗаписейРегистровНакопления.По лучитьФорму("ФормаДокумента"); Имя = ДокументКорректировкаЗаписейРегистровНакопления.Дв ижения.ПартииМатериаловВЭксплуатацииНалоговыйУчет. Метаданные().Имя; ПолеРегистра = Ф.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), Имя, Истина, Ф.ЭлементыФормы.ПанельРегистров); ПолеРегистра.Данные = "ДокументОбъект.Движения.ПартииМатериаловВЭксплуат ацииНалоговыйУчет"; Движение = ПолеРегистра.Значение; Движение.Загрузить(ТаблицаДвижений); ТаблицаДвижений.Очистить(); ДокументКорректировкаЗаписейРегистровНакопления.За писать(); ЗафиксироватьТранзакцию(); Сообщить("Создан документ Корректировка записей регистров № " + ДокументКорректировкаЗаписейРегистровНакопления.Но мер); Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки() ); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; КонецПроцедуры | |
| Интернет-форум Краснодарского края и Краснодара |