К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Помогите переделать кодинг

Гость
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 Тогда
Попытка
НачатьТранзакцию();

Для каждого Стр из ТаблицаРасхода Цикл

ДвиженияДокумента = ТаблицаДвижений.Добавить();
ДвиженияДокумента.ВидДвижения = Стр.ВидДвижения;
ДвиженияДокумента.Организация = Стр.Организация;
ДвиженияДокумента.Подразделение = Стр.Подразделение;
ДвиженияДокумента.Номенклатура = Стр.Номенклатура;
ДвиженияДокумента.СчетУчета = Стр.СчетУчета;
ДвиженияДокумента.ФизЛицо = Стр.ФизЛицо;
ДвиженияДокумента.НазначениеИспользования = Стр.НазначениеИспользования;
ДвиженияДокумента.Период = Документ.Дата;
ДвиженияДокумента.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры;
ДвиженияДокумента.СерияНоменклатуры = Стр.СерияНоменклатуры;
ДвиженияДокумента.ДокументПередачи = Стр.ДокументПередачи;
ДвиженияДокумента.Стоимость = Стр.Стоимость;
ДвиженияДокумента.Количество = Стр.Количество;
ДвиженияДокумента.ПогашеннаяСтоимостьПР = Стр.ПогашеннаяСтоимость;
//ДвиженияДокумента.СуммаБезНДС = Стр.СуммаБезНДСОстаток;

КонецЦикла;
//Если Стр.Корректировки <> Неопределено И Стр.найденныйДляФормирования = Неопределено Тогда
ДокументКорректировкаЗаписейРегистровНакопления = Документы.КорректировкаЗаписейРегистров.СоздатьДок умент();
ДокументКорректировкаЗаписейРегистровНакопления.Да та = Документ.Дата;
ДокументКорректировкаЗаписейРегистровНакопления.Ко мментарий ="Создание копии документа";
ДокументКорректировкаЗаписейРегистровНакопления.Ус тановитьНовыйНомер();
СтрокаРегистра = ДокументКорректировкаЗаписейРегистровНакопления.Та блицаРегистровНакопления.Добавить();
СтрокаРегистра.Имя = "ПартииМатериаловВЭксплуатацииНалоговыйУчет";
СтрокаРегистра.Представление = "Партии материалов в эксплуатации (Налоговый учет)";
Ф = ДокументКорректировкаЗаписейРегистровНакопления.По лучитьФорму("ФормаДокумента");
Имя = ДокументКорректировкаЗаписейРегистровНакопления.Дв ижения.ПартииМатериаловВЭксплуатацииНалоговыйУчет. Метаданные().Имя;
ПолеРегистра = Ф.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), Имя, Истина, Ф.ЭлементыФормы.ПанельРегистров);
ПолеРегистра.Данные = "ДокументОбъект.Движения.ПартииМатериаловВЭксплуат ацииНалоговыйУчет";
Движение = ПолеРегистра.Значение;
Движение.Загрузить(ТаблицаДвижений);
ТаблицаДвижений.Очистить();

ДокументКорректировкаЗаписейРегистровНакопления.За писать();


ЗафиксироватьТранзакцию();
Сообщить("Создан документ Корректировка записей регистров № " + ДокументКорректировкаЗаписейРегистровНакопления.Но мер);
Исключение
ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки() );
ОтменитьТранзакцию();
КонецПопытки;
КонецЕсли;

КонецПроцедуры


К списку вопросов






Copyright ©, Все права защищены