Перенос Остатков При Конвертации

Тема в разделе "1C и всё что с ней связано", создана пользователем SeverBap, 25 апр 2013.

  1. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Нужно при обмене данными передавать доступный товар на складе.
    доступный товар = остатки товаров - товар в резереве
    В источнике надо задействовать два регистра накопления как-то собарать в оду таблицу, а в приемник только регистр сведений.
    Как такое реализовать в конвертации, кто нибудь с таким сталкивался?
     
  2. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    может какой-то пример есть в конвертации данных в демке?
     
  3. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Пока набросал как в прикрепленном файле. Написал запрос в правеле ПереносОстатковИзРегистров перед обработкой:
    Код (Text):
    Запрос = Новый запрос();
    Запрос.текст = "ВЫБРАТЬ
    |   ВложенныйЗапрос.Склад КАК Склад,
    |   ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    |   ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |   СУММА(ВложенныйЗапрос.КоличествоОстаток - ВложенныйЗапрос.КоличествоВРезерве) КАК Свободно
    |ИЗ
    |   (ВЫБРАТЬ
    |       ТоварыНаСкладахОстатки.Склад КАК Склад,
    |       ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |       ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |       НЕОПРЕДЕЛЕНО КАК ДокументОснование,
    |       ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    |       0 КАК КоличествоВРезерве
    |   ИЗ
    |       РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры}) КАК ТоварыНаСкладахОстатки
    |  
    |   ОБЪЕДИНИТЬ ВСЕ
    |  
    |   ВЫБРАТЬ
    |       ТоварыВРезервеНаСкладахОстатки.Склад,
    |       ТоварыВРезервеНаСкладахОстатки.Номенклатура,
    |       ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры,
    |       ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
    |       0,
    |       ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток
    |   ИЗ
    |       РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры, (ДокументРезерва).* КАК ДокументОснование}) КАК ТоварыВРезервеНаСкладахОстатки) КАК ВложенныйЗапрос
    |
    |СГРУППИРОВАТЬ ПО
    |   ВложенныйЗапрос.Склад,
    |   ВложенныйЗапрос.Номенклатура,
    |   ВложенныйЗапрос.ХарактеристикаНоменклатуры";
    Запрос.УстановитьПараметры("ДатаКон",КонецДня(ТекущаяДата()));
    Выборка = запрос.Выполнить().Выбрать();
    Дальше я незнаю как результат выдать в источнике для регистра со стрктурой Номенклатура, МестоХранения, Количество
     

    Вложения:

  4. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Мне кажется надо использовать обработчик "ПередВыгрузкой" и там все оформлять и считать. С конвертацией не часто работаю.
     
  5. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Код (Text):
    Запрос = Новый запрос();
    Запрос.текст = "ВЫБРАТЬ
    |   ВложенныйЗапрос.Склад КАК МестоХранения,
    |   ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    |   СУММА(ВложенныйЗапрос.КоличествоОстаток - ВложенныйЗапрос.КоличествоВРезерве) КАК Количество
    |ИЗ
    |   (ВЫБРАТЬ
    |       ТоварыНаСкладахОстатки.Склад КАК Склад,
    |       ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |       ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    |       0 КАК КоличествоВРезерве
    |   ИЗ
    |       РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры}) КАК ТоварыНаСкладахОстатки
    |  
    |   ОБЪЕДИНИТЬ ВСЕ
    |  
    |   ВЫБРАТЬ
    |       ТоварыВРезервеНаСкладахОстатки.Склад,
    |       ТоварыВРезервеНаСкладахОстатки.Номенклатура,
    |       0,
    |       ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток
    |   ИЗ
    |       РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры, (ДокументРезерва).* КАК ДокументОснование}) КАК ТоварыВРезервеНаСкладахОстатки) КАК ВложенныйЗапрос
    |
    |СГРУППИРОВАТЬ ПО
    |   ВложенныйЗапрос.Склад,
    |   ВложенныйЗапрос.Номенклатура";
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(ТекущаяДата()));
    ВыборкаДанных = запрос.Выполнить().Выбрать();
    вот рабочий вариант и все хорошо грузит (я так был близко до это сутра)
     
  6. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Выползло то что при загрузи в регистр сведений он добавляет данные, а надо очистить регистр перед загрузкой! Для это в ПКО передзагрузкой прописал код об очистке регистра но он чистить каждый раз как только объект загружается:
    Код (Text):
    Набор = РегистрыСведений.ОстаткиТоваров.СоздатьНаборЗаписей();
    Набор.Записать();
    надо оформить чтобы он один раз это сделал. Я так понимаю надо через параметр это сделать но где его прописать? :)
     
  7. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    прописал в самой конвертации в событии "перед загрузкой данных" и все пошло!

    Добавлено: такое ощущение что сам с собой переписываюсь! :)
     
Загрузка...

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