Comments 20
А Вы не робкий. На Хабре выложить 1С-листинги лично я бы, наверное, не осмелился.
Скажите, почему выбрано такое название переменной (константы)? Что вы имели в виду?
Эдиал = 1; //=1 метру кубическому
Это в начале первого листинга.
Доброго дня, по Вашему профилю предполагаю что Вы критик, спасибо за комментарий, он мне поможет в будущем, так как я начинающий специалист и у меня все впереди.
Уточите, там есть оптимизация укладки по ячейкам? или ручное распределение по ячейкам?
Из интернета: Ячеистый или Адресный склад – это склад, который разделяют на зоны хранения, каждая из которых предназначена для хранения определенной номенклатурной позиции.
Но у нас не для определенной номенклатуры же.
Спасибо за информацию для размышления.
Но у нас не для определенной номенклатуры же.
А для чего? Вы же пишите в коде «Движение.Номенклатура = ТекСтрокаПродукция.Номенклатура;»
Я имел ввиду, что можно ли разные номенклатуры хранить в одной ячейке, так как паллеты складываются из разносортного товара, Ваш метод считаем по габаритам "высота - ширина - длина", а у меня вычисляется коэффициент объема.
Из интернета: Ячеистый или Адресный склад – это склад, который разделяют на зоны хранения, каждая из которых предназначена для хранения определенной номенклатурной позиции.
Из вышеуказанного определения нет.
{ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9 }?
0.1 0.9
0.1, 0.2, 0.7
0.1, 0.2, 0.3, 0.4
......
function main(tab)
one=1 n=#tab
dsp=0.1 dsm=0.1 dso=one so=0 opt={}
for i=1,n do
j=i wrk={} cs=0.0
for k=1,n do
if j==n then j=1 end
table.insert(wrk,j)
cs=cs+tab[j]
j1=j+1 if j1>n then j1=1 end
while j1~=i do
if cs>one+dsp then break end
sv=cs+tab[j1]
if sv>=one-dsm and sv<=one+dsp then
ds=sv-one
if ds<0 then ds=-ds end
if ds<dso then
dso=ds so=sv
for _,j2 in pairs(wrk) do
table.insert(opt,j2)
end
table.insert(opt,j1)
print(so)
end
end
j1=j1+1 if j1>n then j1=1 end
end
if cs>one+dsp then break end
j=j+1
end
end
print "---"
for k,v in pairs(opt) do print(v,tab[v]) end
end
main { 0.1, 0.2, 0.3, 0.4, 0.5, 0.5, 0.6, 0.7, 0.8, 0.9 }
На выходе:0.9
1.0
---
1 0.1
9 0.8
1 0.1
10 0.9
Может я чего накосячил, но вроде соответствует вашему коду?
Сколько это всё выполняться будет при скажем номенклатуре 10к позиций и складских остатках более 1млн записей?
Мне кажеться даже алгоритм с википедии реализованный на любом компилируемом языке покажет большую производительность.
Первая строка:
Таблица000//(Таблица Значений с товаром),
Работать не будет, ошибка, или это формальный параметр?
//добавление колонок и очистка данных
ОднаТаблица = Новый ТаблицаЗначений;
ОднаТаблица = Таблица000.Скопировать();
Это простите что? Создаете коллекцию конструктором, потом следующей строкой создаете клон прототипом из Таблица000 в ту же переменную.
Первая строка:000//(Таблица Значений с товаром),
Имментся ввиду что данная таблица у Вас уже есть в наличии
Работать не будет, ошибка, или это формальный параметр?
//добавление колонок и очистка данных
ОднаТаблица = Новый ТаблицаЗначений;
ОднаТаблица = Таблица000.Скопировать();
Это простите что? Создаете коллекцию конструктором, потом следующей строкой создаете клон прототипом из Таблица000 в ту же переменную.
Создаю пустую таблицу и туда копирую колонки потом очищаю, можно в целом скопировать только колонки)
dandykry07.01.2022 в 21:54
Блокироки при списании в минус? Да нахрен, у нас всё равно 1 человек работает)))
Не совсем понял, о чем имеете ввиду
Как найти возможные суммы из N элементов в массиве