[РЕШЕНО] Изменение переодических реквизитов справочника из документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем ИгорьТЛТ, 7 сен 2015.

  1. TopicStarter Overlay
    ИгорьТЛТ
    Offline

    ИгорьТЛТ

    Регистрация:
    7 сен 2015
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    я выложил весь и оба варианта
    аналогично так же, для этого не нужно быть телепатом, а всего лишь внимательно прочитать с самого начала тему и понять ее суть.
    А еще проще, попробовать самому такой вариант чтобы понять "без телепатии", займет не более 5 минут, все используемые мной процедуры я написал выше.
    Хочу добавить, что тема создана для тех программистов, которые сталкивались с такой проблемой и готовы поделиться ее решением, или есть интерес решить ее сообща, другим просьба не отвечать, чтобы не тратить впустую моё и ваше время...
  2. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    539
    Симпатии:
    83
    Баллы:
    54
    Если будете продолжать в таком тоне, то никто не захочет Вам помочь.
    Ваша проблема в невнятном изложении задачи.
    Если нужно изменять периодический реквизит проведением документа, то используйте в модуле проведения метод, который указал БухУгодник с самого начала. Флаг "Изменяется документами" должен быть установлен. В истории будет дата, регистратор, строка, значение.
    Если изменяете реквизит в других модулях, снимайте этот флаг. В истории будет долько дата и значение.
    Пожалуйста.
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
    Это не мы к вам обратились, а вы к нам, так уж будьте любезны как можно понятливее изъясняться! Еще раз будете ворчать на девочку - горчичник получите.
  4. TopicStarter Overlay
    ИгорьТЛТ
    Offline

    ИгорьТЛТ

    Регистрация:
    7 сен 2015
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Флаг стоял, снятии галочки не помогло.
    Постараюсь повторить внятно в той последовательности в которой я делал:
    В ТиС в справочнике Номенклатура создал периодический реквизит Закуп, с такой же длиной поля что и Цена в поступлении ТМЦ
    далее в процедуре гл.модуля глПересчетТаблЧасти после ИначеЕсли ИмяРеквизита = "Сумма" Тогда
    .............
    Иначе
    Конт.Цена = ?(Конт.Количество = 0, 0, Конт.Сумма/Конт.Количество);
    добавил строки вызывающие из документа Поступление ТМЦ из поля Сумма, в случае изменения, например закуп был 100 за шт., а стало 250 за 2 шт., соответственно цена поменялась на 125 и хотелось чтобы в справочнике закуп изменился со 100 на 125
    вариант 1:
    Код:
    Если Конт.Номенклатура.Закуп.Получить(ДатаДок) <> Конт.Цена  Тогда
    Конт.Номенклатура.Закуп.Установить(ДатаДок,Конт.Цена);
    Конт.Номенклатура.Закуп.Записать();
    КонецЕсли;
    вариант2:
    Код:
    Если Конт.Номенклатура.Закуп.Получить(ДатаДок) <> Конт.Цена  Тогда
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");
    СпрНом.ВыбратьЭлементы();
    Пока СпрНом.ПолучитьЭлемент() > 0 Цикл
    Если СокрЛП(СпрНом) = СокрЛП(Конт.Номенклатура) Тогда
    СпрНом.ТекущийЭлемент();
    КонецЦикла;
    СпрНом.ИспользоватьДату(ДатаДок);
    СпрНом.Закуп = Конт.Цена;
    СпрНом.Закуп.Записать(); 
    КонецЕсли;
    в итоге реквизит справочника Закуп не меняется на новый
  5. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    828
    Симпатии:
    90
    Баллы:
    54
    Он на меня ворчал :D

    В первом варианте у вас значение элемента куда вы пишите через отладчик видно?
    второй вариант - какую ошибку выдает? и опять таки после выхода из цикла посмотрите какой ТекущийЭлемент(вы циклом перебираете элементы и после выхода из цикла устанавливаете для последнего только элемента?)?
  6. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    539
    Симпатии:
    83
    Баллы:
    54
    Попробуйте так (рекомендация на основе РЕАЛЬНО РАБОТАЮЩЕГО кода в моей конфигурации)
    Код:
    Если Конт.Номенклатура.Закуп.Получить(ДатаДок) <> Конт.Цена  Тогда
    СпрЦена =  Конт.Цена;
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");
    Если СпрНом.НайтиЭлемент(Конт.Номенклатура) =1 Тогда
    СпрНом.Закуп.Установить(ДатаДок,СпрЦена);
    Иначе
    Сообщить("Элемент не найден!");
    КонецЕсли;
    Флаг снят. У меня изменение происходит по кнопке, когда курсор на строке табличной части документа. Записывать элемент не нужно.
    Последнее редактирование: 11 сен 2015
    ИгорьТЛТ нравится это.
  7. TopicStarter Overlay
    ИгорьТЛТ
    Offline

    ИгорьТЛТ

    Регистрация:
    7 сен 2015
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Ура, получилось!
    Сердечно благодарен.