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

Автор Тема: Регистр сведений срезпоследних  (Прочитано 2143 раз)

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

Оффлайн GShutter

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте, подскажите пожалуйста, у меня есть документ в котором я обновляю принтера в там вносятся Дата и принтер, эти данные с проведением я передаю в регистр сведений, проблема в том что в регистре сохраняются дубли ( один и тот же принтер но с разным временем) а мне для дальнейшей работы необходимо смотреть на последнюю дату относительно каждого принтера, как я уже понял мне необходимо прописать срезпоследних по дате, но я с этим очень сильно запутался где прописать и как, дальнейшую работу с регистром я планирую использовать в форме документа( там я реализовал кнопку заполнения которая мне выбирает принтера которые необходимо обновить, но для этого нужны последние даты по принтерам а не как у меня все и дубли в том числе), я смотрел описания срезапоследних на многих сайтах, но все равно не могу понять как описать его.
Пытался сделать так
Выборка = РегистрыСведений.ДатаСменыКатриджей.СрезПоследних(ТекущаяДата(),);
Для каждого Стр Из Выборка Цикл
Сообщить(Строка(Стр.Принтер));
КонецЦикла;
ничего не получается, скорее всего то что написал по коду полный бред, но я пытаюсь, подскажите пожалуйста


Оффлайн GShutter

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте, подскажите пожалуйста, у меня есть документ в котором я обновляю принтера в там вносятся Дата и принтер, эти данные с проведением я передаю в регистр сведений, проблема в том что в регистре сохраняются дубли ( один и тот же принтер но с разным временем) а мне для дальнейшей работы необходимо смотреть на последнюю дату относительно каждого принтера, как я уже понял мне необходимо прописать срезпоследних по дате, но я с этим очень сильно запутался где прописать и как, дальнейшую работу с регистром я планирую использовать в форме документа( там я реализовал кнопку заполнения которая мне выбирает принтера которые необходимо обновить, но для этого нужны последние даты по принтерам а не как у меня все и дубли в том числе), я смотрел описания срезапоследних на многих сайтах, но все равно не могу понять как описать его.
Пытался сделать так
Выборка = РегистрыСведений.ДатаСменыКатриджей.СрезПоследних(ТекущаяДата(),);
Для каждого Стр Из Выборка Цикл
Сообщить(Строка(Стр.Принтер));
КонецЦикла;
ничего не получается, скорее всего то что написал по коду полный бред, но я пытаюсь, подскажите пожалуйста

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

Подскажите пожалуйста где я тут накосячил, почему выдает все принтера а не только последние

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
А что такое "последний" принтер?
Периодический регистр сведений позволяет хранить ресурсы в разрезе измерений по датам.

Оффлайн pavl_vs

  • *****
  • Сообщений: 1069
  • РЕПУТАЦИЯ: 168
  • КПД: 16%
  • Регистрация: 2011-05-09
  • Сайт: 
  • Профессия: Программист 7.7
GShutter, особого косяка в последнем варианте запроса нет - Вы продвинулись в правильном направлении и результат по запросу.

Если Вы полагаете, что в результате запроса в списке должен "светиться" только принтер №5,
то должно быть дополнительное условие на ПУСТУЮ дату, которое обычно записывается в конструкции "ГДЕ".

Если я неправильно понял, то опишите, что бы Вы хотели увидеть в результате запроса и обязательно в связке с приведенной картинкой.

Оффлайн GShutter

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-08-20
  • Сайт: 
  • Профессия: Ученик 1С
GShutter, особого косяка в последнем варианте запроса нет - Вы продвинулись в правильном направлении и результат по запросу.

Если Вы полагаете, что в результате запроса в списке должен "светиться" только принтер №5,
то должно быть дополнительное условие на ПУСТУЮ дату, которое обычно записывается в конструкции "ГДЕ".

Если я неправильно понял, то опишите, что бы Вы хотели увидеть в результате запроса и обязательно в связке с приведенной картинкой.

Я бы хотел увидеть, если взять ту картинку, в результате запроса след каждый тип принтера в одном экземпляре с последней датой ( то что у 5 принтер нету даты то мой косяк на самом деле там есть дата), примерно вот так :
1 Принтер 20.08.2015
5 Принтер 17.08.2015( то что на картинки нету даты мой косяк, там есть дата)
9 Принтер 18.08.2015
10 Принтер 16.08.2015

Вот такой вариант результата запроса для меня был бы идеален к нему я стремлюсь и уже многое перепробовал, но так ничего и не выходит, разве что если я беру в запросе просто измерение Принтер то выдает действительно 1,5,9,10 но я не могу обратиться к дате данных принтеров (поэтому данное решение теряет свой смысл). Если у кого есть идеи я рад буду услышать, я пытался убрать измерение Дата и использовать Период, но результат такой же как в запросе с датой

Оффлайн pavl_vs

  • *****
  • Сообщений: 1069
  • РЕПУТАЦИЯ: 168
  • КПД: 16%
  • Регистрация: 2011-05-09
  • Сайт: 
  • Профессия: Программист 7.7
GShutter, тогда "СрезПоследних" не нужен;
Вам нужно ВЫБРАТЬ РАЗЛИЧНЫЕ с использованием функции МАКСИМУМ(...ДатаСменыКатриджей.Дата).

Оффлайн GShutter

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-08-20
  • Сайт: 
  • Профессия: Ученик 1С
GShutter, тогда "СрезПоследних" не нужен;
Вам нужно ВЫБРАТЬ РАЗЛИЧНЫЕ с использованием функции МАКСИМУМ(...ДатаСменыКатриджей.Дата).
Ты просто человечище, мозг, бог, просто красавчик,спасибо огромное, я столько промучился и вот все получилось,СПАСИБО!!!
Добавлено: 22 Авг 2015, 03:49

Обрадовался, но поспешил , столкнулся с проблемой которую раньше уже встречал но так и не решил(только хитро обходил сейчас это не выйдет). При записи(программно) в табличную часть значений(документа) с регистра сведений данные переносятся на ура, а вот при попытке перенести данные со справочника никак (пытался и ссылку и значение передать), у ячейки табличной части тип: СправочникСсылка.Принтера, в итоге выходит такой бред как на картинке, подскажите пожалуйста как можно данные справочника точнее данные тойже ячейки что и привязана к табличной части передать в нее программно( у меня просто стоит отбор).Спасибо большое если кто то подскажет.(в прошлый раз с такой проблемой, я просто изменил тип ячейки на строку это позволила мне вставлять программно, сейчас так сделать не могу). 

Последний раз редактировалось: GShutter; 22 Авг 2015, 03:49. Причина: Объединение сообщений

Оффлайн pavl_vs

  • *****
  • Сообщений: 1069
  • РЕПУТАЦИЯ: 168
  • КПД: 16%
  • Регистрация: 2011-05-09
  • Сайт: 
  • Профессия: Программист 7.7
GShutter, с таким описанием последней проблемы мучения Вам гарантированы.

Кто-то из здешних классиков сказал: правильно заданный вопрос - содержит половину ответа; и он прав!
Вы еще раз почитайте, что Вы написали. Вы поняли? Или это только моя проблема, но я конкретно ничего не понял.

Попробуйте так:
- источник данных (желательна картинка); справочник (его структура)?
- приемник данных (желательна картинка); документ (структура ТЧ)?
- собственно данные;
- как пытались передать (фрагмент кода); результат похоже уже показали.


Оффлайн GShutter

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-08-20
  • Сайт: 
  • Профессия: Ученик 1С
GShutter, с таким описанием последней проблемы мучения Вам гарантированы.

Кто-то из здешних классиков сказал: правильно заданный вопрос - содержит половину ответа; и он прав!
Вы еще раз почитайте, что Вы написали. Вы поняли? Или это только моя проблема, но я конкретно ничего не понял.

Попробуйте так:
- источник данных (желательна картинка); справочник (его структура)?
- приемник данных (желательна картинка); документ (структура ТЧ)?
- собственно данные;
- как пытались передать (фрагмент кода); результат похоже уже показали.
1 Рисунок это мой справочник, 2 Рисунок это мой документ, 3 рисунок это заполнение документа после выполнения кода который я сейчас вставлю:

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

Логика данного кода такова, если Принтер есть в регистре то с ним работаю по условию, если его нету(все принтера описаны в справочнике, сравниваю наличие принтеров в регистре относительно справочника) то его надо внести в табличную часть документа ( собственно с этим у меня и проблема).
Добавлено: 23 Авг 2015, 04:07

Поспешил я конечно с вопросом, спасибо огромное за внимание, у меня все получилось ( я дольше составлял вопрос) ответ на мой вопрос крайне прост, ну я надеюсь хоть вопрос задал верно и всем все понятно стало. Ответ был прост мне надо было передать ВыбСправочник.Ссылка;(а я пытался передавать ВыбСправочник.Ссылка.Наименование, у меня не получалось и я решил спросить у вас, а надо было просто дольше посидеть). Огромное спасибо за внимание, и прошу прощение за потраченное на меня время.
Добавлено: 23 Авг 2015, 04:12

Я решил свой вопрос( если честно потратил больше времени на написания вопроса и жалею об этом), огромное спасибо за внимание, и прошу прощение за последний вопрос.(ответ там выходит очень банальный, надеюсь я хоть его внятно составил во второй раз)

Последний раз редактировалось: GShutter; 23 Авг 2015, 04:12. Причина: Объединение сообщений

Оффлайн pavl_vs

  • *****
  • Сообщений: 1069
  • РЕПУТАЦИЯ: 168
  • КПД: 16%
  • Регистрация: 2011-05-09
  • Сайт: 
  • Профессия: Программист 7.7
Я решил свой вопрос( если честно потратил больше времени на написания вопроса и жалею об этом)
Не стоит сожаления - формулирование проблемы для "непонятливых", как правило, логически верно выстраивает собственные мысли и зачастую приводит к самостоятельному решению.

Если в будущем придется представлять программные коды, то заключайте их в теги кода - решетка (#) в панели инструментов, это повысит читаемость кода и избавит читателя от излишнего напряжения.


Теги:
 

Отличие проводки по регистру сведений от проводки по регистру накопления?

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4843
Последний ответ 18 Апр 2012, 02:19
от Dethmontt
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7742
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 9343
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
В чем отличие регистра сведений от регистра накопления?

Автор Dmitry QweРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 488
Последний ответ 11 Сен 2017, 10:50
от ilyay
Проверка на "новую" запись в рег. сведений

Автор nomer13Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 14338
Последний ответ 11 Янв 2011, 10:04
от nomer13

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
178 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 190
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal