Изменение ТЗ справочника = изменение Регистра

1. TopZlodey 13 15.06.18 11:13 Сейчас в теме +1 $m
Всем доброго времени суток, есть у меня следующий код вызываемый процедурой ПриИзменении:
ТекущиеДанные = Элементы.ТаблицаРесурсыИзделия.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;

ПризнакОсновногоРесурса = ТекущиеДанные.ПризнакОсновногоРесурса;

Для Каждого СтрокаТЧ Из ТаблицаРесурсыИзделия Цикл
СтрокаТЧ.ПризнакОсновногоРесурса = Ложь;
КонецЦикла;

Код не дает пользователю выставлять два значения типа: Булево (флажок) в колонке табличной части. Но столкнулся с тем что в ТЗ у меня фактически отображается Регистр сведений, который приповторном открытии справочника отображает и убранные флажки и новый.
Вопрос: как можно это исправить? (чтобы при изменении данные изменялись и в регистре)
P.S. В 1С новенький, если возможно то желательно кодом.
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
27. гаврюша 2 15.06.18 14:04 Сейчас в теме +1 $m
(26) Если у тебя уже записаны две записи, они в одну не превратятся. Очисти отбор, потом запиши новый:

РС = РегистрыСведений.Ресурсы.СоздатьНаборЗаписей(); 
РС.Отбор.Изделие.Установить(СтрокаТЧ.Изделие); 
РС.Отбор.РесурсыИзделия.Установить(СтрокаТЧ.РесурсыИзделия); 
РС.Прочитать(); 
РС.Очистить();

Для Каждого Строка Из ТекущиеДанные Цикл 
  СтрокаРС = РС.Добавить();
  СтрокаРС.Изделие = Строка.Изделие;
  СтрокаРС.РесурсыИзделия = Строка.РесурсыИзделия
     Для всех - ЕдиницыИзмерения,СпособыХранения,СрокСлужбы,СрокХранения,УстановленныйРесурс,ПризнакОсновногоРесурса,Примечание
  СтрокаРС.ПризнакОсновногоРесурса = Ложь; 
КонецЦикла; 
РС.Записать();
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Radkt 15.06.18 11:37 Сейчас в теме
У ТЧ должен быть тип РегистрНакопления(или другой)НаборЗаписей.ИмяРегистра
+
4. TopZlodey 13 15.06.18 11:40 Сейчас в теме
(2) Немного не понял, у меня таблица значений а не табличная часть.
Вы предлагаете через проверку сделать по набору записей?
+
3. Radkt 15.06.18 11:37 Сейчас в теме
При записи документа изменения сами запишутся
+
5. пользователь 15.06.18 11:59
Сообщение было скрыто модератором.
...
6. пользователь 15.06.18 12:12
Сообщение было скрыто модератором.
...
7. гаврюша 2 15.06.18 12:24 Сейчас в теме
ПризнакОсновногоРесурса - в РС это ресурс или измерение?
РС непериодический? не подчинен регистратору?
+
8. TopZlodey 13 15.06.18 12:27 Сейчас в теме
(7) ПризнакОсновногоРесурса это ресурс, РС непериодический, регистраторов нет.
+
9. гаврюша 2 15.06.18 12:29 Сейчас в теме
Какие реквизиты в измерениях?
+
10. TopZlodey 13 15.06.18 12:32 Сейчас в теме
(9) Изделие,РесурсыИзделия,ЕдиницыИзмерения,СпособыХранения,СрокСлужбы,СрокХранения,УстановленныйРесурс,ПризнакОсновногоРесурса,Примечание
+
11. TopZlodey 13 15.06.18 12:32 Сейчас в теме
(9)Изделие,РесурсыИзделия - это измерения
+
12. гаврюша 2 15.06.18 13:00 Сейчас в теме
Было по отбору в РС: https://forum.infostart.ru/forum9/topic53989/
посмотрите. Должно подойти.

Для Каждого СтрокаТЧ Из ТаблицаРесурсыИзделия Цикл 

  РС = РегистрыСведений.ВашРС.СоздатьНаборЗаписей();
  РС.Отбор.Изделие.Установить(СтрокаТЧ.Изделие);
  РС.Отбор.РесурсыИзделия.Установить(СтрокаТЧ.РесурсыИзделия);
  РС.Прочитать();

  Для Каждого Строка Из РС Цикл
        СтрокаТЧ.ПризнакОсновногоРесурса = Ложь;	
  КонецЦикла;
  РС.Записать();
КонецЦикла;
Показать
+
13. TopZlodey 13 15.06.18 13:08 Сейчас в теме
(12) Не дает обращаться к регистру:

{Справочник.ЭФО.Форма.ФормаЭлемента.Форма(590,7)}: Переменная не определена (РегистрыСведений)
РС = <<?>>РегистрыСведений.Ресурсы.СоздатьНаборЗаписей(); (Проверка: Тонкий клиент)
+
15. Timur.V 78 15.06.18 13:14 Сейчас в теме
(13) Наверно его нужно выполнять на сервере, а вы запускаете на клиенте.
Посмотрите, что у вас написано над процедурой? &НаСервере
+
18. гаврюша 2 15.06.18 13:22 Сейчас в теме
(13) Все что касается изменения данных делается на сервере:
&НаСервере или &НаСервереБезКонтекста
см (16) примерно так
+
14. гаврюша 2 15.06.18 13:11 Сейчас в теме
Это нужно делать на сервере.
+
17. TopZlodey 13 15.06.18 13:22 Сейчас в теме
(14) Для Каждого СтрокаТЧ Из ТаблицаРесурсыИзделия Цикл а здесь должно быть значение ТЗ?
+
19. гаврюша 2 15.06.18 13:25 Сейчас в теме
(17) Значения у вас в СтрокаТЧ
СтрокаТЧ.Изделие и т.д.
+
16. гаврюша 2 15.06.18 13:21 Сейчас в теме
&На клиенте
Процедура ПриИзменении() 
ТекущиеДанные = Элементы.ТаблицаРесурсыИзделия.ТекущиеДанные; 
Если ТекущиеДанные = Неопределено Тогда 
Возврат;	
КонецЕсли; 

ВыполнитьСервер(ТекущиеДанные);

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыполнитьСервер(ТекущиеДанные);
   Для Каждого СтрокаТЧ Из ТекущиеДанные Цикл 

  РС = РегистрыСведений.ВашРС.СоздатьНаборЗаписей();
  РС.Отбор.Изделие.Установить(СтрокаТЧ.Изделие);
  РС.Отбор.РесурсыИзделия.Установить(СтрокаТЧ.РесурсыИзделия);
  РС.Прочитать();

  Для Каждого Строка Из РС Цикл
        СтрокаТЧ.ПризнакОсновногоРесурса = Ложь;    
  КонецЦикла;
  РС.Записать();
КонецЦикла;
КонецПроцедуры
Показать
+
20. TopZlodey 13 15.06.18 13:27 Сейчас в теме
(16) Не работает, в ТЗ так же все отрабатывает, но в регистре запоминает все значения.
+
22. TopZlodey 13 15.06.18 13:31 Сейчас в теме
(16) Может быть я не правильно понял, РС это ведь просто переменная? Или нужно было указывать РегистрСведений.Ресурсы?
+
23. гаврюша 2 15.06.18 13:33 Сейчас в теме
(22) РС = РегистрыСведений.Ресурсы.СоздатьНаборЗаписей();

РС - это переменная для набора записей с которым Вы работаете
+
21. гаврюша 2 15.06.18 13:29 Сейчас в теме
Очисть отбор перед добавлением:
РС.Прочитать();
РС.Очистить();
РС.Добавить();
+
24. TopZlodey 13 15.06.18 13:33 Сейчас в теме
(21) Это перед записью?
+
25. гаврюша 2 15.06.18 13:39 Сейчас в теме
(24) Не нужно очищать.
Немного ошиблась. Попробуй

Для Каждого Строка Из РС Цикл
Строка.ПризнакОсновногоРесурса = Ложь; (Вместо СтрокаТЧ)
КонецЦикла;
РС.Записать(Истина);
+
26. TopZlodey 13 15.06.18 13:43 Сейчас в теме
(25) Спасибо огромное за помощь, но в регистре все равно остаются записаны и прошлая галочка и новая.
+
27. гаврюша 2 15.06.18 14:04 Сейчас в теме +1 $m
(26) Если у тебя уже записаны две записи, они в одну не превратятся. Очисти отбор, потом запиши новый:

РС = РегистрыСведений.Ресурсы.СоздатьНаборЗаписей(); 
РС.Отбор.Изделие.Установить(СтрокаТЧ.Изделие); 
РС.Отбор.РесурсыИзделия.Установить(СтрокаТЧ.РесурсыИзделия); 
РС.Прочитать(); 
РС.Очистить();

Для Каждого Строка Из ТекущиеДанные Цикл 
  СтрокаРС = РС.Добавить();
  СтрокаРС.Изделие = Строка.Изделие;
  СтрокаРС.РесурсыИзделия = Строка.РесурсыИзделия
     Для всех - ЕдиницыИзмерения,СпособыХранения,СрокСлужбы,СрокХранения,УстановленныйРесурс,ПризнакОсновногоРесурса,Примечание
  СтрокаРС.ПризнакОсновногоРесурса = Ложь; 
КонецЦикла; 
РС.Записать();
Показать
+
29. TopZlodey 13 15.06.18 14:18 Сейчас в теме
(27)
Для всех - ЕдиницыИзмерения,СпособыХранения,СрокСлужбы,СрокХранения,УстановленныйРесурс,ПризнакОсновногоРесурса,Примечание


Что это?
+
32. гаврюша 2 15.06.18 15:06 Сейчас в теме
(29) Для каждого реквизита заполнение:
СтрокаРС. ... = Строка. ...
+
30. пользователь 15.06.18 14:29
Сообщение было скрыто модератором.
...
28. TopZlodey 13 15.06.18 14:11 Сейчас в теме
(25) Извините, нашел в чем проблема (моя ошибка). Но тем не менее теперь другая ошибка.
+
31. пользователь 15.06.18 14:30
Сообщение было скрыто модератором.
...
Внимание! Тема сдана в архив

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