|
Движение по созданному регистру | ☑ | ||
---|---|---|---|---|
0
Aldnepr
07.12.17
✎
10:43
|
Создал новый регистр накопления с одним измерением- "Грузчик" и ресурсы- "Вес" и ВесПН", не могу сделать по нему движения, ругается Запись не верна! Период не может быть пустым! (Регистр накопления: Отгрузки по грузчикам; Номер строки: 1), что не доделал?
Процедура ПровестиПоГрузчику(Гр) Экспорт ОбщийВес = ИтВес; НаборЗаписей = РегистрыНакопления.ОтгрузкиПоГрузчикам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка); Запись = НаборЗаписей.Добавить(); Запись.Регистратор = ЭтотОбъект.Ссылка; Запись.Грузчик = Гр; Запись.Вес = 0; Запись.ВесПН = ОбщийВес / тКоэф; НаборЗаписей.Записать(); КонецПроцедуры |
|||
1
rabbidX
07.12.17
✎
10:45
|
Период не может быть пустым
|
|||
2
Ненавижу 1С
гуру
07.12.17
✎
10:45
|
наверное Период заполнить, логично?
|
|||
3
1Садовник
07.12.17
✎
10:47
|
Запись.Период = .... заполни нужной датой
|
|||
4
Aldnepr
07.12.17
✎
10:53
|
(3) Да, так и есть. Спасибо! Скажите, а при отмене проведения или корректировке этого документа надо удалять записи из регистра, чтобы они не задвоились? И есть ли инструмент какой то для просмотра записей регистра, что в нем накоплено
|
|||
5
Веселый собака
07.12.17
✎
10:56
|
(4) автоматические движения установи.
|
|||
6
Адинэснег
07.12.17
✎
10:58
|
семерошники подтянулись :-D
|
|||
7
hhhh
07.12.17
✎
10:59
|
(4) скопируй все мысли из типовых регистров
|
|||
8
nordbox
07.12.17
✎
10:59
|
(4)>>И есть ли инструмент какой то для просмотра записей регистра, что в нем накоплено
Есть, открой Все функции и выбери нужный тебе регистр |
|||
9
Адинэснег
07.12.17
✎
10:59
|
она еще сырая, период какой-то все время просит в регистре накопления...
|
|||
10
nordbox
07.12.17
✎
11:00
|
(9) не издевайся над человеком
|
|||
11
Волшебник
модератор
07.12.17
✎
11:00
|
(9) Это он ещё с регистрами сведений не сталкивался. Те вообще уничтожаются одной строкой
|
|||
12
Веселый собака
07.12.17
✎
11:02
|
(11) Двумя!
|
|||
13
Aldnepr
07.12.17
✎
11:04
|
(5) где они устанавливаются?
|
|||
14
Адинэснег
07.12.17
✎
11:05
|
разберись сначала с регистрами накопления, проникся...
найди отличие РН остатов от РН оборотов... потом покури виртуальные таблицы оборотов и таблицы остатков и оборотов потом посмотри в консоли запросов, что всё <s>украдено</s> реализовано до нас |
|||
15
Aldnepr
07.12.17
✎
11:05
|
(8) спасибо, нормально вроде все прописывается и в случае перепроведения и после отмены проводки. Можно успокоиться?)
|
|||
16
Волшебник
модератор
07.12.17
✎
11:06
|
(12) Одной!
|
|||
17
hhhh
07.12.17
✎
11:07
|
(15) нет нельзя, автоматические движения - это хрень. Лучше сделай как в типовых регистрах сделано.
|
|||
18
Адинэснег
07.12.17
✎
11:07
|
(12)одной Записать();
двумя можно нечаяно отбор установить |
|||
19
Aldnepr
07.12.17
✎
11:07
|
(11) Сталкивался. Еще та гадость) спросил разок тут- затролили только, пока отложил их
|
|||
20
nordbox
07.12.17
✎
11:07
|
(15) Ну это смотря какая у тебя задача
|
|||
21
Волшебник
модератор
07.12.17
✎
11:08
|
РегистрыСведений.СамыйВажныйРегистр.СоздатьНаборЗаписей().Записать();
|
|||
22
Веселый собака
07.12.17
✎
11:09
|
(21) Это уже намеренное вредительство. Памятка шпиону.
|
|||
23
MrStomak
07.12.17
✎
11:09
|
(18) Не можешь уничтожить РС одной строкой? Слабак!
|
|||
24
Aldnepr
07.12.17
✎
11:09
|
(20) Задача очень простая- простенький регистр для разноса перенесенного веса по грузчикам.И строить отчет по нему, и сделать как можно проще)
|
|||
25
Адинэснег
07.12.17
✎
11:10
|
||||
26
nordbox
07.12.17
✎
11:11
|
(24) ну поиграйся с данными. если тебя устроит то оставляй
|
|||
27
nordbox
07.12.17
✎
11:13
|
Посмотри как в типовых сделано, как у других сделано, на разных сайтах пошарься, выбери то что тебе нравится.
|
|||
28
VladZ
07.12.17
✎
11:13
|
(21) Это, конечно, они зря сделали.
Убить большой объем данных одной строкой - это нифига ненадежно. |
|||
29
Волшебник
модератор
07.12.17
✎
11:16
|
(28) Согласен
|
|||
30
Aldnepr
07.12.17
✎
11:16
|
(21) Вот благодарка за такое! буду знать теперь, что в регистры сведений и не заходить без бахилл
|
|||
31
Адинэснег
07.12.17
✎
11:17
|
Запрос = Новый Запрос("ВЫБРАТЬ
| ОтгрузкиПоГрузчикамОбороты.Грузчик КАК Грузчик, | ОтгрузкиПоГрузчикамОбороты.ВесОборот КАК ВесОборот, | ОтгрузкиПоГрузчикамОбороты.ВесПНОборот КАК ВесПНОборот |ИЗ | РегистрНакопления.ОтгрузкиПоГрузчикам.Обороты КАК ОтгрузкиПоГрузчикамОбороты"); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Строка(Выборка)+ " перетащил " + Строка(Выборка.ВесОборот) + " И "+ Строка(Выборка.ВесПНОборот)); КонецЦикла; |
|||
32
Адинэснег
07.12.17
✎
11:17
|
Сообщить(Строка(Выборка.Грузчик)+ " перетащил " + Строка(Выборка.ВесОборот) + " И "+ Строка(Выборка.ВесПНОборот));
|
|||
33
Aldnepr
07.12.17
✎
11:19
|
(32) ))) "перетащил"+" И"+" не сдох!"
|
|||
34
Адинэснег
07.12.17
✎
11:22
|
Можно без запросов, вызывать метод(у него кстати тоже параметры, для отбора и группировки), который вернет таблицу значений , потом таблицу обойти...
ТаблицаОборотов = РегистрыНакопления.ОтгрузкиПоГрузчикам.Обороты(); Для Каждого СтрокаТаблицы Из ТаблицаОборотов Цикл Сообщить(Строка(СтрокаТаблицы.Грузчик)+ " перетащил " + Строка(СтрокаТаблицы.ВесОборот) + " И "+ Строка(СтрокаТаблицы.ВесПНОборот)); КонецЦикла; но лучше сразу кури запросы |
|||
35
Aldnepr
07.12.17
✎
11:24
|
(34) чего то записывает одну запись только, а участвует 2 грузчика и отладчик подтверждает((. Кину полный код
Процедура ПровестиПоГрузчику(Гр) Экспорт ОбщийВес = ИтВес; НаборЗаписей = РегистрыНакопления.ОтгрузкиПоГрузчикам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка); Запись = НаборЗаписей.Добавить(); Запись.Регистратор = ЭтотОбъект.Ссылка; Запись.Период= Дата; Запись.Грузчик = Гр; Запись.Вес = 0; Запись.ВесПН = ОбщийВес / тКоэф; НаборЗаписей.Записать(); КонецПроцедуры // ========================================================= Процедура ПоГрузчикам() тКоэф = (ЗначениеЗаполнено(Грузчик1)) + (ЗначениеЗаполнено(Грузчик2)) + (ЗначениеЗаполнено(Грузчик3)) + (ЗначениеЗаполнено(Грузчик4)); Если тКоэф > 0 Тогда Если ЗначениеЗаполнено(Грузчик1) = 1 Тогда ПровестиПоГрузчику(Грузчик1); КонецЕсли; Если ЗначениеЗаполнено(Грузчик2) = 1 Тогда ПровестиПоГрузчику(Грузчик2); КонецЕсли; Если ЗначениеЗаполнено(Грузчик3) = 1 Тогда ПровестиПоГрузчику(Грузчик3); КонецЕсли; Если ЗначениеЗаполнено(Грузчик4) = 1 Тогда ПровестиПоГрузчику(Грузчик4); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
36
Веселый собака
07.12.17
✎
11:27
|
(35) ну.. все правильно.
Одна запись на 1 регистратор ) |
|||
37
Aldnepr
07.12.17
✎
11:29
|
(36) как исправить((
|
|||
38
Веселый собака
07.12.17
✎
11:31
|
(37) Отбором.
|
|||
39
Aldnepr
07.12.17
✎
11:32
|
(38) черкни если не трудно строчку
|
|||
40
Aldnepr
07.12.17
✎
11:33
|
(38) НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
есть же отбор |
|||
41
Веселый собака
07.12.17
✎
11:35
|
(40) Это неполный отбор. добавь конкретного грузчика.
|
|||
42
Табуретко
07.12.17
✎
11:38
|
(35)НаборЗаписей.Записать(Ложь);
|
|||
43
MrStomak
07.12.17
✎
11:38
|
(41) И давно в РН можно ставить отбор на измерение?
|
|||
44
Леха Дум
07.12.17
✎
11:41
|
(27) Советовать новичку с неокрепшей психикой посмотреть как сделаны движения по регистрам в типовых??? да это просто знатный троллинг! :)
(30) там не бахилы нужны, а прямые руки :) |
|||
45
Адинэснег
07.12.17
✎
11:42
|
какого енга у тебя грузчики в реквизитах? запихни в тч
|
|||
46
MrStomak
07.12.17
✎
11:42
|
(42) Да. После этого только нужно будет убедиться, что либо в начала регистр вручную очищается, либо стоит автоматическое удаление движений при отмене проведения.
|
|||
47
Адинэснег
07.12.17
✎
11:46
|
ЗначениеЗаполнено(Грузчик3) = 1
нахрена метод, возвращающий Булево сравнивать с числом? забудь уже 7ку |
|||
48
Табуретко
07.12.17
✎
11:46
|
(46) в (15) уже вроде разобрались с автоматом, не?
|
|||
49
MrStomak
07.12.17
✎
11:47
|
(48) Нет, там не было Записать(Ложь)
|
|||
50
Aldnepr
07.12.17
✎
11:47
|
(42) Так работает). При отмене проведения регистр очищается по этому регистратору, при корректировке накладной тоже меняет как надо. Можно считать задачу выполненой?
|
|||
51
dezss
07.12.17
✎
11:48
|
(40) только надо добавлять сразу все строки из этого документа движения, а не по-очереди.
|
|||
52
Табуретко
07.12.17
✎
11:48
|
(50) нет
|
|||
53
Aldnepr
07.12.17
✎
11:49
|
(52) что еще проверить?
|
|||
54
Адинэснег
07.12.17
✎
11:49
|
когда 5й грузчик устроится, или вес захотят не пропорционально распределить - заработаешь еще на тарелку супа...
|
|||
55
Адинэснег
07.12.17
✎
11:49
|
считай выолнено
|
|||
56
1Садовник
07.12.17
✎
11:51
|
Добавь просто что бы работало:
НаборЗаписей.Отбор.Грузчик.Установить(Гр); А так по хорошему нужно ВСЕ переделывать |
|||
57
ИТ директор
07.12.17
✎
11:53
|
(0) Чувак так никто не делает. Нужно один раз создать набор записей, заполнить его и записать. Но для начала пойдет, бгг, будешь потом смотреть и ржать над собой.
|
|||
58
hhhh
07.12.17
✎
11:53
|
(50) "Можно считать задачу выполненой" - когда деньги появятся у тебя в кармане, тогда и будешь считать выполненной. А пока забей, каждую минуту что ли будешь анализировать, считать выполненной или не считать?
|
|||
59
Aldnepr
07.12.17
✎
11:54
|
(56) а вот так отбор не работает!Поле объекта не обнаружено (Грузчик)
|
|||
60
Aldnepr
07.12.17
✎
11:55
|
(57) ну это все проделки 7,7. Не просто вывести ее, нужен мемори фул ирейз (
|
|||
61
MrStomak
07.12.17
✎
11:56
|
(56)
И давно в РН можно ставить отбор на измерение? |
|||
62
Веселый собака
07.12.17
✎
11:56
|
(59) понравилось? )
Вот такой прикол- надо все из регистратора писать разом. |
|||
63
Веселый собака
07.12.17
✎
11:57
|
(61) 1С- это квест! Без своих шишек руки не выпрямятся.
|
|||
64
Ненавижу 1С
гуру
07.12.17
✎
11:58
|
||||
65
ИТ директор
07.12.17
✎
11:58
|
(60) Вообще всё переделай тогда, движения заполняй в процедуре ОбработкаПроведения(), данные получай запросом, явную запись не вызывай.
|
|||
66
hhhh
07.12.17
✎
11:59
|
(59) ну так пробуй
+ Code Процедура ПровестиПоГрузчику(Гр, НаборЗаписей) Экспорт ОбщийВес = ИтВес; Запись = НаборЗаписей.Добавить(); Запись.Регистратор = ЭтотОбъект.Ссылка; Запись.Период= Дата; Запись.Грузчик = Гр; Запись.Вес = 0; Запись.ВесПН = ОбщийВес / тКоэф; КонецПроцедуры // ========================================================= Процедура ПоГрузчикам() тКоэф = (ЗначениеЗаполнено(Грузчик1)) + (ЗначениеЗаполнено(Грузчик2)) + (ЗначениеЗаполнено(Грузчик3)) + (ЗначениеЗаполнено(Грузчик4)); Если тКоэф > 0 Тогда НаборЗаписей = РегистрыНакопления.ОтгрузкиПоГрузчикам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка); Если ЗначениеЗаполнено(Грузчик1) Тогда ПровестиПоГрузчику(Грузчик1, НаборЗаписей); КонецЕсли; Если ЗначениеЗаполнено(Грузчик2) Тогда ПровестиПоГрузчику(Грузчик2, НаборЗаписей); КонецЕсли; Если ЗначениеЗаполнено(Грузчик3) Тогда ПровестиПоГрузчику(Грузчик3, НаборЗаписей); КонецЕсли; Если ЗначениеЗаполнено(Грузчик4) Тогда ПровестиПоГрузчику(Грузчик4, НаборЗаписей); КонецЕсли; НаборЗаписей.Записать(); КонецЕсли; КонецПроцедуры |
|||
67
1Садовник
07.12.17
✎
12:02
|
(61) Думал с сегодняшнего дня можно... согласен, косяк)
|
|||
68
Адинэснег
07.12.17
✎
12:03
|
ну и еще, у тебя 146% в этом коде будет "проблема последней копейки"
Общий вес 10, грузчика 3... нужно распределить на максимальный коэффициент (хотя он у тебя всегда 1, значит на любого грузчика) остаток |
|||
69
MrStomak
07.12.17
✎
12:03
|
Если честно, автору нужны не советы на мисте, а ударные дозы Радченко.
Всё сделано максимально неправильно. Даже если закрыть глаза на поля Грузчик1..4, писать нужно так: Набор = Движения.ОтгрузкиПоГрузчикам; Набор.Записывать = истина; Для Сч = 1 по 4 Цикл Если НЕ ЭтотОбъект["Грузчик"+Сч].Пустая() Тогда Запись = Набор.Добавить(); Запись.Период= Дата; Запись.Грузчик = ЭтотОбъект["Грузчик"+Сч]; Запись.ВесПН = ОбщийВес / тКоэф; КонецЕсли; КонецЦикла; |
|||
70
Адинэснег
07.12.17
✎
12:03
|
дело было не в восьмерке...
|
|||
71
Адинэснег
07.12.17
✎
12:06
|
а в начале обработки поставить...
Движения.ОтгрузкиПоГрузчикам.Записывать = Истина; Движения.ОтгрузкиПоГрузчикам.Очистить(); |
|||
72
Табуретко
07.12.17
✎
12:07
|
щас тебе допилят до 1С совместимо ))
|
|||
73
ИТ директор
07.12.17
✎
12:09
|
(69) 4 раза запускаешь чтение объекта, если у него есть ТЧ, 4 лишних транзакции, если в ТЧ тысячи строк, это тысячи лишних чтений. Запросом надо.
|
|||
74
MrStomak
07.12.17
✎
12:11
|
(73) Ни одного чтения объекта не запускаю
|
|||
75
MrStomak
07.12.17
✎
12:11
|
И ни одного обращения к базе данных там нет.
|
|||
76
Адинэснег
07.12.17
✎
12:11
|
ЭтотОбъект["Грузчик"+Сч].Пустая()
|
|||
77
ИТ директор
07.12.17
✎
12:12
|
(74) Ты к реквизиту объекта обращаешься? Разве при этом не читается весь объект?
|
|||
78
MrStomak
07.12.17
✎
12:13
|
(76) Это не обращение к БД. Это работает даже на тонком клиенте. 1Ска умеет понимать пустые ссылки без вызова СУБД.
|
|||
79
Адинэснег
07.12.17
✎
12:13
|
(77) ну не из БД хоть, из памяти
|
|||
80
MrStomak
07.12.17
✎
12:14
|
(77)
Этот объект - это документ, который проводится. Он уже был прочитан при создании. Конструкция ЭтотОбъект["Грузчик1"] абсолютно идентична просто Грузчик1. |
|||
81
MrStomak
07.12.17
✎
12:15
|
(77) Даже если бы я обращался по Ссылка.Грузчик - обращение к БД было бы только 1, а не 4, т.к. вызовы кешируются.
|
|||
82
ИТ директор
07.12.17
✎
12:17
|
А ну да, это же модуль объекта и читаем только его реквизиты. Чота я затупил.
|
|||
83
MrStomak
07.12.17
✎
12:19
|
(82) Код на мисте лучше не выкладывать - немедленно разведут обсуждение как всё неправильно :))
|
|||
84
Адинэснег
07.12.17
✎
12:21
|
мы семёрошника не отпинали еще, и уже между собой
|
|||
85
nordbox
07.12.17
✎
12:24
|
(83)>>немедленно разведут обсуждение как всё неправильно :))
И доведут простую задачу до абсурда ))) |
|||
86
Aldnepr
07.12.17
✎
12:30
|
(83) хоть левел тролинга на мисте и зашкаливает, даже и от модера)), но только тут можно получить оперативную и порой очень качественную инфу. На других площадках можно ждать ответа до того лета), или модеры изводят до тошноты.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |