Имя: Пароль:
1C
1C 7.7
v7: ТиС: учет размеров
0 КонецЦикла
 
16.12.13
21:25
Добрый вечер!
Тема боян, перечитывал старые ветки, читал собственные же ответы.
Итак, есть ТиС и есть потребность учитывать размеры одежды.
Синхронизация будет осуществляться с двумя программами:
1. С розничной (не на 1С) - по карточкам, т.е. каждая позиция имеет свой размер, ШК, но может иметь неуникальный артикул.
2. С бухгалтерией (1С) - по артикулам. Т.е. позиции с разными размерами будут "свернуты"

Но внезапно пронзила мысль.
Чтобы не кромсать хранение остатков и минимизовать трудозатраты сделать так. Создать справочник БазоваяНоменклатура и номенклатуру подчинить ему, добавить нее реквизит Размер. Артикул и название будут браться из базовой номенклатуры, в нем же будет храниться иерархия спр-ка. Единицы и ШК будут свои. Работа через форму подбора специальную. Если же понадобиться выбирать номенклатуру руками - будет работать стандартный выбор подчиненного справочника: выбор позиции, а потом размера.

А вы как бы делали?
1 Lazy Stranger
 
16.12.13
21:34
подчиненный номенклатуре справочник "разновидности" с цветами и размерами, ну и доп. измерение в партиях и остатках, могу MD прислать
2 КонецЦикла
 
16.12.13
21:37
(1) Надо не просто хранить, а вести учет в разрезе размеров
3 КонецЦикла
 
16.12.13
21:37
Где хранить остатки по разновидностям?
4 КонецЦикла
 
16.12.13
21:41
Написал на почту :)
5 yam
 
16.12.13
21:45
Проще сделать аналог характеристики. Сделать только для регистров остатки ТМЦ и резервы ТМЦ (если используется резервирование).
Прийдется дописать алгоритмы всего лишь в несколько (вроде 4) глобальных процедурах - глПриходОстатковТМЦ, глСписаниеОстатковТМЦ, глФильтрОстатковТМЦ и глПодготовитьТаблицуДокумента. Там очень простые (в сравнении с восьмеркой) модули по 100 строк кода максимум.
Я бы так сделал.
6 yam
 
16.12.13
21:46
В партиях я бы не делал изменений, т.к. они нужны только для определния себестоимости
7 Diter
 
16.12.13
21:47
(0) не поверишь - так и делал. года три назад клиент производство+сеть магазинов. чтобы не кромсать типовую влепил подчиненные справочник "размер" и подбор был из двух частей - после подбора номенклатуры - список доступных размеров
8 Diter
 
16.12.13
21:48
маякни кину мд (там правда несколько библиотек надо но ты же умный - разберёшься)
9 Diter
 
16.12.13
21:49
регистры штатные не трогал - ввел новый. именно для того что чаще всего нужны остатки не по размерам а вот когда надо по размерам - то велкам. есть регистр
10 Diter
 
16.12.13
21:50
делал по аналогии своей конфы с нуля для учета моб.телефонов (там аналог "размера" - IMEI аппарата
11 КонецЦикла
 
16.12.13
21:51
(8) А мыло какое у тебя?
В принципе мне как бы идея нужна/одобрение/список граблей. Пока теоретически выживаемость решения хорошая.

(9) Я вообще их не хочу трогать
Т.е. будет элемент группы куртка арт. 1245 (это новый спр-к)
и в подчинении (это и есть номенклатура)
курка арт. 1245 48
курка арт. 1245 50
12 Diter
 
16.12.13
21:52
(11) _avk(гав)list.ru (впереди подчерк ОБЯЗАТЕЛЕН)
13 Diter
 
16.12.13
21:54
(11) все ты верно мыслишь. все грабли мной обойдены в конфе что я тебе кину. там и проверка и подборы и остатки по размерам все есть. только нужна формекс и 1с++. там же и сканер подключается 9модули есть) и принтер штрих-кодов и даже экспорт накладных от фабрики в безумном формате "полукартинка" (печать в файл мелкомягких)
14 Diter
 
16.12.13
21:54
контора работает без беспокойства меня уже пару лет точно.
15 Diter
 
16.12.13
21:55
отправил.
16 КонецЦикла
 
16.12.13
21:56
(13) ОК. Написал. Но может быть я попроще сделаю, это просто оптовая конфига. Все можно и штатно сделать в принципе.
17 Diter
 
16.12.13
21:56
кстати я ещё там сделал так чтобы юзер вообще никуда не лез и ничего не мог сделать нехорошего. при старте запускается рабочий стол продавца на котором все есть что ему надо. смотри формы списка справочника "номенклатура"
18 КонецЦикла
 
16.12.13
21:57
На фронте что ли работа?
19 Diter
 
16.12.13
21:57
(16) проще это плодить номенклатуру под каждый размер. прокатывает и оправдано если в принципе вариантов не так много (по тканям и размерам). ты учёл что в зависимости от ткани (а не только от размера) это тоже другой фактически товар
20 Lazy Stranger
 
16.12.13
21:58
(6) иногда мелкие размеры могут и по цене отличаться от крупных
21 Diter
 
16.12.13
21:58
(18) ну как сказать. комп один. просто вместо стандартного окна 1С перед кассиром красивая картинка. глянь короче. скрин тебе сделать?
22 Diter
 
16.12.13
21:59
(20) они всегда отличаются. все размеры имеют разную себестоимость. и в зависимости от ткани тоже разная себестоимость
23 КонецЦикла
 
16.12.13
22:00
(19) Ну идеологически правильно имхо было бы иметь отдельную карточку (у нее и свой ШК). Тем более что в розничной программе это так и сделано. На каждый размер - своя карточка.
(21) Та гляну конечно
24 yam
 
16.12.13
22:01
(22) Тут нужно смотреть по факту. У меня был клиент - розничный бутик одежды, там не было никаких отличий по цене. Да и при наценке в 300% вряд ли отклонения в 1-2% им были бы особо актуальны
25 Diter
 
16.12.13
22:01
(19) свой ШК может быть где угодно.
26 Lazy Stranger
 
16.12.13
22:02
(22) все - это скорее в случае производства, в торговле близкие размеры, как правило, по цене не отличаются (при одинаковом материале)
27 Diter
 
16.12.13
22:03
28 Diter
 
16.12.13
22:03
(26) смотря чем торгую. если это бутик то отличаются. потому как каждое изделие уникально по своей сути. но это не важно в общем то
29 Diter
 
16.12.13
22:04
(24), (26) и ещё - цена и себестоимость несколько разные вещи. вы не находите?
30 КонецЦикла
 
16.12.13
22:19
(27)  Омг )
31 yam
 
16.12.13
22:20
(29) Цена соответственно тоже была одинакова. В магазинах одежды она редко зависит от размеров, давно уже не встречал, чтобы 46 и 50 размеры отличались по цене
32 Lazy Stranger
 
16.12.13
22:23
(29) так и закупочная цена не отличается обычно
33 КонецЦикла
 
16.12.13
22:27
Я не понял почему спор за цены пошел )
В моем варианте с этим все ок
34 Diter
 
16.12.13
22:28
(32) у меня производство + магазины.
35 Diter
 
16.12.13
22:28
(30) что то не так?
36 Ranger_83
 
16.12.13
22:30
Что то про размерную сетку не увидел ни у кого
37 Diter
 
16.12.13
22:31
(36) ты про что?
38 Ranger_83
 
16.12.13
22:34
(37) как это про что,с одеждой никогда не работал.Размер размеру рознь в разных сетках, типа европейская, американская и т.д.
39 КонецЦикла
 
16.12.13
22:35
(38)  Товар должен именоваться как в доках поставщика. Не понял вопроса
40 Ranger_83
 
16.12.13
22:36
(39) я про размер сейчас, не про название
41 КонецЦикла
 
16.12.13
22:39
(40) Ну так название содержит размер наверное? уникальный шк... или навалом куртки?
42 Diter
 
16.12.13
22:39
(40) переводная таблица проблема? не вижу вопроса или сложности
43 Ranger_83
 
16.12.13
22:39
Я работал давно уже правда с одной специализированной конфой.Значит были справочники:номенклатра, размерная сетка и подчиненный ему размеры.Может у вас это не актуально, на всякий случай делюсь опытом
44 Ranger_83
 
16.12.13
22:40
(42) а в учете, если нужно хранить в разрезе размеров
45 Diter
 
16.12.13
22:41
(44) ну и что? хранится в одной системе (сетке) а переводной таблицей получаешь в любой другой системе.
46 КонецЦикла
 
16.12.13
22:42
Что-то вы ищете сложности...
47 Ranger_83
 
16.12.13
22:42
(41) В названии не удобно хранить размер, согласись если размеров с десяток
48 Diter
 
16.12.13
22:44
(47) у меня в названии только название одежды и модель (смотри скрин выше). размер и ткань выбираются из подчиненных справочников "доступные размеры и артикулы" для конкретной номенклатуры
49 Ranger_83
 
16.12.13
22:45
(45) В отчетах получать динамически, задавать соответствия-не айс по-моему.Но опять повторюсь, что это как вариант
50 КонецЦикла
 
16.12.13
22:45
(47) Но ведь в инвойсе, ттн они именуются... к сожалению выгнали с компа, нет доступа к докам поставщика
51 Diter
 
16.12.13
22:50
(50) короче - если чего не понятно - кричи. в дальше
52 Bumer
 
16.12.13
22:59
(0) Запилил бы, даже думать бы не стал. Номенклатуру наплодил + дополнительные реквизиты(размер, цвет итд), всё это из справочников + иерархию по артикулам, поставщикам...
53 Сияющий Асинхраль
 
16.12.13
23:42
Сейчас как раз с доработанным тис работаю, на ней сидят несколько обувных магазинов, в ней все размеры в свойствах, а свойства привязаны к партиям
54 Злобный Фей
 
16.12.13
23:48
Используй УТ, там это реализовано.
55 Сияющий Асинхраль
 
16.12.13
23:49
+(53) там вообще все к свойствам привязано, и цвета в том числе. Т.е свойства там имеют роль характеристик и динамически пополняются без изменения конфы
56 Diter
 
16.12.13
23:50
(53), (54) я так понимаю читать раздел "неа"? речь о версии 7.7. Или так.... поумничать "а я я яяяяя знаююююююю"? ;)
57 Злобный Фей
 
16.12.13
23:53
(56) А почему бы не поумничать? К тому же, не вижу смысла заниматься внедрением тис, конфа давно окончательно и бесповоротно устарела. Разве что речь про доработки в уже работающей конфе.
58 Сияющий Асинхраль
 
17.12.13
00:01
(56) я так понимаю это ты (53) не прочитал, там речь о тис идет, а не об ут
59 КонецЦикла
 
17.12.13
00:02
(57) Это очень даже прекрасно что устарела :)
Выпускаются только обновления по законодательству, которые мне нахрен не нужны. Зато нет ПРЫЖКОВ В СТОРОНУ. Мне хочется внедрить и забыть, у них бух-я семерка. С УТ так не получится :)
60 КонецЦикла
 
17.12.13
00:04
(53) Ну тоже вариант
Но труднее сделать, например, тот же подбор.
К тому же объем доработок неоправданно большой.
Хотят видеть иерархию и товары в сгруппированном виде, а рядом в окошке перечень размеров с ценами и остатками.
61 Сияющий Асинхраль
 
17.12.13
00:04
(57) а тебе вроде никто и не предлагал ее внедрением заниматься. Или я чего-то не увидел?
62 Сияющий Асинхраль
 
17.12.13
00:08
(60) да, подбор там свой, как раз и показывает размеры и цвета
63 Злобный Фей
 
17.12.13
00:22
(61) При чем тут я лично? У тебя проблемы с чтением или с пониманием прочитанного?
64 КонецЦикла
 
17.12.13
00:28
(62) Отчеты допиливать труднее. Придется везде к партиям лезть, для тех же остатков... ну и еще кучка гимора.
65 КонецЦикла
 
17.12.13
00:57
Вот такое надо грузить от поставщика

SCOW.FI.PS    SUPERCOPA FIORENTINA BCO-MORADO INDOOR    10.0C    9994091553129    BLANCO-MORADO    FUTBOL SALA JR    14,86    1        101.1
SCOW.FI.PS    SUPERCOPA FIORENTINA BCO-MORADO INDOOR    11.0C    9994091553136    BLANCO-MORADO    FUTBOL SALA JR    14,86    1        101.1
66 Злопчинский
 
17.12.13
01:02
КЦ, если не нужны !!отчеты!! КОНКРЕТНО по размерам, или по цветам - я бы вобще не морочился, никаких дополнительных сущностей не плодил бы, сделал все штатно, на группах и элементах, по типу:
Группа "КУРТКА"
--ГРУППА "КУРТКА АЛЯСКА"
----ГРУППА "КУРТКА АЛЯСКА КРАСНАЯ"
------ элемент Куртка Аляска Красная, р48, арт.1111
------ элемент Куртка Аляска Красная, р50, арт.2222
------ элемент Куртка Аляска Красная, р52, арт.3333
.
Подбор номенклатуры чуть подшаманил (ты ж спец) - вываливать "ТЗ" , сотсоящую из ГРУПП, после выбора конкретной группы - вываливать на выбор элементы.
.
все.
.
если неуникальные ШК/АРТИКУЛЫ н аразные размеры/цвета - пофиг. там где присутсвует неуникальност - вывалить список "неуникальных" позиций - выбирают руками. я так у триктажников делал - ночки, калсьоны, трусы...
67 Злопчинский
 
17.12.13
01:05
Даже делал им вчерновую типа "контрольное место сборщика"
http://content.screencast.com/users/Che66/folders/Jing/media/999cf32a-6bfe-4f85-91bd-91ec981dc2a7/2013-12-17_0104.png
68 КонецЦикла
 
17.12.13
01:05
Да, но... у них привычная иерархия по брендам и видам, думаю испугаются.
69 Злопчинский
 
17.12.13
01:07
а потом, щелкнул сборщик-контролер сканером по носкам - хрясь - таких нескольо разных номенклатур с одинаковым штрихкодом - вываливал список одинаковых ШК (разные эл-ты номенклатуры) - выбирали вручную
http://content.screencast.com/users/Che66/folders/Jing/media/e42ab0d0-825c-49ba-88d7-e0db56c06e5c/2013-12-17_0105.png
70 КонецЦикла
 
17.12.13
01:08
К тому же нужна синхронизация. А имея "сущность" ее сделать гораздо проще.
71 КонецЦикла
 
17.12.13
01:09
(69) Красиво, но традиционное "тыканье" не нравится :)
72 Злопчинский
 
17.12.13
01:10
(68) ну и фигли, у меян сейчас один ларечник продвинутый чехлы для телефонов так автоматизируем совместно
http://screencast.com/t/ruN6iuVYjg8
.
новые наименования заводятся практически автоматом  - при вводе нового иерархия групп переносится в наименование - остается дописать цвет и феньки...
73 Злопчинский
 
17.12.13
01:11
(70) ну так если в розницу выгружать - выгружается как есть, а в бухию - выгружаются не элементы а группы в качестве элементов.
..?
74 КонецЦикла
 
17.12.13
01:13
(73) Хм... ну только если набор реквизитов общим сделать. Но что-то мне не очень нравится, не люблю я группы. По ним ни отчеты нормально ни сделать... и поддерживать надо идеально структуру.
75 Злопчинский
 
17.12.13
01:24
(74) тут вообще я речь вел об отсутсвии каких-либо дополнительных реквизитов.
.
а так, надо танцевать от потребнсотей выгрузки и отчетов которые нужны.
.
и да. структур надо поддерживать - а куда без этого...?
.
напримеру ларечника этого по чехлам народ на точках продажи вообще не морочиться никакими групами - работают через модиф.форму поиска - вбивают ключевые слова - получают набор элементов, выбирают нужный.
.
а вся струткура групп поддерживается и создается исключительно в центре
76 Злопчинский
 
17.12.13
01:25
(71) кста, не поняд про традиционное тыканье - это что имел в виду?
77 Bumer
 
17.12.13
01:26
(74) "По ним ни отчеты нормально ни сделать..."
Да ну?
78 Diter
 
17.12.13
01:31
(74) в том скрине что я дал и конфе что отправил окошко с возможными размерами, цена и остатками для каждого конкретного товара. это подчиненный справочник. строить все на одном справочнике типа "свойства или категории) неудобно по причине того что в одном месте будет храниться несвязанная между собой информация. делать через группы неудобно т.к. если юзер ошибется и кинет товар не в ту группу то наступит абзац.

в общем на вкус и цвет.... я привык делать так чтобы сделать и забыть про этого клиента если все работает. кто то предпочитает подсадить заказчика на иглуу. каждому свое
79 Злопчинский
 
17.12.13
01:32
Для отчетов берем
СводнаяНоменклатура = Регистр.остаткиТМЦ.Номенклатура.Родитель;
.
какие-то проблемы будут..?
80 Diter
 
17.12.13
01:33
(69) несколько смущает одинаковый штрих код для семи различных товаров. но то дело такое
81 Diter
 
17.12.13
01:33
(79) товар поместили не в ту группу - чего будет?
82 Злопчинский
 
17.12.13
01:35
(78) хм.. не понял..
какая принципиальная разница что не в ту группу попадет элемент
"Куртака Аляска" с подчиненными размерами/цветами и тем, что не в ту группу попадет элемент "Куратка аляска красная, р.48"..? - только если отчет криво будет..?
83 Злопчинский
 
17.12.13
01:35
Чего будет чего будет..? хз.. зависит как отчеты строятся и как с группами или мимо них работает продавец.
..?
84 Diter
 
17.12.13
01:36
(82) так ты фильтр по родителю накладываешь а не по свойствам (черт с ними пусть будет на свойствах размеры и ткань).
85 Злопчинский
 
17.12.13
01:36
хотя, если подумать, вариант номенклатуры с подчненной сеткой цветов-размеров - он как-то кузявее конечно выглядит
86 Diter
 
17.12.13
01:37
я ввел понятие "справочник.допустимыеразмеры" и "справочник.допустимыеткани"

и подчиненный справочник (подчинен номенклатуре) из двух реквизитов
"размер" - справочник.допустимыеразмеры
"ткань" - справочник.допустимыеткани

и все. больше ничего делать не надо
87 Злопчинский
 
17.12.13
01:39
(84) ну да, условно "фильтр по родителю", засада тут конечно есть, если делать подстраховываясь от засад - то более сложный вариант, как утебя.
.
если попроще - жесткий запил и запрет переноса элементов между групп - то можно попроще... а при интерактивном переносе или создании элемента тупо при записи проверять - если в наименование невходит иерархия родителей - то отлуп...
88 Злопчинский
 
17.12.13
01:39
(86) а остатки по размер-ткань -запилил в отд. регистр?
89 Diter
 
17.12.13
01:39
(85) хочешь кину тебе мд. глянешь. может чего покритикуешь. аж самому интересно стало. но фирма работает без меня уже два года. я приезжаю к ним только аккумуляторы в сканере ШК заменить - девочку не могут отвертку в руках держать. некомильфо ;)
90 Diter
 
17.12.13
01:41
(88) да. отдельный. проще чем "родной" и только то что надо.
91 Злопчинский
 
17.12.13
01:42
(89) я б с удовольствием глняул, но блин реально ПОК АНЕ НАДО и по работе в запареь, еле отхожу от всего...
92 Злопчинский
 
17.12.13
01:42
по размерам и цветамбыла отдельная конфига.. что-то там в наименованиисайта было тралял4you
93 Diter
 
17.12.13
01:44
по-поводу спроавочника "категории" или "свойства". писал с нуля конфу для автосалона+сто. сделал там такую мульку поддавшись примеру 8-ки. сделал все возможные характеристики авто (любые) в виде списка возможных характеристик которые юзает пользователь указывая не только название характеристики но и тип значения (справочник, число, строка и т.п.) в результате юзерам НЕУДОБНО. почему - х.з ответ "мы путаемся не все выбираем что надо, забываем, можем выбрать дважды одно и то же свойство)

(91) да не волнуйся ты. я же не навязываю
94 Злопчинский
 
17.12.13
01:45
а, во было: http://www.u4t.ru/odejda.shtml
только блин вмерли.. вот и верь после этого люядм я отдалсь ему при луне а он взял мои девичьи груди...
95 Diter
 
17.12.13
01:46
(94) ошибка. страница не найдена
96 Злопчинский
 
17.12.13
01:46
(93) делал и я черновик такой ;-) но тоже не взлетело.. все хотят чтобы было просто и все было.. ;-)
97 Diter
 
17.12.13
01:46
(96) во во... и я про то...
98 Злопчинский
 
17.12.13
01:47
(93) ты ж тоже не волнуйся, я ж не выпрашиваю...
99 Diter
 
17.12.13
01:47
тю ;)
100 Злопчинский
 
17.12.13
01:47
пока что просто мне удалось сделать только на складе ;-)
101 Злопчинский
 
17.12.13
01:48
(99) о то ж!
102 КонецЦикла
 
17.12.13
09:56
(77) Легче работать (группировать, фильтровать) с реквизитами чем с иерархией групп, разве нет? Особенно штатными методами...
103 Diter
 
17.12.13
09:59
(102) "ну шо синку, помогли тебе твои ляхи?" ©
104 DGorgoN
 
17.12.13
10:01
1) Самое просто без допилок - создать справочник товаров типа: Группа: Одежда/размер n1..nx/Твои изделия (можно обработку для быстрого ввода номенклатуры)

2) Посложнее приделать регистр (как в УТ) характеристик и вести размеры именно по ним. Допилка небольшая. Уже сделал бы чем тут трепатся ;)
105 КонецЦикла
 
17.12.13
10:20
(103) Да блин, быстрее сделать как придумал :)
Но все равно спасибо
У тебя что-то похожее на ТиС 8.7

(104) А какой смысл вводить в регистры доп. измерения, если карточка своя на каждый цвето-размер?
106 Diter
 
17.12.13
10:24
(105) это какая то типовая ТиС для Украины. релиз не помню
107 КонецЦикла
 
17.12.13
10:25
(106) Не очень конфига, ничего личного.
108 Diter
 
17.12.13
10:25
(105) кстати - схема там именно такая как ты "придумал" в топике. подчиненные справочники размер и ткань
109 Diter
 
17.12.13
10:26
(107) в чем именно?
110 КонецЦикла
 
17.12.13
10:28
(109) Да достаточно взглянуть на регистр партий - 2 измерения вида "документ". В справочнике партий как-то оптимальнее и удобнее.
Чего их в УТ начало носить влево-вправо - непонятно :)
111 Андрей_Андреич
 
naïve
17.12.13
10:32
Делал 100 лет назад - получилось на мой взгляд легко
естественно справочник размеров
в справочнике партии реквизит размер.
в справочник ед.изм реквизит размер + наименование единицы измерения = размер. в результате документы поступления-продажи и т.д. переделывать не надо, т.к. ед.изм = размер
в документах оприходования при записи в партию записывать размер
Изменения небольшие в десятке мест.
Если интересно - распишу дальше.
Пару лет поработало в нескольких магазинах, потом перешли на УТ
112 Diter
 
17.12.13
10:32
(110) не говори "гоп". у нас учет по партиям вылизан от и до. два измерения логично вполне.

Поставка, Поставщик - для товаров принятых на реализацию
Контрагент, ПрихДокумент - для купленого товара
113 Андрей_Андреич
 
naïve
17.12.13
10:34
+(111) Регистр партий не переделывал, только вснес размер в регистр остатки тмц
114 КонецЦикла
 
17.12.13
10:36
(112) Отчеты не так удобно делать. Из неопределенного документа тянуть неудобно. А работать оно может прекрасно, я же критикую.

(111) Была такая мысль, но если у тебя единица = размер, то ложить надо не в базовой единице в регистры и доставать, а в заданной?
115 КонецЦикла
 
17.12.13
10:36
я же критикую = я же не критикую
116 Андрей_Андреич
 
naïve
17.12.13
10:39
(114) В партиях тмц размер извлекается из партии как реквизит справочника.
В остатках тмц измерение размер есть.
Сейчас поднял конфу - переделок вообще минимум. Сейчас перечислю все места измененные и что менять - за день сделаешь + день на отчеты
117 Андрей_Андреич
 
naïve
17.12.13
10:42
(114) Короче - если действительно интересно - опишу полностью. Если пофик - тогда лениво.
118 Diter
 
17.12.13
10:44
(114) а как определить вид если их может быть "до забора"?
119 КонецЦикла
 
17.12.13
10:45
(117) Та ладно, это я сам соображу, спс. Принцип понятен.
(118) Вот именно. Когда-то работал на такой. И к тому же измерений больше.
120 Diter
 
17.12.13
10:50
если уникальность только через размер - схема с ед. изм. работает. но в одежде играет роль ещё и артикул ткани. а тут несколько интереснее получается
121 Андрей_Андреич
 
naïve
17.12.13
10:55
(119) Да ладно - отпишусь. Самому-то и правда не быстро.
1. Обработка "ПоказатьОстаткиТМЦ" во всех процедурах добавить в свертке размер:
    ТаблОстатков.Свернуть("Склад,Размер","Количество");
    ТаблицаФормы.Единица = СокрЛП(ТаблОстатков.Размер);
2. Док-т "ПереоценкаРозница" модуль
ТабОстатков.НоваяКолонка("Размер", "Справочник.Размеры");
Регистр.ОстаткиТМЦ.Размер=ТаблицаДокумента.Единица.Размер;
ТабОстатков.Размер=ТаблицаДокумента.Единица.Размер;
Если (ТабОстатков.Номенклатура = ТЗПартий.Номенклатура) И (ТабОстатков.ЦенаПрод = ТЗПартий.ЦенаПрод)
И(ТабОстатков.Размер = ТЗПартий.Партия.Размер) Тогда
122 Андрей_Андреич
 
naïve
17.12.13
10:59
Функция глЗаполнитьПартию(СпрПартии,Партия,Поставщик,ДоговорПоставщика,ПриходныйДокумент,Цена,Размер) Экспорт
    Если (Партия.Поставщик<>Поставщик) или (Партия.ДоговорПоставщика<>ДоговорПоставщика) или
(Партия.ПриходныйДокумент<>ПриходныйДокумент) или (Цена<>Партия.ЗакупочнаяЦена)
         ИЛИ (Партия.Размер<>Размер) Тогда
        Если СпрПартии.НайтиЭлемент(Партия)=0 Тогда
            Возврат ПолучитьПустоеЗначение("Справочник.Партии");
        КонецЕсли;
        СпрПартии.Поставщик            = Поставщик;
        СпрПартии.ДоговорПоставщика    = ДоговорПоставщика;
        СпрПартии.ПриходныйДокумент    = ПриходныйДокумент;
        СпрПартии.ЗакупочнаяЦена     = Цена;
        СпрПартии.Размер=Размер;
СпрПартии.Записать();
    КонецЕсли;
    
    Возврат Партия;
    
КонецФункции //глЗаполнитьПартию()
123 Андрей_Андреич
 
naïve
17.12.13
11:00
Процедура глПолучитьРозничныйОстатокЦену(Номенклатура, Ед, ОстаткиТМЦ, ВозврОстаток, ВозврЦена) Экспорт
    Перем ТаблОстатков;
    
    СписОстаток    = СоздатьОбъект("СписокЗначений");
    СписЦена    = СоздатьОбъект("СписокЗначений");
    
    ОстаткиТМЦ.УстановитьЗначениеФильтра("Номенклатура", Номенклатура, 1);
    ОстаткиТМЦ.УстановитьЗначениеФильтра("Размер", Ед.Размер, 1);
    
    ОстаткиТМЦ.ВыгрузитьИтоги(ТаблОстатков);
    ТаблОстатков.Свернуть("Номенклатура, ЦенаПрод", "Количество");
    ТаблОстатков.ВыбратьСтроки();
    
    Коэфф = Ед.Коэффициент;
    Пока ТаблОстатков.ПолучитьСтроку() = 1 Цикл
        НайденнаяЦена    = ТаблОстатков.ЦенаПрод   * Коэфф;
        НайденныйОстаток = ТаблОстатков.Количество / Коэфф;
        
        СписОстаток.ДобавитьЗначение(НайденныйОстаток);    
        
        // в представление каждой цены добавим еще и остаток (в скобках)
        СписЦена.ДобавитьЗначение(НайденнаяЦена, глФРМ(НайденнаяЦена) +
                                  " (" + глФРМКоличество(НайденныйОстаток) + " " + Ед + ")");
    КонецЦикла;
    
    ВозврОстаток    = ЗначениеВстроку(СписОстаток);
    ВозврЦена        = ЗначениеВстроку(СписЦена);
    
КонецПроцедуры // глПолучитьРозничныйОстатокЦену()
124 Андрей_Андреич
 
naïve
17.12.13
11:02
Функция глПриходОстатковТМЦ(Конт,ТаблНоменклатуры,СписокПараметров) Экспорт
        // измерения
        РегОстатки.Размер            = ТаблНоменклатуры.Единица.Размер;
КонецФункции // глПриходОстатковТМЦ()
125 Андрей_Андреич
 
naïve
17.12.13
11:04
Функция глСписаниеОстатковТМЦ(Конт,ТаблНоменклатуры,СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ = "") Экспорт
    
    Перем КонтрольОстатков, КонтрольРезервов;
    
    РегОстатки             = Конт.Регистр.ОстаткиТМЦ;
    
    Фирма                  = СписокПараметров.Получить("Фирма");
    ФирмаДляОстатковТМЦ = СписокПараметров.Получить("ФирмаДляОстатковТМЦ");
    Склад                = СписокПараметров.Получить("Склад");
    ТекДок                = СписокПараметров.Получить("ТекДок");
    Договор                = СписокПараметров.Получить("Договор");
    КодОперации            = СписокПараметров.Получить("КодОперации");  

    ВнутреннееПеремещение = ?(((КодОперации = глКО.Перемещение) или (КодОперации = глКО.ПередачаВРозницу)
                                или (КодОперации = глКО.ВозвратИзРозницы)),1,0);
    
    КонтрольРезервов = 0;  
    Если Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.НеКонтролировать Тогда
        КонтрольОстатков = 0;
    Иначе
        КонтрольОстатков = 1;
        Если глПолучитьПолномочие("РазрешитьПродаватьРезерв") = 0 Тогда
            КонтрольРезервов = 1;
        КонецЕсли;
    
    КонецЕсли;          
    
    Если (Склад.РозничныйСклад = 1) Тогда
        // розничный склад будем контролировать всегда, поскольку там идет
        // учет в разрезе цен и работа задним числом сильно затруднена.
        КонтрольОстатков=1;
    КонецЕсли;  
    
    
    ТаблНоменклатуры.ВыбратьСтроки();
    Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл                        
        
        ТекНоменклатура = ТаблНоменклатуры.Номенклатура;
        ТекРазмер=ТаблНоменклатуры.Единица.Размер;
        
        Если (ТекНоменклатура.ВидНоменклатуры     = Перечисление.ВидыНоменклатуры.Услуга)
         или (ТекНоменклатура.ВидНоменклатуры     = Перечисление.ВидыНоменклатуры.Работа)
         или (ТаблНоменклатуры.Количество     = 0) Тогда
            Продолжить;
        КонецЕсли;    
        
        Цена = ТаблНоменклатуры.ЦенаПрод;
        
        РезервНаСкладе = 0;
        РезервПоФирме  = 0;
        Если (ТипЗначенияСтр(ВремРезервыТМЦ) = "Регистр")
        и    (КонтрольРезервов = 1)
        Тогда                      
            Если ПустоеЗначение(ФирмаДляОстатковТМЦ) = 1 Тогда // Фильтр по фирме не нужен
                
                РезервНаСкладе = ВремРезервыТМЦ.СводныйОстаток(,ТекНоменклатура,Склад,,,"Количество");
                
                Если (ВнутреннееПеремещение   = 0) Тогда                                
                    
                    // для внутренних перемещений не конролируем резерв по фирму в целом
                    // (поскольку он на самом деле не изменится)
                    РезервПоФирме  = ВремРезервыТМЦ.СводныйОстаток(,ТекНоменклатура,,,,"Количество");
                КонецЕсли;
                
                Если (ПустоеЗначение(Договор) = 0) Тогда
                    
                    // вычтем резервы, котрые сделал наш же покупатель
                    РезервНаСкладе = РезервНаСкладе -
                                     ВремРезервыТМЦ.СводныйОстаток(,ТекНоменклатура,Склад,Договор,,"Количество");
                    Если (ВнутреннееПеремещение   = 0) Тогда                
                        РезервПоФирме  = РезервПоФирме  -
                                     ВремРезервыТМЦ.СводныйОстаток(,ТекНоменклатура,     ,Договор,,"Количество");
                    КонецЕсли;      
                КонецЕсли;  
                
            ИначеЕсли ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "СписокЗначений" Тогда // Нужны сводные остатки по нескольким фирмам
                
                СчетчикЦикла = 0;
                Для СчетчикЦикла = 1 По ФирмаДляОстатковТМЦ.РазмерСписка() Цикл
                    
                    ТекФирма = ФирмаДляОстатковТМЦ.ПолучитьЗначение(СчетчикЦикла);
                    РезервНаСкладе = РезервНаСкладе +
                                     ВремРезервыТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,Склад,,,"Количество");
                    Если (ВнутреннееПеремещение   = 0) Тогда
                        РезервПоФирме  = РезервПоФирме +
                                         ВремРезервыТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,,,,"Количество");
                    КонецЕсли;
                    Если (ПустоеЗначение(Договор) = 0) Тогда
                        
                        // вычтем резервы, котрые сделал наш же покупатель
                        РезервНаСкладе = РезервНаСкладе -
                                         ВремРезервыТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,Склад,Договор,,"Количество");
                        Если (ВнутреннееПеремещение   = 0) Тогда                
                            РезервПоФирме  = РезервПоФирме  -
                                             ВремРезервыТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,     ,Договор,,"Количество");
                        КонецЕсли;      
                    КонецЕсли;  
                    
                КонецЦикла;
                
            ИначеЕсли ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "Справочник" Тогда  // нужны сводные остатки только по одной фирме
                
                РезервНаСкладе = ВремРезервыТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,Склад,,,"Количество");
                Если (ВнутреннееПеремещение   = 0) Тогда
                    РезервПоФирме  = ВремРезервыТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,,,,"Количество");
                КонецЕсли;
                Если (ПустоеЗначение(Договор) = 0) Тогда
                    // вычтем резервы, котрые сделал наш же покупатель
                    РезервНаСкладе = РезервНаСкладе -
                                     ВремРезервыТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,Склад,Договор,,"Количество");
                    Если (ВнутреннееПеремещение   = 0) Тогда                
                        РезервПоФирме  = РезервПоФирме  -
                                         ВремРезервыТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,,Договор,,"Количество");
                    КонецЕсли;      
                КонецЕсли;  
            КонецЕсли;
        КонецЕсли;                                                                        
            
        ОстатокНаСкладе = 0;
        ОстатокПоФирме  = 0;
        ОстатокНаСкладеЦ = 0;

        Если КонтрольОстатков = 1 Тогда
            
            // остаток на складе
            Если ПустоеЗначение(ФирмаДляОстатковТМЦ) = 1 Тогда
                
                ОстатокНаСкладе = ВремОстаткиТМЦ.СводныйОстаток(,ТекНоменклатура,ТекРазмер,Склад,,"Количество");
                Если (ВнутреннееПеремещение = 0) Тогда
                    ОстатокПоФирме = ВремОстаткиТМЦ.СводныйОстаток(,ТекНоменклатура,ТекРазмер,,,"Количество");
                КонецЕсли;    
                Если Склад.РозничныйСклад = 1 Тогда
                    ОстатокНаСкладеЦ = ВремОстаткиТМЦ.СводныйОстаток(,ТекНоменклатура,ТекРазмер,Склад,Цена,"Количество");
                КонецЕсли;                                                                              
                
            ИначеЕсли ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "Справочник" Тогда
                
                ОстатокНаСкладе = ВремОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,ТекРазмер,Склад,,"Количество");
                Если (ВнутреннееПеремещение = 0) Тогда
                    ОстатокПоФирме = ВремОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,ТекРазмер,,,"Количество");
                КонецЕсли;    
                Если Склад.РозничныйСклад = 1 Тогда
                    ОстатокНаСкладеЦ = ВремОстаткиТМЦ.Остаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,ТекРазмер,Склад,Цена,"Количество");
                КонецЕсли;
                
            ИначеЕсли ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "СписокЗначений" Тогда
                
                СчетчикЦикла = 0;
                Для СчетчикЦикла = 1 По ФирмаДляОстатковТМЦ.РазмерСписка() Цикл
                    ТекФирма = ФирмаДляОстатковТМЦ.ПолучитьЗначение(СчетчикЦикла);
                    ОстатокНаСкладе = ОстатокНаСкладе +
                                      ВремОстаткиТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,ТекРазмер,Склад,,"Количество");
                    Если (ВнутреннееПеремещение = 0) Тогда
                        ОстатокПоФирме = ОстатокПоФирме +
                                         ВремОстаткиТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,ТекРазмер,,,"Количество");
                    КонецЕсли;    
                    Если Склад.РозничныйСклад = 1 Тогда
                        ОстатокНаСкладеЦ = ОстатокНаСкладеЦ +
                                           ВремОстаткиТМЦ.Остаток(ТекФирма,ТекНоменклатура,ТекРазмер,Склад,Цена,"Количество");
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        Иначе
            ОстатокНаСкладе = ТаблНоменклатуры.Количество;
            ОстатокПоФирме  = ТаблНоменклатуры.Количество;
        КонецЕсли; // КонтрольОстатков = 1
        
        // проверка резерва на складе
        Если (ОстатокНаСкладе - РезервНаСкладе) < ТаблНоменклатуры.Количество Тогда
            глНеПроводить(Конт,"На складе нет нужного свободного количества ТМЦ "+СокрЛП(ТекНоменклатура.Наименование)
            +"("+СокрЛП(ТекНоменклатура.Артикул)+")"
            +". "+РазделительСтрок+"    Всего осталось "+Строка(ОстатокНаСкладе)+" "+ТекНоменклатура.БазоваяЕдиница
            +?(РезервНаСкладе <> 0 ,". "+РазделительСтрок+"    Зарезервировано по выписанным Заявкам "+Строка(РезервНаСкладе) +" "+ТекНоменклатура.БазоваяЕдиница,"")
            +"."+РазделительСтрок+"Требуемое количество "+Строка(ТаблНоменклатуры.Количество)+" "+ТекНоменклатура.БазоваяЕдиница);
            Возврат (0);
        КонецЕсли;                
        
        // а также по фирме в целом
        Если (ВнутреннееПеремещение   = 0) Тогда                                
            Если (ОстатокПоФирме - РезервПоФирме) < ТаблНоменклатуры.Количество Тогда
                глНеПроводить(Конт,"На фирме в целом нет нужного свободного количества ТМЦ "+СокрЛП(ТекНоменклатура.Наименование)
                +"("+СокрЛП(ТекНоменклатура.Артикул)+")"
                +". "+РазделительСтрок+"    Всего осталось "+Строка(ОстатокПоФирме)+" "+ТекНоменклатура.БазоваяЕдиница
                +?(РезервПоФирме<>0,". "+РазделительСтрок+"    Зарезервировано по выписанным Заявкам "+Строка(РезервПоФирме) +" "+ТекНоменклатура.БазоваяЕдиница,"")
                +"."+РазделительСтрок+"Требуемое количество "+Строка(ТаблНоменклатуры.Количество)+" "+ТекНоменклатура.БазоваяЕдиница);
                Возврат (0);
            КонецЕсли;
        КонецЕсли;                
        
        // проверка цены реализации для розничного склада
        Если (Склад.РозничныйСклад = 1) Тогда  
            Если (ОстатокНаСкладеЦ) < ТаблНоменклатуры.Количество Тогда    
                глНеПроводить(Конт,"На розничном складе нет ТМЦ "+СокрЛП(ТекНоменклатура.Наименование)
                +"("+СокрЛП(ТекНоменклатура.Артикул)+")"
                +" по указанной цене "+глФРМ(Цена)+" "+глРубли
                +". "+РазделительСтрок+"    Всего осталось по указанной цене "+Строка(ОстатокНаСкладеЦ)+" "+ТекНоменклатура.БазоваяЕдиница
                +"."+РазделительСтрок+"Требуемое количество "+Строка(ТаблНоменклатуры.Количество)+" "+ТекНоменклатура.БазоваяЕдиница);
                Возврат (0);
            КонецЕсли;                        
        КонецЕсли;
        
        // измерения
        РегОстатки.Фирма            = Фирма;
        РегОстатки.Склад            = Склад;
        РегОстатки.Номенклатура        = ТекНоменклатура;
        //ресурсы
        РегОстатки.Количество        = ТаблНоменклатуры.Количество;
        РегОстатки.Размер=ТаблНоменклатуры.Единица.Размер;
        РегОстатки.ЦенаПрод        = Цена;
        
        //реквизиты
        РегОстатки.Внутреннее        = ВнутреннееПеремещение;
        
        РегОстатки.ДвижениеРасходВыполнить();
        
    КонецЦикла;
    
    Возврат (1);
    
КонецФункции // глСписаниеОстатковТМЦ()
126 Diter
 
17.12.13
11:04
все Вадька. капец тебе ;)
127 Андрей_Андреич
 
naïve
17.12.13
11:05
Процедура глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров) Экспорт
    
    СпрПартии            = СоздатьОбъект("Справочник.Партии");
    
    РегПартии            = Конт.Регистр.ПартииНаличие;
            
    Фирма                = СписокПараметров.Получить("Фирма");
    Склад                = СписокПараметров.Получить("Склад");
    Поставщик            = СписокПараметров.Получить("Контрагент");
    ДоговорПоставщика    = СписокПараметров.Получить("Договор");
    ТекДок                = СписокПараметров.Получить("ТекДок");
    КодОперации            = СписокПараметров.Получить("КодОперации");
    
    УчПолитика             = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Конт.ДатаДок);
    
    МОЛ                    = Склад.МОЛ;                                              

    ТаблНоменклатуры.ВыбратьСтроки();
    Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл
                  
        Номенклатура = ТаблНоменклатуры.Номенклатура;
        Если (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
         или (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
            Продолжить;
        КонецЕсли;
        
        //измерения
        РегПартии.Фирма                = Фирма;
        РегПартии.МОЛ                = МОЛ;
        РегПартии.Номенклатура        = Номенклатура;
        РегПартии.СтатусПартии        = глПолучитьСтатусПартииПрихода(ТаблНоменклатуры.ВидТМЦ,Номенклатура,КодОперации, Склад);
        Если (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.FIFO)
         или (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.LIFO)
         или (РегПартии.СтатусПартии = глСП.Т_Принятый) Тогда
                 
            ЗакупочнаяЦена             = ?(ТаблНоменклатуры.Количество=0,
                                        0,
                                        Окр(ТаблНоменклатуры.Сумма / ТаблНоменклатуры.Количество,2,1));
            РегПартии.Партия        = глЗаполнитьПартию(СпрПартии,  ТаблНоменклатуры.Партия,
                                            Поставщик,ДоговорПоставщика,ТекДок,ЗакупочнаяЦена, ТаблНоменклатуры.Единица.Размер);
            РегПартии.ДатаПартии    = ТекДок.ДатаДок;
            
        Иначе    
            РегПартии.Партия        = "";                
            РегПартии.ДатаПартии    = "";
        КонецЕсли;
            
        //ресурсы
        РегПартии.Количество        = ТаблНоменклатуры.Количество;
        РегПартии.СуммаУпр            = ТаблНоменклатуры.СуммаУпр;
        РегПартии.СуммаРуб            = ТаблНоменклатуры.СуммаРуб;
        РегПартии.СуммаБезНДС        = ТаблНоменклатуры.СуммаРуб-ТаблНоменклатуры.СуммаНДС;
        
        Если Склад.РозничныйСклад = 1  Тогда
            РегПартии.ПродСтоимость = ТаблНоменклатуры.ПродСтоимость;  
        КонецЕсли;
        РегПартии.ЦенаПрод = ТаблНоменклатуры.ЦенаПродПриход;
        
        //реквизиты      
        РегПартии.КодОперации         = КодОперации;
        
        РегПартии.ПривязыватьСтроку(ТаблНоменклатуры.НомерСтрокиДокумента);
        
        РегПартии.ДвижениеПриходВыполнить();
        
    КонецЦикла;

КонецПроцедуры // глОприходованиеПартийТМЦ()
128 Андрей_Андреич
 
naïve
17.12.13
11:06
Функция глВыяснитьПартииВозврата(ТаблНоменклатуры, ТекДок)
    
    ТаблПартий=СоздатьОбъект("ТаблицаЗначений");
    
    ТаблПартий.НоваяКолонка("Номенклатура");
    ТаблПартий.НоваяКолонка("СтатусПартии");
    ТаблПартий.НоваяКолонка("Партия");
    ТаблПартий.НоваяКолонка("ДатаПартии");
    
    ТаблПартий.НоваяКолонка("Количество");
    ТаблПартий.НоваяКолонка("СуммаУпр");
    ТаблПартий.НоваяКолонка("СуммаРуб");
    ТаблПартий.НоваяКолонка("СуммаБезНДС");      
                                            
    Свернут = 0;                                                              
    Если ТекДок.ДокОснование.Выбран() = 1 Тогда
        Если глЕстьРеквизитШапки("ФлагСвертки", ТекДок.ДокОснование.Вид())=1 Тогда
            Если ТекДок.ДокОснование.ФлагСвертки = 1 Тогда    
                Свернут = 1;                                
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

                                                                        
    Если (ТекДок.ДокОснование.Выбран()=1) и (Свернут=0) Тогда
        РегПартии = СоздатьОбъект("Регистр.ПартииНаличие");
        РегПартии.ВыбратьДвиженияДокумента(ТекДок.ДокОснование);
        Пока РегПартии.ПолучитьДвижение()=1 Цикл

            Номенклатура = РегПартии.Номенклатура;
            ЕстьТакойТМЦ = ТаблНоменклатуры.НайтиЗначение(Номенклатура,,"Номенклатура");
            Если (РегПартии.Расход=1) и (ЕстьТакойТМЦ = 1) Тогда
                
                ТаблПартий.НоваяСтрока();

                ТаблПартий.СтатусПартии        = РегПартии.СтатусПартии;
                ТаблПартий.Номенклатура        = Номенклатура;
                ТаблПартий.Партия            = РегПартии.Партия;
                ТаблПартий.ДатаПартии        = РегПартии.ДатаПартии;
                
                ТаблПартий.Количество        = РегПартии.Количество;
                ТаблПартий.СуммаУпр            = РегПартии.СуммаУпр;
                ТаблПартий.СуммаРуб            = РегПартии.СуммаРуб;
                ТаблПартий.СуммаБезНДС        = РегПартии.СуммаБезНДС;
                
            КонецЕсли;
        КонецЦикла;
    
    Иначе // документа основания нет - все параметры должны быть введены в документе
        КурсДоллара = глКурсДляВалюты(глДоллары,     ТекДок.ДатаДок);
        КурсРубля     = глКурсДляВалюты(глРубли,         ТекДок.ДатаДок);
        СпрПартии   = СоздатьОбъект("Справочник.Партии");
        
        ТаблНоменклатуры.ВыбратьСтроки();
        Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл
            
            ТаблПартий.НоваяСтрока();
            
            // Определим статус партии
            СтатусПартии = "";
            Если ТаблНоменклатуры.ВидСтатус = глСП.Т_Принятый Тогда
                СтатусПартии = ТаблНоменклатуры.ВидСтатус;
            ИначеЕсли ТаблНоменклатуры.Партия.Выбран() = 1 Тогда
            
                // Если указана партия и это был прием на комиссию, то установим соответствующий статус
                Если ТаблНоменклатуры.Партия.ПриходныйДокумент.Выбран() = 1 Тогда
                    Если ТаблНоменклатуры.Партия.ПриходныйДокумент.Вид() = "ПоступлениеТМЦ" Тогда
                        Если (ТаблНоменклатуры.Партия.ПриходныйДокумент.КодОперации = Перечисление.КодыОпераций.ПриемНаРеализацию)
                         ИЛИ (ТаблНоменклатуры.Партия.ПриходныйДокумент.КодОперации = Перечисление.КодыОпераций.ПриемНаРеализациюРозница) Тогда
                            СтатусПартии = Перечисление.СтатусыПартии.Т_Принятый;
                        КонецЕсли;
                    КонецЕсли;                                      
                КонецЕсли;                                          
            КонецЕсли;
            
            Если ПустоеЗначение(СтатусПартии) = 1 Тогда
                СтатусПартии = глПолучитьСтатусПартииПрихода(ТаблНоменклатуры.ВидСтатус, ТаблНоменклатуры.Номенклатура, "", ТекДок.Склад);
            КонецЕсли;

            ТаблПартий.СтатусПартии        = СтатусПартии;
            ТаблПартий.Номенклатура        = ТаблНоменклатуры.Номенклатура;
            ТаблПартий.Количество        = ТаблНоменклатуры.Количество;
            ТаблПартий.СуммаБезНДС        = ТаблНоменклатуры.Себестоимость;
            ТаблПартий.СуммаРуб            = ТаблНоменклатуры.Себестоимость + ТаблНоменклатуры.СебестоимостьНДС;
            ТаблПартий.СуммаУпр            = глПересчет(ТаблПартий.СуммаРуб,глРубли,КурсРубля,глДоллары,КурсДоллара);
            
            // Основания нет, если не выбрана конкретная партия, надо заполнить партию по возврату
            ПрихДокПартии = ТаблНоменклатуры.Партия.ПриходныйДокумент;
            Если (ПустоеЗначение(ПрихДокПартии) = 1)
             или (ПрихДокПартии = ТекДок ) Тогда
                ЗакупочнаяЦена = ?(ТаблПартий.Количество=0,0,Окр(ТаблПартий.СуммаРуб    / ТаблПартий.Количество,2,1));
                ЗакупочнаяЦена = глПересчет(ЗакупочнаяЦена, глРубли, КурсРубля, ТекДок.Договор.ВалютаВзаиморасчетов, ТекДок.ДатаДок);                                       
                ТаблНоменклатуры.Партия    = глЗаполнитьПартию(СпрПартии,  ТаблНоменклатуры.Партия,
                                        ТекДок.Контрагент,ТекДок.Договор,ТекДок,ЗакупочнаяЦена, ТаблНоменклатуры.Единица.Размер);
            КонецЕсли;
            ТаблПартий.Партия            = ТаблНоменклатуры.Партия;
            ТаблПартий.ДатаПартии        = ТекДок.ДатаДок;

        КонецЦикла;
    КонецЕсли; // есть или нет ДокОснование
        
    Возврат ТаблПартий;
    
КонецФункции // глВыяснитьПартииВозврата()
129 Андрей_Андреич
 
naïve
17.12.13
11:07
Процедура глСписаниеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров,ВремПартии,ТаблСписПартий="",ТаблСписПартийКом="") Экспорт
    
    Перем ТаблИтогов; // ТЗ, в которую выгружаем итоги      
    Перем ОстПогКоличество, ОстПогСумма, ОстПогСуммаПродУпр, ОстПогСуммаПродРуб, ОстПогСуммаНДС, ОстПогСуммаНП;
    
    ТаблСписПартий=СоздатьОбъект("ТаблицаЗначений");
    ТаблСписПартий.НоваяКолонка("Фирма");
    ТаблСписПартий.НоваяКолонка("МОЛ");
    ТаблСписПартий.НоваяКолонка("Номенклатура");
    ТаблСписПартий.НоваяКолонка("СтатусПартии");
    ТаблСписПартий.НоваяКолонка("Партия");
    ТаблСписПартий.НоваяКолонка("ДатаПартии");
    ТаблСписПартий.НоваяКолонка("ЦенаПрод");
    ТаблСписПартий.НоваяКолонка("Количество");
    ТаблСписПартий.НоваяКолонка("СуммаУпр");
    ТаблСписПартий.НоваяКолонка("СуммаРуб");
    ТаблСписПартий.НоваяКолонка("СуммаБезНДС");
    ТаблСписПартий.НоваяКолонка("СтавкаНДС");
    ТаблСписПартий.НоваяКолонка("СтавкаНП");
    ТаблСписПартий.НоваяКолонка("СуммаПрод");
    ТаблСписПартий.НоваяКолонка("СуммаПродРуб");
    ТаблСписПартий.НоваяКолонка("СуммаПродУпр");
    ТаблСписПартий.НоваяКолонка("СуммаДокРуб");
    ТаблСписПартий.НоваяКолонка("НДСПрод");
    ТаблСписПартий.НоваяКолонка("НППрод");
    ТаблСписПартий.НоваяКолонка("ДоговорКомитента");
    ТаблСписПартий.НоваяКолонка("НомерСтрокиДокумента");
    ТаблСписПартий.НоваяКолонка("СкидкаРуб");
    
    ТаблСписПартийКом=СоздатьОбъект("ТаблицаЗначений");
    ТаблСписПартийКом.Загрузить(ТаблСписПартий); // копируем структуру
    
    РегистрУчета = ВремПартии.Вид();      
    
    Если РегистрУчета="ПартииНаличие" Тогда
        РегПартии    = Конт.Регистр.ПартииНаличие;
    Иначе    
        РегПартии    = Конт.Регистр.ПартииОтданные;
    КонецЕсли;
    
    Фирма            = СписокПараметров.Получить("Фирма");
    Склад            = СписокПараметров.Получить("Склад");
    Договор            = СписокПараметров.Получить("Договор");
    КодОперации        = СписокПараметров.Получить("КодОперации");
    
    Если РегистрУчета="ПартииНаличие" Тогда
        МОЛ            = Склад.МОЛ;
    КонецЕсли;
              
    МетодРасчетаСебестоимости = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Конт.ДатаДок);
    Если ПустоеЗначение(МетодРасчетаСебестоимости)=1 Тогда
        глНеПроводить(Конт,"Не определен метод расчета себестоимости для юр. лица """+Фирма.ЮрЛицо.Наименование+"""");
        Возврат;
    КонецЕсли;
    
    Если МетодРасчетаСебестоимости = Перечисление.МетодыРасчетаСебестоимости.FIFO Тогда
        ЗнакСортировки="+";
    Иначе    
        ЗнакСортировки="-";
    КонецЕсли;
    
    ТаблНоменклатуры.ВыбратьСтроки();
    Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл
                      
        Номенклатура=ТаблНоменклатуры.Номенклатура;
        Если (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
         или (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
            Продолжить;
        КонецЕсли;
        
        ОстПогКоличество    = ТаблНоменклатуры.Количество;
        ОстПогСуммаПрод        = ТаблНоменклатуры.Сумма;
        ОстПогСуммаПродУпр    = ТаблНоменклатуры.СуммаУпр;
        ОстПогСуммаПродРуб    = ТаблНоменклатуры.ПродСтоимость;  
        ОстПогСуммаДокРуб    = ТаблНоменклатуры.СуммаРуб;
        ОстПогСкидкаРуб        = ТаблНоменклатуры.СкидкаРуб;  
        ОстПогНДСПрод        = ТаблНоменклатуры.СуммаНДС;
        ОстПогНППрод        = ТаблНоменклатуры.СуммаНП;
        
        ВремПартии.УстановитьЗначениеФильтра("Номенклатура",Номенклатура,1);
        Если ТаблНоменклатуры.Партия.Выбран()=1 Тогда
            // выбрана конкретная партия
            ВремПартии.УстановитьЗначениеФильтра("Партия",ТаблНоменклатуры.Партия,1);
        Иначе // снимем фильтр по партии
            ВремПартии.УстановитьЗначениеФильтра("Партия",,0);
        КонецЕсли;                  

        Если РегистрУчета = "ПартииНаличие" Тогда
            Цена = ТаблНоменклатуры.ЦенаПрод;
            ВремПартии.УстановитьЗначениеФильтра("ЦенаПрод", Цена);
        КонецЕсли;    
        
        ВремПартии.ВыгрузитьИтоги(ТаблИтогов,1,1);    
        
        ТаблИтогов.НоваяКолонка("ДокПартии", "Документ");
        ТаблИтогов.ВыбратьСтроки();
        Пока ТаблИтогов.ПолучитьСтроку() = 1  Цикл
            ТаблИтогов.ДокПартии = ТаблИтогов.Партия.ПриходныйДокумент;
        КонецЦикла;
        
        // Подготовим таблицу итогов взависимости от настройки контроля остатков
        ПодготовитьТаблИтогов(ТаблИтогов, Фирма);
        
        Если РегистрУчета="ПартииНаличие" Тогда
            ТаблИтогов.Сортировать("-Фирма,"+ЗнакСортировки+"ДатаПартии,"+ЗнакСортировки+"ДокПартии",1);
        КонецЕсли;
        
        ТаблИтогов.ВыбратьСтроки();
        Пока (ТаблИтогов.ПолучитьСтроку()=1) и (ОстПогКоличество>0) Цикл
            Если ТаблИтогов.Партия.Размер<>ТаблНоменклатуры.Единица.Размер Тогда
                Продолжить;
            КонецЕсли;
            
            Если ТаблИтогов.Количество<=0 Тогда
                Продолжить;
            КонецЕсли;                                    
            
            Если КодОперации = глКО.ВозвратКомитенту Тогда

                // возвращаем товары комитенту - только его товары!
                Если ТаблИтогов.Партия.ДоговорПоставщика<>Договор Тогда
                    Продолжить;
                КонецЕсли;

            КонецЕсли;              
            
            Если ТаблИтогов.Количество>=ОстПогКоличество Тогда

                // остаток партии больше, чем нам надо списать
                КоэффСписания=ОстПогКоличество/ТаблИтогов.Количество;

            Иначе
                КоэффСписания=1;
            КонецЕсли;
            
            //измерения
            РегПартии.Фирма                = Фирма;
            
            РегПартии.Номенклатура        = ТаблИтогов.Номенклатура;
            РегПартии.СтатусПартии        = ТаблИтогов.СтатусПартии;
            РегПартии.Партия            = ТаблИтогов.Партия;
            Если РегистрУчета="ПартииНаличие" Тогда
                РегПартии.ДатаПартии        = ТаблИтогов.ДатаПартии;
                РегПартии.МОЛ                = ТаблИтогов.МОЛ;      
                РегПартии.ЦенаПрод            = ТаблИтогов.ЦенаПрод;
            Иначе
                РегПартии.Договор            = ТаблИтогов.Договор;
                РегПартии.ДокументПередачи    = ТаблИтогов.ДокументПередачи;
            КонецЕсли;    
            
            //ресурсы
            РегПартии.Количество        = Окр(ТаблИтогов.Количество    *КоэффСписания,5,1);
            РегПартии.СуммаУпр            = Окр(ТаблИтогов.СуммаУпр    *КоэффСписания,2,1);
            РегПартии.СуммаРуб            = Окр(ТаблИтогов.СуммаРуб    *КоэффСписания,2,1);
            РегПартии.СуммаБезНДС        = Окр(ТаблИтогов.СуммаБезНДС*КоэффСписания,2,1);
            Если РегистрУчета="ПартииОтданные" Тогда
                РегПартии.ПродСтоимость    = Окр(ТаблИтогов.ПродСтоимость*КоэффСписания,2,1);    
            КонецЕсли;
            
            //реквизиты
            РегПартии.КодОперации         = КодОперации;
                                                                  
            КоэффПогашения = РегПартии.Количество/ОстПогКоличество;
            
            // корректировка остатка продажной стоимости к списанию
            ОстПогКоличество=ОстПогКоличество-РегПартии.Количество;
            
            СписСуммаПрод    = Окр(ОстПогСуммаПрод    *КоэффПогашения,2,1);
            СписСуммаПродУпр= Окр(ОстПогСуммаПродУпр*КоэффПогашения,2,1);
            СписСуммаПродРуб= Окр(ОстПогСуммаПродРуб*КоэффПогашения,2,1);
            СписСуммаДокРуб    = Окр(ОстПогСуммаДокРуб *КоэффПогашения,2,1);
            СписСкидкаРуб    = Окр(ОстПогСкидкаРуб     *КоэффПогашения,2,1);
            СписНДСПрод        = Окр(ОстПогНДСПрод        *КоэффПогашения,2,1);
            СписНППрод         = Окр(ОстПогНППрод        *КоэффПогашения,2,1);
            
            ОстПогСуммаПрод        = ОстПогСуммаПрод    - СписСуммаПрод;
            ОстПогСуммаПродУпр     = ОстПогСуммаПродУпр- СписСуммаПродУпр;
            ОстПогСуммаПродРуб     = ОстПогСуммаПродРуб- СписСуммаПродРуб;
            ОстПогСуммаДокРуб     = ОстПогСуммаДокРуб    - СписСуммаДокРуб;
            ОстПогСкидкаРуб     = ОстПогСкидкаРуб    - СписСкидкаРуб;
            ОстПогНДСПрод        = ОстПогНДСПрод     - СписНДСПрод;
            ОстПогНППрод        = ОстПогНППрод         - СписНППрод;
            
            СтавкаНДС        = ТаблНоменклатуры.СтавкаНДС;
            СтавкаНП        = ТаблНоменклатуры.СтавкаНП;
                                                          
            Если РегистрУчета = "ПартииНаличие" Тогда  
                РегПартии.ПродСтоимость    = СписСуммаПродРуб;    
            КонецЕсли;
            
            Если (КодОперации <> глКО.Перемещение) и (КодОперации <> глКО.ПередачаВРозницу) и (КодОперации <> глКО.ВозвратИзРозницы)
               и (КодОперации <> глКО.ВозвратПоставщикуИзРозницы) Тогда
                РегПартии.Выручка    = Окр(СписСуммаПродРуб - СписНДСПрод - СписНППрод, 2, 1);
            
            ИначеЕсли КодОперации = глКО.ВозвратПоставщикуИзРозницы Тогда
                РегПартии.Выручка    = Окр(СписСуммаДокРуб - СписНДСПрод - СписНППрод, 2, 1);
                
            Иначе
                РегПартии.Выручка    = 0;
            КонецЕсли;

            ЗапомнитьСписаннуюПартию(РегПартии,ТаблСписПартий,СписСуммаПрод,СписСуммаПродУпр,СписСуммаПродРуб,СписНДСПрод,СписНППрод,СтавкаНДС,СтавкаНП, ТаблНоменклатуры.НомерСтрокиДокумента, СписСкидкаРуб, СписСуммаДокРуб);
            Если РегПартии.СтатусПартии=глСП.Т_Принятый Тогда
                ЗапомнитьСписаннуюПартию(РегПартии,ТаблСписПартийКом,СписСуммаПрод,СписСуммаПродУпр,СписСуммаПродРуб,СписНДСПрод,СписНППрод,СтавкаНДС,СтавкаНП, ТаблНоменклатуры.НомерСтрокиДокумента, СписСкидкаРуб, СписСуммаДокРуб);
            КонецЕсли;
            
            РегПартии.ПривязыватьСтроку(ТаблНоменклатуры.НомерСтрокиДокумента);
            
            РегПартии.ДвижениеРасходВыполнить();
        КонецЦикла; // по строкам ТаблИтогов
            
        
        Если ОстПогКоличество>0 Тогда
            // значит мы расходуем Номенклатуру
            // а Партии, которые надо погашать исчерпаны,
            // значит надо выдать сообщение об этом инциденте
            // и записать текущий документ как Партию с отриц. знаком
            Если ПустоеЗначение(ТаблНоменклатуры.Партия)=1 Тогда
                глСообщениеПроведения ("При проведении партий ТМЦ по "+Конт.ТекущийДокумент()+" от "+Конт.ДатаДок+" по ТМЦ "
                +СокрЛП(Номенклатура)+" не распределилось по партиям "+ОстПогКоличество+" "+Номенклатура.БазоваяЕдиница, Конт.ТекущийДокумент(),,,1);
            Иначе
                глСообщениеПроведения("По указанной к списанию партии ТМЦ """ + ТаблНоменклатуры.Партия.ПриходныйДокумент +
                """ по ТМЦ " +СокрЛП(Номенклатура) +
                ?(ПустоеЗначение(ТаблНоменклатуры.Партия.Свойство) = 1,"",
                  ", (" +  
                  СокрЛП(ТаблНоменклатуры.Партия.Свойство.Владелец) +  ": "  +
                  СокрЛП(ТаблНоменклатуры.Партия.Свойство) +")"
                  ) +  
                " не распределилось  "+ОстПогКоличество+" "+Номенклатура.БазоваяЕдиница, Конт.ТекущийДокумент(),,,1);
            КонецЕсли;
            
            //измерения
            РегПартии.Фирма                = Фирма;
            РегПартии.Номенклатура        = Номенклатура;
            РегПартии.СтатусПартии        = глПолучитьСтатусПартииПрихода(Перечисление.ВидыТМЦ.Товар,Номенклатура,КодОперации, Склад);
            РегПартии.Партия            = ПолучитьПустоеЗначение("Справочник.Партии");
            Если РегистрУчета="ПартииНаличие" Тогда
                РегПартии.ДатаПартии    = "";
                РегПартии.МОЛ            = МОЛ;                    
                РегПартии.ЦенаПрод        = ТаблНоменклатуры.ЦенаПрод;
                РегПартии.ПродСтоимость = ОстПогСуммаПродРуб;
                Если (КодОперации <> глКО.Перемещение) и (КодОперации <> глКО.ПередачаВРозницу) и (КодОперации <> глКО.ВозвратИзРозницы)
                   и (КодОперации <> глКО.ВозвратПоставщикуИзРозницы) Тогда
                    РегПартии.Выручка    = Окр(ОстПогСуммаПродРуб - ОстПогНДСПрод - ОстПогНППрод, 2, 1);
                
                ИначеЕсли КодОперации = глКО.ВозвратПоставщикуИзРозницы Тогда
                    РегПартии.Выручка    = Окр(ОстПогСуммаДокРуб - ОстПогНДСПрод - ОстПогНППрод, 2, 1);
                    
                Иначе
                    РегПартии.Выручка    = 0;
                КонецЕсли;
            Иначе
                РегПартии.Выручка           = Окр(ОстПогСуммаПродРуб - ОстПогНДСПрод - ОстПогНППрод, 2, 1);
                РегПартии.Договор           = Договор;
                РегПартии.ДокументПередачи = "";
            КонецЕсли;
            
            //ресурсы
            РегПартии.Количество        = ОстПогКоличество;
            РегПартии.СуммаУпр            = 0;
            РегПартии.СуммаРуб            = 0;
            РегПартии.СуммаБезНДС        = 0;
            Если РегистрУчета="ПартииОтданные" Тогда
                РегПартии.ПродСтоимость    = ОстПогСуммаПрод;
            КонецЕсли;
            
            //реквизиты  
            РегПартии.КодОперации         = КодОперации;
            
            СтавкаНДС        = ТаблНоменклатуры.СтавкаНДС;
            СтавкаНП        = ТаблНоменклатуры.СтавкаНП;
            
            ЗапомнитьСписаннуюПартию       (РегПартии,ТаблСписПартий,ОстПогСуммаПрод,ОстПогСуммаПродУпр,ОстПогСуммаПродРуб,ОстПогНДСПрод,ОстПогНППрод,СтавкаНДС,СтавкаНП, ТаблНоменклатуры.НомерСтрокиДокумента, ОстПогСкидкаРуб, ОстПогСуммаДокРуб);
            Если РегПартии.СтатусПартии=глСП.Т_Принятый Тогда
                ЗапомнитьСписаннуюПартию(РегПартии,ТаблСписПартийКом,ОстПогСуммаПрод,ОстПогСуммаПродУпр,ОстПогСуммаПродРуб,ОстПогНДСПрод,ОстПогНППрод,СтавкаНДС,СтавкаНП, ТаблНоменклатуры.НомерСтрокиДокумента, ОстПогСкидкаРуб, ОстПогСуммаДокРуб);
            КонецЕсли;          
            
            // все, погасили всю строку документа
            ОстПогКоличество= 0;
            ОстПогСуммаПрод    = 0;        
            ОстПогСуммаПродУпр    = 0;        
            ОстПогСуммаПродРуб    = 0;        
            ОстПогСкидкаРуб    = 0;        
            ОстПогНДСПрод    = 0;
            ОстПогНППрод    = 0;
            
            РегПартии.ПривязыватьСтроку(ТаблНоменклатуры.НомерСтрокиДокумента);
            
            РегПартии.ДвижениеРасходВыполнить();
        КонецЕсли;
    
    КонецЦикла; // по строкам ТаблНоменклатуры
    
КонецПроцедуры // глСписаниеПартийТМЦ()
130 Андрей_Андреич
 
naïve
17.12.13
11:08
Процедура глДвижениеОборотовПродаж(Конт,
                                Фирма,
                                Контрагент,
                                Поставщик,
                                Номенклатура,
                                Количество,
                                Себестоимость,
                                ПродСтоимость
                                ,Размер="") Экспорт
    
    РегПродажи = Конт.Регистр.Продажи;
    
    // измерения
    РегПродажи.Фирма        = Фирма;
    РегПродажи.Поставщик     = Поставщик;
    РегПродажи.Покупатель     = Контрагент;
    РегПродажи.Номенклатура = Номенклатура;
    РегПродажи.Размер = Размер;
    // ресурсы      
    Если Количество >= 0 Тогда
        РегПродажи.Себестоимость = Себестоимость;
        РегПродажи.ПродСтоимость = ПродСтоимость;
        РегПродажи.Количество      = Количество;
    Иначе                                
        РегПродажи.СебестоимостьВ = - Себестоимость;
        РегПродажи.ПродСтоимостьВ = - ПродСтоимость;
        РегПродажи.КоличествоВ       = - Количество;
    КонецЕсли;
    
    РегПродажи.ДвижениеВыполнить();
    
КонецПроцедуры //глДвижениеОборотовПродаж()
131 Андрей_Андреич
 
naïve
17.12.13
11:11
Я извиняюсь за подобный спам - вроде все места кроме отчетов выложил где размер встречается. Дальше поиск по слову и понятно что и где.
Кстати, ничего не мешает вместо размера завести справочник "характеристика" с реквизитами размер, цвет и т.д. и остается только в отчетах вставить группировки по этим реквизитам. Это если не только по размерам вести.
132 Diter
 
17.12.13
11:13
(131) читай первую страницу обсуждения там расписано почему это неудобно
133 КонецЦикла
 
17.12.13
11:13
(131) Спасипки, возможно пригодится
134 Андрей_Андреич
 
naïve
17.12.13
11:17
(132) Ну а я написал, почему мне так было удобно. Если размер/цвет/характеристику запхать в ед.изм. - ни одну форму документа и печ.форму переписывать не надо. Это удобная фишка. А так на вкус и цвет.
135 Diter
 
17.12.13
11:19
(134) вроде удобно. но вот вопрос у клиента - есть ли на остатке платья размера 40 (например). какие модели и какие цвета? как строить отчет?
136 Андрей_Андреич
 
naïve
17.12.13
11:22
(135) Отчеты переделал - там группировка размер и отбор по размеру есть. Всего-то отчеты по остаткам, продажам и партиям. Это как раз всего полдня работы.
137 Diter
 
17.12.13
11:25
(136) вариант имеет право на жизнь. по сути тот же подчиненный справочник. только у тебя допиливается штатный а у меня отдельный.
138 Андрей_Андреич
 
naïve
17.12.13
11:30
(137) Твой правильнее и универсальнее, а мой проще в реализации. А КЦ уже пусть решает.
139 beholder
 
17.12.13
11:41
(0) Просто добавь реквизит АртикулБух и по нему синхронизируй с 1С:Бухгалтерией. А в справочнике кажлый размер отдельно учитывай.
140 Diter
 
17.12.13
11:43
(139) такое решение "в лоб" не подходит в виду необходимости получать отчеты с группировками по размерам и видам ткани.
141 Андрей_Андреич
 
naïve
17.12.13
11:49
(140) А у ТС учет по видам ткани требуется? Я понял, что только размер.
142 Diter
 
17.12.13
11:52
(141) тут такое дело. заказчик считает учет по видам материала "само собой разумеющимся" сталкивался не раз и не два с подобной ситуацией. поэтому привык просчитывать все варианты с самым большим возможным количеством "разворотов" учета. не понадобится - проще. понадобится - переделывать не надо будет.
143 Diter
 
17.12.13
11:55
именно поэтому я в конфе что отправил КЦ ещё ввел разворот по ценам продажным предполагая что в принципе возможно чтобы разные размеры стоили по разному. в реале может и не так у конкретного клиента, но в принципе это возможно - значит я это лучше заложу сейчас чем потом переделывать все. тут разные принципы работы программистов наверное. мне просто не интересно долго работать с клиентом "допиливая" его хотелки по мелочам (есть исключения но там объем таких вот хотелок гораздо меньше чем реально интересная работа). Я считаю что в идеале должно быть так - получил задачу, реализовал, получил бабки, попрощался с клиентом. И заказчику комфортнее потом тебе бабло за крупную переделку заплатить чем каждый раз дёргать тебя как ему кажется по мелочам и платить тебе опять же по мелочам (по его мнению)
144 Андрей_Андреич
 
naïve
17.12.13
12:10
(143) Да я не спорю, просто в моем случае постановка была известна на 100% и 2 года без изменений отпахала.
Программист всегда исправляет последнюю ошибку.