Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

Проверка данных ТЗ и их запись в РС
Я
   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, спасибо за помощь, разабрался сам, извините за потраченное время.

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