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

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

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 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
72 Сообщений
oooo800
33 Сообщений
Дмитрий Джей Дмитрий Джей
30 Сообщений
IL2016
29 Сообщений
antoneus antoneus
25 Сообщений
LexaK
23 Сообщений
DmitriyF DmitriyF
16 Сообщений
Ann_
16 Сообщений
мадам брошкина
13 Сообщений
alexandr_ll
12 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal