Помогите переделать кодинг Написал обработку по копированию регистров накоплений.. а теперь не могу ее до конца "добить", надо из БУ в НУ учет движения документа копировать. То что я сделал Клонирует пока только |
Процедура КнопкаВыполнитьНажатие(Кнопка) ОбъектКопирования = Документ1.ПолучитьОбъект(); Если Документ2.Пустая() Тогда НовыйДок = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); НовыйДок.Дата = ТекущаяДата(); НовыйДок.Записать(); Документ2 = НовыйДок.Ссылка; Иначе НовыйДок = Документ2.ПолучитьОбъект(); КонецЕсли; НовыйДок.Ответственный = ОбъектКопирования.Ответственный; НовыйДок.Комментарий = "Скопирован обработкой!!!"; НовыйДок.ИспользоватьЗаполнениеДвижений = ОбъектКопирования.ИспользоватьЗаполнениеДвижений; НовыйДок.ТаблицаРегистровНакопления.Загрузить(ОбъектКопирования.ТаблицаРегистровНакопления.Выгрузить()); НовыйДок.ТаблицаРегистровСведений.Загрузить(ОбъектКопирования.ТаблицаРегистровСведений.Выгрузить()); НовыйДок.ЗаполнениеДвижений.Загрузить(ОбъектКопирования.ЗаполнениеДвижений.Выгрузить()); // Загрузить(ОбъектКопирования.Подразделения.Выгрузить()); Для каждого Набор Из ОбъектКопирования.Движения Цикл Набор.Прочитать(); Если Набор.Количество() = 0 Тогда Продолжить; КонецЕсли; Сообщить(Набор.Метаданные().Имя); НаборТекущегоОбъекта = НовыйДок.Движения[Набор.Метаданные().Имя]; Для каждого ЗаписьНабора Из Набор Цикл НоваяЗапись = НаборТекущегоОбъекта.Добавить(); НоваяЗапись.Активность = ЗаписьНабора.Активность; Если Лев(ТипЗНЧ(НаборТекущегоОбъекта),18) = "Регистр накопления" Тогда Если НаборТекущегоОбъекта.Метаданные().ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда НоваяЗапись.ВидДвижения = ЗаписьНабора.ВидДвижения; //НоваяЗапись.ВидРегистраНакопления="ПартииМатериаловВЭксплуатацииНалоговыйУчет"; КонецЕсли; КонецЕсли; НоваяЗапись.Период = ТекущаяДата(); Для каждого Измерение Из Набор.Метаданные().Измерения Цикл НоваяЗапись[Измерение.Имя] = ЗаписьНабора[Измерение.Имя]; КонецЦикла; Для каждого Ресурс Из Набор.Метаданные().Ресурсы Цикл НоваяЗапись[Ресурс.Имя] = ЗаписьНабора[Ресурс.Имя]; КонецЦикла; Для каждого Реквизит Из Набор.Метаданные().Реквизиты Цикл НоваяЗапись[Реквизит.Имя] = ЗаписьНабора[Реквизит.Имя]; КонецЦикла; КонецЦикла; НаборТекущегоОбъекта.Записать(); КонецЦикла; НовыйДок.Записать(); КонецПроцедуры |
щас "они" чай попьют...... |
2-Andre2011 > Ну и нафига грязь рамазывать? В смысле, плодить сущности, затрудняющее текст? Получил [em]ОбъектКопирования[/em]? Прекрасное название переменной. Продолжай в том же духе: Если Не Документ2.Пустая() Тогда //Здесь неплохо предупредить юзера, что документ попортиться может... ОбъектЗаписи = Документ2.ПолучитьОбъект(); Иначе ОбъектЗаписи = Документы.КорректировкаЗаписейРегистров.СоздатьДок умент(); //И сразу все, что отличается в шапке: ОбъектЗаписи.Дата = ТекущаяДата(); ОбъектЗаписи.Ответственный = .... КонецЕсли; //Все остальные реквизиты копируем из ОбъектаКопирования //P.S потом хорошо оформить циклом через метаданные ;) //А записать уже в конце Вот оформи текст, чтоб глаза не ломал. Читать тяжело очень. |
Спасибо! подскажите как в коде поменять чтобы получился из БУ -> НУ это мне важнее всего в цикле |
крутые кодеры пошли на 1це вот за такое на 1це и плюютцца |
5-Andre2011 > Ты документ зачем вводишь/изменяешь? Он регистратор для записей регистра? Может, проще после создания/изменения регистратора записать его с проведением? Нет? |
VZ> Ну я так понимаю мне просто проще. Документ ввожу потому что надо скопировать со всему движениями по регистру. |
VZ> Да, он регистратор для записей регистра |
Ответ так и не услышал ))) подскажите как в коде поменять чтобы получился из БУ -> НУ это мне важнее всего в цикле |
6-Helen 1986 >То ли дело - Хелен: сразу бородатой родилась.. |
Для каждого ЗаписьНабора Из Набор Цикл НоваяЗапись = НаборТекущегоОбъекта.Добавить(); Если Найти(нрег(ТипРегистра),"накопления")<>0 Тогда Если МетаданныеРегистра.ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда НоваяЗапись.ВидРегистра = ПартииМатериаловВЭксплуатацииНалоговыйУчет.Добавить(); НоваяЗапись.ВидДвижения = ЗаписьНабора.ВидДвижения; КонецЕсли; ЗаполнитьЗначенияСвойств(НоваяЗапись, ЗаписьНабора,,"Период,Регистратор,ВидДвижения") Иначе ЗаполнитьЗначенияСвойств(НоваяЗапись, ЗаписьНабора,,"Период,Регистратор") КонецЕсли; НоваяЗапись.Период = ТекущаяДата(); КонецЦикла; КонецЕсли; КонецЦикла; // код взят из стандартной УПП - создание документа корректировка записей регистров |
кто нибудь подскажет все же..................... как в коде поменять чтобы получился из БУ -> НУ это мне важнее всего в цикле |
8-Andre2011 > Не надо проще. Тем более для конфы. Не надо вырывать у нее из зубов то, что она прекрасно делает сама. Например, заносит в регистр сведения из документа. Сделал документ? Ну так остановись. Просто запиши с опцией проведения. Оно само сообразит, какой регистр брать, и что туда писать. В модуле документа все прописано. |
дело в том что задача - есть документы корректировка регистра накоплений набитые, они огромные мне надо обработкой скопировать проведенные из БУ в НУ. то есть точно такой же документ сделать но превратить в НУ. А в коде пока у меня получается только тупо клонировать |
последний штрих - превратить при клонирование БУ в НУ не могу сделать... |
//НоваяЗапись.ВидРегистраНакопления="ПартииМатериало вВЭксплуатацииНалоговыйУчет"; вот вместо этой именно строки надо сделать взаимнооднозначное переприсвоение рег.накоплений и сделать из БУ -> НУ, ну подскажите люди, как??? |
ну все, вроде код готов!!! (все заработало, переделано все с самого начала!) профи - посмотрите, что еще можно переделать для оптимизации??? |
Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Период, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Активность, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ВидДвижения, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Организация, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Подразделение, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.СчетУчета, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Номенклатура, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ХарактеристикаНоменклатуры, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.СерияНоменклатуры, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ДокументПередачи, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ФизЛицо, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.НазначениеИспользования, //| ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.СкладПолучатель, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Количество, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Стоимость, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ПогашеннаяСтоимость, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.КодОперации, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.СписаниеПартий, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ДокументДвижения, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.ДокументДвиженияПериод, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.НомерКорСтроки, | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.МоментВремени |ИЗ | РегистрНакопления.ПартииМатериаловВЭксплуатацииБухгалтерскийУчет КАК ПартииМатериаловВЭксплуатацииБухгалтерскийУчет |ГДЕ | ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Регистратор = &Регистратор"; Запрос.УстановитьПараметр("Регистратор", Документ); ТаблицаРасхода = Запрос.Выполнить().Выгрузить(); Если ТаблицаРасхода.Количество() = 0 Тогда Сообщить("Регистр ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки - пуст. Документ Корректировка записей регистра - не создан."); Возврат; КонецЕсли; ТаблицаДвижений = Новый ТаблицаЗначений(); ТаблицаДвижений.Колонки.Добавить("ВидДвижения"); ТаблицаДвижений.Колонки.Добавить("Период"); ТаблицаДвижений.Колонки.Добавить("Организация"); ТаблицаДвижений.Колонки.Добавить("Подразделение"); ТаблицаДвижений.Колонки.Добавить("Номенклатура"); ТаблицаДвижений.Колонки.Добавить("СчетУчета"); ТаблицаДвижений.Колонки.Добавить("ФизЛицо"); ТаблицаДвижений.Колонки.Добавить("НазначениеИспользования"); ТаблицаДвижений.Колонки.Добавить("ХарактеристикаНоменклатуры"); ТаблицаДвижений.Колонки.Добавить("СерияНоменклатуры"); ТаблицаДвижений.Колонки.Добавить("ДокументПередачи"); ТаблицаДвижений.Колонки.Добавить("Количество", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,3)); ТаблицаДвижений.Колонки.Добавить("Стоимость", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,2)); ТаблицаДвижений.Колонки.Добавить("ПогашеннаяСтоимостьПР", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,3)); //ТаблицаДвижений.Колонки.Добавить("СуммаБезНДС", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,2)); Если ТаблицаРасхода.Количество() > 0 Тогда Попытка НачатьТранзакцию(); Для каждого Стр из ТаблицаРасхода Цикл ДвиженияДокумента = ТаблицаДвижений.Добавить(); ДвиженияДокумента.ВидДвижения = Стр.ВидДвижения; ДвиженияДокумента.Организация = Стр.Организация; ДвиженияДокумента.Подразделение = Стр.Подразделение; ДвиженияДокумента.Номенклатура = Стр.Номенклатура; ДвиженияДокумента.СчетУчета = Стр.СчетУчета; ДвиженияДокумента.ФизЛицо = Стр.ФизЛицо; ДвиженияДокумента.НазначениеИспользования = Стр.НазначениеИспользования; ДвиженияДокумента.Период = Документ.Дата; ДвиженияДокумента.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры; ДвиженияДокумента.СерияНоменклатуры = Стр.СерияНоменклатуры; ДвиженияДокумента.ДокументПередачи = Стр.ДокументПередачи; ДвиженияДокумента.Стоимость = Стр.Стоимость; ДвиженияДокумента.Количество = Стр.Количество; ДвиженияДокумента.ПогашеннаяСтоимостьПР = Стр.ПогашеннаяСтоимость; //ДвиженияДокумента.СуммаБезНДС = Стр.СуммаБезНДСОстаток; КонецЦикла; //Если Стр.Корректировки <> Неопределено И Стр.найденныйДляФормирования = Неопределено Тогда ДокументКорректировкаЗаписейРегистровНакопления = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); ДокументКорректировкаЗаписейРегистровНакопления.Дата = Документ.Дата; ДокументКорректировкаЗаписейРегистровНакопления.Комментарий ="Создание копии документа"; ДокументКорректировкаЗаписейРегистровНакопления.УстановитьНовыйНомер(); СтрокаРегистра = ДокументКорректировкаЗаписейРегистровНакопления.ТаблицаРегистровНакопления.Добавить(); СтрокаРегистра.Имя = "ПартииМатериаловВЭксплуатацииНалоговыйУчет"; СтрокаРегистра.Представление = "Партии материалов в эксплуатации (Налоговый учет)"; Ф = ДокументКорректировкаЗаписейРегистровНакопления.ПолучитьФорму("ФормаДокумента"); Имя = ДокументКорректировкаЗаписейРегистровНакопления.Движения.ПартииМатериаловВЭксплуатацииНалоговыйУчет.Метаданные().Имя; ПолеРегистра = Ф.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), Имя, Истина, Ф.ЭлементыФормы.ПанельРегистров); ПолеРегистра.Данные = "ДокументОбъект.Движения.ПартииМатериаловВЭксплуатацииНалоговыйУчет"; Движение = ПолеРегистра.Значение; Движение.Загрузить(ТаблицаДвижений); ТаблицаДвижений.Очистить(); ДокументКорректировкаЗаписейРегистровНакопления.Записать(); ЗафиксироватьТранзакцию(); Сообщить("Создан документ Корректировка записей регистров № " + ДокументКорректировкаЗаписейРегистровНакопления.Номер); Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки()); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; КонецПроцедуры |
Текущее время: 06:57. Часовой пояс GMT +3. |