Имя: Пароль:
1C
1С v8
Запись в регистр накопления
,
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) можно, конечно, переписать непосредственно процедуры проведения документа - но делать это нежелательно. использование подписки на событие - наиболее "щадящий" типовую конфу.