Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Связать форму справочника и регистра сведений по физлицу

начинающий программист 1с, стала задача связать форму справочника и регистра сведений по физлицу, обычное приложение,подскажите как это сделать?
Ответ: Глянь как в ут 10.3, в справочнике номенклатура связываются штрихкоды допустим. И по аналогу
Вопрос: добавить ид (номер)в регистр сведений.

Добрый день

Прошу помощи в реализации одного момента по моей задаче.
Есть регистр сведений,статусы заказа в который я пишу Уникальный Идентификатор,тип заказа(в данном случае он пока один).
затем на форму надо выводить будет данные.И не хотелось бы выводить гуид,он же "некрасивый".))
добавить думал счетчик.но получиться когда пользователи будут одновременно нажимать кнопку,по команде которой будут писать данные в РС,может произойти то что счетчик будет одинаковый(совпадет).
подскажите как реализовать данный момент?может какие еще идеи есть?
Ответ: () Постановка задачи хромает на обе ноги.
1) Если у одного заказа (документ) есть статус заказа - то это реквизит документа;
2) Если перечень значений заранее известен (и он ограничен) - то значения статуса указываются в перечислении;
3) Если список статусов не ограничен - то это справочник;
4) Если реквизит документа - периодический (и нужно хранить историю изменений) - то нужен периодический РС (дата, измерение ссылка на документ, значение статуса);
и т.д.

Как видишь сам, в вышеуказанных вариантах нет потребности в уникальном идентификаторе.

Говоря в общем случае, если возникла потребность в уникальном идентификаторе, то это нужно говорить об уникальных объектах, т.е. значения статусов - уникальны. Есть смысл указывать значения непосредственно в реквизите документа, а если нужна периодичность - то значение указывается в виде ссылки на справочник значений статуса.

Вот как-то так :)
Вопрос: Выбрать запись из регистра сведений

Добрый день! На форме обработки есть поле выбора. При нажатии на кнопку выбора появляется форма списка независимого регистра сведений. Как сделать так, чтобы при выборе нужной записи, данные этой записи подгружались в поле выбора?
Ответ: Спасибо большое!))) Разобралась. В процедуру РегистрСведенийСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) добавила код:
1C
1
2
3
4
Стр=Новый Структура;
    Стр.Вставить("Номер",Элемент.ВыделенныеСтроки);
     ОповеститьОВыборе(Стр);
    СтандартнаяОбработка=Ложь;
А потом уже по номеру через запрос вытащила нужный ресурс.
Вопрос: Открытие формы для регистра сведений

Всем добрый день.

Создала регистр сведений "СоответствиеМатериалов". К нему - стандартную Форму списка и произвольную форму ("Форма") для ввода данных.
Находясь на Форме списка по месту нахождения курсора определяю некий ВыбранныйОсновнойМатериал (справочник Номенклатура). И по созданной кнопке "Редактировать" на этой же Форме списка пытаюсь программно открыть форму для ввода элементов так, чтобы реквизит "Формы" Ткань заполнился ПриОткрытии формы значением ВыбранныйОсновнойМатериал.

В Форме списка:
Процедура ДействияФормыРедактировать(Кнопка)
    
    ФормаДляЗаполнения = РегистрыСведений.СоответствиеМатериалов.ПолучитьФорму("Форма");
    ФормаДляЗаполнения.ЭлементыФормы.Ткань = ВыбранныйОсновнойМатериал;
    ФормаДляЗаполнения.Открыть();
    
КонецПроцедуры


В результате ошибка: {РегистрСведений.СоответствиеМатериалов.Форма.ФормаСписка.Форма()}: Поле объекта недоступно для записи (Ткань)
ФормаДляЗаполнения.ЭлементыФормы.Ткань = ВыбранныйОсновнойМатериал; 

Подскажите, пожалуйста, как сделать правильно?
Как сообщить в процедуру ПриОткрытии одной формы значение, полученное в другой форме того же регистра сведений?
Ответ: Всем большое спасибо! Навели на мысль. Все получилось.
Вопрос: Реализация отбора за период в регистре сведений

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&НаСервереБезКонтекста
Процедура Команда1НаСервере()
        
    
        з = РегистрыСведений.ПропущенныеЧасы.Выбрать('00010101','20160526',Отбор,"Студент");
    Всего = 0;                      
    Пока з.Следующий() цикл
        Всего =Всего + з.Всего;     
КонецЦикла;
КонецПроцедуры
 
 
&НаКлиенте
Процедура Команда1(Команда)
    Команда1НаСервере();
    
КонецПроцедуры
В общем-то как видно из отбора , хочу взять часы по студенту , допустим Иванов Иван Иванович он пропустил 20 часов за январь , 20 часов за февраль и т.д , хочу взять все его часы и сложить и добавить в ведомость за пол года , как лучше здесь сделать ? измерение в регистре сведений и по месяцам есть Студент и месяц , ресурс Всего (число общих пропусков , по уважительной и нет), может кто помочь ?
Ответ: А вот можете ещё подсказать, вот у меня есть оценки за семестр итоговые, как мне их записать в личную карту студента , если его имяфамилияотчество не в табличной части , а как реквизит, а в табличной части все предметы по специальности и за все курсы , мне нужно из ведомости за семестр записать оценки в личную карточку, естественно семестр не один всего их 8 , это последнее чтобы я хотел узнать , может можно то же самое сделать что и с регистром накопления , только через регистр сведений ?
Вопрос: История независимого регистра сведений

Доброго всем времени суток.
Возникла жизненная ситуация банальная но жизненная. Есть регистр сведений ФИОФизическихЛиц, как то можно сохранять историю кто какую запись добавлял и кто удалял, а то Физических лиц могут добавлять несколько человек. Один человек добавил запись об изменении Фамилии а другой взял и удалил а потом попробуй докажи кто что сделал и кто виноват. Должно же быть адекватное решение данной проблемы. В объектных данных можно подключить версионирование объектов а в регистрах что делать?
Заранее спасибо.
Ответ:
Ничего не сделаешь, кроме как написать проверку значений всех измерений/ресурсов/реквизитов записи регистра сведений непосредственно перед записью в БД и записывать в журнал регистрации.

Что будет при записи набором с большим количеством записей - думаю, объяснять не нужно + непонятно как регистрировать изменения при этом.
Вопрос: Работа с регистром сведений

И снова доброго времени суток!
Всплыл такой вопрос...
Есть документ ПриёмНаРаботу, у него реквизиты - ФИО, ДатаПриёма, и табличная часть - дата, оклад, должность. Вынесла в табличную часть специально, чтобы была возможность менять оклад на какую-то дату. И встала проблема. Данные из документа пишутся в регистр сведений. В него заносится ФИО, Оклад, Должность, ДатаПриёма и остальное. И дело в том, что когда я хочу сменить оклад, я создаю запись в табличной части. Нажимаю Провести. В итоге получаю очевидную ошибку - запись в регистре с таким ФИО уже есть. Как можно это организовать по-другому? Чтобы ФИО, ДатаПриёма и должность оставались, а переписывался в регистре только оклад?
Заранее всем спасибо за ответ!
Ответ: Тамика, тоже делаете этот документ регистратором для регистра сведений
Вопрос: Данные из регистра сведений в табличную часть

Здравствуйте.
Есть регистр сведений "КоэффициентыНормГСМ" с измерениями Автомобиль и Коэффициент. Ресурс: значение.
Необходимо, чтобы при выборе автомобиля заполнялся коэффициент и его значение.
Для того чтобы передать значения регистра в табличную часть путевого листа использовала следующее:

В общем модуле(ЗначенияКоэффициентов):

1C
1
2
3
4
5
Функция ЗначениеКоэффициента(АктуальнаяДата, ЭлементТранспортныеСредства, ЭлементКоэффициентыНормГСМ) Экспорт
Отбор = Новый Структура("Автомобиль,Коэффициент",ЭлементТранспортныеСредства, ЭлементКоэффициентыНормГСМ);
ЗначенияРесурсов = РегистрыСведений.КоэффициентыНормГСМ.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Значение;
КонецФункции
В модуле формы:

1C
1
2
3
4
5
6
&НаКлиенте 
Процедура ИспользованныеКоэффициентыАвтомобильПриИзменении(Элемент) 
СтрокаТабличнойЧасти = Элементы.ИспользованныеКоэффициенты.ТекущиеДанные;
 
СтрокаТабличнойЧасти.ЗначениеКоэффициента = ЗначенияКоэффициентов.ЗначениеКоэффициента(Объект.Дата,СтрокаТабличнойЧасти.Автомобиль,СтрокаТабличнойЧасти.Коэффициент);
КонецПроцедуры
Но так ничего не происходит. Где что не так?
Ответ: Хорошо,спасибо,сейчас попробую.
В таком случае уже нельзя будет изменить значение коэффициента?

Добавлено через 34 минуты
В общем ругается на ЗначениеВозврата, а потом вообще не дает запустить 1с,т.к. записи регистра сведений стали неуникальными
Вопрос: Обработка создания новых записей в регистре сведений.

НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыКонтрагентов.СоздатьНаборЗаписей();
    
    НаборЗаписей.Отбор.Период.Установить(Дата);
    НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Период,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Контрагент,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.ЕдИзм,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Организация,
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
                 |ИЗ
                 |    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних";
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
    Запрос.УстановитьПараметр("Дата",Дата);
    ТЗ=Запрос.Выполнить().Выгрузить();
    Для Каждого СтрокаТЗ Из ТЗ Цикл 
        //записываем все элементы из табличной части в регистр сведений "ЦеныНоменклатурыКонтрагентов"

        НовЗапись = НаборЗаписей.Добавить();
        //

        НовЗапись.Период        =    Дата;
        НовЗапись.Номенклатура    =    Номенклатура;
        НовЗапись.Контрагент    =    СтрокаТЗ.Контрагент;
        НовЗапись.Цена            =    Цена;
        НовЗапись.ТипЦен        =    СтрокаТЗ.ТипЦен;
        НовЗапись.ЕдИзм            =    Номенклатура.ОсновнаяЕдиницаИзмерения;
        НовЗапись.Организация    =    СтрокаТЗ.Организация;
    КонецЦикла;
    Попытка
        НаборЗаписей.Записать(ИСТИНА); 
    Исключение
    КонецПопытки;
На данный момент, этот код переделывает уже существующие записи в регистре. Как сделать что бы не заменял старые а создавал новые записи?
Ответ: () не только не послали, но и в () ответили

РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Записать (Write)
Синтаксис:

Записать(<Замещать>)
Параметры:

<Замещать> (необязательный)

Тип: Булево. Определяет режим замещения существующей записи в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям
Значение по умолчанию: Истина
Описание:

Записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение.
Вопрос: Как заполнить регистр сведений данными из отчёта

Есть регистр сведений, пока что не подчиненный какому-либо регистратору.
Есть отчёт продаж с нужной информацией.
Нужно данные из отчёта сгруппировать и посчитать дополнительно среднюю сумму. (сам запрос я понимаю как написать)

Вопрос: как поместить данные из этого запроса в регистр сведений?
Ответ:
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
42
43
44
45
46
47
48
49
50
Процедура КнопкаВыполнитьНажатие(Кнопка)    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ПродажиОбороты.Номенклатура КАК Номенклатура,
        |   ПродажиОбороты.ДокументПродажи.Склад КАК Склад,
        |   СРЕДНЕЕ(ПродажиОбороты.КоличествоОборот) КАК СреднийОборот,
        |   ПродажиОбороты.Период КАК Период
        |ИЗ
        |   РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, День, ) КАК ПродажиОбороты
        |
        |СГРУППИРОВАТЬ ПО
        |   ПродажиОбороты.Номенклатура,
        |   ПродажиОбороты.ДокументПродажи.Склад,
        |   ПродажиОбороты.Период";
 
    Запрос.УстановитьПараметр("Дата1", Дата1);
    Запрос.УстановитьПараметр("Дата2", Дата2);
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НаборЗаписей = РегистрыСведений.РегистрПродаж.СоздатьНаборЗаписей();
        
        НаборЗаписей.Отбор.Номенклатура.Установить(ВыборкаДетальныеЗаписи.Номенклатура);
        НаборЗаписей.Отбор.Склад.Установить(ВыборкаДетальныеЗаписи.Склад);
        ДеньНедели = ДеньНедели(ВыборкаДетальныеЗаписи.Период);
        НаборЗаписей.Отбор.ДеньНедели.Установить(ДеньНедели);
        
        НаборЗаписей.Прочитать();
        
        НоваяЗапись = НаборЗаписей.Добавить();
        
        НоваяЗапись.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        НоваяЗапись.Склад = ВыборкаДетальныеЗаписи.Склад;
        НоваяЗапись.ДеньНедели = ДеньНедели;
        НоваяЗапись.СреднесутОборот = ВыборкаДетальныеЗаписи.СреднийОборот;
 
        НаборЗаписей.Записать();
    КонецЦикла;
 
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
 
КонецПроцедуры
В общем вот что я намудрил. Не создаётся запись в регистре сведений. Подскажите пожалуйста, что может быть не так?


Добавлено через 14 минут
Всё, разобрался дело было в переменной ДеньНедели