Имя: Пароль:
1C
1С v8
Проведение в управляемых формах
0 mirror1982
 
24.10.16
13:18
Розница 2.0 Создал новый регистр накопления. Пишу в процедуре обработка проведения документа код:

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

Провожу документ. Движение по регистру этого документа не происходит. В чем может быть дело? Естественно проставлено, что документ является регистратором для данного регистра, также проставлены права на регистр накопления.
1 kochurovg
 
24.10.16
13:20
Видимо на добавить : Движение.Регистратор = Ссылка
2 mirror1982
 
24.10.16
13:21
(1) не помогло
3 Альбатрос
 
24.10.16
13:23
(2) Воспользуйся конструктором движений.
4 Chameleon1980
 
24.10.16
13:24
а конструктор движений какой текст нарисует?
попробуй и найди ошибку
6 jsmith
 
24.10.16
13:25
убери очистить
7 mirror1982
 
24.10.16
13:30
(5) чем не нравится код?
8 mirror1982
 
24.10.16
13:30
Движения.Взаиморасчеты.Записывать=Истина;
    Движения.Взаиморасчеты.Очистить();
    Движение=Движения.Взаиморасчеты.Добавить();
    Движение.ВидДвижения=ВидДвиженияНакопления.Приход;
    Движение.Период=Дата;
    Движение.Контрагент=Контрагент;
    Движение.Сумма=Товары.Итог("Сумма");
    Движение.Регистратор=Ссылка;
    
    ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);
    
    Документы.ПоступлениеТоваров.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);
    
    ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
    
    ЗапасыСервер.ОтразитьТоварыНаСкладах(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьТоварыОрганизаций(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьТоварыКПоступлению(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьДвиженияСебестоимостьНоменклатуры(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьДвиженияНоменклатураПоставщиков(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьДвиженияСерийТоваров(ДополнительныеСвойства, Движения, Отказ);
    ЗапасыСервер.ОтразитьДвиженияСебестоимостьПоставкиТоваров(ДополнительныеСвойства, Движения, Отказ);
    ЗакупкиСервер.ОтразитьЗаказыТоваров(ДополнительныеСвойства, Движения, Отказ);
    ЗакупкиСервер.ОтразитьЗакупкиТоваров(ДополнительныеСвойства, Движения, Отказ);
    ДенежныеСредстваСервер.ОтразитьРасчетыСПоставщиками(ДополнительныеСвойства, Движения, Отказ);
    СформироватьСписокРегистровДляКонтроля();
    ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
    ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
    ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
    
    ДополнительныеСвойства.Вставить("Отказ", Отказ);
    
    Если ЗначениеЗаполнено(ЗаказПоставщику) Тогда
        ЗакупкиСервер.ОбновитьСостояниеОплатыПоступления(ЗаказПоставщику);
    Иначе
        ЗакупкиСервер.ОбновитьСостояниеОплатыПоступления(Ссылка);
    КонецЕсли;
9 mirror1982
 
24.10.16
13:31
вот полный код, если убираю нижнюю часть кода. то все ок. наверное она и очищает движения
10 SadrArt
 
24.10.16
13:34
(5) А что не так?
11 jsmith
 
24.10.16
13:35
(10) Код не отформатирован
12 SadrArt
 
24.10.16
13:35
(9) Скорее всего стирает движения вот здесь:

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
13 jsmith
 
24.10.16
13:35
И между знаками препинания пробелы должны быть
14 SadrArt
 
24.10.16
13:36
(13) > должны быть
Что серьезно?
15 jsmith
 
24.10.16
13:38
(14) Конечно
16 jsmith
 
24.10.16
13:38
Посмотри типовые. Везде пробелы
17 newbling
 
24.10.16
13:47
(16) это уже на любителя.

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект)
надо делать до внесения всяческих изменений. Провались туда, посмотри.
18 newbling
 
24.10.16
13:47
или в инициализации скорее даже. Обычно инициализация задаёт пустые значения.
19 mirror1982
 
24.10.16
13:58
не пишет в регистр, если не закомментирована эта строка:
20 mirror1982
 
24.10.16
13:58
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
21 mirror1982
 
24.10.16
13:59
а вот ее код:

Процедура ЗаписатьНаборыЗаписей(Знач Объект) Экспорт
    Перем РегистрыДляКонтроля;

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

                // Установка флага регистрации изменений в наборе записей.
                НаборЗаписей.ДополнительныеСвойства.Вставить("РассчитыватьИзменения", Истина);
                НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоНовый", Объект.ДополнительныеСвойства.ЭтоНовый);

                // Структура для передачи данных в модули наборов записей.
                НаборЗаписей.ДополнительныеСвойства.Вставить("ДляПроведения",
                        Новый Структура("СтруктураВременныеТаблицы", Объект.ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы));

            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

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

КонецПроцедуры
22 mirror1982
 
24.10.16
14:08
все решил проблему. всем спасибо!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.