Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июн 2024, 07:54

Как из регистра накопления получить стоимость для расх. накладной???

Автор MihaSerb, 07 фев 2013, 05:17

0 Пользователей и 1 гость просматривают эту тему.

MihaSerb

Точно также я говорил своему руководитетелю:(, а он мне нужно что бы ты сам разобрался и сделал работу:angry:

cska-fanat-kz

Пусть зарегится здесь на форуме - мы ему объясним )))


А если серьезно: напишите хотя бы начало запроса к регистру накопления с получением остатков по количеству и сумме...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

MihaSerb

Процедура ОбработкаПроведения(Отказ, Режим)
   
Движения.ТоварыНаСкладе.Записывать = Истина;
   
   МенеджерВТ = Новый МенеджерВременныхТаблиц;
   
   Запрос = Новый Запрос;
   
   // Укажем, какой менеджер временных таблиц использует этот запрос
   Запрос.МенеджерВременныхТаблиц = МенеджерВТ;


      Запрос.Текст = "ВЫБРАТЬ
                     |   РасходнаяНакладнаяТовары.Номенклатура,
                     |   МАКСИМУМ(РасходнаяНакладнаяТовары.Цена) КАК Цена,
                     |   СУММА(РасходнаяНакладнаяТовары.Сумма) КАК Сумма,
                     |   СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
                     |ПОМЕСТИТЬ ДокТЧ
                     |ИЗ
                     |   Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
                     |ГДЕ
                     |   РасходнаяНакладнаяТовары.Ссылка = &Ссылка
                     |
                     |СГРУППИРОВАТЬ ПО
                     |   РасходнаяНакладнаяТовары.Номенклатура,
                     |   РасходнаяНакладнаяТовары.Склад";

      Запрос.УстановитьПараметр("Ссылка", Ссылка);

      РезультатЗапроса = Запрос.Выполнить();

    Запрос2 = Новый Запрос;
   Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
   Запрос2.Текст = "ВЫБРАТЬ
                   |   ТоварыНаСкладеОстатки.КоличествоОстаток,
                   |   ТоварыНаСкладеОстатки.СуммаОстаток,
                   |   ДокТЧ.Номенклатура,
                   |   ДокТЧ.Количество,
                   |   ДокТЧ.Сумма,
                   |   ДокТЧ.Цена,
               |   ДокТЧ.Склад
                   |ИЗ
                   |   ДокТЧ КАК ДокТЧ
                   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(
                   |            ,
                   |            Номенклатура В
                   |               (ВЫБРАТЬ
                   |                  ДокТЧ.Номенклатура
                   |               ИЗ
                   |                  ДокТЧ)) КАК ТоварыНаСкладеОстатки
                   |      ПО ДокТЧ.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура";

   Результат = Запрос2.Выполнить();
   
   ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

      Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
         ВыборкаДетальныеЗаписи.Сумма = 0;
      Иначе
         ВыборкаДетальныеЗаписи.Цена = ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;
      КонецЕсли;
   
     Движение = Движения.ТоварыНаСкладе.Добавить();

      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

      Движение.Период = Дата;

      Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;

      Движение.Склад = ВыборкаДетальныеЗаписи.Склад;

      Движение.Количество = ВыборкаДетальныеЗаписи.Количество;

   КонецЦикла;

   Движения.Записать();    
    
   
КонецПроцедуры

Подскажите пожалуйста а то я вообще растерян.


MihaSerb

Помогите пожалуйста с автоматическим расчетом стоимости при проведении документа расходная накладная.
Процедура ОбработкаПроведения(Отказ, Режим)


Движения.ТоварыНаСкладе.Записывать = Истина;

МенеджерВТ = Новый МенеджерВременныхТаблиц;

Запрос = Новый Запрос;

// Укажем, какой менеджер временных таблиц использует этот запрос
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;


      Запрос.Текст = "ВЫБРАТЬ
                     | РасходнаяНакладнаяТовары.Номенклатура,
                     | МАКСИМУМ(ТоварыНаСкладеОстатки.СуммаОстаток / ТоварыНаСкладеОстатки.КоличествоОстаток) КАК Себестоимость,
                     | СУММА(РасходнаяНакладнаяТовары.Сумма) КАК Сумма,
                     | СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
                     | РасходнаяНакладнаяТовары.Склад,
                     | ТоварыНаСкладеОстатки.КоличествоОстаток,
                     | ТоварыНаСкладеОстатки.СуммаОстаток
                     |ПОМЕСТИТЬ ДокТЧ
                     |ИЗ
                     | Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
                     | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки КАК ТоварыНаСкладеОстатки
                     | ПО РасходнаяНакладнаяТовары.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура
                     |ГДЕ
                     | РасходнаяНакладнаяТовары.Ссылка = &Ссылка
                     |
                     |СГРУППИРОВАТЬ ПО
                     | РасходнаяНакладнаяТовары.Номенклатура,
                     | РасходнаяНакладнаяТовары.Склад,
                     | ТоварыНаСкладеОстатки.КоличествоОстаток,
                     | ТоварыНаСкладеОстатки.СуммаОстаток";

      Запрос.УстановитьПараметр("Ссылка", Ссылка);

      РезультатЗапроса = Запрос.Выполнить();


 
 
    Запрос2 = Новый Запрос;
Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос2.Текст = "ВЫБРАТЬ
                | ТоварыНаСкладеОстатки.КоличествоОстаток,
                | ТоварыНаСкладеОстатки.СуммаОстаток,
                | ДокТЧ.Номенклатура,
                | ДокТЧ.Склад,
                | ДокТЧ.Себестоимость,
                | ДокТЧ.Сумма,
                | ДокТЧ.Количество,
                | РасходнаяНакладнаяТовары.Цена
                |ИЗ
                | РегистрНакопления.ТоварыНаСкладе.Остатки(
                | ,
                | Номенклатура В
                | (ВЫБРАТЬ
                | ДокТЧ.Номенклатура
                | ИЗ
                | ДокТЧ)) КАК ТоварыНаСкладеОстатки
                | ЛЕВОЕ СОЕДИНЕНИЕ ДокТЧ КАК ДокТЧ
                | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
                | ПО ДокТЧ.Себестоимость = РасходнаяНакладнаяТовары.Цена
                | ПО ТоварыНаСкладеОстатки.Номенклатура = ДокТЧ.Номенклатура";

Результат = Запрос2.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    Движение = Движения.ТоварыНаСкладе.Добавить();

    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;

Движение.Склад = ВыборкаДетальныеЗаписи.Склад;

Движение.Количество = ВыборкаДетальныеЗаписи.Количество;

    Если ВыборкаДетальныеЗаписи.Количество<ВыборкаДетальныеЗаписи.КоличествоОСтаток Тогда

Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОСтаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество;
   
Иначе

Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма;

КонецЕсли;

    Движения.Записать();

    КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск