Форум программистов, компьютерный форум, киберфорум
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. Показов 28102. Ответов 63
Метки нет (Все метки)

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

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

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

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

63
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
20.05.2016, 22:28
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от nastena_r_v Посмотреть сообщение
но можно без сарказма и ехидничества
непонятно, к чему это. были прецеденты?



nastena_r_v, а как связаны справочники Должности и Компетенции? В справочнике Должности есть табличная часть с Компетенциями?
Что представляет из себя табличное поле с компетенциями? Это может быть просто таблица значений, заполняемая при открытии справочника.
0
20.05.2016, 22:31

Не по теме:

GreenkA, Привет! Ты чего спряталась то?

0
20.05.2016, 22:33

Не по теме:

Dethmontt, привет) ну ты ж меня видишь, и норм:D

0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
21.05.2016, 07:56  [ТС]
GreenkA, Хорошо, попробую отбор. Типа такого условия добавить в запрос?:
1C
1
2
3
ВЫБОР 
КОГДА ДолжностныеКомпетенцииРаботниковСрезПоследних.Действие = Перечисления.ВидыДействияСНачислением.Прекратить ТОГДА Очистить()
КОНЕЦ
Только я сомневаюсь в его правильности. Потому что программа не видит Перечисление. И в методе очистить я тоже сомневаюсь ))

Цитата Сообщение от GreenkA Посмотреть сообщение
покажите код заполнения табличного поля из регистра и записи в регистр.
В принципе я нчего не меняла из Вашего, добавила только 2 новых поля
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Процедура ЗаполнитьТаблицуКомпетенций()
    ТабличноеПоле1.Очистить();
    Запрос = Новый Запрос("ВЫБРАТЬ
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Должность,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Компетенция,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Период,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Действие,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Периодичность
                          |ИЗ
                          | РегистрСведений.ДолжностныеКомпетенцииРаботников.СрезПоследних(, Должность = &Должность) КАК ДолжностныеКомпетенцииРаботниковСрезПоследних");
    Запрос.УстановитьПараметр("Должность", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();    Пока Выборка.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ТабличноеПоле1.Добавить(), Выборка);       
    КонецЦикла;
                          
КонецПроцедуры

При записи, если у меня изменено только действие, то программа даже не заходит в цикл. С массивом что-то?

1C
1
2
3
4
5
6
7
8
9
10
11
12
Процедура ПриЗаписи(Отказ)
     ИзмененныеСтрокиТаблицы = ТабличноеПоле1.НайтиСтроки(Новый Структура("МеткаИзменения",Истина));
    Для к = 0 по ИзмененныеСтрокиТаблицы.Количество() - 1 Цикл
        НоваяЗапись = РегистрыСведений.ДолжностныеКомпетенцииРаботников.СоздатьМенеджерЗаписи();
        НоваяЗапись.Компетенция = ИзмененныеСтрокиТаблицы[к].Компетенция;
        НоваяЗапись.Период = ИзмененныеСтрокиТаблицы[к].Период;
    НоваяЗапись.Действие = ИзмененныеСтрокиТаблицы[к].Действие;
    НоваяЗапись.Должность = Ссылка;
    НоваяЗапись.Записать();
    КонецЦикла;  
    
КонецПроцедуры
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
21.05.2016, 08:02  [ТС]

Не по теме:

Цитата Сообщение от GreenkA Посмотреть сообщение
непонятно, к чему это. были прецеденты?
Да бывает иногда, как-будто все рождаются сразу умными... :)



Цитата Сообщение от GreenkA Посмотреть сообщение
а как связаны справочники Должности и Компетенции? В справочнике Должности есть табличная часть с Компетенциями?
Что представляет из себя табличное поле с компетенциями? Это может быть просто таблица значений, заполняемая при открытии справочника.

Не по теме:

Эта задача - продолжение после темы с добавлением данных из справочника в регистр сведений, структура справочника как описана в той теме, если помните.



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

