Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Движение по созданному регистру

Движение по созданному регистру
Я
   Aldnepr
 
07.12.17 - 10:43
Создал новый регистр накопления с одним измерением- "Грузчик" и ресурсы- "Вес" и ВесПН", не могу сделать по нему движения, ругается Запись не верна! Период не может быть пустым! (Регистр накопления: Отгрузки по грузчикам; Номер строки: 1), что не доделал?

Процедура ПровестиПоГрузчику(Гр) Экспорт
                                                         
    ОбщийВес = ИтВес;
НаборЗаписей = РегистрыНакопления.ОтгрузкиПоГрузчикам.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
Запись = НаборЗаписей.Добавить();
Запись.Регистратор = ЭтотОбъект.Ссылка;
Запись.Грузчик = Гр;
Запись.Вес = 0;
Запись.ВесПН = ОбщийВес / тКоэф;
НаборЗаписей.Записать();   
    
КонецПроцедуры
 
 
   rabbidX
 
1 - 07.12.17 - 10:45
Период не может быть пустым
   Ненавижу 1С
 
2 - 07.12.17 - 10:45
наверное Период заполнить, логично?
   1Садовник
 
3 - 07.12.17 - 10:47
Запись.Период = .... заполни нужной датой
   Aldnepr
 
4 - 07.12.17 - 10:53
(3) Да, так и есть. Спасибо! Скажите, а при отмене проведения или корректировке этого документа надо удалять записи из регистра, чтобы они не задвоились? И есть ли инструмент какой то для просмотра записей регистра, что в нем накоплено
   Веселый собака
 
5 - 07.12.17 - 10:56
(4) автоматические движения установи.
   Адинэснег
 
6 - 07.12.17 - 10:58
семерошники подтянулись :-D
   hhhh
 
7 - 07.12.17 - 10:59
(4) скопируй все мысли из типовых регистров
   nordbox
 
8 - 07.12.17 - 10:59
(4)>>И есть ли инструмент какой то для просмотра записей регистра, что в нем накоплено
Есть, открой Все функции и выбери нужный тебе регистр
   Адинэснег
 
9 - 07.12.17 - 10:59
она еще сырая, период какой-то все время просит в регистре накопления...
   nordbox
 
10 - 07.12.17 - 11:00
(9) не издевайся над человеком
 
 Рекламное место пустует
   Волшебник
 
Модератор
11 - 07.12.17 - 11:00
(9) Это он ещё с регистрами сведений не сталкивался. Те вообще уничтожаются одной строкой
   Веселый собака
 
12 - 07.12.17 - 11:02
(11) Двумя!
   Aldnepr
 
13 - 07.12.17 - 11:04
(5) где они устанавливаются?
   Адинэснег
 
14 - 07.12.17 - 11:05
разберись сначала с регистрами накопления, проникся...
найди отличие РН остатов от РН оборотов...
потом покури виртуальные таблицы оборотов и таблицы остатков и оборотов
потом посмотри в консоли запросов, что всё <s>украдено</s> реализовано до нас
   Aldnepr
 
15 - 07.12.17 - 11:05
(8) спасибо, нормально вроде все прописывается и в случае перепроведения и после отмены проводки. Можно успокоиться?)
   Волшебник
 
Модератор
16 - 07.12.17 - 11:06
(12) Одной!
   hhhh
 
17 - 07.12.17 - 11:07
(15) нет нельзя,  автоматические движения - это хрень. Лучше сделай как в типовых регистрах сделано.
   Адинэснег
 
18 - 07.12.17 - 11:07
(12)одной Записать();
двумя можно нечаяно отбор установить
   Aldnepr
 
19 - 07.12.17 - 11:07
(11) Сталкивался. Еще та гадость) спросил разок тут- затролили только, пока отложил их
   nordbox
 
20 - 07.12.17 - 11:07
(15) Ну это смотря какая у тебя задача
   Волшебник
 
Модератор
21 - 07.12.17 - 11:08
РегистрыСведений.СамыйВажныйРегистр.СоздатьНаборЗаписей().Записать();
   Веселый собака
 
22 - 07.12.17 - 11:09
(21) Это уже намеренное вредительство. Памятка шпиону.
   MrStomak
 
23 - 07.12.17 - 11:09
(18) Не можешь уничтожить РС одной строкой? Слабак!
   Aldnepr
 
24 - 07.12.17 - 11:09
(20) Задача очень простая- простенький регистр для разноса перенесенного веса по грузчикам.И строить отчет по нему, и сделать как можно проще)
   Адинэснег
 
25 - 07.12.17 - 11:10
   nordbox
 
26 - 07.12.17 - 11:11
(24) ну поиграйся с данными. если тебя устроит то оставляй
   nordbox
 
27 - 07.12.17 - 11:13
Посмотри как в типовых сделано, как у других сделано, на разных сайтах пошарься, выбери то что тебе нравится.
   VladZ
 
28 - 07.12.17 - 11:13
(21) Это, конечно, они зря сделали.
Убить большой объем данных одной строкой - это нифига ненадежно.
   Волшебник
 
Модератор
29 - 07.12.17 - 11:16
(28) Согласен
   Aldnepr
 
30 - 07.12.17 - 11:16
(21) Вот благодарка за такое! буду знать теперь, что в регистры сведений и не заходить без бахилл
   Адинэснег
 
31 - 07.12.17 - 11:17
Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ОтгрузкиПоГрузчикамОбороты.Грузчик КАК Грузчик,
                          |    ОтгрузкиПоГрузчикамОбороты.ВесОборот КАК ВесОборот,
                          |    ОтгрузкиПоГрузчикамОбороты.ВесПНОборот КАК ВесПНОборот
                          |ИЗ
                          |    РегистрНакопления.ОтгрузкиПоГрузчикам.Обороты КАК ОтгрузкиПоГрузчикамОбороты");
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить(Строка(Выборка)+ " перетащил " + Строка(Выборка.ВесОборот)  + " И "+ Строка(Выборка.ВесПНОборот));
    КонецЦикла;
   Адинэснег
 
32 - 07.12.17 - 11:17
Сообщить(Строка(Выборка.Грузчик)+ " перетащил " + Строка(Выборка.ВесОборот)  + " И "+ Строка(Выборка.ВесПНОборот));
   Aldnepr
 
33 - 07.12.17 - 11:19
(32) ))) "перетащил"+" И"+"  не сдох!"
 
 
   Адинэснег
 
34 - 07.12.17 - 11:22
Можно без запросов, вызывать метод(у него кстати тоже параметры, для отбора и группировки), который вернет таблицу значений , потом таблицу обойти...
ТаблицаОборотов = РегистрыНакопления.ОтгрузкиПоГрузчикам.Обороты();
    Для Каждого СтрокаТаблицы Из ТаблицаОборотов Цикл
        Сообщить(Строка(СтрокаТаблицы.Грузчик)+ " перетащил " + Строка(СтрокаТаблицы.ВесОборот)  + " И "+ Строка(СтрокаТаблицы.ВесПНОборот));
    КонецЦикла;

но лучше сразу кури запросы
   Aldnepr
 
35 - 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 регистратор )
   Aldnepr
 
37 - 07.12.17 - 11:29
(36) как исправить((
   Веселый собака
 
38 - 07.12.17 - 11:31
(37) Отбором.
   Aldnepr
 
39 - 07.12.17 - 11:32
(38) черкни если не трудно строчку
   Aldnepr
 
40 - 07.12.17 - 11:33
(38) НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
есть же отбор
   Веселый собака
 
41 - 07.12.17 - 11:35
(40) Это неполный отбор. добавь конкретного грузчика.
   Табуретко
 
42 - 07.12.17 - 11:38
(35)НаборЗаписей.Записать(Ложь);
   MrStomak
 
43 - 07.12.17 - 11:38
(41) И давно в РН можно ставить отбор на измерение?
   Леха Дум
 
44 - 07.12.17 - 11:41
(27) Советовать новичку с неокрепшей психикой посмотреть как сделаны движения по регистрам в типовых??? да это просто знатный троллинг! :)
(30) там не бахилы нужны, а прямые руки :)
   Адинэснег
 
45 - 07.12.17 - 11:42
какого енга у тебя грузчики в реквизитах? запихни в тч
   MrStomak
 
46 - 07.12.17 - 11:42
(42) Да. После этого только нужно будет убедиться, что либо в начала регистр вручную очищается, либо стоит автоматическое удаление движений при отмене проведения.
   Адинэснег
 
47 - 07.12.17 - 11:46
ЗначениеЗаполнено(Грузчик3) = 1
нахрена метод, возвращающий Булево сравнивать с числом?
забудь уже 7ку
   Табуретко
 
48 - 07.12.17 - 11:46
(46) в (15) уже вроде разобрались с автоматом, не?
   MrStomak
 
49 - 07.12.17 - 11:47
(48) Нет, там не было Записать(Ложь)
 
 Рекламное место пустует
   Aldnepr
 
50 - 07.12.17 - 11:47
(42) Так работает). При отмене проведения регистр очищается по этому регистратору, при корректировке накладной тоже меняет как надо. Можно считать задачу выполненой?
   dezss
 
51 - 07.12.17 - 11:48
(40) только надо добавлять сразу все строки из этого документа движения, а не по-очереди.
   Табуретко
 
52 - 07.12.17 - 11:48
(50) нет
   Aldnepr
 
53 - 07.12.17 - 11:49
(52) что еще проверить?
   Адинэснег
 
54 - 07.12.17 - 11:49
когда 5й грузчик устроится, или вес захотят не пропорционально распределить - заработаешь еще на тарелку супа...
   Адинэснег
 
55 - 07.12.17 - 11:49
считай выолнено
   1Садовник
 
56 - 07.12.17 - 11:51
Добавь просто что бы работало:
НаборЗаписей.Отбор.Грузчик.Установить(Гр); 

А так по хорошему нужно ВСЕ переделывать
   ИТ директор
 
57 - 07.12.17 - 11:53
(0) Чувак так никто не делает. Нужно один раз создать набор записей, заполнить его и записать. Но для начала пойдет, бгг, будешь потом смотреть и ржать над собой.
   hhhh
 
58 - 07.12.17 - 11:53
(50) "Можно считать задачу выполненой" - когда деньги появятся у тебя в кармане, тогда и будешь считать выполненной. А пока забей, каждую минуту что ли будешь анализировать, считать выполненной или не считать?
   Aldnepr
 
59 - 07.12.17 - 11:54
(56) а вот так отбор не работает!Поле объекта не обнаружено (Грузчик)
   Aldnepr
 
60 - 07.12.17 - 11:55
(57) ну это все проделки 7,7. Не просто вывести ее, нужен мемори фул ирейз (
   MrStomak
 
61 - 07.12.17 - 11:56
(56)
И давно в РН можно ставить отбор на измерение?
   Веселый собака
 
62 - 07.12.17 - 11:56
(59) понравилось? )

Вот такой прикол- надо все из регистратора писать разом.
   Веселый собака
 
63 - 07.12.17 - 11:57
(61) 1С- это квест! Без своих шишек руки не выпрямятся.
   Ненавижу 1С
 
64 - 07.12.17 - 11:58
   ИТ директор
 
65 - 07.12.17 - 11:58
(60) Вообще всё переделай тогда, движения заполняй в процедуре ОбработкаПроведения(), данные получай запросом, явную запись не вызывай.
   hhhh
 
66 - 07.12.17 - 11:59
(59) ну так пробуй
+ Code

Процедура ПровестиПоГрузчику(Гр, НаборЗаписей) Экспорт
                                                         
    ОбщийВес = ИтВес;

Запись = НаборЗаписей.Добавить();
Запись.Регистратор = ЭтотОбъект.Ссылка;
Запись.Период= Дата;
Запись.Грузчик = Гр;
Запись.Вес = 0;
Запись.ВесПН = ОбщийВес / тКоэф;
 
    
КонецПроцедуры

// =========================================================


Процедура ПоГрузчикам()
    
    тКоэф = (ЗначениеЗаполнено(Грузчик1)) + (ЗначениеЗаполнено(Грузчик2)) + (ЗначениеЗаполнено(Грузчик3)) + (ЗначениеЗаполнено(Грузчик4));
    
    Если тКоэф > 0 Тогда

  НаборЗаписей = РегистрыНакопления.ОтгрузкиПоГрузчикам.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);  
    Если ЗначениеЗаполнено(Грузчик1) Тогда
            ПровестиПоГрузчику(Грузчик1, НаборЗаписей);
        КонецЕсли;
        Если ЗначениеЗаполнено(Грузчик2) Тогда
            ПровестиПоГрузчику(Грузчик2, НаборЗаписей);
        КонецЕсли;
        Если ЗначениеЗаполнено(Грузчик3) Тогда
            ПровестиПоГрузчику(Грузчик3, НаборЗаписей);
        КонецЕсли;
        Если ЗначениеЗаполнено(Грузчик4) Тогда
            ПровестиПоГрузчику(Грузчик4, НаборЗаписей);
        КонецЕсли;
 НаборЗаписей.Записать();         
    КонецЕсли;

КонецПроцедуры
   1Садовник
 
67 - 07.12.17 - 12:02
(61) Думал с сегодняшнего дня можно... согласен, косяк)
   Адинэснег
 
68 - 07.12.17 - 12:03
ну и еще, у тебя 146% в этом коде будет "проблема последней копейки"
Общий вес 10, грузчика 3...
нужно распределить на максимальный коэффициент (хотя он у тебя всегда 1, значит на любого грузчика) остаток
   MrStomak
 
69 - 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 лишних транзакции, если в ТЧ тысячи строк, это тысячи лишних чтений. Запросом надо.
   MrStomak
 
74 - 07.12.17 - 12:11
(73) Ни одного чтения объекта не запускаю
   MrStomak
 
75 - 07.12.17 - 12:11
И ни одного обращения к базе данных там нет.
   Адинэснег
 
76 - 07.12.17 - 12:11
ЭтотОбъект["Грузчик"+Сч].Пустая()
   ИТ директор
 
77 - 07.12.17 - 12:12
(74) Ты к реквизиту объекта обращаешься? Разве при этом не читается весь объект?
   MrStomak
 
78 - 07.12.17 - 12:13
(76) Это не обращение к БД. Это работает даже на тонком клиенте. 1Ска умеет понимать пустые ссылки без вызова СУБД.
   Адинэснег
 
79 - 07.12.17 - 12:13
(77) ну не из БД хоть, из памяти
   MrStomak
 
80 - 07.12.17 - 12:14
(77)
Этот объект - это документ, который проводится. Он уже был прочитан при создании. Конструкция ЭтотОбъект["Грузчик1"] абсолютно идентична просто Грузчик1.
   MrStomak
 
81 - 07.12.17 - 12:15
(77) Даже если бы я обращался по Ссылка.Грузчик - обращение к БД было бы только 1, а не 4, т.к. вызовы кешируются.
   ИТ директор
 
82 - 07.12.17 - 12:17
А ну да, это же модуль объекта и читаем только его реквизиты. Чота я затупил.
   MrStomak
 
83 - 07.12.17 - 12:19
(82) Код на мисте лучше не выкладывать - немедленно разведут обсуждение как всё неправильно :))
   Адинэснег
 
84 - 07.12.17 - 12:21
мы семёрошника не отпинали еще, и уже между собой
   nordbox
 
85 - 07.12.17 - 12:24
(83)>>немедленно разведут обсуждение как всё неправильно :))
И доведут простую задачу до абсурда )))
   Aldnepr
 
86 - 07.12.17 - 12:30
(83) хоть левел тролинга на мисте и зашкаливает, даже и от модера)), но только тут можно получить оперативную и порой очень качественную инфу. На других площадках можно ждать ответа до того лета), или модеры изводят до тошноты.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует