7.7 Запись в справочник номенклатура

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

  1. TopicStarter Overlay
    PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Помогите пожалуйста, нужно добавить функцию в колонку Цена в таб части документа, чтоб при изменении цены, в функция выполняла проверку в карточки товара, т.е. сравнивала цену прихода с новой ценой, и если цены не равны, то записывала бы новую цену в карточку товара?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Какая у вас конфигурация - метод хранения-то РАЗНЫЙ! Все описывать?
  3. TopicStarter Overlay
    PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    У нас ТиС но весь переписанный!
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В ТиС цены хранятся в отдельном справочнике. Помимо цены вы должны знать еще и ТипЦены (что это поступление).

    До типа цены поступления добираемся так: переменная глПользователь (спр.Пользователи) реквизит ОсновнойТипЦенПокупки. Заполняется справочник-структура компании-пользователи. Я бы добавил процедуру изменения цены при записи документа (вдруг она будет редактироваться 10 раз - что каждый раз менять?)

    Выглядит приблизительно так:
    Код:
    Процедура ИзменитьЦенуПоступления()
    ТипЦеныПоступления=ГлПользователь.ОсновнойТипЦенПокупки;
    Если ПустоеЗначение(ТипЦеныПоступления)=1 Тогда
    Предупреждение("У пользователя не задан тип цен покупки. Корректировка цен невозможна!");
    Возврат;
    КонецЕсли;
    Спр=СоздатьОбъект("Справочник.Цена");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Если (ПустоеЗначение(Номенклатура)=1)ИЛИ(Цена=0) Тогда
    продолжить;
    КонецЕсли;
    СпрЦен=глПолучитьЦену(Номенклатура,ТипЦеныПоступления,ДатаДок,Единица,Валюта,Кратность);
    Если СпрЦен<>0 Тогда
    Если Цена<>СпрЦена Тогда
    Спр.Единица.Установить(ДатаДок,Единица); 
    Спр.Цена.Установить(ДатаДок,Цена); 
    Спр.Записать(); 
    КонецЕсли; 
    Иначе 
    Спр.Новый();
    Спр.Владелец=Номенклатура;
    Спр.ТипЦен=ТипЦеныПоступления;
    Спр.Валюта=Валюта;
    Спр.Записать();
    Спр.Единица.Установить(ДатаДок,Единица);
    Спр.Цена.Установить(ДатаДок,Цена);
    Спр.Записать();
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    
    
  5. TopicStarter Overlay
    PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    У меня ЦенаПриобретения хранится в реквизите спр номенклатура.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Тогда так:
    Код:
    Процедура ИзменитьЦенуПоступления()
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Если (ПустоеЗначение(Номенклатура)=1)ИЛИ(Цена=0) Тогда
    продолжить;
    КонецЕсли;     
    Спр.НайтиЭлемент(Номенклатура);
    СпрЦен=Спр.ЦенаПоступления.Получить(ДатаДок);
    Если СпрЦен<>Цена Тогда
    Спр.ЦенаПоступления.Установить(ДатаДок,Цена); 
    Спр.Записать(); 
    КонецЕсли; 
    КонецЦикла;
    КонецПроцедуры
    
    
    
    
    
    Код приведен с учетом что реквизит ЦенаПоступления - периодический

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