про отбор вы не так поняли, я имела ввиду в самом запросе в условиях, обращаться к перечислениям можно через ЗНАЧЕНИЕ():
1C
1
2
3
4
5
6
7
8
Запрос = Новый Запрос("ВЫБРАТЬ
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Должность,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Компетенция,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Период,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Действие,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Периодичность
                          |ИЗ
                          | РегистрСведений.ДолжностныеКомпетенцииРаботников.СрезПоследних(, Должность = &Должность И Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)) КАК ДолжностныеКомпетенцииРаботниковСрезПоследних");
и дальше заполняете ваше табличное поле выборкой этого запроса.
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
21.05.2016, 13:34

Не по теме:

Цитата Сообщение от nastena_r_v Посмотреть сообщение
Да бывает иногда, как-будто все рождаются сразу умными...
Что-то смотрю, вы в последнее время только в 1С посты создаете, и я на них отвечаю. Это намек?


Не по теме:


Цитата Сообщение от nastena_r_v Посмотреть сообщение
Эта задача - продолжение после темы с добавлением данных из справочника в регистр сведений, структура справочника как описана в той теме, если помните.
Тогда ни к чему было создавать новую тему. На форуме не только я читаю темы и отвечаю...



Цитата Сообщение от nastena_r_v Посмотреть сообщение
В справочнике - это табличное поле. заполняемое данными при открытии из регистра.
Как у вас будут связаны выбранные должности и выбранные компетенции? Например вы создадите в обработке два списка: в одном пользователь выберет нужные должности, во втором компетенции. И как дальше? - для каждой должности надо записать все выбранные компетенции? Или должен быть какой-то ключ связи?(ключевое поле).
Вообще идею я вам уже рассказала: два списка значений, типа Должности и типа Компетенции. По кнопке создаем записи в регистр, как из справочника Должности при изменении табличного поля.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
21.05.2016, 16:16  [ТС]
GreenkA, c отбором спасибо, я думала в условии просто поставить, по Вашему примеру- получилось.
А вот на счет периода... Вы правы, это из-за него. Но бывает же, что надо чтоб записывались данные и за прошлый период. А так не получится... (((

Добавлено через 14 секунд
GreenkA, c отбором спасибо, я думала в условии просто поставить, по Вашему примеру- получилось.
А вот на счет периода... Вы правы, это из-за него. Но бывает же, что надо чтоб записывались данные и за прошлый период. А так не получится... (((
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
21.05.2016, 16:54
Цитата Сообщение от nastena_r_v Посмотреть сообщение
и за прошлый период. А так не получится... (((
суть не в том, что период нельзя выставить не ТекущейДатой(), а в том почему записи не добавляются, а перезаписываются: записи с такими же ключевыми полями уже есть - именно с таким Период и набором Измерений.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
21.05.2016, 19:44  [ТС]
GreenkA, ага, поняла. тогда как быть, чтоб при изменении существующих, дабавлялись записи не с ТекущаяДата () а с той, которая стоит в этой строке?
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
21.05.2016, 20:29
nastena_r_v, если записи с такими же ключевыми полями и периодом уже есть - ничего не сделаете.
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
21.05.2016, 20:33  [ТС]
GreenkA, понятно. Спасибо. И на счет того, что компетенцию сделать ресурсом, для отображения последних записей при открытии, Вы правы. Все-таки надо делать ресурсом. У меня сейчас стоит измерением, буду менять.
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
22.05.2016, 21:16  [ТС]
GreenkA, изменила я компетенцию на ресурс. и да, данный берутся по срезу последних.Но вот теперь какая незадача. Прикрепила скрин. По скрину видно, что последнее действие у грамотной и хорошо поставленной речи - прекратить, а программа все-равно видит, его как "Начать", хотя по логике конечно эта компетенция отображаться не должна. Как это можно исправить?
Миниатюры
Добавление данных из справочника в регистр сведений  
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
22.05.2016, 21:22
nastena_r_v, а на какую дату вы берете срез последних? покажите запрос.

Добавлено через 53 секунды
все, я поняла. В запросе в параметрах виртуальной таблицы уберите условию по Действию. А уже в Условиях в конструкторе - добавьте.

Добавлено через 53 секунды
1C
1
2
3
4
5
6
7
8
9
10
Запрос = Новый Запрос("ВЫБРАТЬ
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Должность,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Компетенция,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Период,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Действие,
                          | ДолжностныеКомпетенцииРаботниковСрезПоследних.Периодичность
                          |ИЗ
                          | РегистрСведений.ДолжностныеКомпетенцииРаботников.СрезПоследних(, Должность = &Должность) КАК ДолжностныеКомпетенцииРаботниковСрезПоследних
| ГДЕ
| ДолжностныеКомпетенцииРаботниковСрезПоследних.Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)");
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
06.06.2016, 20:39  [ТС]

Не по теме:

Цитата Сообщение от GreenkA Посмотреть сообщение
Что-то смотрю, вы в последнее время только в 1С посты создаете, и я на них отвечаю. Это намек?
Нет конечно :) просто бывает, когда обращаешься с вопросом, а люди начинают сразу умничать, нет чтоб лучше дельнм советом помочь. Книги учат конечно, но всех нюансов в них не учтешь.


Цитата Сообщение от GreenkA Посмотреть сообщение
Вообще идею я вам уже рассказала: два списка значений, типа Должности и типа Компетенции. По кнопке создаем записи в регистр, как из справочника Должности при изменении табличного поля.
2 списка значений, т.е. я создаю два табличных поля, в одном справочник должности, во втором компетенции. На счет создания записей в регистре не очень понятно. Получается надо сделать выборку? как и в справочнике должности? и так же через массив создавать новые записи? Или нет?
И еще вопрос, а как сделать множественный выбор по должностям?
Немного не понятен сам механизм.
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
07.06.2016, 20:25  [ТС]
Множественный выбор разобралась как сделать, форма получилась такой как на скрине. Подскажите, как можно сделать заполнение выбранных должностей (в табличном поле слева) по выбранным компетенциям (в табличном поле справа)
Миниатюры
Добавление данных из справочника в регистр сведений  
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
07.06.2016, 21:08
nastena_r_v, а выложите вашу обработку, чтобы сразу было, на чем тестить.
0
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
07.06.2016, 21:16  [ТС]
GreenkA, да конечно, но это только форма пока что ))
Вложения
Тип файла: rar ЗаполнениеКомпетенциями.rar (4.2 Кб, 2 просмотров)
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
08.06.2016, 21:54
nastena_r_v,
1C
1
2
3
4
5
6
7
8
9
10
11
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
    Для Каждого ТекДолжность Из ЭлементыФормы.Должности.ВыделенныеСтроки Цикл
        Для Каждого ТекКомпетенция Из ЭлементыФормы.Компетенции.ВыделенныеСтроки Цикл
            ЗаписьРегистра = РегистрыСведений.ДолжностныеКомпетенцииРаботников.СоздатьМенеджерЗаписи();
            ЗаписьРегистра.Период = ТекущаяДата();
            ЗаписьРегистра.Должность = ТекДолжность;
            ЗаписьРегистра.Компетенция = ТекКомпетенция;
            ЗаписьРегистра.Записать();
        КонецЦикла;   
    КонецЦикла;   
КонецПроцедуры
1
 Аватар для nastena_r_v
47 / 47 / 1
Регистрация: 03.05.2012
Сообщений: 266
09.06.2016, 06:51  [ТС]
GreenkA, проверила на оригинальной базе. Работает Ваш код. А вот если принять во внимание все изменения, которые Вы помогли мне сделать, то получается так, что допустим я добавляю для одной должности компетенцию, а в итоге она потом отображается во всех должностях.
Допустим, кладовщику добавлю Самоконтроль, и потом он у всех будет.
И в Код я добавила еще 2 строки.
1C
1
2
            ЗаписьРегистра.Компетенция1 = ТекКомпетенция;//Компетенция1 это измерение, которое и существовало изначально, я его переименовала просто.
            ЗаписьРегистра.Действие = Перечисления.ВидыДействияСНачислением.Начать;
На первом скрине, то, что я выбрала в обработке, на втором запись, попавшая в регистр сведений, на третьем показываю, что в других должностях отображается то, что в принципе не должно было попасть, так как в записях другие должности
Миниатюры
Добавление данных из справочника в регистр сведений   Добавление данных из справочника в регистр сведений   Добавление данных из справочника в регистр сведений  

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2016, 06:51

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Часы электронные
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 Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru