Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia
Подробнее на такой странице detsadburatino.ru - какие документы требуются при первом выводе.
Точная информация по запросу игровой автомат mega - на таком сайте сибагс.рф

Периодические реквизиты в 1С 8. Особенности перехода с 1С 7.7 на 1С 8

26.11.2013 15:12 | Просмотров: 8922 | Доход: 143.8 руб. | Комментариев: 2
[Программирование] 
Рейтинг: 3.75/4

При переходе с платформы 1С 7.7 на 1С 8 возникает проблема с переиодическими реквизитами, которые есть в 1С 7.7, но их нет в 1С 8.

Однако в 1С 8 их можно заменить использованием периодических регистров сведений.

Рассмотрим на примере переноса справочника "Сотовые телефоны" из 1С 7.7 в 1С 8.2.

Итак у нас есть справочник "Сотовые телефоны" с набором реквизитов часть из которых периодические. Обычне реквизиты в 1С 8 создаются точно так же как и в 1С 7.7, а вот что делать с периодическими. Для них мы создадим регистр сведений "История сотовых телефонов".

В регистре сведений указываем переодичность .

На форме элемента справочника добавляем элементы управления (в нашем случае поле ввода) для всех переодических реквизитов.

В нашем случае это:

  • Норма
  • Действует
  • Сотрудник
  • Примечание

Эти же реквизиты должны быть и в регистре сведений (некоторые из них представлены в виде измерений). В данном примере измерением будет "Сотовый телефон" ссылка на справочник "Сотовые телефоны", "норма" - измерение так как это число, остальные это реквизиты.

Далее нужно при открытии формы получать текущие значения "переодитеческих реквизитов" для это го в модуль формы добавим такую процедуру:

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

Для регистрации изменений переодических реквизитов нужно в этом же модуле формы добавить следующий код:

 

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

Так же в этом примере на форме существует кнопка "История..." она открываеет форму списка регистра сведений с отбором по текущему элементу справочника в режиме только просмотра. Однако можно сделать и возможность редактирования если необходимо разрешать пользователю менять "прошлые" значения.

Но обратите внимание, что изменения задним числом могут повлиять на отчеты, допустим сданные в нологовую ;)

Код кнопки "История.." приведен ниже:

 

Процедура ДействияФормыИстория(Кнопка)
	ФормаСписка = РегистрыСведений.ИсторияСотовыхТелефонов.ПолучитьФормуСписка("ФормаСписка");
	ФормаСписка.ТолькоПросмотр = Истина;
	ОтборТел = ФормаСписка.РегистрСведенийСписок.Отбор.СотовыйТелефон;
	ОтборТел.ВидСравнения = ВидСравнения.Равно;
	ОтборТел.Значение = ЭтотОбъект.Ссылка;
	ОтборТел.Использование = Истина;
	ФормаСписка.Открыть();
КонецПроцедуры

 


© Tiger
| Комментировать статью |
  • GM +2587 (26.11.2013 15:20)
    Давненько статей не было!
    | Ответить |
  • Аноним 0 (28.02.2017 14:44)
    Еще актуально?
    | Ответить |