|
Запись в регистр накопления | ☑ | ||
---|---|---|---|---|
0
Kosston
27.08.14
✎
01:06
|
Уважаемые форумчане! Я чего-то запутался немного, подскажите, можно ли в документе, формирующем движения в РН, дописать дополнительные движения, не удаляя старые? Если криво объяснил, могу привести пример. Спасибо!
|
|||
1
neo_matrix_123
27.08.14
✎
01:20
|
(0) о каком регистре речь? и что дописывать хотите...
|
|||
2
Kosston
27.08.14
✎
01:30
|
Регистр накопления ПартииТоваровНаСкладах. Документ Отчёт о РП пишет туда движения, но только по строкам с положительным количеством. Я хочу не трогая эти записи просто дописать туда свои движения по строкам с отрицательным количеством, делая это следующим образом:
Для Каждого ТекСтрокаТовары Из Товары Цикл Если ТекСтрокаТовары.Количество < 0 Тогда Движение = Движения.ПартииТоваровНаСкладах.ДобавитьРасход(); //Здесь пишу движения и т.д. Иначе КонецЕсли; КонецЦикла; |
|||
3
Kosston
27.08.14
✎
01:33
|
Я понимаю, что дилетантское решение проблемы, но меня бы на мысль хоть навести, да и вообще, есть ли техническая возможность именно дописывания движений в регистр по условию, а не их перезаписи?
|
|||
4
neo_matrix_123
27.08.14
✎
01:33
|
(2) регистратором в "любимом" регистре будет отчет о РП? легко. подпиской на событие.
|
|||
5
Kosston
27.08.14
✎
01:37
|
Да, регистратором будет отчёт
|
|||
6
neo_matrix_123
27.08.14
✎
01:40
|
вопрос только в том, что с партионником потом будет....
|
|||
7
Kosston
27.08.14
✎
01:43
|
Да я это однозначно тестировать буду, мне бы реализовать))
|
|||
8
neo_matrix_123
27.08.14
✎
01:45
|
создайте подписку на событие "при проведении". назначьте регистратор отчет о РП. укажите обработчик. лучше его вынести в собственный глобальный модуль. подписка на событие при проведении документа отрабатывает после того, как будут сформированы все типовые движения. пробуйте
|
|||
9
Kosston
27.08.14
✎
01:46
|
Понял, спасибо!
|
|||
10
neo_matrix_123
27.08.14
✎
01:49
|
вот пример. кусок кода. правда по документу расчет себестоимости. но там есть то. что вас интересует.
/ Процедура вызывается подпиской на событие "ДокументОбъект.РасчетСебестоимостиВыпуска (ОбработкаПроведения)". // Предназначена для создания дополнительных движений, связанных с формированием полной себестоимости отгруженных товаров и продукции // // Параметры // Источник - ДокументОбъект.РасчетСебестоимостиВыпуска // Отказ - Булево - Признак отказа от выполнения действия // РежимПроведения - РежимПроведенияДокумента - Определяет режим проведения документа // Процедура ЗЭ_РасчетСебестоимостиВыпускаОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт ОтражатьВБухгалтерскомУчете = Источник.ОтражатьВБухгалтерскомУчете; ОтражатьВУправленческомУчете = Источник.ОтражатьВУправленческомУчете; ОтражатьВНалоговомУчете = Источник.ОтражатьВНалоговомУчете; ПериодРегистрации = Источник.ПериодРегистрации; НачалоПериода = НачалоМесяца(ПериодРегистрации); КонецПериода = КонецМесяца(ПериодРегистрации); Сообщить("Формирование движений по себестоимости отгруженных товаров и продукции"); // Формирование дополнительных движений в управленческом учете Если ОтражатьВУправленческомУчете Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); Запрос.УстановитьПараметр("КонецПериода", КонецПериода); Запрос.Текст = "ВЫБРАТЬ | ПартииТоваровНаСкладах.Регистратор, | ПартииТоваровНаСкладах.ВидДвижения, | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.Склад, | ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладах.СерияНоменклатуры, | ПартииТоваровНаСкладах.ДокументОприходования, | ПартииТоваровНаСкладах.СтатусПартии, | ПартииТоваровНаСкладах.Заказ, | ПартииТоваровНаСкладах.Качество, | ПартииТоваровНаСкладах.Организация, | ПартииТоваровНаСкладах.КодОперации, | ПартииТоваровНаСкладах.НомерКорСтроки, | ПартииТоваровНаСкладах.НомерСтрокиСписанныхТоваров, | ПартииТоваровНаСкладах.Регистратор КАК ДокументДвижения, | ПартииТоваровНаСкладах.Период КАК ДокументДвиженияПериод |ПОМЕСТИТЬ ПартииТоваров_Реализация |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах |ГДЕ | ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | И ПартииТоваровНаСкладах.Период МЕЖДУ &НачалоПериода И &КонецПериода | И ПартииТоваровНаСкладах.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.ОтгрузкаБезПереходаПраваСобственности) | И ПартииТоваровНаСкладах.Активность |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПартииТоваровНаСкладах.Период, | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.Склад, | ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладах.СерияНоменклатуры, | ПартииТоваровНаСкладах.ДокументОприходования, | ПартииТоваровНаСкладах.Стоимость, | ПартииТоваровНаСкладах.СписаниеПартий |ПОМЕСТИТЬ ПартииТоваров_РасчетСебестоимости |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах |ГДЕ | ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.РасчетСебестоимостиВыпуска | И ПартииТоваровНаСкладах.Период МЕЖДУ &НачалоПериода И &КонецПериода | И ПартииТоваровНаСкладах.Активность |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПродажиСебестоимость.Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры, | ПродажиСебестоимость.ЗаказПокупателя, | ПродажиСебестоимость.ДокументОприходования, | ПродажиСебестоимость.Подразделение, | ПродажиСебестоимость.Проект, | ПродажиСебестоимость.Организация, | ПродажиСебестоимость.Регистратор КАК ДокументДвижения, | ПродажиСебестоимость.Период КАК ДокументДвиженияПериод |ПОМЕСТИТЬ ПродажиСебестоимость_РеализацияОтгруженныхТоваров |ИЗ | РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость |ГДЕ | ПродажиСебестоимость.Период МЕЖДУ &НачалоПериода И &КонецПериода | И ПродажиСебестоимость.Регистратор ССЫЛКА Документ.РеализацияОтгруженныхТоваров | И ВЫРАЗИТЬ(ПродажиСебестоимость.Регистратор КАК Документ.РеализацияОтгруженныхТоваров).ДокументОтгрузки.Дата МЕЖДУ &НачалоПериода И &КонецПериода | И ПродажиСебестоимость.Активность |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПартииТоваров_РасчетСебестоимости.Период, | ПартииТоваров_Реализация.Регистратор, | ПартииТоваров_Реализация.ВидДвижения, | ПартииТоваров_Реализация.Номенклатура, | ПартииТоваров_Реализация.Склад, | ПартииТоваров_Реализация.ХарактеристикаНоменклатуры, | ПартииТоваров_Реализация.СерияНоменклатуры, | ПартииТоваров_Реализация.ДокументОприходования, | ПартииТоваров_Реализация.СтатусПартии, | ПартииТоваров_Реализация.Заказ, | ПартииТоваров_Реализация.Качество, | ПартииТоваров_Реализация.Организация, | ПартииТоваров_РасчетСебестоимости.Стоимость, | ПартииТоваров_Реализация.КодОперации, | ПартииТоваров_Реализация.НомерКорСтроки, | ПартииТоваров_Реализация.НомерСтрокиСписанныхТоваров, | ПартииТоваров_Реализация.ДокументДвижения, | ПартииТоваров_Реализация.ДокументДвиженияПериод, | ПартииТоваров_РасчетСебестоимости.СписаниеПартий |ИЗ | ПартииТоваров_Реализация КАК ПартииТоваров_Реализация | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПартииТоваров_РасчетСебестоимости КАК ПартииТоваров_РасчетСебестоимости | ПО ПартииТоваров_Реализация.Номенклатура = ПартииТоваров_РасчетСебестоимости.Номенклатура | И ПартииТоваров_Реализация.Склад = ПартииТоваров_РасчетСебестоимости.Склад | И ПартииТоваров_Реализация.ХарактеристикаНоменклатуры = ПартииТоваров_РасчетСебестоимости.ХарактеристикаНоменклатуры | И ПартииТоваров_Реализация.СерияНоменклатуры = ПартииТоваров_РасчетСебестоимости.СерияНоменклатуры | И ПартииТоваров_Реализация.ДокументОприходования = ПартииТоваров_РасчетСебестоимости.ДокументОприходования |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПартииТоваров_РасчетСебестоимости.Период, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.Номенклатура, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ХарактеристикаНоменклатуры, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ЗаказПокупателя, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ДокументОприходования, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.Подразделение, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.Проект, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.Организация, | ПартииТоваров_РасчетСебестоимости.Стоимость, | ПартииТоваров_РасчетСебестоимости.СписаниеПартий, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ДокументДвижения, | ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ДокументДвиженияПериод |ИЗ | ПродажиСебестоимость_РеализацияОтгруженныхТоваров КАК ПродажиСебестоимость_РеализацияОтгруженныхТоваров | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПартииТоваров_РасчетСебестоимости КАК ПартииТоваров_РасчетСебестоимости | ПО ПродажиСебестоимость_РеализацияОтгруженныхТоваров.Номенклатура = ПартииТоваров_РасчетСебестоимости.Номенклатура | И ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ХарактеристикаНоменклатуры = ПартииТоваров_РасчетСебестоимости.ХарактеристикаНоменклатуры | И ПродажиСебестоимость_РеализацияОтгруженныхТоваров.ДокументОприходования = ПартииТоваров_РасчетСебестоимости.ДокументОприходования"; РезультатЗапроса = Запрос.ВыполнитьПакет(); // ****************************************** ПАРТИИ ТОВАРОВ НА СКЛАДАХ (УПРАВЛЕНЧЕСКИЙ УЧЕТ) ****************************************** // Формирование дополнительных движений по регистру накопления "Партии товаров на складах (управленческий учет)" Если НЕ РезультатЗапроса[3].Пустой() Тогда Движения_ПартииТоваровНаСкладах = Источник.Движения.ПартииТоваровНаСкладах; Выборка = РезультатЗапроса[3].Выбрать(); Пока Выборка.Следующий() Цикл НоваяЗапись = Движения_ПартииТоваровНаСкладах.Добавить(); ЗаполнитьЗначенияСвойств(НоваяЗапись, Выборка); КонецЦикла; // Запись движений по регистру накопления "Партии товаров на складах (управленческий учет)" с сохранением существующих записей Движения_ПартииТоваровНаСкладах.Записать(Ложь); КонецЕсли; // ******************************************************* ПРОДАЖИ СЕБЕСТОИМОСТЬ ******************************************************* // Формирование дополнительных движений по регистру накопления "Продажи себестоимость" Если НЕ РезультатЗапроса[4].Пустой() Тогда Движения_ПродажиСебестоимость = Источник.Движения.ПродажиСебестоимость; Выборка = РезультатЗапроса[4].Выбрать(); Пока Выборка.Следующий() Цикл НоваяЗапись = Движения_ПродажиСебестоимость.Добавить(); ЗаполнитьЗначенияСвойств(НоваяЗапись, Выборка); КонецЦикла; // Запись движений по регистру накопления "Продажи себестоимость" с сохранением существующих записей Движения_ПродажиСебестоимость.Записать(Ложь); КонецЕсли; КонецЕсли; |
|||
11
neo_matrix_123
27.08.14
✎
01:50
|
проца вызывается как раз подпиской на событие при проведении документа. в данном случае расчета с-стоимости. но принцип ровно такой-же.
|
|||
12
Kosston
27.08.14
✎
02:47
|
А такую вещь только подпиской можно реализовать?
|
|||
13
runoff_runoff
27.08.14
✎
02:56
|
метод Прочитать() набора записей регистра накопления и метод Добавить()
|
|||
14
runoff_runoff
27.08.14
✎
02:57
|
а.. еще потом метод Записать() желательно использовать
|
|||
15
neo_matrix_123
27.08.14
✎
19:25
|
(12) можно, конечно, переписать непосредственно процедуры проведения документа - но делать это нежелательно. использование подписки на событие - наиболее "щадящий" типовую конфу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |