Имя: Пароль:
1C
1С v8
Проводка документа не создает записей в регистре накопления
0 SlavaGreben
 
23.06.16
16:25
Здравствуйте. Вот код:

Процедура ОбработкаПроведения(Отказ, Режим)

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

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

  Запрос.УстановитьПараметр("Ссылка", Ссылка);
  Результат = Запрос.Выполнить();
  ВыборкаДетальныеЗаписи = Результат.Выбрать();

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

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

// регистр СтоимостьМатериалов Расход
      Движение = Движения.СтоимостьМатериалов.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
      Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе
        *ВыборкаДетальныеЗаписи.Стоимость;    
    КонецЕсли;    

// РегистрПродажи
    Движение = Движения.Продажи.Добавить();
    Движение.Период = Дата;
    Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
    Движение.Клиент = Клиент;
    Движение.Мастер = Мастер;
    Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
    Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
    Движение.Стоимость = ВыборкаДетальныеЗаписи.Стоимость
      *ВыборкаДетальныеЗаписи.КоличествоВДокументе;

  КонецЦикла;

КонецПроцедуры

ни по одному из трех регистров документы не проходят. Изучаю 1с по книге 1с:Предприятие - практическое руководство. Помогите, кто сможет разобраться, почему записи в регистрах не создаются.
1 Nuobu
 
23.06.16
16:26
Движения.ОстаткиМатериалов.ЗАписать();
Движения.СтоимостьМатериалов.ЗАписать();
Движения.Продажи.ЗАписать();
2 Numerus Mikhail
 
23.06.16
16:27
Движения.твойРегистр.Записать();
3 SlavaGreben
 
23.06.16
16:29
спасибо, глаза проглядел, а это не заметил. Но почему конфигуратор ошибку не выдал ???
еще раз спасибо
4 Зая Бусечка
 
23.06.16
16:30
(3) А что конфигуратору до твоего кода? У него синтактический, а не семантический контроль
5 SlavaGreben
 
23.06.16
16:32
ясно
6 SlavaGreben
 
24.06.16
10:14
Снова стою на том же месте. Написал вот так:

Движения.ОстаткиМатериалов.ЗАписать();
Движения.СтоимостьМатериалов.ЗАписать();
Движения.Продажи.ЗАписать();

В регистрах ничего не добавилось. В чем же может быть дело?
7 ptiz
 
24.06.16
10:17
(0) Не слушай про Записать(), у тебя даже в цикл не заходит

Что это за фантазии:
ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ссылка = &Ссылка

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

???
8 SlavaGreben
 
24.06.16
10:23
Собственно весь код один в один из книги Радченко и Хрусталевой 1с:Предприятие Практическое пособие. Тема занятия - "Оптимизация проведения документа" (14 занятие, стр.- 406). По книге эта "фантазия"

ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ссылка = &Ссылка
Запрос.УстановитьПараметр("Ссылка", Ссылка);

привязывает код к документу который проводится.
9 ptiz
 
24.06.16
10:25
(8) Включи голову и подумай, что с чем сравнивается:
ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ссылка = &Ссылка
10 silent person
 
24.06.16
10:27
(8) не знаю что у тебя за книга но вот тут http://its.1c.ru/db/pubdevguide83#content:287:hdoc написано

ИЗ

|        Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры

|ГДЕ

|        ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
11 Serg_1960
 
24.06.16
10:33
(9) Не говори загадками :( В перепечатке ошибка скорее всего.


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

ГДЕ
ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ссылка = &Ссылка // ссылка на номенклатуру и ссылка на документ ?!?
12 SlavaGreben
 
24.06.16
10:33
сообщение ptiz - от Включи голову и подумай. Над эти как раз работаю - )

Отдельное спасибо silent person, оказалось не один в один. Невнимательность моя.

Кстати, пришлось вот эти строки -

  Движения.ОстаткиМатериалов.ЗАписать();
  Движения.СтоимостьМатериалов.ЗАписать();
  Движения.Продажи.ЗАписать();

вернуть в эти (что бы заработало) -

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

теперь все работает
13 Serg_1960
 
24.06.16
10:34
ГДЕ ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
14 SlavaGreben
 
24.06.16
10:35
ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ссылка = &Ссылка// ссылка на номенклатуру и ссылка на документ ?!?

в книге правильно, с моей стороны ошибка, жара походу
15 SlavaGreben
 
24.06.16
10:37
вариант с ошибкой -
ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ссылка = &Ссылк// ссылка на номенклатуру и ссылка на документ ?!?

правильный -
ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылк
16 ptiz
 
24.06.16
10:39
Поэтому стоит освоить отладчик: там бы увидел, что результат запроса - пустой.
17 SlavaGreben
 
24.06.16
10:46
Где найти такой отладчик? С принципами объектного построения приложений знаком, с 1с только начал разбиратся.