|
v7: Алгоритм разбития документа | ☑ | ||
---|---|---|---|---|
0
zenon46
31.10.17
✎
22:30
|
Есть 7.7, в ней нужно реализовать следующий алгоритм, итак дано : таблица значений в значениях которой ссылки на документы, надо обработать эти документы так, что все документы сумма которого, больше чем заданное значение, надо разбивать на более мелкие документы, т.е. из одного дока сделать несколько маленьких не превышающий определенную сумму.
|
|||
1
PuhUfa
31.10.17
✎
22:34
|
(0) Делай, мы не против
|
|||
2
zenon46
31.10.17
✎
22:38
|
(1) вообще то хотел получить совет, как лучше это сделать.
|
|||
3
PuhUfa
31.10.17
✎
22:42
|
(2) а есть варианты?
берешь документ с суммой больше заданной, создаешь еще один и в него переносишь "лишнее". записываешь/проводишь. |
|||
4
Злопчинский
31.10.17
✎
23:22
|
(0) решаемо без извращений
у меня при свертке генерится служебный документ, и при этом с границей не более 2000 строк - в итоге куча доков по 2000 строк... |
|||
5
piter3
31.10.17
✎
23:23
|
а куда остаток от откруглений девать уже понимаешь?
|
|||
6
zenon46
31.10.17
✎
23:29
|
(5) эта уже другая история, это в ручную откорректируют
|
|||
7
zenon46
31.10.17
✎
23:31
|
(4) подтолкните на правильный алгоритм решения задачи.
|
|||
8
Злопчинский
01.11.17
✎
00:23
|
(5) какой остаток от округления?
это только если принять что одну строку табличной части придется разбивать между двумя документами - но это вряд ли |
|||
9
Злопчинский
01.11.17
✎
00:29
|
(7) в чем трудность то?
ТЗ.Сортировать("Сумма-"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ТЗ.Сумма <= ЗаданноеЗначение Тогда Прервать; КонецЕсли; ДокументДляРазбиения = ТЗ.Документ; ВыполнитьРазбиениеДокумента(ДокументДляРазбиения); КонецЦикла; |
|||
10
big
01.11.17
✎
04:37
|
(9) Толсто троллишь )))
Вангую следующий вопрос - где находится ВыполнитьРазбиениеДокумента(ДокументДляРазбиения) ))) |
|||
11
big
01.11.17
✎
04:48
|
Примерно так обходим общие реквизиты и реквизиты шапки
Для а=1 По Метаданные.ОбщийРеквизитДокумента() Цикл РеквизитИд = Метаданные.ОбщийРеквизитДокумента(а).Идентификатор; РеквизитЗн = ДокИсходный.ПолучитьАтрибут(РеквизитИд); ДокРезультат.УстановитьАтрибут(РеквизитИд,РеквизитЗн); КонецЦикла; Для а=1 По Метаданные.Документ(ДокИсходный.Вид()).РеквизитШапки() Цикл РеквизитИд = Метаданные.Документ(ДокИсходный.Вид()).РеквизитШапки(а).Идентификатор; РеквизитЗн = ДокИсходный.ПолучитьАтрибут(РеквизитИд); ДокРезультат.УстановитьАтрибут(РеквизитИд,РеквизитЗн); КонецЦикла; Естесственно реквизиты ДатаДок и НомерДок заполняются отдельно. Также надо установить нужное время документа Подобным же образом обходим табличную часть, но уже контролируем итоговую сумму, количество строк и т.д. и т.п. |
|||
12
igorPetrov
01.11.17
✎
04:55
|
(11) Бред.
|
|||
15
big
01.11.17
✎
06:24
|
(14) По теме есть что-то сказать?
|
|||
16
igorPetrov
01.11.17
✎
06:39
|
(15) Чего хочешь-то?
|
|||
17
HawkEye
01.11.17
✎
08:12
|
(0) а ты на какой должности работаешь в этой компании?
|
|||
18
tgu82
01.11.17
✎
08:22
|
(0) Такую обработку написать совсем не сложно. А что касается округления - по копейке откусывай или добавляй в автомате.
|
|||
19
Масянька
01.11.17
✎
08:31
|
(0) ТКВ - зачем? От себя - что за документы?
|
|||
20
Dump
01.11.17
✎
08:39
|
(0) 7 лет на Мисте - вроде не студент...
Вы точно программист? |
|||
21
zenon46
01.11.17
✎
09:56
|
(19) документы реализации.
Что-то ернуда получается ( Сч = ""; ТаблицРеализДляСчФакт.ВыбратьСтроки(); Для Сч = 1 По ТаблицРеализДляСчФакт.КоличествоСтрок() Цикл Таб = ТаблицРеализДляСчФакт.ПолучитьСтроку(Сч); Пока (Таб.Док.СуммаВзаиморасчетов > МаксСуммаНакладных) Цикл МелкиеРеализации.Новый(); СкопироватьРеквизитыШапки(Таб.Док, МелкиеРеализации); Пока (МелкиеРеализации.СуммаВзаиморасчетов < МаксСуммаНакладных) Цикл Таб.Док.ВыбратьСтроки(); Пока Таб.Док.ПолучитьСтроку() = 1 Цикл МелкиеРеализации.НоваяСтрока(); МелкиеРеализации.Номенклатура = Таб.Док.Номенклатура; МелкиеРеализации.Количество = Таб.Док.Количество; МелкиеРеализации.ВалютаОсн = Таб.Док.ВалютаОсн; МелкиеРеализации.КурсОсн = Таб.Док.КурсОсн; МелкиеРеализации.КратностьОсн = Таб.Док.КратностьОсн; МелкиеРеализации.Валюта = Таб.Док.Валюта; МелкиеРеализации.Курс = Таб.Док.Курс; МелкиеРеализации.Кратность = Таб.Док.Кратность; МелкиеРеализации.Партия = Таб.Док.Партия; МелкиеРеализации.Цена = Таб.Док.Цена; МелкиеРеализации.Единица = Таб.Док.Единица; МелкиеРеализации.Коэффициент = 1; МелкиеРеализации.Проект = Таб.Док.Проект; МелкиеРеализации.СтавкаНДС = Таб.Док.СтавкаНДС; МелкиеРеализации.СуммаВзаиморасчетов = МелкиеРеализации.Итог("Сумма")+?(МелкиеРеализации.СуммаВклНП =1,0,МелкиеРеализации.Итог("СуммаНП" ))+?(МелкиеРеализации.СуммаВклНДС=1,0,МелкиеРеализации.Итог("СуммаНДС")); глПересчетТаблЧасти(МелкиеРеализации,"Сумма"); КонецЦикла; КонецЦикла; МелкиеРеализации.Комментарий = "Документ создан автоматически! С помощью обработки."; МелкиеРеализации.Записать(); Таб.Док.СуммаВзаиморасчетов = Таб.Док.СуммаВзаиморасчетов - МелкиеРеализации.СуммаВзаиморасчетов КонецЦикла; КонецЦикла; |
|||
22
Масянька
01.11.17
✎
10:23
|
(21) А ты в курсе, что нумерация другая будет? Как с покупателями вопрос решать будете?
|
|||
23
Ёпрст
01.11.17
✎
10:34
|
(21) сам то понял, какую хню написал с циклами ?
|
|||
24
пипец
01.11.17
✎
10:35
|
метод пузырька уже забыли
|
|||
25
Ёпрст
01.11.17
✎
10:36
|
если что, код в (21) в топку
|
|||
26
HawkEye
01.11.17
✎
10:37
|
(21) завязывай с программированием....
|
|||
27
zenon46
01.11.17
✎
10:42
|
(26) а кроме пустого трепа есть что по делу то сказать, я смотру тут одни только клавиатурные мастера собрались
|
|||
28
zenon46
01.11.17
✎
10:43
|
(22) конечно в курсе, это другая история, это все происходит между своими фирмами.
|
|||
29
Ёпрст
01.11.17
✎
10:44
|
(27)
ну, то что написано в (21) - ни в какие ворота. ты всегда выбираешь ВСЕ строки документа и пихаешь его в новый, еще и хочешь, чтоб сумма как-то "разбилась" |
|||
30
Масянька
01.11.17
✎
10:44
|
(28) Я бы решала на уровне проведения док-та (при записи после создания).
|
|||
31
Dump
01.11.17
✎
10:45
|
(26) "завязывай с программированием" - вы льстите ТС, он еще не начинал ;-)
|
|||
32
Ёпрст
01.11.17
✎
10:46
|
и нужно, хотя бы определится, ты разбиваешь только по строкам документа или еще и по количеству.
|
|||
33
zenon46
01.11.17
✎
10:48
|
(29) да я понимаю, что там все запихивается сплошником, потому и выложил, что бы получить помощь, как в этом куске организовать уменьшение в "большом" документе, и по количеству тоже
|
|||
34
Ёпрст
01.11.17
✎
10:48
|
ну и на тебе пример. Показывай, как ты будешь "разбивать"
Сумма дока не должна быть >=100 Исходный Док: товар количество цена сумма 1.Валенки 10шт 11 руб 110 2.Сапоги 20шт 6 руб 120 |
|||
35
Ёпрст
01.11.17
✎
10:49
|
ну и
3.Галоши 2шт 120руб 240 |
|||
36
Масянька
01.11.17
✎
10:49
|
(34) У тебя примеры - не для начинающих :)
|
|||
37
Ёпрст
01.11.17
✎
10:50
|
(36) если человек не понимает хотя бы "на пальцах" как оно должно "разбивать", какой смысл что-то кодить ?
|
|||
38
Масянька
01.11.17
✎
10:54
|
(37) Как учили в универе: пишите на бумажке.
|
|||
39
zenon46
01.11.17
✎
11:29
|
(34) ды как, в исходном доке должны остаться
9 валенки - 99р 1. документ №1 - 1 валенки и 14 сапоги 95р 2. документ №2 - 6 валенки - 36р 3. документ №3 - галоши 2(если не возможно развалить по единице измерения) ну или как варинат вместо одного дока два по одной галоше. |
|||
40
Масянька
01.11.17
✎
11:32
|
(39) 3. Цена галош превышает сумму док-та. Или ты предлагаешь - одну галошу из пары?
|
|||
41
igorPetrov
01.11.17
✎
11:33
|
(39) " как варинат вместо одного дока два по одной галоше." Супер!!!!!
|
|||
42
zenon46
01.11.17
✎
11:34
|
(40) вы че реально издеваетесь, галоши и так парами идут, если штуками, то да по одной штуке, я не пойму почему вас так волнует, по одной или по две, да хоть по полторы....
|
|||
43
igorPetrov
01.11.17
✎
11:36
|
(42) Ну если ты планируешь продавать по полторы галоши, то ты зря тут вопросы задаешь. Иди и делай как хочешь.
|
|||
44
Масянька
01.11.17
✎
11:36
|
(42) Отрежьте мне полторы галоши... Хочу в твой магазин!
|
|||
45
Ёпрст
01.11.17
✎
11:37
|
(39) Это ты как вычислил ?
А почему не 1. валенки 9 шт - 99 руб ? |
|||
46
Масянька
01.11.17
✎
11:37
|
+ (44) А после меня придет igorPetrov - ему впарите пол галоши :))))
|
|||
47
igorPetrov
01.11.17
✎
11:38
|
(46) :)))
|
|||
48
igorPetrov
01.11.17
✎
11:38
|
(45) Да, ему пофигу.
|
|||
49
Масянька
01.11.17
✎
11:39
|
(47) А я-то думала: почему футболисты в бутсах разного цвета...
|
|||
50
igorPetrov
01.11.17
✎
11:49
|
(49) Да, у таких вот как ТС и покупали.
|
|||
51
Ёпрст
01.11.17
✎
11:53
|
На вот тебе примитив:
выгружаешь в ТЗ таб часть. далее сортируешь, например, по цене по убыванию далее цикл по строкам тз. берешь строку, смотришь, сколько максимально количество товара ты можешь взять из этой строки, не выходя за пределы суммы документа, если уже на первой итерации вышел (как в галошах - сразу лепишь документ , уменьшаешь количество в ТЗ, в начало цикла) далее переходишь к след строке, если на первой же итерации вылезаешь за предел - лепишь документ, нет, добавляешь в новый документ.. и т.д |
|||
52
Ёпрст
01.11.17
✎
11:55
|
При желании, всё можно сделать через рандом:
рандомом находишь строку в тз, в которой количество>0 далее рандомом количество в цикле, пока сумма не превышает. |
|||
53
Азазель
01.11.17
✎
12:51
|
(52) Вместо рандома быстрее в ТЗ с копией табличной части разделяемого документа добавить колонку Сумма+ суммаНДС, а затем оортировать строки полученной таблицы по возрастанию значений этой новой колонки.
Потом добавить колонку с нарастающим итогом с начала таблицы и заполнить ее в цикле перебора строк. При появлении строки с суммой нарастающего итога, превышающей лимит, решить задачу уменьшения количества товаров по этой строке до величины нарастающего итога, не превышающей лимит. Оставшееся количество товаров из проблемной строки записать в новую таблицу для разделения. В ту же таблицу добавить все ниже расположенные строки исходной ТЗ. Следующим шагом будет загрузка оставшихся строк табличной части в разделяемый документ. Затем при необходимости таким же путем обрабатывается новая таблица для разделения. |
|||
54
Ёпрст
01.11.17
✎
12:54
|
(53) не пойдёт.
Ему не только строки нужно целиком, ему нужно рулить количеством товара. |
|||
55
HawkEye
01.11.17
✎
12:59
|
(27) ты плохо видишь... из клавиатурных мастеров тут только ты.... все остальные тебе пытаются сказать, что прежде чем браться за клавиатуру, надо головой поработать....
|
|||
56
Азазель
01.11.17
✎
17:19
|
(54) ложное суждение, поскольку редактирование количества предусмотрено в тексте (53)
|
|||
57
Ёпрст
01.11.17
✎
17:25
|
(56) наверное, лень читать до конца было, я на своей волне.. читаю по-диагонали
|
|||
58
Злопчинский
01.11.17
✎
17:43
|
Блин, задача простая как валенок. Как раз из этого магазина.
|
|||
59
tgu82
01.11.17
✎
17:44
|
(58) Тут вопрос - есть товар в количестве 1 и в сумме превышающей нужную. Вот с этим что делать? А все остальное - мелочи жизни.
|
|||
60
Масянька
01.11.17
✎
17:47
|
(58) Ну, дык, возьми себе пол валенка... По задаче.
|
|||
61
zenon46
01.11.17
✎
17:50
|
(59) такой товар оставлять в первоначальном документе.
|
|||
62
Ёпрст
01.11.17
✎
17:53
|
(53) и да, рандом не для скорости, он нужен для "правдивости"
чтоб в каждой накладной был разнородный товар, а не моно с одним количеством и одной суммой, что выглядит, подозрительно :) |
|||
63
tgu82
01.11.17
✎
17:53
|
(60) Хот кстати задачка-то не очень простая. Ну да - отсортировали строки по возрастанию суммы или если ндс - вот только если 2-я строка+3-я превышают сумму и количество там и там один надо смотреть то ли 1-ую + 3-ую то ли 2-ую+4-ую и т.д.
|
|||
64
Масянька
01.11.17
✎
17:54
|
(62) В данной задаче - правдивость на фиг не нужна.
|
|||
65
Ёпрст
01.11.17
✎
18:00
|
(64) Писать нужно сразу и хорошо.
Если товар еще и упакован, то считать по мин. количеству вложений еще. |
|||
66
Масянька
01.11.17
✎
18:00
|
(63) В данном случае (как описана задача) - не стоит браться.
Почему? Слишком много "если".... Я пару лет назад писала гиперболическую наценку. Причем, как оказалось (сама удивилась :) ) работает. Но - все равно проверяют и правят. |
|||
67
Ёпрст
01.11.17
✎
18:00
|
или вес там, к примеру.
|
|||
68
zenon46
01.11.17
✎
18:01
|
(64) что вы прицепились к правдивости, это формирование документов между агентом и принципалом, там абсолютно побоку где и какой товар, главное не выскакивать за резмерность документа.
|
|||
69
Масянька
01.11.17
✎
18:02
|
(65) Хорошо - при проведении/записи док-та (сразу оглашать сумму и кидать в другой).
|
|||
70
Масянька
01.11.17
✎
18:02
|
(66) (69) ИМХО.
|
|||
71
Масянька
01.11.17
✎
18:02
|
(68) Делайте сразу - так как надо.
|
|||
72
zenon46
01.11.17
✎
18:10
|
Остановился, на следующем этапе : в этой таблице значений, содержится полностью разложенный документ, т.е. количество в каждой строке равно 1. Как ее правильно теперь обработать, сбросить в промежуточную таблицу по условию превышения, проблема в том что на следующей итерации можно выскочить за предел суммы а назад не вернуть.
ВремТаблицаРазложенная.Номенклатура; ВремТаблицаРазложенная.Количество; ВремТаблицаРазложенная.Единица; ВремТаблицаРазложенная.Коэффициент; ВремТаблицаРазложенная.Цена; ВремТаблицаРазложенная.Сумма; ВремТаблицаРазложенная.СтавкаНДС; ВремТаблицаРазложенная.СуммаНДС; ВремТаблицаРазложенная.СтавкаНП; ВремТаблицаРазложенная.СуммаНП; ВремТаблицаРазложенная.Партия; ВремТаблицаРазложенная.МинЦенДатаДок; ВремТаблицаРазложенная.ПроцРазЦен; ВремТаблицаРазложенная.РазницаТекЦенаИПрайс; ВремТаблицаРазложенная.ДляРазбивки; ВремТаблицаРазложенная.СчетФактураКомитента; И да, таких документов в месяц, превышающий определенный предел не много, делается все это на сервере в ночное время, потому подождать тут не вопрос. |
|||
73
ТогдаКонецЕсли
01.11.17
✎
18:53
|
о задаче рюкзаков еще никто не вспоминал?
|
|||
74
Злопчинский
01.11.17
✎
18:53
|
Пусть автор не мучит нам мозги а обозначить бюджет для простой задачи когда только строки перераспределчются. Внутри строки ничего не бьем
|
|||
75
Злопчинский
01.11.17
✎
18:55
|
Поехали!
Демпингуем? Я сделаю эту задачу за 10 000 руб |
|||
76
Смотрящий
01.11.17
✎
18:58
|
9 999.99
|
|||
77
zenon46
01.11.17
✎
19:02
|
(74) я смотрю тут вообще никто себе мозги ну мучит, а пишет одну охинею...
|
|||
78
Сияющий Асинхраль
01.11.17
✎
20:01
|
(77) Ну так ты за работу деньги получаешь, а кому-то за тебя мозги мучить - ну ты наивный...
Кстати, пишется Ахинея :-) И, да, если особо крупных цен и сумм у тебя не наблюдается, то я бы просто тупо добавлял в документ по одной строке до тех пор пока сумма всех строк не превышает нужной суммы, как только сумма из следующей строки будет превышать нужное значение означенная строка становится первой строкой следующего документа и т.д. Если же есть такие строки, которые могут превысить нужную сумму документа, то тут уж придется строку делить, вот тут и встанет вопрос можно ли продавать по одному валенку, хотя, подозреваю, что в реальных случаях такого быть не должно (особенно при перепродажах между своими фирмами) |
|||
79
zenon46
01.11.17
✎
20:04
|
(78) в (72) я уже написал на ком этапе.
НабралиСумму = 0; ТекущаяСтрока = 1; ВремТаблицаРазложенная.ВыбратьСтроки(); Пока ВремТаблицаРазложенная.ПолучитьСтроку() = 1 Цикл Если НабралиСумму < МаксСуммаНакладных Тогда //копируем строку из ТабличнойЧастиДока НабралиСумму = НабралиСумму + ПромежТаблица.Итог("Сумма"); ПромежТаблица.НоваяСтрока(); Для Сч = 1 По ВремТаблицаРазложенная.КоличествоКолонок() Цикл ПромежТаблица.УстановитьЗначение(ТекущаяСтрока,Сч,ВремТаблицаРазложенная.ПолучитьЗначение(ТекущаяСтрока,Сч)); КонецЦикла; ТекущаяСтрока = ТекущаяСтрока + 1; //закончили копировани Иначе //закрываем документ и очищаем Табличную часть нового документа. //ТекущаяСтрока = ТекущаяСтрока - 1; ПромежТаблица.ВыбратьСтроку(); НабралиСумму = 0; ПромежТаблица.УдалитьСтроки(); КонецЕсли; КонецЦикла; Вот после первого формирования документа, падает в ошибку, номер за пределами значения. |
|||
80
zenon46
01.11.17
✎
20:21
|
НабралиСумму = 0;
ТекущаяСтрока = 1; ВремТаблицаРазложенная.ВыбратьСтроки(); Пока ВремТаблицаРазложенная.ПолучитьСтроку() = 1 Цикл Если НабралиСумму < МаксСуммаНакладных Тогда //копируем строку из ТабличнойЧастиДока НабралиСумму = НабралиСумму + ПромежТаблица.Итог("Сумма"); ПромежТаблица.НоваяСтрока(); Для Сч = 1 По ВремТаблицаРазложенная.КоличествоКолонок() Цикл ПромежТаблица.УстановитьЗначение(ПромежТаблица.НомерСтроки,Сч,ВремТаблицаРазложенная.ПолучитьЗначение(ТекущаяСтрока,Сч)); КонецЦикла; ТекущаяСтрока = ТекущаяСтрока + 1; //закончили копировани Иначе //закрываем документ и очищаем Табличную часть нового документа. //ТекущаяСтрока = ТекущаяСтрока - 1; ПромежТаблица.ВыбратьСтроку(); НабралиСумму = 0; ПромежТаблица.УдалитьСтроки(); КонецЕсли; КонецЦикла; вот так работает |
|||
81
Сияющий Асинхраль
01.11.17
✎
20:36
|
Зачем так заумно, все равно ведь неправильно. Пиши проще:
НабралиСумму = 0; ВремТаблицаРазложенная.ВыбратьСтроки(); Пока ВремТаблицаРазложенная.ПолучитьСтроку() = 1 Цикл Если НабралиСумму + ВремТаблицаРазложенная.Сумма < МаксСуммаНакладных Тогда НабралиСумму = НабралиСумму + ВремТаблицаРазложенная.Сумма; // Далее добавляем строку в документ Иначе // Здесь, надо сделать НОВЫЙ документ, и начать по новой набирать переменную НабралиСУмму, т.е. НабралиСумму = 0; // Создание нового документа пиши сам. ЗДЕСЬ // После его создания Если НабралиСумму + ВремТаблицаРазложенная.Сумма < МаксСуммаНакладных Тогда НабралиСумму = НабралиСумму + ВремТаблицаРазложенная.Сумма; Иначе // Здесь тот редкий случай, когда строку надо делить, скорее всего не реализуется... КонецЕсли; КонецЕсли; КонецЦикла; |
|||
82
Злопчинский
01.11.17
✎
20:51
|
Хреняк и в продакшен
|
|||
83
Злопчинский
01.11.17
✎
20:51
|
Пипл не понимает что надо алгоритм нарисовать
|
|||
84
Злопчинский
01.11.17
✎
20:52
|
Без нарисованного - программить с головы - надо иметь много гитик
|
|||
85
Злопчинский
01.11.17
✎
20:58
|
То есть длина члена должна более менее соответствовать глубине влагалища для получения сатисфакшена.
В противном случае результат не гарантируется |
|||
86
Злопчинский
01.11.17
✎
20:59
|
Ой, предыдущее сообщение к ветке про принтер этикеток...
;-) А то мало ли что подумают здешние извращенцы |
|||
87
Сияющий Асинхраль
01.11.17
✎
21:25
|
(84) Что только привычка с людьми не делает :-) , когда начинал программить, то первый мой опыт был на микрокалькуляторе мк-какой-то там, там можно было программить как на ассемблере - только с метками, оооочень долго эту привычку не мог у себя изничтожить (года три), также и с рисованием алгоритмов - не научили, пишу обычно сразу в продакшн, работает, но привычка, признаю, не хорошая...
|
|||
88
Злопчинский
01.11.17
✎
21:31
|
(87) мы ещё обсулим эту тему
|
|||
89
Сияющий Асинхраль
01.11.17
✎
22:01
|
(88) Принято :-)
|
|||
90
DGorgoN
01.11.17
✎
23:09
|
(84) На легких я так и делаю. Вот в (0) с разбитием документа построчно я без бумажки делал. Со сложными проектами конечно да, нужно помучатся.
|
|||
91
Злопчинский
01.11.17
✎
23:51
|
(90) сложность задачи определяется субьективно в зависимости от личной квалификации. поэтому, для автора - рисовать алгоритм!
|
|||
92
tgu82
02.11.17
✎
09:28
|
(87) У меня студенты на МК 54 системы линейных уравнений методом Гаусса считали. Я с ними программу для микрокалькулятора составлял )
|
|||
93
tgu82
02.11.17
✎
09:31
|
(92)+ А в военных лагерях только арифмометр Феликс - калькуляторами запрещали пользоваться ) Во жизнь была )
|
|||
94
Ёпрст
02.11.17
✎
09:44
|
Дам готовый код за 5000 руб.
|
|||
95
Ёпрст
02.11.17
✎
09:45
|
Объясню, как он работает, за 10000 руб.
|
|||
96
Масянька
02.11.17
✎
09:47
|
(93) У мужа есть фотка: на учениях (артиллерист), бумажка исписанная вдоль и поперек (расчет стрельб). Калькуляторов не было в принципе. Судя по тому, что видно на бумажке - Билл Гейтс и компания отдыхают :)
|
|||
97
Масянька
02.11.17
✎
09:48
|
(94) Я всегда знала, что ты - добрый...
(95) Очень добрый... :) |
|||
98
tgu82
02.11.17
✎
09:50
|
(96)Прямая и обратная геодезическая задача - на арифмометре решалась в полевых условиях - обязательно два вычислителя для двойного контроля )
|
|||
99
tgu82
02.11.17
✎
09:53
|
(96) Вспомнил. В одной конторе работал и как раз ЕГАИС начался и все спиртосодержащее под него пошло. Вот там приходилось разбивать огроменные накладные под необходимые суммы потом печатать накладные и счета-фактуры и все это вести в двух экземплярах в налоговую. Заходишь в налоговую - говорят скидывайте в угол а там таких талмудов уже до фига лежало
|
|||
100
---Fix---
02.11.17
✎
09:54
|
(0) (2) Используйте рекурсию.
|
|||
101
zenon46
02.11.17
✎
09:59
|
(94) спасибо, уже все сделано
|
|||
102
Ёпрст
02.11.17
✎
10:00
|
(101) дай посмотреть
|
|||
103
tgu82
02.11.17
✎
10:14
|
(102) Вот лучше посоветуй. ДЕлаю свертку потом заново создаю периферийку. мы в периферийки те же РКО и ПКО не переносим, да и выписки банка не для всех перифериек. В результате вроде базы меньше но при этом полно незакрытых регистров получается. В центральной-то базе слава богу осоновные рабочие регистры закрываются
|
|||
104
Ёпрст
02.11.17
✎
10:25
|
(103) Незакрытые регистры в ПБ ?
|
|||
105
Ёпрст
02.11.17
✎
10:26
|
сами пко, потом в ПБ ведёте ?
|
|||
106
tgu82
02.11.17
✎
10:32
|
(105) Да нет. Только по розничным возвратам покупателям ЕНВД магазины делают РКО, и по магазинам где еще и опт нужны выписки приход. Выписки расход вообще не нужны пко делаются на ЦБ - 54 закон же.
|
|||
107
tgu82
02.11.17
✎
10:35
|
(106)+ В двух магазинах вообще только розница. В трех еще и опт
|
|||
108
tgu82
02.11.17
✎
10:36
|
(107)+ То есть то что к ним приходит по банку (что касается конкретного магазина) - они должны видеть выписки-приход чтобы с клиентами оптовыми работать
|
|||
109
uno-group
02.11.17
✎
11:02
|
Функция СоздатьНовДок(Док)
Н=1; Док.ВыгрузитьТабличнуюЧасть(Тз); Для К=1 по Тз.Количествострок()Цикл Тз.Выгрузить(ТЗ2,Н,К); Если Тз2.Итог(Сумма)>МаксСума Тогда Тз.Выгрузить(ТЗ2,Н,К-1); Док2.ЗагрузитьТабличнуюЧасть(Тз2); Тз.Выгрузить(ТЗ,К,); Док.ЗагрузитьТабличнуюЧасть(Тз) Возврат Док; КонецЕсли; КонецФункции; //********** Пока Док.Итог("Сумма")>МаксСума Цикл СоздатьНовДок(Док) КонецЦикла; |
|||
110
uno-group
02.11.17
✎
11:04
|
В простейшем варианте разобьет все где нет строки превышающей лимит. такие строки я бы еще на этапе формирования документа отлавливал и заставлял узера самостоятельно решать что с ними делать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |