Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
1C 8.x

Добавление данных из справочника в регистр сведений

10.05.2016, 20:23. Показов 28198. Ответов 63
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем, вопрос конечно я думаю для профи - легкий, но для новичка (для меня) - не понятен.*
Конфигурация УПП. Есть справочник Должности и регистр сведений ДолжностныеКомпетенцииРабтоников. В справочнике в табличное поле добавляются данные о компетенциях,эти данные записываются в регистр сведений, если допустим уже созданную строку изменить, то в регистре она соответственно тоже изменится, а не добавится новая. Регистр был не периодический, сделала периодичным в пределах дня. Вопрос: как сделать, чтоб при изменении строки с данными компетенции в справочнике, в регистр сведений добавлялась новая строка, а не изменялась предыдущая.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.05.2016, 20:23
Ответы с готовыми решениями:

Табличная часть справочника и регистр сведений
Здравствуйте. Пытаюсь при закрытии элемента справочника записать значения из табличной части в регистр сведений. 1. Записывает...

Регистр сведений «Списанные материалы из эксплуатации». Почему регистр сведений, а не регистр накопления?
Существует Регистр сведений «Списанные материалы из эксплуатации». Регистр сведений предназначен для отражения данных, необходимых при...

Регистр сведений. Добавление записи
Есть независимый, непериодический регистр сведений. Добавляю запись Стр=Справочники.ВерсииФайлов.НайтиПоНаименованию(ЦН); //Сообщить...

63
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
12.05.2016, 20:08  [ТС]
Студворк — интернет-сервис помощи студентам
GreenkA, Я изменяла Должностные компетенции, Вы правы. Этот регистр используется только в этом справочнике и в документе Аттестация сотрудников, но это не критично. Ну можно я думаю и сделать компетенции ресурсом.
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
12.05.2016, 20:11  [ТС]
Действие - перечисления.ВидыДействияСНачислением, Периодичность - строка
Миниатюры
Добавление данных из справочника в регистр сведений  
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
12.05.2016, 20:12
Лучший ответ Сообщение было отмечено nastena_r_v как решение

Решение

nastena_r_v, так какая структура регистр теперь? может и не надо ничего изменять.
Короче пример кода. Только измените запрос под ваш регистр. Добавьте в ТабличноеПоле1 колонку МеткаИзменения, тип Булево, в свойствах уберите видимость:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Процедура ПриОткрытии()
//тут весь ваш другой код
//..
    ЗаполнитьТаблицуКомпетенций();
КонецПроцедуры // ПриОткрытии()
 
Процедура ЗаполнитьТаблицуКомпетенций()
    ТабличноеПоле1.Очистить();
//в запросе выберите все нужные поля
    Запрос = Новый Запрос("ВЫБРАТЬ
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Должность,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Компетенция,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Период
                          |ИЗ
                          | РегистрСведений.ДолжностныеКомпетенцииРаботников.СрезПоследних(, Должность = &Должность) КАК ДолжностныеКомпетенцииРаботниковСрезПоследних");
    Запрос.УстановитьПараметр("Должность", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ТабличноеПоле1.Добавить(), Выборка);       
    КонецЦикла;
                          
КонецПроцедуры
 
//при изменении ТабличноеПоле1 - меняем метку строки
Процедура ТабличноеПоле1ПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    ТекущаяСтрока = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
    Если ТекущаяСтрока <> Неопределено Тогда
        ТекущаяСтрока.МеткаИзменения = Истина;
    КонецЕсли;
КонецПроцедуры
 
Процедура ПриЗаписи(Отказ)
    ИзмененныеСтрокиТаблицы = ТабличноеПоле1.НайтиСтроки(Новый Структура("МеткаИзменения",Истина));
    Для к = 0 по ИзмененныеСтрокиТаблицы.Количество() - 1 Цикл
        НоваяЗапись = РегистрыСведений.ДолжностныеКомпетенцииРаботников.СоздатьМенеджерЗаписи();
        НоваяЗапись.Компетенция = ИзмененныеСтрокиТаблицы[к].Компетенция;
        НоваяЗапись.Должность = Ссылка;
        НоваяЗапись.Период = ТекущаяДата();
        НоваяЗапись.Записать();
    КонецЦикла;
КонецПроцедуры
Добавлено через 51 секунду
nastena_r_v, перенесите все реквизиты в ресурсы хотя бы. Реквизиты носят только информационный характер.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
12.05.2016, 20:35  [ТС]
GreenkA, спасибо большое. Но все-таки для чего эта метка, я не понимаю.

Добавлено через 10 минут
GreenkA, и в процедуре при записи в цикл не попадает, и соответственно данные в регистр не записываются
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
12.05.2016, 20:36
Лучший ответ Сообщение было отмечено nastena_r_v как решение

Решение

nastena_r_v, ну у вас будет таблица заполняться данными из регистра и без метки будут каждый раз перезаписываться все строки таблицы, даже если их не меняли. А вам надо только новые строки записывать в регистр и измененные
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
12.05.2016, 20:42  [ТС]
GreenkA, все-равно в цикл не попадает.
С массивами не очень разбираюсь
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
12.05.2016, 21:13
nastena_r_v, а вы меняли таблицу? Связали событие ПриОкончанииРедактирования() ТабличноеПоле1 с кодом процедуры выставления Метки в Истину?
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
13.05.2016, 08:58  [ТС]
GreenkA, да да, разобралась уже в чем проблема была. Спасибо большое. Буду дальше модифицировать код

Добавлено через 11 часов 28 минут
GreenkA, подскажите, на счет ресурса по компетенции. Стоит это изменять? Надо измерение компетенции делать ресурсом, и если да, то почему?
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
13.05.2016, 09:44
nastena_r_v, а почему вы делали регистр периодическим? Для того, чтобы был доступен СрезПоследних? СрезПоследних дает последние записи(со значениями ресурсов) на дату по каждому набору измерений, т.е. при отсутствии ресурсов нет смысла в СрезеПоследних.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
13.05.2016, 10:53  [ТС]
GreenkA, да, для этого. Но я не меняла компетенции на ресурс, и последнее значение берется.
и еще, что дает галка основной отбор по периоду в регистре?
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
13.05.2016, 13:23
Цитата Сообщение от nastena_r_v Посмотреть сообщение
и еще, что дает галка основной отбор по периоду в регистре?
Основной отбор у регистра сведений

Цитата Сообщение от nastena_r_v Посмотреть сообщение
Но я не меняла компетенции на ресурс, и последнее значение берется.
Последнее значение чего? Компетенции по Должности? Одна запись только?
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
15.05.2016, 08:13  [ТС]
GreenkA, да, компетенции по должности. Ну если я одну добавила или изменила, то да.
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
15.05.2016, 08:44
nastena_r_v, все-равно не понимаю, зачем регистр без ресурсов делать периодическим...
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
15.05.2016, 12:37  [ТС]
GreenkA, Ладно, с этим разберусь. Подскажите еще пожалуйста. В процедуру при открытии добавляю код:
1C
1
2
3
4
СтрокаТП = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
    Если СтрокаТП.Действие = Перечисления.ВидыДействияСНачислением.Прекратить Тогда
        СтрокаТП.Очистить();
    КонецЕсли;
При отладке, говорит, что СтрокаТП.Действие - Значение не является значением объектного типа. Почему?
Хочу сделать: что при открытии, если у строки колонка дествие - прекратить, то ее не отображать.
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
15.05.2016, 12:39
nastena_r_v, проверяйте на СтрокаТП <> Неопределено.
ТекущиеДанные - определено для текущей активной строки. При открытии у вас не будет активной строки, стало быть ТекущиеДанные = Неопределено.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
15.05.2016, 20:23  [ТС]
GreenkA, то есть поставить условие после присваивания к строкеТП текущих данных, типа Если строкаТП <> неопределено, тогда выполнять дальше? Или я не правильно Вас поняла?
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
15.05.2016, 20:39
nastena_r_v, правильно.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
20.05.2016, 21:55  [ТС]
GreenkA, Здравствуйте, еще раз. У меня по этой же теме к Вам пару вопросов.
1) На мой пост #36, Вы ответили, что это правильно, но почему-то в условие программа даже не заходит, когда на самом деле в поле действие присутствует перечисление Прекратить, и даже не в одной строке. Получилось так:
1C
1
2
3
4
5
Если СтрокаТП <> Неопределено Тогда
        Если СтрокаТП.Действие = Перечисления.ВидыДействияСНачислением.Прекратить Тогда
            СтрокаТП.Очистить();
        КонецЕсли;
    КонецЕсли;
И он не срабатывает, подскажите, может както по другому можно сделать, чтоб если при открытии в полях Действие есть перечисление - прекратить, оно не отображалось.

И второй вопрос
2) как Вы заметили, я добавила еще поле. Действие. Его тип - Перечисления.ВидыДействияСНачислением. Т.е. для компетенции можно выбрать: начать, изменить, прекратить, и т.д.
Если я в уже имеющейся строке в табличном поле справочника изменю поле действие, то оно изменит эту же строку и в регистре, а не добавит новую, как делает это с компетенциями. Почему?
Добавила в выборку это поле, и в процедуру при записи добавила строку:
1C
1
    НоваяЗапись.Действие = ИзмененныеСтрокиТаблицы[к].Действие;
Все-равно не хочет добавлять новое
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
20.05.2016, 22:19
Цитата Сообщение от nastena_r_v Посмотреть сообщение
И он не срабатывает, подскажите, может както по другому можно сделать, чтоб если при открытии в полях Действие есть перечисление - прекратить, оно не отображалось.
при открытии вы же заполняете данными из регистра табличное поле? Почему бы там, в запросе не сделать отбор по действию...

Цитата Сообщение от nastena_r_v Посмотреть сообщение
то оно изменит эту же строку и в регистре, а не добавит новую, как делает это с компетенциями. Почему?
покажите код заполнения табличного поля из регистра и записи в регистр.
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
20.05.2016, 22:19  [ТС]
Здравствуйте, подскажите, как можно реализовать обработку по заполнению выбранных пользователем должностей, табличного поля компетенции справочника "должности", компетенциями?
Объясню понятнее. В справочнике "должности" есть табличное поле с компетенциями, которые есть у данной должности. Надо, отобрать нужные должности, и заполнить их выбранными компетенциями, со справочника - компетенции. Подскажите, как можно сделать? Я пока что не представляю. За ранее Всем спасибо.
П.С. простите за прямоту, но можно без сарказма и ехидничества. Я только учусь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2016, 22:19

Регистр сведений. Ошибка получения данных
Подскажите в чем ошибка? Код из общего модуля Функция РозничнаяЦенаРубли(АктуальнаяДата, ЭлементТовары) Экспорт Отбор =...

Вывод в табличную часть справочника данных из регистра сведений
Здравствуйте! Есть справочник и РС. Надо в табличную часть справочника вывести данные из РС, причем, он должен записывать только те...

Регистр сведений. Регистр накоплений
Здравствуйте! Нужна помощь в создании (и настройки работы) регистра сведений и регистра накопления. Я с трудом могу понять как они...

Регистр сведений
Нужна помощь в оптимизации запроса... есть запрос: Запрос = Новый Запрос; Запрос.Текст = &quot; |ВЫБРАТЬ ...

Регистр сведений
Здравствуйте все!!! Подскажите вот что. Я создал три регистра: ЦеныНоменклатуры, РегистрСведений1 и КурсДенег. Но в разделе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru