|
null в ОперацииБух | ☑ | ||
---|---|---|---|---|
0
Александр111
08.01.21
✎
15:17
|
Добрый день!
При сворачивании базы в бухпроводках по некоторым счетам значения субконто установились как null я попробовал программно создать операцию и перевести этот остаток с null на пустые ссылки, но сделать проводку, где по одному из субконто у меня будет null не удается, она упорно встает как неопределено Как исправить? Могу изменить исходную операцию, но нужно сделать отдельной операцией. |
|||
1
Ненавижу 1С
гуру
08.01.21
✎
15:21
|
(0) вы там определитесь уже NULL, Неопределено или пустые ссылки...
|
|||
2
RomanYS
08.01.21
✎
15:22
|
(0) null - значит нет записи в таблице субонто, неопределено - пустое значение для составного типа
|
|||
3
Александр111
08.01.21
✎
15:25
|
Стоит Null
|
|||
4
Ненавижу 1С
гуру
08.01.21
✎
15:26
|
скорее всего меняли состав субконто на счетах. Верните субконто
|
|||
5
Александр111
08.01.21
✎
15:27
|
Нужно вместо Null установить пустую ссылку т.е. дать сторнирующую операцию с Null
и правильную с Неопределено |
|||
6
Александр111
08.01.21
✎
15:28
|
(4) cскорее всего да, но хотелось бы исправить проводками
|
|||
7
RomanYS
08.01.21
✎
15:32
|
(5) >> дать сторнирующую операцию с Null
Нужно удалить запись с этим субконто, не помню можно ли это сделать кодом. Через сериализацию точно можно. И записывать набор только в режиме загрузка=Истина, иначе все недостающие записи восстановятся. Проще и правильнее отремонтировать исходную битую операцию |
|||
8
Александр111
08.01.21
✎
15:35
|
Откорректировать исходную операцию не проблема, но хотелось бы понять как все таки сделать это с помощью сторнирующих проводок.
|
|||
9
RomanYS
08.01.21
✎
15:39
|
(8) Очевидно нужно заполнить их также, т.е. криво
|
|||
10
Александр111
08.01.21
✎
15:44
|
Даже если устанавливать програмно субконто=Null записывается как неопределено.
Остаток по субконто с типом null и что с ним делать? |
|||
11
RomanYS
08.01.21
✎
15:51
|
(10) Логично, автоматическое приведение типов. Ты игнорируешь что тебе пишут? Перечитай (2)
|
|||
12
Александр111
08.01.21
✎
15:51
|
И
|
|||
13
Александр111
08.01.21
✎
15:52
|
(0) но нужно сделать отдельной операцией.
|
|||
14
RomanYS
08.01.21
✎
15:52
|
(12)
РегистрБухгалтерииСубконто.<Имя регистра бухгалтерии> (AccountingRegisterExtDimensions.<Accouting register name>) Удалить (Delete) Синтаксис: Удалить(<ВидСубконто>) Параметры: <ВидСубконто> (обязательный) Тип: ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>. Передается ключ элемента соответствия, который необходимо удалить. Описание: Удаляет элемент коллекции субконто. И записывай в режиме загрузки |
|||
15
Александр111
08.01.21
✎
16:01
|
(14) т. е. все таки корректировка исходной операции. Но (о) нужно сделать отдельной операцией.
|
|||
16
RomanYS
08.01.21
✎
16:02
|
(15) Нет не корректировка. В новой операции удали субконто где нужно получить Null
|
|||
17
Александр111
08.01.21
✎
16:04
|
Ок. понял, завтра попробую. Спасибо.
|
|||
18
Ёпрст
08.01.21
✎
17:18
|
||||
19
Александр111
09.01.21
✎
08:31
|
(14) не получается, вместо null присваивает пустое значение, так же как и при использовании оператора неопределено. (18) Нет стартмани чтобы скачать.
Причина появления ошибки видимо в том, что в программе по 16 год не велся партионный учет, а с 16 по 17 начали вести. остатки сворачивали на начало 18 г. из http://catalog.mista.ru/public/1142232/ ПРАВИЛО:В случае отключенного на счете признака ведения учета, соответствующее измерение должно быть не ПустаяСсылка справочника, а равняться NULL. |
|||
20
RomanYS
09.01.21
✎
09:36
|
(19) код покажи
|
|||
21
Александр111
09.01.21
✎
09:52
|
Проводка = РегХозрасчетный.Добавить();
Проводка.Период = Объект.ДатаоКОНЧАНИЯ; Проводка.Регистратор = ДокОперацияСсылка; Если Кд.Счет.Вид=ВидСчета.Активный Тогда Проводка.СчетКт = Счет000; Проводка.СчетДт = Кд.Счет; кол = 0; Если Кд.Счет.УчетПоПодразделениям=Истина Тогда Проводка.ПодразделениеДт =Кд.Подразделение; КонецЕсли; кол = 0; Пока кол < Кд.Счет.ВидыСубконто.Количество() Цикл Субконто =Кд.Счет.ВидыСубконто[кол].ВидСубконто; Если кол = 0 Тогда // Проводка.ПодразделениеКт = Подр1; Проводка.СубконтоДт[Субконто] = Кд.Субконто1; ИначеЕсли кол = 1 Тогда Проводка.СубконтоДт[Субконто] = Кд.Субконто2; ИначеЕсли кол = 2 Тогда Если Кд.Субконто3=NULL Тогда Сообщить("!!"); //Проводка.СубконтоДт[Субконто] = неопределено; Проводка.СубконтоДт.Удалить(Субконто); Иначе Проводка.СубконтоДт[Субконто] = Кд.Субконто3; КонецЕсли; КонецЕсли; кол = кол+1; |
|||
22
RomanYS
09.01.21
✎
09:55
|
(21) Что такое Кд? "Кд.Субконто3=NULL" точно срабатывает?
Про режи загрузки при записи не забыл? |
|||
23
Александр111
09.01.21
✎
09:58
|
Кд.Субконто3=NULL" точно срабатывает,
Но если присваиваю Кд.Субконто3=NULL; то присваивается неопределено, режим загрузки истина |
|||
24
RomanYS
09.01.21
✎
10:24
|
(23) Попробуй выгрузить в XML и удалить (у нужной проводки)
<ExtDimensionTypeDr>8bbba69b-fc84-4ec0-aeef-2a4b48042eca</ExtDimensionTypeDr> <ExtDimensionDr xsi:nil="true"/> ИД субконто у тебя будет другое. И загрузи обратно. И будь готов к тому что итоги по РБ возможно придётся пересчитывать |
|||
25
Александр111
09.01.21
✎
10:30
|
Универсальной обработкой?
|
|||
26
RomanYS
09.01.21
✎
10:35
|
(25) ВыгрузкаЗагрузкаXML c ИТСа, есть в дистре КД2
|
|||
27
Cyberhawk
09.01.21
✎
10:36
|
нулл в коде никакого смысла никуда присваивать (при записи) нет
|
|||
28
Александр111
09.01.21
✎
10:40
|
Проводка.СубконтоДт.Вставить(Субконто,Null); -?
|
|||
29
RomanYS
09.01.21
✎
10:43
|
(28) нет. Null значит нет такой записи
|
|||
30
Александр111
09.01.21
✎
10:48
|
Короче, програмно - никак, через выгрузку загрузку xml - как то извращенно. Придется исправлять первичные документы.
|
|||
31
RomanYS
09.01.21
✎
10:52
|
(30) :)))
|
|||
32
Ёпрст
09.01.21
✎
11:00
|
(30) у тя файловая ?
Так то в скуле апдейт и привет |
|||
33
Александр111
09.01.21
✎
11:02
|
Нужно средствами 1с (32)
|
|||
34
Александр111
09.01.21
✎
11:44
|
сделал так
Выборка = Документы.ОперацияБух.Выбрать(нАЧАЛОдНЯ(ДатаНачала),кОНЕЦдНЯ(ДатаОкончания),,); Пока выборка.Следующий() Цикл //Выборка=УдалитьОпер; Если Выборка.ПометкаУдаления=Ложь Тогда Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Выборка.Ссылка); Набор.Прочитать(); Для каждого Запись из Набор Цикл кол = 0; Пока кол < Запись.СчетДт.ВидыСубконто.Количество() Цикл Субконто =Запись.СчетДт.ВидыСубконто[кол].ВидСубконто; Если кол = 0 Тогда Если Запись.СубконтоДт[Субконто]=NULL или Запись.СубконтоДт[Субконто]=неопределено Тогда Запись.СубконтоДт[Субконто]=неопределено; //Сообщить(Запись.СубконтоДт[Субконто]); Конецесли; ИначеЕсли кол = 1 Тогда Если Запись.СубконтоДт[Субконто]=NULL или Запись.СубконтоДт[Субконто]=неопределено Тогда Запись.СубконтоДт[Субконто]=неопределено; //Сообщить(Запись.СубконтоДт[Субконто]); Конецесли; ИначеЕсли кол = 2 Тогда Если Запись.СубконтоДт[Субконто]=NULL или Запись.СубконтоДт[Субконто]=неопределено Тогда Запись.СубконтоДт[Субконто]=неопределено; //Сообщить(Запись.СубконтоДт[Субконто]); КонецЕсли; КонецЕсли; кол = кол+1; ////Сообщить(счет); КонецЦикла; кол = 0; Пока кол < Запись.СчетКт.ВидыСубконто.Количество() Цикл Субконто =Запись.СчетКт.ВидыСубконто[кол].ВидСубконто; Если кол = 0 Тогда Если Запись.СубконтоКт[Субконто]=NULL или Запись.СубконтоКт[Субконто]=неопределено Тогда Запись.СубконтоКт[Субконто]=неопределено; //Сообщить(Запись.СубконтоКт[Субконто]); Конецесли; ИначеЕсли кол = 1 Тогда Если Запись.СубконтоКт[Субконто]=NULL или Запись.СубконтоКт[Субконто]=неопределено Тогда Запись.СубконтоКт[Субконто]=неопределено; //Сообщить(Запись.СубконтоКт[Субконто]); Конецесли; ИначеЕсли кол = 2 Тогда Если Запись.СубконтоКт[Субконто]=NULL или Запись.СубконтоКт[Субконто]=неопределено Тогда Запись.СубконтоКт[Субконто]=неопределено; //Сообщить(Запись.СубконтоКт[Субконто]); КонецЕсли; КонецЕсли; кол = кол+1; ////Сообщить(счет); КонецЦикла; КонецЦикла; Набор.Записать(); Конецесли; КонецЦикла; |
|||
35
Ёпрст
09.01.21
✎
11:53
|
И зачем Неопределенно туда пихаешь, если должен быть NULL ?
|
|||
36
RomanYS
09.01.21
✎
12:11
|
(35)
1. "зачем" - он решил исправить кривые проводки, а не пытаться их сторнировать 2. "если должен быть NULL" - так NULL всё равно не запихнёшь |
|||
37
Александр111
09.01.21
✎
12:12
|
Точно
|
|||
38
RomanYS
09.01.21
✎
12:13
|
(34) сработало? - ну и ладно
Вообще конечно вермишель из "ИначеЕсли кол = 1 Тогда" вывзывает тихий ужас )) |
|||
39
Александр111
09.01.21
✎
12:17
|
Лепил на скорую руку
|
|||
40
RomanYS
09.01.21
✎
12:37
|
... ДтКт = Новый Структура("Дт,Кт");
Для каждого Запись из Набор Цикл Для каждого ЭлДтКт Из ДтКт Цикл Для каждого ЭлВидСубконто Из Запись["Счет" +ЭлДтКт.Ключ].ВидыСубконто Цикл ВидСубконто = ЭлВидСубконто .ВидСубконто; ОписаниеТипа = ВидСубконто.ТипЗначения; Запись["Субконто" + ЭлДтКт.Ключ][ВидСубконто] = ВидСубконто.ПривестиЗначение(Запись["Субконто" + ЭлДтКт.Ключ][ВидСубконто]); КонецЦикла; КонецЦикла; КонецЦикла; |
|||
41
RomanYS
09.01.21
✎
12:51
|
*(40) описка
Запись["Субконто" + ЭлДтКт.Ключ][ВидСубконто] = ОписаниеТипа.ПривестиЗначение(Запись["Субконто" + ЭлДтКт.Ключ][ВидСубконто]); |
|||
42
Александр111
09.01.21
✎
13:08
|
ТАК ККРАСИВШЕ )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |