Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Дублирование записей РС          
Kami4 Подменю пользователя
сообщение 30.03.13, 10:27
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 1 раз
Рейтинг: 0

Добрый день.
В форме есть два реквизита Дата,Ставка.

После закрытия форме происходит новая запись в РС.

Вопрос:
Как программно сделать сформулировать код так,чтобы была проверка,если Ставка равна Последней Ставке в РС,то запись не проходит?
Сделал вот такой вот запрос,работает...Но вот если РС пустой то ни чего не происходит,что не так?

 Запрос=Новый Запрос();
       Запрос.Текст=
       "ВЫБРАТЬ
       |    КонстантыСрезПоследних.Ставка КАК Ставка
       |ИЗ
       |    РегистрСведений.Константы.СрезПоследних КАК КонстантыСрезПоследних";

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

Домовик Подменю пользователя
сообщение 30.03.13, 11:12
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

Цитата(Kami4 @ 30.03.13, 6:27) *
.Но вот если РС пустой то ни чего не происходит,что не так?


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

Сообщение отредактировал Домовик - 30.03.13, 11:17

Kami4 Подменю пользователя
сообщение 30.03.13, 11:27
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Домовик @ 30.03.13, 14:12) *
если РС пустой, результат запроса тоже пустой. в цикл программа не заходит(и зачем он -нужна одна запись). да и как тут сравнивать результат с тек ставкой?
если результат запроса пустой, то просто выполняете код по формированию записи в РС.

По видимому лучше будет при открытии формы получать СрезПоследних,выводит в форму,а при закрытии если не совпадает то делается новая запись.Это вариант один. Может есть другой вариант?

logist Подменю пользователя
сообщение 30.03.13, 15:31
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Не мог пройти мимо загадочного словосочетания "Периодическая константа" smile.gif

Процедура Пр(РеквизитДатаВФорме, РеквизитСтавкаВФорме)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата",    РеквизитДатаВФорме);
    Запрос.Текст = "ВЫБРАТЬ
                   |    КонстантыСрезПоследних.Ставка
                   |ИЗ
                   |    РегистрСведений.Константы.СрезПоследних(&Дата, ) КАК КонстантыСрезПоследних";
    Выборка = Запрос.Выполнить().Выбрать();
    
    СоздаватьЗапись = Истина;
    Если Выборка.Следующий() Тогда
        СоздаватьЗапись = ?(Выборка.Ставка = РеквизитСтавкаВФорме, Ложь, Истина);
    КонецЕсли;
    
    Если СоздаватьЗапись Тогда
        ЗаписьРС = РегистрыСведений.Константы.СоздатьМенеджерЗаписи();
        ЗаписьРС.Период            = РеквизитДатаВФорме;
        ЗаписьРС.Дата            = РеквизитДатаВФорме; // Хотя я не понимаю зачем это
        ЗаписьРС.Пользователь    = ПараметрыСеанса.ТекущийПользователь;
        ЗаписьРС.Ставка            = РеквизитСтавкаВФорме;
        ЗаписьРС.Записать();
    Иначе
        Сообщить("Ставка осталась прежней!");
    КонецЕсли;
КонецПроцедуры


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Домовик,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 23:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!