Имя: Пароль:
1C
1С v8
Не отображаются записи в Регистре Накопления
,
0 michael9472
 
27.05.16
16:32
Документ проводится без проблем, но в регистре накопления не отображаются движения. Ниже приведен код ОбработкаПроведения. Конфигурация самописная




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

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

    КонецЦикла;
1 ДенисЧ
 
27.05.16
16:37
Комментариев три.
первый нецензурный.
второй: запрос в цикле раввинат не одобряет
третий: набор не записывается
2 michael9472
 
27.05.16
16:43
(1) Так я же в РегистрНакопления движения записываю
3 lubitelxml
 
27.05.16
16:44
Движения.ТоварыНаСкладах.Записывать = Истина; и потом уже
Движение = Движения.ТоварыНаСкладах.Добавить();
4 aleks_default
 
27.05.16
16:49
(1) а у меня цензурных нет
5 Nolan
 
27.05.16
16:49
(0) а ты вообще сам факт констатируешь или спросить что-то хочешь?
6 zbv
 
27.05.16
16:50
(3)
Движение = Движения.ТоварыНаСкладах.Добавить();
- это добавление записи в набор, никак не запись.

см. Записать()  - только в цикле не записывай.
7 michael9472
 
27.05.16
16:51
(5) Я спрашиваю, почему не записывается
8 aleks_default
 
27.05.16
16:52
(6) Не нужно там никакое Записать(), что вы курите? Это обработка проведения.
9 Nuobu
 
27.05.16
16:53
(8) В обработке проведения тоже нужно писать ".Записать()".
10 Timon1405
 
27.05.16
16:54
(8) +1
11 AllJoke
 
27.05.16
16:54
Наверное СписанныеМатериалы  - нет строк? Таблица пустая.
12 Nolan
 
27.05.16
16:55
(7) а отладчиком смотрел что у тебя в РезультатЗапроса?
13 samozvanec
 
27.05.16
16:55
(0) Цена=0;
        Цена=РезультатЗапроса.Сумма/РезультатЗапроса.Количество;
        Сумма=Цена*ТекСтрокаМатериалы.Колво;
этапять!
14 Timon1405
 
27.05.16
16:55
(9) если стоит Движения.ТоварыНаСкладах.Записывать = Истина; то не нужно
15 lubitelxml
 
27.05.16
16:56
(7) пробовал как в (3) я тебе показал?
(6) из рабочей конфы привел пример, никаких записать там нет
16 michael9472
 
27.05.16
16:57
(11) таблица заполнена
17 samozvanec
 
27.05.16
16:57
(9) а если не напишу?
18 michael9472
 
27.05.16
16:57
(12) смотрел. там все есть
19 lubitelxml
 
27.05.16
16:59
(13) да там весь код "этапять!", надо срочно на г*внокод выложить - будет в топе долго ))
20 Nolan
 
27.05.16
16:59
(18) В регистре документ который ты проводишь указан как регистратор?
21 michael9472
 
27.05.16
17:00
(20) да
22 samozvanec
 
27.05.16
17:00
(0) вот пара вариантов: в регистре нет остатков, не указан склад в подразделении.

а вообще - что этот код по-твоему делает?
23 hhhh
 
27.05.16
17:01
(21) а как отображаешь движения эти? Какой командой?
24 michael9472
 
27.05.16
17:01
(22) записывает движения в регистр
25 zbv
 
27.05.16
17:01
(8) извини, промахнулся (6) было к (2)

(0) что в свойстве документа "Запись движений при проведении" ?
26 hhhh
 
27.05.16
17:02
(22) списанные материалы ставит на приход. Может склад мусора?
27 michael9472
 
27.05.16
17:03
(26) тьфу ты. я не убрал просто) думал мб в этом дело( глупо правда)
28 michael9472
 
27.05.16
17:05
(25) записывать модифицировать
29 HardBall
 
27.05.16
17:06
1. ГДЕ ТоварыНаСкладахОстатки.Номенклатура = &Наименование" Это будет уже внутреннее соединение.
2. И где проверка на NULL
30 michael9472
 
27.05.16
17:07
записывать модифицированные*
31 michael9472
 
27.05.16
17:07
(29) этого пока ничего нет, но  будет. Я сейчас чисто проверяю запись движений
32 samozvanec
 
27.05.16
17:08
(26) хотел от ТС услышать)
(27) ты нормально ответь, там не только в приходе дело
33 Cyberhawk
 
27.05.16
17:09
В отладчике посмотри, что в конце обработки проведения происходит по F11 - скорее всего еще подписки на регистры и модуль набора записей интересующего регистра...
34 Cyberhawk
 
27.05.16
17:09
Также проверь, что в коллекции движений в конце обработки проведения есть движения по твоему регистру и этот набор не пустой...
35 samozvanec
 
27.05.16
17:11
так же проверь, какую цену выдаст, если не будет остатка
36 samozvanec
 
27.05.16
17:12
так же проверь, какую цену выдаст по другой характеристике
37 samozvanec
 
27.05.16
17:14
зачем соединение? да еще и к виртуальной таблице. почему нельзя склад сразу подставить?
38 michael9472
 
27.05.16
17:16
(37) уже заметил. Ну да ладно. в коллекции Движения все есть(то что я заполняю)