|
v7: Вопрос по хранению заполненных, но не записанных доков. | ☑ | ||
---|---|---|---|---|
0
never_sleep
05.06.17
✎
09:23
|
Есть файл выгрузки,по нему нужно создать одно поступление и множество реализаций. Все сделал. Но алгоритм работает следующим образом, сначала создает кучу реализаций, и потом по накопленным данным реализаций делает поступление. А надо, чтобы поступление было первым, и уж потом реализации. Но не хочу переписывать логику циклов и пр. пр. Поэтому вопрос. Можно ли созданные конструкцией ДокРеализация.Новый записать в какую-нибудь структуру данных? Типа Массив. И потом по этому массиву пробежаться, проводя все подряд.
|
|||
1
Ёпрст
05.06.17
✎
09:25
|
(0)Записывай. Разрешаю.
|
|||
2
Ёпрст
05.06.17
✎
09:25
|
Если че, документы в начале записывают, потом проводят
|
|||
3
never_sleep
05.06.17
✎
09:29
|
(1) Вот и попробую. (2) Ну это само собой.
|
|||
4
never_sleep
05.06.17
✎
09:31
|
(1) А в ТЗ разрешите поместить?
|
|||
5
never_sleep
05.06.17
✎
09:31
|
Или СЗ. А то в 7ке массивов нету динамических.
|
|||
6
Ёпрст
05.06.17
✎
09:35
|
(5) есть там всё. И структура и вектор и ассоциативныйВектор.
Но, это только тем, кому религия позволяет вк использовать |
|||
7
never_sleep
05.06.17
✎
09:37
|
(6) ВК?
|
|||
8
ildary
05.06.17
✎
09:39
|
(7) 1С++ называется. Под девизом "Вкуси прелести объектов восьмерки в 7.7".
|
|||
9
HawkEye
05.06.17
✎
09:41
|
(0) дарю:
УстановитьВремя(<?>,,); Синтаксис: УстановитьВремя(<Часы>,<Минуты>,<Секунды>) Назначение: Установить время документа. Параметры: <Часы> - число часов; <Минуты> - число минут; <Секунды> - число секунд. Замечание: Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. |
|||
10
never_sleep
05.06.17
✎
09:45
|
(8) А. Знаю эту штуку, но это для меня как нож для ребенка - отрежу себе причендалы в лучшем случае)
|
|||
11
never_sleep
05.06.17
✎
09:48
|
(9) Да знаю как время устанавливать. Это надо еще цикл писать после того как доки запишу все. А я хотел красиво-красиво. Просто в цикле уже существующем помещать еще даже не записанные доки в СписокЗначений и После того как очередная накопительная приходная накладная запишется пробежаться внутри по её реализациям. Хотя вот одно и то же) Просто уже спортивный интересе. Ни разу в ТЗ, массивы и пр не пихал документы.
|
|||
12
HawkEye
05.06.17
✎
09:49
|
(11) записывай документы и не проводи, записанные пиши в СЗ.
в конце проведи поступление и проведи все реализации из СЗ... |
|||
13
Масянька
05.06.17
✎
09:55
|
(9) Поддерживаю.
(11) А что некрасивого в том, что записал все реализации, в переменной (ну, типа того) сохранил время первой реализации, поступление записал переменная-1 секунда. Всё. |
|||
14
Злопчинский
05.06.17
✎
10:02
|
(11) да, в 7.7 нет никаких препятствий сделать так как ты написал
|
|||
15
never_sleep
05.06.17
✎
12:48
|
Со всем согласен. Но не могу в СЗ загнать документы. Если использовать:
СЗСписокРеализаций.ДобавитьЗначение(ДокРеализация); То получается, что в каждую ячейку СЗ попадает ссылка на саму переменную ДокРеализация, а не на документ, на который эта переменная указывает. Т.е. в СЗ потом будет как будто один и тот же документ, на который в данный момент указывает ДокРеализация. Как в СЗ положить ссылку на сам документ? Я что-то туплю. |
|||
16
LazyStranger
05.06.17
✎
12:51
|
СЗСписокРеализаций.ДобавитьЗначение(ДокРеализация.ТекущийДокумент());
|
|||
17
Сияющий Асинхраль
05.06.17
✎
13:07
|
(15) Ну тебе в (12) все сказали, что еще может непонятно?
|
|||
18
never_sleep
05.06.17
✎
13:29
|
(17) читай.
|
|||
19
chelentano
05.06.17
✎
13:32
|
(15) СЗСписокРеализаций.ДобавитьЗначение(ДокРеализация.ТекущийДокумент());
|
|||
20
never_sleep
05.06.17
✎
13:34
|
(Голосом бородача) Ребят, туплю как всегда. Стал добавлять в СЗ как указал LazyStranger в (16), но на куске:
ДокПоступление.Записать(); //ДокПоступление.Провести(); Сообщить("Проведен документ" + ДокПоступление.ТекущийДокумент()); Для К = 1 По СЗСписокРеализаций.РазмерСписка() Цикл ТекДокРеализация = СЗСписокРеализаций.ПолучитьЗначение(К); Сообщить(ТипЗначенияСтр(ТекДокРеализация)); ТекДокРеализация.Записать(); //ТекДокРеализация.Провести(); Сообщить("Проведен документ" + ТекДокРеализация.ТекущийДокумент()); КонецЦикла; Выдает: Проведен документПоступление ТМЦ GT00030036 (30.05.17) Документ ТекДокРеализация.Записать(); {E.......НО.ERT(428)}: Не выбран документ! Хотя в отладчике смотрел - есть там доки. Нормально все присваивается. Что не так сделал? |
|||
21
Ёпрст
05.06.17
✎
13:35
|
(20) нельзя записывать ссылку, полученную только на чтение.
|
|||
22
Ёпрст
05.06.17
✎
13:36
|
записать() есть только у объектов, созданных с помощью СоздатьОбъект
|
|||
23
HawkEye
05.06.17
✎
13:41
|
(20)
ДокПоступление.Записать(); //ДокПоступление.Провести(); СЗСписокРеализаций.Добавить(ДокПоступление.ТекущийДокумент()); |
|||
24
never_sleep
05.06.17
✎
13:42
|
(22) Н. Г. Чернышевский. Что делать? 1862—1863 гг..
|
|||
25
HawkEye
05.06.17
✎
13:43
|
(20)
далее ТекДок = СОздатьОбъект("Документ.РЕАЛИЗАЦИЯИЛИКАКОНТАМУТЕБЯ"); Для К = 1 По СЗСписокРеализаций.РазмерСписка() Цикл ТекДокРеализация =СЗСписокРеализаций.ПолучитьЗначение(К); ТекДок.НайтиДОкумент(ТекДокРеализация ); ТекДок.Провести(); КонецЦикла; |
|||
26
Ёпрст
05.06.17
✎
13:44
|
(0)
Звонит как-то Н. Г. Чернышевский в 3 часа ночи Ф.М.Достоевскому: -Алло, я тут подснял 2-х девиц, привёл домой, Что делать? На следующий день вышел роман "Идиот" |
|||
27
never_sleep
05.06.17
✎
13:46
|
(25) Ох и грабли. С таким же успехом я мог бы просто писать в СЗ номера документов и потом по ним искать и записывать/проводить. Я думал, можно все красиво сделать. А тут как всегда в 7ке.
|
|||
28
never_sleep
05.06.17
✎
13:46
|
(26) Да кто же спорит. Все так.
|
|||
29
Ёпрст
05.06.17
✎
13:49
|
(27) в 8-ке аналогично, если что.
НайтиДОкумент в клюшках, это аналог ПолучитьОбъект в снеговике. |
|||
30
HawkEye
05.06.17
✎
13:49
|
(27) вот твое предложение - как раз и есть грабли... я уже молчу про то, как ты пытаешься записать уже записанный документ.... даже спрашивать не буду как ты до этого додумался...
|
|||
31
Ёпрст
05.06.17
✎
13:50
|
просто, в снеговике более понятно, что есть объект, а что есть ссылка.
|
|||
32
HawkEye
05.06.17
✎
13:51
|
(31) это да... но и в снеговике не надо записывать уже записанный документ ))
|
|||
33
never_sleep
05.06.17
✎
13:53
|
(32) Да что вы прикопались к записи записанного документа. Это временный код, лишь для того чтобы проверить могу ли я получить документ из СЗ и дальше с ним нормально работать.
|
|||
34
AliAksA
05.06.17
✎
13:53
|
а я бы ещё через попытку запись сделал ... а может и лишнее это ... хз
да и НайтиДокумент(...) может не сработать - Если Выбран() не помешаеть ... чисто имхо |
|||
35
HawkEye
05.06.17
✎
13:54
|
(33) ты - не можешь, остальные - могут...
(34) зачем и почему? |
|||
36
never_sleep
05.06.17
✎
13:55
|
(35) Так в (26) все объяснено))
|
|||
37
AliAksA
05.06.17
✎
13:56
|
(35) ну встречался с глюками ... это просто страховалки
|
|||
38
never_sleep
05.06.17
✎
13:57
|
Ребят, я тут в собственном соку варюсь. Коллег 1Сников нет. поэтому "Эдвард-РукиИзЖеппы". Вы уж не обижайтесь. Но миста для меня фактически "Окно в Европу".
|
|||
39
Масянька
05.06.17
✎
14:04
|
Афигеть... Читатели, блин... :))))
|
|||
40
never_sleep
05.06.17
✎
14:14
|
Подскажите, а зачем было ограничивать функциональность ссылок получаемых как "ТекДокРеализация = СЗСписокРеализаций.ПолучитьЗначение(К);"?
ТекДокРеализация уже объявлен как объект Документ.Реализация. Ну передал я ссылку в него на другой документ. Что бы сразу не работать с ним как с полноценным документом? |
|||
41
HawkEye
05.06.17
✎
14:33
|
(40) во-первых... "ТекДокРеализация уже объявлен как объект Документ.Реализация" - где?
во вторых "СЗСписокРеализаций.ПолучитьЗначение(К)" - вернет ссылку... в третьих "Что бы сразу не работать с ним как с полноценным документом" - работай как с ссылкой, в чем проблема? |
|||
42
Йохохо
05.06.17
✎
14:39
|
(40) как доделаешь, давай еще про Неопределено, Классы и ООП
|
|||
43
never_sleep
05.06.17
✎
14:40
|
(41) Ну я не стал сюда вставлять кусок с объявлением который выше по коду шел.
ТекДокРеализация = СоздатьОбъект("Документ.Реализация"); Я вот так написал. Все работает, спасибо. ТекДокРеализация.НайтиДокумент(СЗСписокРеализаций.ПолучитьЗначение(К)); Далее "Вернет ссылку". Ну вот и отлично. Ссылка - это же указатель на место в памяти где лежит объект, так ведь. И я её передал в корректную переменную. Что бы сразу не дать мне пользоваться всем тем, что там лежит по адресу. |
|||
44
never_sleep
05.06.17
✎
14:42
|
(42) Да я в нем и не волоку достаточно, если бы уж быть честным.
|
|||
45
Йохохо
05.06.17
✎
14:43
|
(43) написал же Ёпрст в (29) "НайтиДОкумент в клюшках, это аналог ПолучитьОбъект в снеговике." А ты опять "Далее "Вернет ссылку"."
|
|||
46
never_sleep
05.06.17
✎
14:47
|
Я просто не пойму физическую разницу между:
СЗСписокРеализаций.ПолучитьЗначение(К) и ТекДокРеализация.НайтиДокумент(СЗСписокРеализаций.ПолучитьЗначение(К)) И там и там в ячейке ОЗУ, в которой будет храниться что первое что второе значение, разве будет не ссылка на конкретный документ? |
|||
47
Йохохо
05.06.17
✎
14:51
|
(46) первое только данные, у которых нет метода .Записать()
|
|||
48
never_sleep
05.06.17
✎
14:53
|
(47) Да я понял. Что первый - это как бы гольная ссылка. А второй - уже вроде как живой объект. Вопрос в том, если на физическом уровне скорее все одинаково, зачем все разделять на идеологическом?
|
|||
49
1dvd
05.06.17
✎
15:04
|
это... А транзакции не предлагали ещё?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |