[РЕШЕНО] Формирование движений документа

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем bajiepka, 14 май 2015.

  1. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    Добрый день! Подскажите пожалуйста что можно сделать. 1с 8.3, УТ 11.1, упр.
    Сделал обработку по загрузке номенклатуры и её цен из прайса excel. Проблема вылазит при проведении документа Установка цен номенклатуры. Не могу корректно заполнить движения для этого документа.

    В модуле этого документа есть процедура ОбработкаПроведения:
    Код:
    Процедура ПодготовитьНаборыЗаписейКРегистрацииДвижений(Объект, ЭтоНовый = Ложь) Экспорт
        Перем ЭтоНовыйДокумент, МетаданныеДвижения;
       
        Для Каждого НаборЗаписей Из Объект.Движения Цикл
    Т.е. при проведении документа обрабатываются все имеющиеся движения конкретного документа.

    В моей обработке изначально создается новый документ установки цен:
    Код:
    &НаСервере
    Процедура СоздатьДокументЦен(ТекСтруктура);
    
        НовыйДокумент                                 = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
        НовыйДокумент.Дата                             = ТекСтруктура.Дата;
        НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);
        НовыйДокумент.Комментарий                     = "Данная установка цен сгенерирована автоматический внешней обработкой";
        НовыйДокумент.Ответственный                 = ПользователиИнформационнойБазы.ТекущийПользователь();
        НовыйДокумент.ВидыЦен.Добавить().ВидЦены     = ТекСтруктура.ТипРозничнойЦены;
        НовыйДокумент.ВидыЦен.Добавить().ВидЦены     = ТекСтруктура.ТипОптовойЦены;
        НовыйДокумент.Статус                         = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
                
        ТекСтруктура.Вставить("ДокументУстановкиЦен", НовыйДокумент);
           
    КонецПроцедуры
    Документ записывается в режиме записи после создания для того, чтобы можно было потом получить его ссылку. Далее при переборе строк, создаю цену в документе и пытаюсь добавить соответствующее движение по регистру сведений ЦеныНоменклатуры:
    Код:
    &НаСервере
    Процедура СоздатьЦенуНоменклатуры(Данные, Стр)
    Документ = Стр.ДокументУстановкиЦен;
    
        Документ.Движения.ЦеныНоменклатуры.Записывать = Истина;
           
        Если ЗначениеЗаполнено(Стр.ТипОптовойЦены) Тогда
           
            НоваяЦена = Документ.Товары.Добавить();
            НоваяЦена.Номенклатура         = Справочники.Номенклатура.НайтиПоНаименованию(Данные[0]);
            НоваяЦена.ВидЦены             = Справочники.ВидыЦен.НайтиПоНаименованию(Стр.ТипОптовойЦены);
            НоваяЦена.Цена                 = СтрЗаменить(СокрЛП(Данные[3]), " ", "");
           
            Если НЕ ПустаяСтрока(Данные[3]) Тогда // это цена
                НовоеДвижение = Документ.Движения.ЦеныНоменклатуры.Добавить();
                НовоеДвижение.Регистратор     = Стр.ДокументУстановкиЦен.Ссылка;
                НовоеДвижение.Номенклатура    = Справочники.Номенклатура.НайтиПоНаименованию(Данные[0]);
                НовоеДвижение.Период        = Стр.Дата;
                НовоеДвижение.ВидЦены        = Стр.ТипОптовойЦены;
                НовоеДвижение.Цена            = Число(СтрЗаменить(СтрЗаменить(СокрЛП(Данные[3]), " ", ""), ".", ","));
                НовоеДвижение.Валюта         = Константы.ВалютаРегламентированногоУчета.Получить();
            КонецЕсли;
    КонецЕсли;
    Проблема в том, что никаких движений у документа не создается. Поизучал синтаксис создания и редактирования движения - всё вроде правильно, но почему-то движений по итогу 0.

    Подскажите, в чём может быть дело?
  2. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.174
    Симпатии:
    13
    Баллы:
    29
    документ после перепроводиться ?
  3. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    Да, перепроводится. Движения всё равно не появляются (вернее их изначально в документе то нету)
  4. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    хм, там штатно можно загрузить в документ
  5. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    322
    Симпатии:
    22
    Баллы:
    29
    по ТЗ нужно создавать новые позиции номенклатуры, а для существующих добавлять новую цену.

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

Поделиться этой страницей