Помогите начинающему! Регистр сведений...

33. levran 201 29.03.17 13:53 Сейчас в теме
Уважаемые! Похожая ситуация, НО! Необходимо устанавливать значение для любой НОВОЙ записи регистра.

Ситуация следующая.
Был разработан регистра сведений ОтправленныеСообщения. Непериодический, Независимый.
Под этот регистр написаны обработки, данные пишутся, все хорошо, все работает.

В какой-то момент было в конфигураторе добавлено измерение ДатаЗаписиВРегистр.

Чтобы не сломался старый код, который написан уже много где и чтобы не искать все обработки по этому регистру, было принято решение использовать модуль набора записи предопределенная процедура ПриЗаписи. Который будет заполнять новыезаписи поле ДатаЗаписиВРегистр всегда текущей датой.

	

Процедура ПриЗаписи(Отказ, Замещение)
	
	Для каждого Запись Из ЭтотОбъект Цикл 
		Если НЕ ЗначениеЗаполнено(Запись.ДатаЗаписиВРегистр) Тогда
			Запись.ДатаЗаписиВРегистр = ТекущаяДата();
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

Показать


Но увы и ах, данная конструкция не работает.



{ОбщийМодуль.Тест.Модуль(1948)}: Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: ОтправленныеСообщения: 29.03.2017 15:50:09, , +71111111, Прием , , 29.03.2017 15:50:09 (Регистр сведений: Отправленные сообщения; Поле: ДатаЗаписиВРегистр)


Подскажите где ошибка?
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
34. nensy 10.09.08 05:03 Сейчас в теме
Здравствуйте. Подскажите, пожалуйста. На форме имеется табличное поле с данными - регистрСведений. Необходимо, чтобы при вводе пользователем новой записи значение ресурса устанавливалось в определенное, заранее известное значение.
+
35. nensy 10.09.08 06:11 Сейчас в теме
Я что-то сложное спросила?? :( Или так просто, что даже отвечать никто не хочет....:( :( :(
+
36. AVARY 175 10.09.08 06:33 Сейчас в теме
Над этим вопросом infostart-сообщество бьется не первый год :)))

Код
Запись = РегистрыСведений.<Имя твоего регистра>.СоздатьМенеджерЗаписи();            
Запись.<Измерение 1>   = <Значение измерения 1>;
...
Запись.<Измерение N>   = <Значение измерения N>;
Запись.<Ресурс 1>   = <Значение ресурса 1>;
...
Запись.<Ресурс N>   = <Значение ресурса N>;
Запись.Записать();
Показать полностью
+
37. nensy 10.09.08 06:40 Сейчас в теме
Ещё и издеваются.... :(. Спасибо :). Т.е. значение ресурса можно задать только тогда, когда пользователь все измерения задаст? А так чтобы он только новую запись создал, начинает измерения заполнять, а в поле ресурса уже нужное значение светится? или это уже через чур?...
+
38. AVARY 175 10.09.08 06:48 Сейчас в теме
Измерения это как бы координаты для значения ресурса. Если позволяет конфигурация, значение измерения можно оставить пустым. Опиши лучше задачу, которую решаешь
+
39. nensy 10.09.08 06:56 Сейчас в теме
Да я всё вроде понимаю... Задача мудрёная. Но в упрощённом виде так: В регистре сведений для каждого склада и номенклатуры хранится занимаемая площадь. Т.е. измерения Склад, номенклатура. Ресурс: Площадь. У многих позиций номенклатур ресурс Площадь одинаковый. Вот и надо, чтобы пользователь в шапке задал это значение. А дальше записи добавлял, а в них уже площадь, равная скажем 155 сама проставляется, по выбранной в шапке. Я третий день в восьмёрке...
+
40. AVARY 175 10.09.08 06:59 Сейчас в теме
41. nensy 10.09.08 07:03 Сейчас в теме
а в семёрке хорошо. Из скромности лучше скажу : "неплохо".
+
42. O-Planet 6432 10.09.08 07:25 Сейчас в теме
О! КоллееегААА! Я тебе по секрету скажу: логику запросов и многое другое в 8-ке придумали люди с вывихнутым моском, так что, не обращай внимания ;) мы семерочники, мы привыкли думать, вот нам и сложно иногда бывает.
+
43. AVARY 175 10.09.08 07:29 Сейчас в теме
Если правильно понимаю, в обработке есть два поля ввода "Склад", "Площадь" и список или табличное поле "Номенклатура". Пускай пользователь выберет "Склад", затем введет "Площадь", затем заполнет список номенклатуры, которая имеет заданную площадь на заданном складе, после чего жмет кнопочку "Установить". После нажатия кнопки ты создаешь записи регистра с известными значениями измерений и ресурса.
+
44. O-Planet 6432 10.09.08 07:30 Сейчас в теме
Хм... Почитал. Тебе, по ходу, не ответили. Просто вопрос не поняли видимо. Я ж говорю, вывих моска, а мы - нормальные. :) Тоже думал над этим вопросом конкретно. Потом вроде разобрался. Колдуй не с записью регистра, а со строкой таблицы на форме. Там есть одна какашка: ТекущаяСтрока не определена, пока ты ее не запишешь. Но помню как-то это обошел.
+
45. AVARY 175 10.09.08 07:37 Сейчас в теме
Нефиг лезть в текущую строку, если правильно создавать табличное поле, то в реквизитах формы появится таблица значений, которая хранит данные, отображаемые на форме. Таблица значений является этакой "подложкой". Вот ее-то обход и надо организовывать:
Код
Для Каждого ТабличноеПолеНоменклатурыСтрока Из ТабличноеПолеНоменклатуры Цикл

      Номенклатура = ТабличноеПолеНоменклатурыСтрока.Номенклатура;

      Запись = ...;
      Запись.Склад            = Склад;
      Запись.Номенклатура = Номенклатура;
      Запись.Площадь        = Площадь;
      Запись.Записать();

КонецЦикла;
Показать полностью
+
46. nensy 10.09.08 07:37 Сейчас в теме
Ой, спасибо всем :). Первый раз в жизни вопрос на форуме задала. Живые все такие :). Кнопка "установить" нехороша тем, что пользователь может ведь на неё и не нажать... За направления мысли - СПАСИБО! Буду биться... Вывихивать..
+
47. O-Planet 6432 10.09.08 07:46 Сейчас в теме
AVARY, тут есть тонкость. Надо, буквально, следующее: я создаю новую запись в списке регистра кнопкой Ins, и надо, чтобы сразу некоторые значения в моей новой строке заполнились до того, как я что-либо нажал. И НЕ ФАКТ, что я эту запись вдальнейшем запишу. Я могу с успехом нажать Esc, поэтому, записывать ее на автомате не нужно. Вот это, мне кажется, без таблицы на форме не сделаешь.
levran; +1
48. O-Planet 6432 10.09.08 07:52 Сейчас в теме
Nensy, короче, щелкай дважды по своей таблице и в свойствах ищи метод "ПередНачаломДобавления". Вот там в параметрах передается Элемент. Делай

Элемент.ТекущаяСтрока[ИмяКолонки]=ТвоеЗначение;

Кажется, так. Если что, глянь через отладчик. там, возможно, надо

Элемент.ТекущаяСтрока[ИмяКолонки].Значение=ТвоеЗначение; - не помню точно
+
49. AVARY 175 10.09.08 07:53 Сейчас в теме
Построение фраз у тебя какое-то... Советую поспать :)
+
50. O-Planet 6432 10.09.08 07:55 Сейчас в теме
не,я суперработоспособен )
+
51. nensy 10.09.08 08:08 Сейчас в теме
O-Planet, задача понята более чем верно. И про Esc особенно :). Но у ТекущейСтроки нет реквизита, соответствующего ресурсу. Там только измерения. Вобщем сделала, чтобы устанавливалось в процедуре ПриОкончанииРедактирования. Обойдутся, что сразу не будут видеть это значение.
+
52. nensy 10.09.08 08:32 Сейчас в теме
А вот ещё проблемка... В шапке указан элемент ВидСубконто типа ПланВидовХарактеристик.ВидыСубконто. В регистре сведений есть измерение типа Характеристика.ВидыСубконто. Связь по типу устанавливаю. Но при добавлении записи она всё равно предлагает выбрать тип. Из списка с одним типом. Как это обойти?
+
53. AVARY 175 10.09.08 09:03 Сейчас в теме
Поместить туда сначала пустую ссылку нужного типа
+
54. O-Planet 6432 10.09.08 09:49 Сейчас в теме
>> Обойдутся, что сразу не будут видеть это значение
Они ж, тупые, полезут ручками своими его вбивать.

Можно глупую восьмерку обмануть. Действительно, сохраняй новую запись сразу и заполняй то, что нужно, в процедуре ПередНачаломРедактирования, но где-то ставь флажок, что оно типа пока не сохранено пользователем. Далее, в процедуре ПриЗаписи этот флаг снимай, что оно типа пользователем сохранено. А вот если приЗаписи явно не вызывалось, а сразу приОкончанииРедактирования, то убивай запись, как отмененную.
+
55. AVARY 175 10.09.08 09:51 Сейчас в теме
Я бы не стал юзверям показывать реальную таблицу регистра. Вывод данных черех обработку или отчет, внесение через обработку.
+
56. Valerich 1634 10.09.08 10:02 Сейчас в теме
СтрокаТЧ = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные;
Если СтрокаТЧ <> Неопределено и СтрокаТЧ.Площадь = 0 Тогда
СтроакТЧ.Площадь = ПлощадьПоУмолчанию;
КОнецЕсли;

Вешай на событие ПриНачалеРедактирования для таб поля
+
57. WiseSnake 1519 10.09.08 10:55 Сейчас в теме
Что то я не въехал, кашу какую то сделали из вопроса... Первая задача довольно так ки простая.. как мне кажеться, я сам не пробовал, но должно получиться если что поправьте.
1. Где нить верху рисуем поле ввода (это будет площадь).
2. Если поле заполнено блокируем нафиг в ТЧ поле Площадь, чтобы не ввели нифига. Можно вообще отключить видимость (в шапке то есть)
3. ПpиOкoнчaнииPeдaктиpoвaния! подставляем автоматом реквизит площадь из шапки.
Если фигню говорю поправьте, я тагда сделаю и скажу как сделать :)

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

>Я тебе по секрету скажу: логику запросов и многое другое в 8-ке придумали люди с вывихнутым моском, так что, не
>обращай внимания winking smiley мы семерочники, мы привыкли думать, вот нам и сложно иногда бывает.

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

+
58. Valerich 1634 10.09.08 11:06 Сейчас в теме
Ребята. вы как проктологи, чесное слово.
Не надо никому ничего блокировать, ведь пользователь должен иметь возможность указать другую площадь. Просто по умолчанию ставится заранее определеноое значение.
Автор пусть попробует как нарисовано в "Валерыч 10.09.2008 10:02:55"
у меня именно так все и работет
+
59. AVARY 175 10.09.08 11:24 Сейчас в теме
>Я тебе по секрету скажу: логику запросов и многое другое в 8-ке придумали люди с вывихнутым моском, так что, не
>обращай внимания winking smiley мы семерочники, мы привыкли думать, вот нам и сложно иногда бывает.

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

>Разбираться в запросах 1С ников.... это полный мрак.

По этому поводу наверно для многих 1с-ников будет открытием то, что между строк текста запроса можно вставлять очень даже содержательные комментарии! :)))
+
60. WiseSnake 1519 10.09.08 11:29 Сейчас в теме
Лишние возможности пользователю... Лишняя головная боль тебе! (проверено на опыте)
+
61. WiseSnake 1519 10.09.08 11:32 Сейчас в теме

>По этому поводу наверно для многих 1с-ников будет открытием то, что между строк текста запроса можно вставлять очень даже >содержательные комментарии! smiling smiley))

Да но нафига их вставлять если они все равно снесутся после использования конструктора ;).
+
62. AVARY 175 10.09.08 11:56 Сейчас в теме
Действительно, нафига чего-то хотеть, добиваться - мы все умрем. Раскрою еще один секрет: после того как конструктор удалит комментарии их можно написать заново, с учетом проделанных изменений!
+
63. nensy 10.09.08 15:15 Сейчас в теме
Валерыч, и правда ведь! Ра-бо-та-ет!!! Всё гениальное - просто.
+
64. WiseSnake 1519 10.09.08 16:02 Сейчас в теме
>Действительно, нафига чего-то хотеть, добиваться - мы все умрем. Раскрою еще один секрет: после того как конструктор удалит >комментарии их можно написать заново, с учетом проделанных изменений!

Раскрою и тебе секрет!
В своем посте выше я имел 1с ников не всех а те которые сидят в 1С! Я вообще против изменения типовой конфы по этому и писать комментарии за 1Сников (которые сидят в 1С) не собираюсь... а так как я не видел ни одного комментария в их запросах то и вывод напрашивается сам. К тому же Ты видел запросы например в ЗУП? эдак так на 50 экранных страниц? и если в них будут еще и комментарии которые каждый раз надо будет записывать заново......... то обновлений от 1С мы воооообще никада не дождемся !! ))))))))))))
+
65. nensy 11.09.08 07:06 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот