8.х Добавление движений в регистр через подписку

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Itsys, 23 ноя 2010.

  1. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Добрый день,

    Задача: в документы реализации добавить проведение себестоимости услуг. Сделал подписку на событие ОбработкаПроведения документа РТиУ:
    Код:
    Процедура итПроведениеСебестоимостиПоУслугамОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если Источник.Услуги.Количество() > 0 Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	&ДатаДокумента КАК Период,
    |	ИСТИНА КАК Актуальность,
    |	РеализацияТоваровУслугУслуги.Номенклатура,
    |	ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры,
    |	РеализацияТоваровУслугУслуги.Ссылка.Сделка КАК ЗаказПокупателя,
    |	ЗНАЧЕНИЕ(Документ.ПоступлениеТоваровУслуг.ПустаяСсылка) КАК ДокументОприходования,
    |	РеализацияТоваровУслугУслуги.Ссылка.Подразделение,
    |	РеализацияТоваровУслугУслуги.Ссылка.Проект,
    |	РеализацияТоваровУслугУслуги.Количество,
    |	итСебестоимостьУслугСрезПоследних.Себестоимость КАК Стоимость
    |ИЗ
    |	Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.итСебестоимостьУслуг.СрезПоследних(
    |				&ДатаДокумента,
    |				Номенклатура В
    |					(ВЫБРАТЬ
    |						РеализацияТоваровУслугУслуги.Номенклатура
    |					ИЗ
    |						Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    |					ГДЕ
    |						РеализацияТоваровУслугУслуги.Ссылка = &Ссылка)) КАК итСебестоимостьУслугСрезПоследних
    |		ПО РеализацияТоваровУслугУслуги.Номенклатура = итСебестоимостьУслугСрезПоследних.Номенклатура
    |ГДЕ
    |	РеализацияТоваровУслугУслуги.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента", Источник.Дата);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    НоваяЗапись = Источник.Движения.ПродажиСебестоимость.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяЗапись, Выборка);
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
    
    
    Все хорошо до тех пор, пока в документе не встречается и товар и услуга, в этом случае движения себестоимости товаров перетираются движениями себестоимости услуг. Как этого избежать?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В момент входа в подписку что есть в движениях? Там есть данные по товарам?
  3. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Нет, Источник.Движения.ПродажиСебестоимость пустая.
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Значит, как правильно указали на партнерке - добавление записей идет через набор и движения перезатирают набор.
    Поэтому добавлять надо будет также через набор (создаем набор, читаем его, добавляем, опять записываем)
  5. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Попробую
  6. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Сорри за офтоп, но интересно, в чем разница между
    Код:
    "ВЫБРАТЬ
    |    &ДатаДокумента КАК Период"
    Запрос.УстановитьПараметр("ДатаДокумента", Источник.Дата);
    
    
    
    
    и
    Код:
    "ВЫБРАТЬ
    |    РеализацияТоваровУслугУслуги.Ссылка.Дата КАК Период"
    
    
    
    Просто я через параметр никогда не делал.
  7. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Разницы никакой, параметр ДатаДокумента используется еще в виртуальной таблице регистра, а почему сделал так, объяснить вряд ли смогу, такая мне в этот момент пришла мысль в голову :)
  8. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    А точно, сорри. Не увидел что в параметрах вирт. таблицы регистра еще используется. Тогда понятно.

Поделиться этой страницей