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

Регистр накоплений - себестоимость, не записываются движения документа "Реализация товаров"

Автор ekaterinka87, 19 июл 2015, 22:20

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

ekaterinka87

Всем доброго времени суток. Попробую объяснить ситуацию.
По обучающим урокам создается регистр накоплений - Себестоимость товаров. Регистраторы - Документы: "Поступление товаров" и "Реализация товаров". В "Поступление товаров" - движения/коструктор/добавляется регистр (приход), заполняется табличная часть и все в порядке. А вот по "Реализация" - в модуле объекта в процедуре - ОбработкаПроведения создается "Конструктор запроса с обработкой результата", затем код дописывается вручную и при проведении докуменда - реализация - в регистраторе должны появиться данные. Они не появляются. Вот какой код используется в уроках - и там все работает.
Цитировать
Процедура ОбработкаПроведения(Отказ, Режим)
   //Тут сначала идут другие регистры

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

Документы "Реализация" проводятся. но :
http://s008.radikal.ru/i304/1507/70/52f1df48e0d2.jpg

1С:Предприятие 8.3, учебная версия (8.3.5.1248)
Учебные лекции ведутся на 1С:Предприятие 8.2

Код скопировала с лекции точно. Проверила несколько раз.
Подскажите пожалуйста, что не так?:dfbsdfbsdf:

Поняла пока только то, что не работает цикл Пока. По отладке видно как шагая (F10) по коду в цикл не заходит - сразу на конец прыгает красный кружок.

Не буду удалять тему, но сразу после наисания на форум - оно заработало :xfbnsdfb: Честное слово, ничего не меняла и не переделывала.

дфтын

Шайтан 1С машина.
на самом деле в 1С есть такие странные, не прозрачные вещи, которые можно копать долго долго, но проще написать по другому.

Luzer1C

Может в цикле добавить ещё одну строчку?
Движение.Записывать = Истина;
Халамбалам.

ferrari314

Движение.Записать();
Luzer1C, опередил.
Да и выборку если пустая, попробуйте: Выборка = Запрос.Выполнить().Выгрузить();

Теги:

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

Рейтинг@Mail.ru

Поиск