Вход | Регистрация

1С:Предприятие ::

Метки: 

Проверка данных ТЗ и их запись в РС

Я
   MIF_HELM
 
18.06.18 - 10:04
Здравствуйте, написал код:

Процедура РесурсыИзделияПризнакОсновногоРесурсаПриИзменении(Элемент)

ТекущиеДанные = Элементы.ТаблицаРесурсыИзделия.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;

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

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

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

РесурсыИзделияПризнакОсновногоРесурсаПриИзмененииНаСервере(СтруктураЗаписи);

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


&НаСервереБезКонтекста
Процедура РесурсыИзделияПризнакОсновногоРесурсаПриИзмененииНаСервере(СтруктураЗаписи);

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

Для Каждого Строка Из СтруктураЗаписи Цикл
СтрокаРС = РС.Добавить();
СтрокаРС.Изделие = СтруктураЗаписи.Изделие;
СтрокаРС.РесурсыИзделия = СтруктураЗаписи.РесурсыИзделия;
СтрокаРС.ЕдиницыИзмерения = СтруктураЗаписи.ЕдиницыИзмерения;
СтрокаРС.СпособыХранения = СтруктураЗаписи.СпособыХранения;
СтрокаРС.СрокСлужбы = СтруктураЗаписи.СрокСлужбы;
СтрокаРС.СрокХранения = СтруктураЗаписи.СрокХранения;
СтрокаРС.УстановленныйРесурс = СтруктураЗаписи.УстановленныйРесурс;
СтрокаРС.ПризнакОсновногоРесурса = СтруктураЗаписи.ПризнакОсновногоРесурса;
СтрокаРС.Примечание = СтруктураЗаписи.Примечание;
СтруктураЗаписи.ПризнакОсновногоРесурса = Ложь;
КонецЦикла;



РС.Записать();


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

В идеале при выставлении пользователем в колонке типа Булево "флажка" (ПризнакОсновногоРесурса) все остальные значения колонки снимаются, после чего всё записываются в специально отведенный РС. Но столкнулся с проблемами:
1) Программа пытается, но не может записать строку которую изменяет пользователь (выдает ошибку на тему того что запись с такими полями уже существует)
2) Так и не записывает данные в РС.
Помогите решить как это исправить.
 
 
   formista2000
 
1 - 18.06.18 - 10:07
(0) Проверить состав данных и измерения РС для начала - дубликаты попадаются вестимо!
   MIF_HELM
 
2 - 18.06.18 - 10:10
Да, я тоже это понял, но не могу понять как мне добавить его в исключения, хотел через НайтиПоИдентификатору(ТекущаяСтрока);
Но процедура не может понять значение ТекущаяСтрока и тут я встрял.
   hhhh
 
3 - 18.06.18 - 10:27
(2) вроде тут нигде нет ТекущаяСтрока ??
   formista2000
 
4 - 18.06.18 - 10:29
НЕ
Для Каждого Строка Из СтруктураЗаписи Цикл
СтрокаРС = РС.Добавить();
СтрокаРС.Изделие = СтруктураЗаписи.Изделие;
А
Для Каждого Строка Из СтруктураЗаписи Цикл
СтрокаРС = РС.Добавить();
СтрокаРС.Изделие = Строка.Изделие;
!!!
   MIF_HELM
 
5 - 18.06.18 - 10:30
Вот так пытался добавить:
Если ТаблицаРесурсыИзделия.НайтиПоИдентификатору(ТекущаяСтрока) Тогда
     РесурсыИзделияПризнакОсновногоРесурсаПриИзмененииНаСервере(СтруктураЗаписи);
КонецЕсли;

Но тогда выдает ошибку:
{Справочник.ЭФО.Форма.ФормаЭлемента.Форма(588)}: Значение не является значением объектного типа (ТекущаяСтрока)
    ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
   MIF_HELM
 
6 - 18.06.18 - 10:31
formista2000, если писать так, то 1С не может определить переменную.
   formista2000
 
7 - 18.06.18 - 10:35
(6) Ты в цикле по полям структуры ходишь, твоя переменная Строка - поле структуры. А надо передавать таблицу, чтобы Строка содержала поля таблицы и брать данные из её реквизитов.
   MIF_HELM
 
8 - 18.06.18 - 10:38
formista2000, а как это сделать? Просто я в 1С еще новенький.
   hhhh
 
9 - 18.06.18 - 10:41
(8) что такое ТекущаяСтрока у тебя? Откуда она вылезла?
   MIF_HELM
 
10 - 18.06.18 - 11:36
hhhh, с помощью нее хотел сделать проверку и если это текущая строка то не перезаписывать её значение (не получилось)
 
 Рекламное место пустует
   hhhh
 
11 - 18.06.18 - 12:11
(10) вообще вот тут непонятно
Для Каждого Строка Из СтруктураЗаписи Цикл

СтруктураЗаписи это же структура, откуда у нее строки вдруг появились?
   MIF_HELM
 
12 - 18.06.18 - 12:25
hhhh, если честно еще не настолько хорошо знаю 1С чтобы понимать откуда, но так понимаю что после вот этого кода:
СтруктураЗаписи = Новый Структура("Изделие,РесурсыИзделия,ЕдиницыИзмерения,СпособыХранения,СрокСлужбы,СрокХранения,УстановленныйРесурс,ПризнакОсновногоРесурса,Примечание");
СтруктураЗаписи.Вставить("Изделие", Объект.Ссылка);
ЗаполнитьЗначенияСвойств(СтруктураЗаписи, ТекущиеДанные);

В структуре есть все нужные строки ТЗ.
   hhhh
 
13 - 18.06.18 - 12:45
(12) там вообще нет строк. От слова совсем. Ничего с неба не появляется по воле господа. В вашей программе нет добавления строк. Значит их нет.
   hhhh
 
14 - 18.06.18 - 12:47
(12) вы вообще программист?
   MIF_HELM
 
15 - 18.06.18 - 13:52
hhhh, спасибо за помощь, разабрался сам, извините за потраченное время.


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует