8.х не рабтает срез последних

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Kotya, 21 апр 2010.

  1. TopicStarter Overlay
    Kotya
    Offline

    Kotya

    Регистрация:
    14 фев 2008
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Подскажите пожалуйста, в чм может быть проблема... Слетел сервер, после чего 1С установили заного, восстановили базу... и перестал в отчетах работать срезпоследних по регистрам (выбирает что попало, но только не последнюю запись). Тестирование и исправление делали - не помогло....
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    выложите сюда код запроса, который "выбирает, что попало" и скрин, как это "что попало" выглядит
  3. Savant
    Offline

    Savant Опытный в 1С

    Регистрация:
    19 ноя 2007
    Сообщения:
    252
    Симпатии:
    4
    Баллы:
    29
    релииз конфигурации и релиз новой платформы в студию
  4. TopicStarter Overlay
    Kotya
    Offline

    Kotya

    Регистрация:
    14 фев 2008
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    в модуле формы
    Код:
    КБМпоТС = ОСАГО.СформироватьШапкуИзРегистраПоОбъекту(ОбъектОСАГО, "КБМпоТС", ДокументОбъект.Ссылка, мЯвляетсяДопсом, ДокументОбъект.Проведен);
    
    в общем модуле

    Код:
    Функция СформироватьШапкуИзРегистраПоОбъекту(Объект, Рег, Регистратор, ЯвляетсяДопсом, ЯвляетсяПроведенным, КонецПериода = Неопределено) Экспорт
    
    СтДляОтбора = Новый Структура("Объект", Объект);
    СтРезультат = Новый Структура();
    Для каждого Ресурс Из Метаданные.РегистрыСведений[Рег].Ресурсы Цикл
    СтРезультат.Вставить(Ресурс.Имя);	
    КонецЦикла; 
    Если ЯвляетсяПроведенным Тогда
    // просто получим срез последних
    Тз = РегистрыСведений[Рег].СрезПоследних(КонецПериода, СтДляОтбора);
    Иначе
    Если ЯвляетсяДопсом Тогда
    // получаем срез на дату допса
    Тз = РегистрыСведений[Рег].СрезПоследних(КонецПериода, СтДляОтбора);
    // получаем движения допса
    //// запросом
    ТзКон = ИнтерфейсДоговоров.ПолучитьДвиженияДокументаПоРегиструСведений(Регистратор, Рег);
    
    // сравниваем
    Если ТзКон.Количество() <> 0 Тогда
    Тз = ТзКон.Скопировать();
    КонецЕсли; 
    Иначе
    // просто читаем движения
    //// запросом
    Тз = ИнтерфейсДоговоров.ПолучитьДвиженияДокументаПоРегиструСведений(Регистратор, Рег);
    КонецЕсли; 
    КонецЕсли; 
    Если Тз.Количество() <> 0 Тогда
    Для каждого Элемент Из СтРезультат Цикл
    СтРезультат[Элемент.Ключ] = Тз[0][Элемент.Ключ];	
    КонецЦикла; 	
    КонецЕсли;
    Возврат СтРезультат;
    
    КонецФункции // СформироватьШапкуИзРегистраВтчБезДоговора
    
    
    в объект я передаю транспортное средство, а КонецПериода = КонецДня(ТекущаяДата())
  5. TopicStarter Overlay
    Kotya
    Offline

    Kotya

    Регистрация:
    14 фев 2008
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    конфигурация - Управление страховой компанией 8.1 релиз 2.1.10.3
    платформа - 8.1.15.14
  6. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    И правильно делает, что выбирает всё, что попало. У вас "КонецПериода" не задан, а потому берётся значение по-умолчанию равное "Неопределено".
  7. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    То есть, у вас функция не в курсе, что "КонецПериода = КонецДня(ТекущаяДата())", как и, разумеется, регистр сведений.

    Чтобы исправить, у вас в модуле формы должно быть:

    Код:
    КБМпоТС = ОСАГО.СформироватьШапкуИзРегистраПоОбъекту(ОбъектОСАГО, "КБМпоТС", ДокументОбъект.Ссылка, мЯвляетсяДопсом, ДокументОбъект.Проведен, КонецДня(ТекущаяДата()));
    
  8. TopicStarter Overlay
    Kotya
    Offline

    Kotya

    Регистрация:
    14 фев 2008
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    тогда у меня есть еще вопрос :unsure:
    есть регистр КБМпоВодителям в котором у контрагента 3 записи на разные даты, насколько я понимаю он должен исходя из запроса взять срезпоследних по КБМпоВодителям и вывести мне одну запись с последним колассом, только вот он мне выводит три записи (они отличаються только классом все остальное совпадает)

    Код:
    	ТекстЗапроса = "ВЫБРАТЬ  различные
    |	ДТП.Номер КАК Recid,
    |	Оформленны######О.Серия КАК S_Pol,
    |	Оформленны######О.Номер КАК N_Pol,
    |	ДТП.ДатаСлучая КАК Du_S,
    |	МИНИМУМ(ДТП.Дата) КАК Du_Z,
    |	ДТП.Контрагент.ДатаРождения КАК Dr,
    |	ВЫБОР
    |		КОГДА ДТП.Контрагент.Пол = &Мужской ТОГДА ""1""
    |		ИНАЧЕ ""2""
    |	КОНЕЦ КАК W,
    |	СвойстваВодителей.ДатаНачалаСтажа КАК Year_BS,
    |	КБМ.Класс КАК Класс
    |ИЗ
    |	(ВЫБРАТЬ РАЗЛИЧНЫЕ
    |		Ссылка.Номер КАК Номер,
    |		Ссылка.Дата КАК Дата,
    |		Ссылка.ДатаСлучая КАК ДатаСлучая,
    |		Ссылка.Контрагент КАК Контрагент,
    |		Договор
    |	 ИЗ
    |		Документ.ЗаявлениеОбУбыткахДСП.Состав 
    |	 ГДЕ
    |		Ссылка.Проведен = ИСТИНА
    |		И
    |		Ссылка.Организация в (&СписокОрганизаций)
    |		И
    |		Ссылка.Дата МЕЖДУ &ДатаОтчНач И &ДатаОтч
    |		И
    |		Ссылка.СтраховойПродукт.Вид = &Вид_ОСАГО) КАК ДТП
    |
    |	// соединим с оформленными БСО
    |	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Оформленны######О.СрезПоследних(&ДатаОтч, Вид.Тип = &ТипБСО) КАК Оформленны######О
    |	ПО ДТП.Договор = Оформленны######О.Договор
    |
    |	// соединим со свойствами водителей
    |	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиКонтрагентовПоОСАГО.СрезПоследних(&ДатаОтч) КАК СвойстваВодителей
    |	ПО ДТП.Контрагент = СвойстваВодителей.Контрагент
    |
    |	// соединим с КБМ водителей
    |	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КБМпоВодителям.СрезПоследних(&ДатаОтч) КАК КБМ
    |	ПО ДТП.Контрагент = КБМ.Контрагент
    |
    |ГДЕ
    |	Оформленны######О.Наличие
    |
    |СГРУППИРОВАТЬ ПО	ДТП.Номер, Оформленны######О.Серия, Оформленны######О.Номер, ДТП.ДатаСлучая,
    |					ДТП.Контрагент.ДатаРождения, ДТП.Контрагент.Пол,
    |					СвойстваВодителей.ДатаНачалаСтажа, КБМ.Класс
    |";
    
    Запрос	= Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("ДатаОтчНач", ДатаОтчНач);
    Запрос.УстановитьПараметр("ДатаОтч", ДатаОтч);
    Запрос.УстановитьПараметр("Вид_ОСАГО", Перечисления.ВидыСтраховыхПродуктов.Осаго);
    //Запрос.УстановитьПараметр("Организация", Организация);
    Если НЕ ЗначениеЗаполнено(ЭлементыФормы.Организация.Значение) Тогда
    Запрос.УстановитьПараметр("СписокОрганизаций", СписокВсехОрганизаций);
    Иначе
    Запрос.УстановитьПараметр("СписокОрганизаций", Организация);
    КонецЕсли;
    Запрос.УстановитьПараметр("ТипБСО", Перечисления.ТипыБСО.ПолисОсаго);
    Запрос.УстановитьПараметр("Мужской", Перечисления.ПолФизическихЛиц.Мужской);
    
    
  9. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Результирующие данные в студию!
  10. TopicStarter Overlay
    Kotya
    Offline

    Kotya

    Регистрация:
    14 фев 2008
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    RECID S_POL N_POL DU_S DU_Z DR W YEAR_BS R_BM
    ДТП_СУР00000000000000183 ВВВ 493750980 26.12.09 02.01.10 23.06.70 2 2007 003
    ДТП_СУР00000000000000183 ВВВ 493750980 26.12.09 02.01.10 23.06.70 2 2007 004
    ДТП_СУР00000000000000183 ВВВ 493750980 26.12.09 02.01.10 23.06.70 2 2007 005
    ДТП_СУР00000000000000185 ВВВ 510009372 25.01.10 26.01.10 28.05.50 2 2006 000
    ДТП_СУР00000000000000186 ВВВ 520500705 19.01.10 21.01.10 28.03.59 1 2007 003
    ДТП_СУР00000000000000187 ВВВ 493750320 01.01.10 28.01.10 25.05.75 1 2006 000

    вот часть из файла который в итоге формируется...
    из первых трех записей должна быть одна - третья, в регистре КБМПоВодителям по этому договору тоже три записи, третья запись в предоставленных данных является по периоду в регисте последней
  11. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Всё правильно. У вас ясно сказано:
    Код:
    |СГРУППИРОВАТЬ <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/по')">ПО    ДТП.Номер, Оформленны######О.Серия, Оформленны######О.Номер, ДТП.ДатаСлучая,    </span>
    |                    ДТП.Контрагент.ДатаРождения, ДТП.Контрагент.Пол,    
    |                    СвойстваВодителей.ДатаНачалаСтажа, КБМ.Класс
    
    
    Поскольку есть группировка по "КБМ.Класс", записи, у которых различаются значения этого поля будут считаться разными.

    Просто без данных было неудобно судить.
Похожие темы
  1. eViLL
    Ответов:
    7
    Просмотров:
    905
Загрузка...

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