8.х Запись в регистр сведений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем solnce, 24 ноя 2009.

  1. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Доброе время суток.
    У меня есть документ ТТН в нем реквизит Автомобиль со ссылкой на справочники.Автомобили, сам справочник Автомобили состоит из 2 реквизитов: наименование и перевозчик(ссылка на справочники.контрагенты) ну так вот у меня на основе ТТН строится отчет, а точнее есть обработка которая выводит два отчета, в первый отчет попадают данные при условии, что перевозчик пустая ссылка, а во второй наоборот если реквит перевозчик заполнен, проблема состоит в том,что скажем полмесяца какой нибудь автомобиль был пустой, а затем у него появился перевозчик, в этом случае в отчет попадают текущие данные..то есть тот факт,что полмесяца у него не было перевозчика никак не учитывается. Я думаю выход в использовании регистра сведений..Получается задача делится на 2 этапа
    1.Записать данные в регистр сведений
    2.С помощью запроса обратиться к данным региста
    я создала регистрсведений "ДанныеПоМаршруту" в нем измерение Док(Ведущее,Основной отбор,тип: Док.Ссылка.ТТН,СправочникСсылка.Автомобили) и ресурсы дата,перевозчик,автомобиль
    В справочнике Автомобили в модуле документа ввела след текст:
    Код:
    Процедура Записать()
    Перевозчик = РегистрыСведений.ДанныеОМаршруте.СоздатьМенеджерЗаписи();
    Перевозчик.Период = ТекущаяДата();
    Перевозчик = Перевозчик;;
    Перевозчик.Записать();
    КонецПроцедуры
    
    Но данные в регистре не сохраняются, что я делаю не так? и как это должно выглядить? :unsure:
    Заранее благодарю!
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Украдено из СинтаксисПомошника:

    Код:
     Курс = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
    Курс.Валюта = ВыбВалюта;
    Курс.Период = ТекущаяДата();
    Курс.Прочитать();
    Если Не Курс.Выбран() Тогда
    Курс.Период = ТекущаяДата();
    Курс.Валюта = ВыбВалюта;
    Курс.Курс = 41.35;
    Курс.Кратность = 1;
    КонецЕсли;
    Если ВвестиЧисло(Курс.Курс, "Введите курс на сегодня",15,5) Тогда
    Курс.Записать();
    КонецЕсли; 
    
  3. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Да я в общем то практическ тоже самое и писала, сейчас побробовала добавить Перевозчик.Прочитать()();результат тот же :(
  4. Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    сделайте измерение автомобиль и ресурс перевозчик
    а этот регистр не двигается потому что измерение вы не задаете.
  5. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Я уже незнаю что делать(((изменила РегистрСведений "ДанныеПоМаршруту" теперь измерение Автомобиль(ссылка.справочники.автомобили) и один ресурс перевозчик(тип:строка)
    В модуле справочника пришлось несколько поменять код,а то выходила ошибка: переменная перевозчик не определена, сейчас выглядит так:
    Код:
    Процедура Записать()
    Перевозчик1 = РегистрыСведений.ДанныеОМаршруте.СоздатьМенеджерЗаписи();
    Перевозчик1.Период = ТекущаяДата();
    Перевозчик1.Перевозчик = Справочники.Автомобили.ПолучитьФорму.ЭлементыФормы.Перевозчик;
    Перевозчик1.Автомобиль=Справочники.Автомобили.ПолучитьФорму.ЭлементыФормы.Автомобиль;
    Перевозчик1.Прочитать();
    Перевозчик1.Записать();
    КонецПроцедуры
    
    но регистр все равно пустой, данные не записываются :unsure:
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    Перевозчик1.Прочитать();
    Перевозчик1.Записать();
    
    Зачем так? :)
  7. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    в первом ответе мне было приведено описание которое есть в синтаксис помощнике....я и добавила строчку Перевозчик1.Прочитать();....незнаю правда нужна ли она.... просто я целый день потратила на это, а толку 0 :( вот и незнаю что уже писать((
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Вам правильно в (4) сказали - движений нет, т.к. не задано измерение (Док)

  9. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    я наверное туплю....А где мне это движение задавать? :unsure:
  10. Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    есть регистр
    Цена: Периодичность "В пределах секунды", режим записи "Независимый", Основной отбор по периоду стоит галочка.

    Измерение Номенклатура
    Ресур Цена
    в модуле формы элмента справочника есть процедура ПередЗаписью там такой код:
    Код:
    Попытка
    Движение = РегистрыСведений.Цены.СоздатьМенеджерЗаписи();
    Движение.Период = ТекущаяДата();
    Движение.Номенклатура = Номенклатура;
    Движение.Цена = Цена;
    Движение.Записать();
    Исключение
    Отказ = Истина;
    КонецПопытки;
    
    
    
    Все работает.
    В вашем случае я думаю в справочник автомобили надо сделать такую же процедуру в событие ПередЗаписью на форме документа ее выбрать и код будет примерно таким:
    Код:
    Движение = РегистрыСведений.ДанныеПоМаршруту.СоздатьМенеджерЗаписи();
    Движение.Период = ТекущаяДата();
    Движение.Автомобиль = Ссылка;
    Движение.Перевозчик = Перевозчик;
    Движение.Записать();
    
    
    и режим записи поставить независимый
  11. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое за ответ,но в общем я разобралась вчера,проблема заключалась в том,что у меня не форма элемента.а только форма списка,поэтому код должен был выглядить так:
    Код:
    Процедура СправочникСписокПеревозчикПриИзменении(Элемент)
    Перевозчик1 = РегистрыСведений.ДанныеОМаршруте.СоздатьМенеджерЗаписи();
    Перевозчик1.Период = ТекущаяДата();
    Строка= ЭлементыФормы.СправочникСписок.ТекущиеДанные;
    Перевозчик1.Перевозчик =Строка.Перевозчик;
    Перевозчик1.Автомобиль= Справочники.Автомобили.НайтиПоКоду(Строка.Код);
    сообщить(Строка.Код);
    сообщить(Строка.Перевозчик);
    Перевозчик1.Записать();
    
    КонецПроцедуры
    
    
Похожие темы
  1. W@rt
    Ответов:
    13
    Просмотров:
    1.003
Загрузка...

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