Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/120: Рейтинг темы: голосов - 120, средняя оценка - 4.95
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
1C 8.x

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

10.05.2016, 20:23. Показов 28111. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru