Имя: Пароль:
1C
1С v8
Перепроведение документа
, ,
0 Sayan_mi
 
09.11.17
16:12
Народ никак не пойму в чем проблема.
При проведении документа запись в регистр пишется корректно. При повторном проведении текущая запись в регистре удаляется (как оно и надо) но новая не появляется.
Код вот:
ткНаборЗаписей = РегистрыСведений.УАЗ_РаботникиОрганизаций.СоздатьНаборЗаписей();
    ткНаборЗаписей.Отбор.Регистратор.Установить(Регистратор.Ссылка);
    Для Каждого Строка из Движения Цикл
        Элемент = ткНаборЗаписей.Добавить();
        Элемент.Регистратор         = Регистратор.Ссылка;
        Элемент.Организация         = Регистратор.Организация;
        Элемент.Период                 = Регистратор.Дата;
        Элемент.Сотрудник              = Строка.Сотрудник;
        Элемент.УАЗ_РабочееМесто    = Строка.УАЗ_РабочееМесто;
    КонецЦикла;    
    ткНаборЗаписей.Записать(Истина);
1 ComradeKite
 
09.11.17
16:24
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Прочитать (Read)
Синтаксис:

Прочитать()
Описание:

Считывает записи из базы данных по установленному отбору.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

КурсыВалют = РегистрыСведений.КурсыВалют;
НаборКурсов = КурсыВалют.СоздатьНаборЗаписей();
НаборКурсов.Прочитать();
2 Naumov
 
09.11.17
16:29
(0)    Для Каждого Строка из Движения Цикл
Кто есть твои движения?
3 Sayan_mi
 
09.11.17
17:45
(1)Пробовал и прочитатать() тоже. В результате в ткНаборЗаписей появлялись две строки со старым значением в измерении УАЗ_РабочееМесто. Все остальное совпадало. После записи() в регистре сведений строчки по данному регистратору исчезали совсем. При следующем проведении появлялась опять, с новым значением.
(2)Необходимые для данного регистра данные из документа (массив структур).
4 wondkind
 
10.11.17
05:38
(1) чтооо?! что вы говорите? Зачем читать набор перед "очисткой/перезаписью". Быстродействия много? А если отберу?
5 wondkind
 
10.11.17
06:03
(3) покажи, пожалуйста, полный код процедуры этой
6 wondkind
 
10.11.17
06:08
(5) и обрати внимание на настройку документа:
"Запись движений при проведении".

Да и вообще настройки документа касательно движений. У людей часто с этим проблемы возникают.

Вот недавно столкнулся с таким "багом":
документ открываешь, перепроводишь - движения норм. Не закрывая документ жмёшь провести миллион раз - появляется миллион движений в проводках. Переоткрываешь документ и проводишь еще раз - движения снова одни.
7 Sayan_mi
 
10.11.17
07:14
(5)Я её целиком и привел. Ну разве что без вызова этой процедуры. Поигрался ещё со свойством НабораЗаписей Записывать. Опять таки что ложь что истина поведение одно и тоже. (6) лезть в настройки документа не хотелось бы у него и без моего регистра движений хватает.
8 Sayan_mi
 
10.11.17
07:36
Да для уточнения конфа ЗиУП Корп 3.1.3.253 платформа 8.3.10.2561
9 Мимохожий Однако
 
10.11.17
07:40
(0) Надо писать в регистр из данных ДОКУМЕНТА, а не движений.
10 1dvd
 
10.11.17
07:41
(9) +1
11 wondkind
 
10.11.17
07:44
(9), (10) смотрите (3)
12 Мимохожий Однако
 
10.11.17
07:46
(11) И что там?
13 wondkind
 
10.11.17
07:47
(12) наверно, описано что в переменной "Движения" хранится.
14 Мимохожий Однако
 
10.11.17
07:49
(13) А у меня кофе для гадания закончилось. Движения - они и в Африке движения, то бишь результат проведения документа.
15 Sayan_mi
 
10.11.17
07:53
полный текст процедуры
&НаСервере
Процедура УАЗ_ПроведениеРабочихМест(Регистратор, Движения) Экспорт
    ткНаборЗаписей = РегистрыСведений.УАЗ_РаботникиОрганизаций.СоздатьНаборЗаписей();
    ткНаборЗаписей.Отбор.Регистратор.Установить(Регистратор.Ссылка);
    ткНаборЗаписей.Записывать = Истина;
    Для Каждого Строка из Движения Цикл
        Элемент = ткНаборЗаписей.Добавить();
        Элемент.Регистратор         = Регистратор.Ссылка;
        Элемент.Организация         = Регистратор.Организация;
        Элемент.Период                 = Регистратор.Дата;
        Элемент.Сотрудник              = Строка.Сотрудник;
        Элемент.УАЗ_РабочееМесто    = Строка.УАЗ_РабочееМесто;
    КонецЦикла;    
    ткНаборЗаписей.Записать(Истина);
КонецПроцедуры

Параметры Регистратор - документ объект
Движения массив структур данные из документа для записи в регистр.
16 Мимохожий Однако
 
10.11.17
07:56
(15) Структуру документа покажи и делай движения (т.е. записи в регистрах) из реквизитов документа.
(13) Ну как?
17 Sayan_mi
 
10.11.17
08:01
(16) из реквизитов документа запись и идет, ну или из табличной части (там несколько документов, как следствие либо есть табличная часть и строк движений несколько либо нет и строка одна)
18 wondkind
 
10.11.17
08:04
(16) я, пожалуй, буду честным и сольюсь. Я сам не знаю шо он хочет. Просто указал на слова автора. Не хотел как-то грубить.

(17) и вообще, в чём проблема - есть же отладчик, посмотри что происходит. И не называй свои переменные так же как и встроенные:

ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Движения (RegisterRecords)
Использование:

Только чтение.
Описание:

Тип: КоллекцияДвижений.
Предоставляет доступ к коллекции наборов записей движений документа. Свойства коллекции содержат наборы записей движений документа, которые включены для данного документа в конфигурации. Имена свойств совпадают с именами объектов конфигурации, по которым могут совершаться движения, как они заданы в Конфигураторе.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
19 Мимохожий Однако
 
10.11.17
08:23
(17) Покажи структуру документа. Ты не привёл кода, который доказывает твои слова.
(18) не переживай )) Как понял,так и написал. Просто ТС не понимает, что перепутал причину (реквизиты документа) и следствие (движения документа)
20 Sayan_mi
 
10.11.17
09:15
Ну в том что назвал переменную не корректно да не прав. Тут полазил по отладчику и понял что проблема не здесь. Запись в регистре нармально создаётся (перечитывал набор записей) она исчезает позже. Т.е. другие действия в документе её затирают. Сейчас буду трассировать дальше, а переменную переобзову.
21 ComradeKite
 
10.11.17
09:54
Скорее всего в событии ПриЗаписи в модуле регистра сведений.
Закон Брукера: Даже маленькая практика стоит большой теории.