Имя: Пароль:
1C
1С v8
запись в регистр
,
0 potapovi4
 
31.10.15
17:54
добрый день.подскажите если нужно записать всего одно измерение в регистр,то всеравно нжно обращатся ко всем измрениям?
                ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
                ТекЗапись.Владелец         = стр.Номенклатура;
                //ТекЗапись.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
                //ТекЗапись.ТипШтрихкода     = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
                //ТекЗапись.Качество         = Справочники.Качество.Новый;
                //ТекЗапись.Штрихкод         = РаботаСТорговымОборудованием.СформироватьШтрихКод();
                ТекЗапись.Наличие         = 0 ;
                ТекЗапись.Прочитать();
1 ДенисЧ
 
31.10.15
19:11
Код утреннесубботничный.
Кто-то явно в пятницу перевеселился.
2 kosts
 
31.10.15
19:58
(0) Строго говоря нет необходимости обращаться к другим измерениям.
Все зависит от логики работы программы.
Например в ЗУП есть регистр Плановые начисления.
Так вот, измерение "Вид расчета измерение" (вроде так называется) иногда записывают иногда нет, иногда пустое оставляют.
3 potapovi4
 
31.10.15
20:20
(1)да не.я ученик мученик.подскажите а как в этом случае регистр поймет к какому владельцу привязывать Наличие?
4 potapovi4
 
31.10.15
20:23
так как все таки записать запись ради одного измерения ТекЗапись.Наличие         = 0 ;
и при этом чтобы по владельцу сошлось номенклатуры?
5 GROOVY
 
31.10.15
20:24
Нафига читать менеджер записи для записи может мне ктонить объяснить?
6 potapovi4
 
31.10.15
20:28
(5)сори недописал
                ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
                ТекЗапись.Владелец         = стр.Номенклатура;
                //ТекЗапись.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
                //ТекЗапись.ТипШтрихкода     = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
                //ТекЗапись.Качество         = Справочники.Качество.Новый;
                //ТекЗапись.Штрихкод         = РаботаСТорговымОборудованием.СформироватьШтрихКод();
                //ТекЗапись.Наличие         = 0 ;
                ТекЗапись.Прочитать();
                ТекЗапись.Наличие         = 0 ;
                   Попытка
                    ТекЗапись.Записать();
                Исключение
                КонецПопытки;
7 potapovi4
 
31.10.15
20:28
(5)а как правильно?
8 kosts
 
31.10.15
20:32
(6) С регистрами не так как со справочниками или документами.
Обычно в регистры не вносят изменений. Их обычно всегда полностью записываю заново.
Т.е. при каждой записи надо заполнять все измерения снова и снова и снова.
9 kosts
 
31.10.15
20:36
(8) Т.е. при проведении документа даже не смотрим, что там было в регистрах.
Просто берем и записываем в регистр снова,как будто каждый раз новый документ записываем.
(Повторюсь, что обычно, т.к. бывает и по другому)
10 GROOVY
 
31.10.15
20:39
(9) Если бывает по-другому, то регистр спроектирован некорректно.
11 potapovi4
 
31.10.15
20:40
(9)то есть все что я закоментил нужно раскоменти и писать по новой
12 kosts
 
31.10.15
20:40
И вот так вот не надо делать.
Пользователь должен знать, успешна была запись или нет. Если есть попытка, тогда уж надо или отказ в исключение поставить или сообщить пользователю.

Попытка
    ТекЗапись.Записать();
Исключение
КонецПопытки;
13 kosts
 
31.10.15
20:43
(11) Отсюда не видать. Если у тебя проведение документа, то скорее всего. Если обработка, то теоретически может быть и такой вариант.
14 potapovi4
 
31.10.15
20:49
(11) ну да я обработкой пишу
                ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
                ТекЗапись.Владелец         = стр.Номенклатура;
                ТекЗапись.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
                ТекЗапись.ТипШтрихкода     = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
                ТекЗапись.Качество         = Справочники.Качество.Новый;
                ТекЗапись.Штрихкод         = ШтрихКод;
                ТекЗапись.Наличие         = 0 ;
                ТекЗапись.Прочитать();
                ТекЗапись.Наличие         = 0 ;
               
                    ТекЗапись.Записать();
15 GROOVY
 
31.10.15
21:34
Нет, ну все же, нафига "Прочитать()", зачем запрос к регистру? Нет, ну мне просто интересно это магическое действо.
16 potapovi4
 
31.10.15
21:37
(15) та учусь я.ну делаю как в конфе
17 GROOVY
 
31.10.15
21:38
(16)  Но зачем?
18 User_Agronom
 
31.10.15
21:43
(0) Регистр сведений это функция, которая множеству наборов измерений ставит в соответствие множество наборов ресурсов.

Поэтому, многоуважаемый ТС, если Вы в наборе измерений укажите не все значения, то остальные все равно при записи заполнятся (как неопределено, пустая ссылка, ноль и т.д.).

Исключить измерение из набора нельзя. Можно исключить измерение из всех наборов (тупо удалив его в конфигурации).

И ещё: если у Вас уже существует запись с таким набором измерений, то записать ещё одну не получиться. Подробнее тут: https://ru.wikipedia.org/wiki/Функция_(математика)
19 potapovi4
 
31.10.15
21:43
(17)не буду.ошибку понял!
20 User_Agronom
 
31.10.15
21:50
(15) Регистр сведений:
Измерение1: тип число
Ресурс1: тип дата

В регистре три записи.

10    1 января 2014
20    1 марта 2014
30     1 мая 2015

Попробуй без прочитать добавить туда запись
10   10 января 2015 года.

Что произойдёт в этом случае?
21 H A D G E H O G s
 
31.10.15
21:57
(20) открой для себя Отбор, жертва семёрки.
22 User_Agronom
 
31.10.15
21:59
(21) Я в курсе про отбор.
23 GROOVY
 
31.10.15
22:08
(18)  Сам по себе РС - это тупо проиндексированная таблица, начиная с версии 8.3.6 - несколько таблиц.
Функция - это обращение объектной моделью (ну да там реально явная функция) или запросом к виртуальным таблицам (завуалированная функция).
24 User_Agronom
 
31.10.15
22:16
(23) Фу?нкция — математическое понятие, отражающее однозначную парную связь элементов одного множества с элементами другого множества.

Функцию можно задать формулой, таблицей (в том числе и SQL), графиком или простым перечислением на бумаге (доске, песке, камне), даже можно перечислить соответствующие наборы вслух.

Павел, будьте так добры поясните, что Вы имели ввиду говоря о явной функция или завуалированной функции?
25 GROOVY
 
31.10.15
22:32
(24)  А = РС.ПолучитьПоследнее(Агрументы) - явная функция
"ВЫБРАТЬ Поля ИЗ РС.СрезПоследних(Параметры ВТ)" - завуалированная. Ну это я так называю, так как не совсем понимаю почему функцию 1С в запросах называет виртуальной таблицей.
26 User_Agronom
 
31.10.15
22:58
(25) Потому что термин функция тут не верен.
Можно же получить срез последних не указывая всех аргументов. В результате получим несколько записей.

Для функции обязательно перечисление всех аргументов - и результатом будет одно значение (число, множество и т.д. неважно.)
27 GROOVY
 
31.10.15
23:02
(26) У функции может не быть аргументов и функции могут содержать не обязательные аргументы. Если честно, я не понимаю о чем мы сейчас дискутируем.
28 User_Agronom
 
31.10.15
23:04
(27) ...могут содержать не обязательные аргументы...

Рука-лицо!
29 GROOVY
 
31.10.15
23:05
(28)  Ну давайте сейчас еще терминологию 1с перетрем с ее "Константы"?! Ну что за детский сад.
30 User_Agronom
 
31.10.15
23:09
(27) ТС спросил: можно ли не все измерения заполнять?
  
   Цитата вопроса: записать всего одно измерение в регистр,то всеравно нжно обращатся ко всем измрениям?

Я провел аналогию между РС и Функцией (математическое понятие), где набор измерений это аргумент, а набор ресурсов - значение функции.

Итог подвёл в (18) "...если Вы в наборе измерений укажите не все значения, то остальные все равно при записи заполнятся (как неопределено, пустая ссылка, ноль и т.д.)..."

Потом влез ты с какой-то несуразицей про количество таблиц в которых содержится РС. И какими-то странными понятиями о функциях.
31 User_Agronom
 
31.10.15
23:12
(29) Заводи тему: перетрём. Только в программировании есть два понятия: константа и переменная с предопределенным значением. Что обсуждать будем сразу укажи.
32 GROOVY
 
31.10.15
23:18
(30) "Математическое понятие" ввел ты, видимо рассчитывая на какие то интересные выкладки. Я под функцией понимаю функцию в понятии обычных языков программирования.
Вопрос к понятию "Функция" и "Функция_(математика)" не имеет никакого отношения.

РС - это само по себе просто таблица, как и все остальные объекты. Или набор таблиц, с которыми средствами встроенного языка можно работать и довольно просто получать значения показателей предопределенных разработчиками.

(31)  Я про Константы - как объект глобального контекста.
33 User_Agronom
 
31.10.15
23:22
(32)  Дискуссию можно прекратить ввиду полной неадекватности собеседника.

Да, я в (18) даже ссылку указал про какую функцию говорю. Но до тебя не дошло((
34 GROOVY
 
31.10.15
23:28
(33)  Да ради бога.
Никогда не мог понять чего люди из-за ничего ругаются на форумах.

Всего тебе хорошего. Очень было приятно пообщаться.
Думаю ТС с тобой еще поговорит про особенности записи в РС. ;)
35 hhhh
 
01.11.15
01:53
(33) всё равно читать не нужно. Оно и так и так перезапишет существующую запись.
36 User_Agronom
 
01.11.15
08:30
(35) Я не помню ситуации, но как-то раз запись в регистр падала из-за того, что я не очистил запись с таким же набором измерений. (или в наборе было две записи с одинаковым набором измерений)
37 GROOVY
 
01.11.15
10:33
(36)  Здесь речь не про набор записей, а про менеджер записи.