Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2018, 02:19
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Работа с регистром  (Прочитано 3839 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SW

  • **
  • Сообщений: 81
  • РЕПУТАЦИЯ: 6
  • КПД: 7%
  • Регистрация: 2010-10-30
  • Сайт: 
Есть общий модуль РаботаСоСправочниками, в котором есть функция:
Функция ЦенаКом(АктуальнаяДата, ЭлементКомната) Экспорт
Отбор = Новый Структура("Комната", ЭлементКомната);
ЗначенияРесурсов = РегистрыСведений.ЦенаНомера.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции

И есть документ ЗаселениеГостя с процедурами:
Процедура КомнатаПриИзменении(Элемент)
Если ИнфНомер.Количество() Тогда
ИнфНомер[0].Тип = Комната.Тип;
ИнфНомер[0].Этаж = Комната.Этаж;
Если ДокОснование.Пустая() Тогда
ИнфНомер[0].Цена = РаботаСоСправочниками.ЦенаКом(Дата, Элемент.Значение);
    Иначе ИнфНомер[0].Цена = РаботаСоСправочниками.ЦенаКом(Дата, Элемент);
КонецЕсли;
ИнфНомер[0].ОтвЛицо = Комната.ОтветственноеЛицо;
ИнфНомер[0].ДопИнф = Комната.ДопИнф;
Иначе
НС = ИнфНомер.Добавить();
НС.Тип = Комната.Тип;
НС.Этаж = Комната.Этаж;
НС.Цена = РаботаСоСправочниками.ЦенаКом(Дата, Элемент.Значение);
НС.ОтвЛицо = Комната.ОтветственноеЛицо;
НС.ДопИнф = Комната.ДопИнф;
КонецЕсли;
ЗаселениеИзменение(Комната);
КонецПроцедуры

Процедура ДокОснованиеПриИзменении(Элемент)
Клиент = ДокОснование.Клиент;
Комната = ДокОснование.Комната;
ДатаВъезда = ДокОснование.ДатаВъезда;
ДатаВыезда = ДокОснование.ДатаВыезда;
КомнатаПриИзменении(Комната);
Если СтандартУслуги.Количество()=2 Тогда
СтандартУслуги.Удалить(1);
Иначе
НоваяСтрока = СтандартУслуги.Добавить();
НоваяСтрока.Услуга = "Бронирование индивидуальное";
НоваяСтрока.Количество = 1;
НоваяСтрока.Цена = 200;
НоваяСтрока.Сумма = НоваяСтрока.Количество*НоваяСтрока.Цена;
КонецЕсли;

КонецПроцедуры

Процедура ЗаселениеИзменение(Элемент)
СтандартУслуги[0].Количество = (ДатаВыезда-ДатаВъезда)/86400;
СтандартУслуги[0].Цена = РаботаСоСправочниками.ЦенаКом(Дата, Элемент);
СтандартУслуги[0].Сумма = СтандартУслуги[0].Количество*СтандартУслуги[0].Цена;
КонецПроцедуры

В отладке, при выборе поля документ основания все нормально заполняется, но при удалении данного поля выдает ошибку:
Цитировать
{Документ.ЗаселениеГостя.Форма.ФормаДокумента(6)}: Поле объекта не обнаружено (Значение)
      ИнфНомер[0].Цена = РаботаСоСправочниками.ЦенаКом(Дата, Элемент.Значение);
Как исправить код, чтоб избежать ошибки?


Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
А при пустом основании у вас реквизит "Комната" заполнен?
Есть возможность выложить конфигурацию?

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
И еще...
Элемент.Значение замените сразу на реквизит "Комната".

Оффлайн SW

  • **
  • Сообщений: 81
  • РЕПУТАЦИЯ: 6
  • КПД: 7%
  • Регистрация: 2010-10-30
  • Сайт: 
Спасибо) Если не указывать откуда извлекать значение, а напрямую подать значение ссылочного типа, то все работает, т.е. Элемент.Значение заменить на "Комната".

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Т.е заработало как надо?

Оффлайн SW

  • **
  • Сообщений: 81
  • РЕПУТАЦИЯ: 6
  • КПД: 7%
  • Регистрация: 2010-10-30
  • Сайт: 
Да, практически :) нашёл другой косяк %)

Оффлайн SW

  • **
  • Сообщений: 81
  • РЕПУТАЦИЯ: 6
  • КПД: 7%
  • Регистрация: 2010-10-30
  • Сайт: 
Писал ранее про заменение строки в регистре при проведении документа, а как можно удалить строку из регистра, при проведении документа?

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Ну для начала вам нужно будет его прочитать:
 
НужныйРегистр=РегистрыНакопления.Регистр;
Набор=НужныйРегистр.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СсылкаНаРегистратора);
Набор.Прочитать();
//!!!!!
Набор.Записать();

Оффлайн SW

  • **
  • Сообщений: 81
  • РЕПУТАЦИЯ: 6
  • КПД: 7%
  • Регистрация: 2010-10-30
  • Сайт: 
И сразу такой вопрос, можно ли открывать форму выбора у справочника и документа с включенным сразу фильтром?

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Форма = Справочники.Справочник1.ПолучитьФормуВыбора(); 
Форма.СправочникСписок.Отбор.РЕКВИЗИТ.Установить(ЗНАЧЕНИЕ_РЕКВИЗИТА);
Форма.Открыть();

П.С. SW просьба: для каждого вопроса (не относящегося к текущей теме) - отдельная тема. Чтоб порядок был :)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
65 Сообщений
wise wise
42 Сообщений
alex0402
34 Сообщений
alexandr_ll
32 Сообщений
AIFrame AIFrame
32 Сообщений
LexaK
27 Сообщений
byte777
26 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
25 Сообщений
happynattion
22 Сообщений
antoneus
20 Сообщений

* Кто онлайн

  • Точка Гостей: 87
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal