Имя: Пароль:
1C
1C 7.7
v7: Дайте совет. ТиС (ЗаявкаПоставщику и ПоступлениеТМЦ) - ДатаПоставки
,
0 FREEEEs
 
28.10.11
15:00
Всем привет друзья и удачного уикенда!

Быть может кто то захочет помочь..... Сразу говорю букв не мало.

Суть такова, есть конфа Торговля и Склад.

Есть документ ЗаказПоставщику, у него есть дата - ДатаОтгрузки.

Когда заходим в справочник- Номенклатура, внизу есть таблица которая выводит остати номенклатуры на складах - ОбработкаПоказатьОстаткиТМЦ и вот, там какой-то программист добавил в таблицу колонку "Дата поставки". То есть когда в форме-списка, в справочнике Номенклатура выделяем запись, внизу выводится таблица остатков и там колонка ДатаПоставки.

ДатаПоставки ставится когда мы создаём и проводим документ ЗаказПоставщику с этой номенклатурой.

Суть в том что программист написал криво, когда мы проводим ЗаказПоставщику, ДатаПоставки ставится, но когда мы проводим ПоступлениеТМЦ ОНА НЕ УБИРАЕТСЯ, продавцы заходят в Номенклатуру и видят что ДатаПоставки висит всё время, хотя товар уже пришёл.

Вопросы:
1) Как работает документ ЗаказПоставщику и документ ПоступлениеТМЦ ? Понятно что по регистр, код смотрел, но всё же не пойму до конца. При проведении ПоступлениеТМЦ он списывает ЗаказПоставщику ?

2) Как решить проблему?
То-есть надо смотреть в сторону при проведении ПоступлениеТМЦ ? Но реквизит ДатаПоставки берётся из Документа ЗаказПоставщику. То-есть менять сам реквизит нельзя.

P.S Я не знаю правильно ли написал / переда мысли.... пишите - отвечу.
1 Iris-ocean
 
28.10.11
15:22
глупая доработка
2 Iris-ocean
 
28.10.11
15:27
тут конечно можно при проведении поступления очищать дату, но доработка кривая изначально была. Так как тут не учитываются случаи, когда отменяют проведение заказа или поступления
3 FREEEEs
 
28.10.11
15:53
Ну так дата же у документа ЗаказПоставщику, там очищаем реквизит ДатаОтгрузки?
4 FREEEEs
 
28.10.11
15:54
А какую роль вообще играет ПоступлениеТМЦ ?? Онхоть влияет как то на ЗаказаПоставщику??
5 Iris-ocean
 
28.10.11
15:57
мне не видно  что там за дата в справочнике номенклатуры - из заказа она или сама по себе. Скорее всего сама по себе. просто в момент проведения заказа в номенклатуре проставляется дата.
6 Iris-ocean
 
28.10.11
16:00
(4) ну как, заказ делает движение по регистру "заказы" приход....а поступление, введенное на основании заказа, делает соответсвенно движение расход. Вот и всё. в 7.7. всё примитивно
7 aka AMIGO
 
28.10.11
16:02
мне кажется, надо в форму списка номенклатуры добавить код определения факта поставки номенклатуры.
анализ регистра Заказы или ЗаказыЗаявки, связать дату с остатками, сформировать значение в колонке
8 aka AMIGO
 
28.10.11
16:08
(4) так можно посмотреть движения - это раз..
а два - если ПоступлениеТМЦ сделано на основании Заказа, то элементарно находится док-основание, и в нем обнуляется дата..
я-бы так сделал..
только, конечно, надо согласовать сценарий с заказчиком.
9 FREEEEs
 
29.10.11
11:18
Подскажи как Подскажи как связать дату с остатками?

Я вот подумал. Как вариант? Хотя хз

ЗаказПоставщику - это приход, идёт движение в регистре оприходе N кол. товара.
ПоступлениеТМЦ - это расход, идёт движение в регистре о расходе N кол. товара.

То есть грубо говоря получается 2 таблицы приход и расход и нужно как то переработать их и та запись прихода у которой нет записи расхода - это будет Заявка которая ещё не пришла.

Помогите :<
10 aka AMIGO
 
29.10.11
11:41
попробуй воспользоваться вот такой штукой, что сделал я на форме списка в журнале "Счета", это мой самодельный журнал, но сути не меняет..
в ТЧ журнала есть колонка "Задолженность, в ней функция ДоплатаПоЗаказу(), содержимое её определяется инфой из подчиненных Счету документов:

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


ЗЫ. это как вариант извлечения и формирования инфы по подчиненным.
счас приведу второй пример - инфа по остаткам, но у меня в них формируется не колонка, а пиктограмма в ТЧ журнала..
11 zak555
 
29.10.11
11:50
(10) это что такое ?
12 aka AMIGO
 
29.10.11
11:52
второй пример: у меня автоматом резервируется товар при поступлении ТМЦ, и состояние Счета (Заявки покупателя) зависит от остатков Заказов и Резервов по счету визуально отображается в Журнале.

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

   Возврат 0;    
КонецФункции
РегЗаявки = СоздатьОбъект("Регистр.Заявки");
РегРезервы = СоздатьОбъект("Регистр.РезервыТМЦ");

ЗЫ. счас приведу картинку - отображение состояния Счетов в журнале

ЗЫЫ. сообщения насчет того Г. это код или неГ. - от уважаемых форумчан не принимаются, спасибо, опнаслышан, мне важно, что у заказчика ЭТО работает, остальное - лесом, лесом.. :)
13 aka AMIGO
 
29.10.11
11:53
(11) - знаешь ТиС в 7.7? вот это её доработка
14 FREEEEs
 
29.10.11
11:54
Можно конечно по тупому, в месте где он в таблицу добавляет дату поступления, проверять если дата Заказа меньше текущей, то логично что заказ уже пришёл, оставляем поле пустым.

Но тут недочёт, а вдруг приход будет раньше (ПоступлениеТМЦ сделают раньше) чем была ранее ДатаОтгрузки в Заявке, но наша дата всё равно будет висеть в таблице.
15 zak555
 
29.10.11
11:58
(13) зачем такой код, если в тисе есть регистры :?
16 aka AMIGO
 
29.10.11
11:59
журнал счетов:
http://s017.radikal.ru/i415/1110/dc/71156c519a3b.jpg

(14) друже, фантазия тебе в руки, рисуй код, по-ходу придет решение, мож по-первости плохое, улучшишь.. делов-то.. всё привычное..

ЗЫ. в создании программ отладка занимает 80% времени.. и только 20% - написание с размышлизмами :)
17 FREEEEs
 
29.10.11
12:01
aka AMIGO Спасибо =)
18 aka AMIGO
 
29.10.11
12:07
(15) и слава Богу, что есть :)
вот я анализирую их остатки, это для меня инфа о состоянии :)
решение да-ле-ко-не-единственное, и не самое хорошее..
сколько прогеров - столько и вариантов.. столько и мнений о моем коде.. ничо.. я привычный :)

(17) не за что.. если черпнешь что полезное - буду рад..

ЗЫ. вот еще такой анализ счетов есть у меня:
заказчик очень доволен.. значит, и я тоже :)
http://s017.radikal.ru/i410/1110/99/955b753ec8b6.jpg
к сожалению, примерчик отчета не очень полный.. обычно выводятся все связанные документы, с оплатой, с поставками, с инфой о заявках..
не в этом дело..
19 aka AMIGO
 
29.10.11
12:08
+18 забыл сказать: это вариант счета, помеченный Желтым, т.е. готов к реализации
20 aka AMIGO
 
29.10.11
12:11
а вот этот - частично укомплектован
http://s017.radikal.ru/i432/1110/38/385466830e0d.jpg
21 FREEEEs
 
29.10.11
12:14
Эххх что о у меня куча мала в голове ((

Не знаю с чего начать.

Вот думаю, капать в сторону вывода списка - Справочник - Номенклатура - Обработка.ПоказатьОстаткиТМЦ

Или копать в сторону ПоступлениеТМЦ и при его проведении, обрабатывать ЗаявкаПотавщику
22 aka AMIGO
 
29.10.11
12:20
(21) я тебя понимаю.. примерно так-же я себя чувствую, когда мне отвечают :)
за каждым ответом - код, или решение, потребовавшее времени у отвечающего на разработку..
мне трудно советовать, конфа-то чужая..
так и в моей другому будет трудно разобраться..
23 aka AMIGO
 
29.10.11
12:27
Может быть поможет такой код, это справочник номенклатура, ФормаСписка, две новых колонки: Свободный остаток и Резерв
а вот код их расчета:

Функция ПолучитьСвободныйОстаток()
   Перем тмп;
   
   ТекНоменклатура = ТекущийЭлемент();
   Если ТекНоменклатура.ЭтоГруппа()=1 Тогда
       Возврат "";
   КонецЕсли;
   тмп = Регистр.ОстаткиТМЦ.СводныйОстаток(,ТекНоменклатура,,,"Количество")-
   Регистр.РезервыТМЦ.СводныйОстаток(,ТекНоменклатура,,,,"Количество");
   Если ПустоеЗначение(тмп)=1 Тогда
       Возврат "";
   КонецЕсли;
   Возврат СокрЛП(Формат(тмп,"Ч014.3"));
КонецФункции
Функция ПолучитьТовРезерв()
   Перем тмп;
   ТекНоменклатура = ТекущийЭлемент();
   Если ТекНоменклатура.ЭтоГруппа()=1 Тогда
       Возврат "";
   КонецЕсли;
   тмп = Регистр.РезервыТМЦ.СводныйОстаток(,ТекНоменклатура,,,,"Количество");
   Если ПустоеЗначение(тмп)=1 Тогда
       Возврат "";
   КонецЕсли;
   Возврат СокрЛП(Формат(тмп,"Ч014.3"));
КонецФункции
24 aka AMIGO
 
29.10.11
12:33
+23 вот так выглядит форма списка с этими колонками:
http://s017.radikal.ru/i402/1110/ff/8e0c99d391f4.jpg
25 FREEEEs
 
29.10.11
12:40
Спасибо конечно тебе, хватит тратить время на меня =)
26 FREEEEs
 
29.10.11
12:41
Эммм.. тебе же не 71 год как в анкете ? оО
27 aka AMIGO
 
29.10.11
12:41
(26) конечно, мне уже 72 :)
28 FREEEEs
 
29.10.11
13:41
Тогда на Вы ?
29 aka AMIGO
 
29.10.11
18:02
(28) ни в коем разе! это инет, а не великосветский прием :)
тут все равны, как перед Ним! :)
30 Злопчинский
 
30.10.11
04:43
(6) > ну как, заказ делает движение по регистру "заказы" приход....а поступление, введенное на основании заказа, делает соответсвенно движение расход. Вот и всё. в 7.7. всё примитивно
- ответ нвеерный по двум пунктам  - по основному и по "все примитивно", незчет
31 Злопчинский
 
30.10.11
04:45
Пришел товар или нет по обязательствам.выраженным в заказах поставщикам, определяется соответсвующим отчетом. Если в отчете нет заказа №23 - значит товар по нем упришел.. ;-)
а точнее - в отчете показываются заказы. по котрым  НЕ ЗАКРЫТЫ обязательства по поставкм.. ибо если показывать закрытые заказы - то придется выводить все с самого начала времен чт о было закрыто.. ;_)
32 Злопчинский
 
30.10.11
04:47
(8) > если ПоступлениеТМЦ сделано на основании Заказа, то элементарно находится док-основание, и в нем обнуляется дата..
- так делать нельзя, ибо проведение по регистрам заказов/заказов заявок опирается на ожидаемую дату поставки как раз.. и при перепроведении (восстановлении ГП и прочих) - поличите бяку - ... в штатных алгоритмах - дато ожидаемой поставки не должна быть пустой.
33 Злопчинский
 
30.10.11
04:53
так и не понял, какую ЗАДАЧУ надо решить ТС..? "убрать какую-то дату написанную вопреки все йметоде типовой ТиС" - это не задача. это сиюминутный костыл, который непонятен вне подробного текста объяснения полного смысла его сипользования....
.
в типовой ТиС наличие остатков требуемых (резервов заявок, выполнения заказов и прчоего) - делается не на основании флажков, взводимых непонятно кем и когда - а на основании данных получаемых ВТОТ ММОМЕНТ КОГДА ОНИ НУЖНЫ - из регистров.
.
это не всегда удобно и эффективно. Но допиливать, не зная т иповых возможностей - езще больший грех...
34 FREEEEs
 
30.10.11
05:33
Злопчинский критиковать мы все умеем, много ума не надо.

Что значит не понятна задача? Я думал меня тут все поняли, ок, я не ленивый человек, напишу ещё раз.

Есть документ ЗаказаПоставщику у него есть реквизит ДатаОтгрузки.

Есть Справочник Номенклатура, есть форма списка, при выборе элемента, внизу обрабатывается табличная часть. Обработки.ПоказатьОстаткиТМЦ.

Программист до меня (их было около 5 чел. и каждый вносил изменения), добавил в эту обработку, новую колонку "ДатаПоставки", эта колонка берёт дату из Регистра Заказы, измерение ЗаказПоставщику = Документ.ЗаказаПоставщику = ДатаОтгрузки.
--

То-есть дату видно как только пошло движение по регистру приход (провли документ ЗаказПоставщику с текущим товаром (который выбрали)).

Но дата не убирается вообще. Даже когда бы проводим ПоступлениеТМЦ, дата всё-равно висит в таблице. Хотя товар уже приняли.

Вопрос: Как убрать эту дату после прихода товара.

Понятно?
35 FREEEEs
 
30.10.11
05:34
Я согласен что после ПоступлениеТМЦ смотреть ДокОснования и меня его дату не вариант... тем более не факт что у ПоступлениеТМЦ будет ДокОснования.
36 FREEEEs
 
30.10.11
05:37
Именно по этому, я думаю единственный вариант делать на стороне вывода таблицы и отсеивать.

То-есть в обработке ПоказатьОстаткиТМЦ. Как-то проверять заявки котороые уже пришли и не пришли.
37 Bww_
 
30.10.11
08:19
С ТиС прочно не работал, но может-поможет...
В УПП, как бы схожая идеология:
- Есть внутренний количественный заказ (без цен);
- Заказ поставщику (с ценами) + ссылка на вн.заказ;
- Поступление товаров и услуг + ссылка на заказ поставщику и вн.заказ. Закрывает заказ поставщику И! вн.заказ при условии, что источником вн.заказа является склад;
- Требование-накладная + ссылка на вн.заказ. Закрывает вн.заказ, при условии, что его источником является подразделение.
38 Мимохожий Однако
 
30.10.11
09:27
(34)Закрытие регистра Заказы происходит? Каким документом? Бери дату не только из него, а еще из регистра Партии поступления и сравнивай даты. Оставляй большую. ИМХО, проще убрать это дерьмо, чем править.
39 FREEEEs
 
30.10.11
09:28
Ну пока сделал так.
Уж точно лучше чем не как.


Приход = 0;
Расход = 0;  

Пока ЗаказыТМЦ.ПолучитьДвижение() = 1 Цикл
.......
 Если ТекущийДок.Вид() = "ЗаказПоставщику" Тогда
   Приход = Приход + ЗаказыТМЦ.КоличествоПриход;
 Иначе
   Расход = Расход + ЗаказыТМЦ.КоличествоПриход;
 КонецЕсли;
КонецЦикла;


НеВсе = ?(Приход > Расход, 1, 0);


Если (ТаблОстатков.Поставка < ТекущаяДата()) ИЛИ (НеВсе = 0) Тогда
 ТаблОстатков.ДатаПоставки = "";  
КонецЕсли;
40 FREEEEs
 
30.10.11
09:30
То-есть проверил что если дата поставки меньше текущей, само собой уже на кутально и если заказов не больше чем поступлений.

Что вообще значит "Закрытие регистра Заказы происходит? " ?? Я знаю только движения прихода и расхода, о закрытии не знаю.
41 Мимохожий Однако
 
30.10.11
09:31
Если регистр не оборотный, то он обязан закрываться согласно правил.
42 FREEEEs
 
30.10.11
09:33
Регистр Заказы - Остатки.

Есть док. ЗаказыПосавщику - приход, есть док ПоступлениеТМЦ - расход. Как мне понять что значит "закрыватся" ? Где глянуть?
43 Мимохожий Однако
 
30.10.11
09:34
Отчет Заказы поставщикам, что показывает по проблемным позициям?
44 FREEEEs
 
30.10.11
09:35
Ну вот грубо говоря кусок из модуля документа ПоступлениеТМЦ, где тут закрытие?

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

КонецПроцедуры // ПроведениеПоРегистрам()
45 Мимохожий Однако
 
30.10.11
09:35
Как разруливаешь ситуацию - несколько заказов поставщикам по одной позиции?
46 Мимохожий Однако
 
30.10.11
09:36
(44)я не про код. Просто открой отчет и сформируй.
47 FREEEEs
 
30.10.11
09:37
Отчёт вообще не понятный)) сделал за 2 дня отчёт, 2 документа было Заказа с 4 номенклатурами, отчёт на 100 страниц))
48 FREEEEs
 
30.10.11
09:40
Ну отчёт показывает Заказано и Получино, одинаковые данные
49 Мимохожий Однако
 
30.10.11
09:40
Возьми одну позицию для начала и период поменьше.
50 FREEEEs
 
30.10.11
09:42
Ну так что полезного в этом отчёте?

Он показывает движения по регистру Колличества.

Или это и есть "закрытие" ?
51 FREEEEs
 
30.10.11
09:42
*Он показывает движения по регистру, Колличества,Сумма.
52 aka AMIGO
 
30.10.11
09:43
(42) "закрытие" ..
разные документы делают движения регистра (остатков), и по выбранной совокупности измерений регистра, равны ресурсы по приходу и расходу.
это и есть закрытие - равенство нулю итогов по измерениям.

спец. действия "закрытие регистра" нет
53 Мимохожий Однако
 
30.10.11
09:43
Я это к тому, что в данной организации не обращают внимания на документ-основание при поступлении. (50) Это и есть осутствие закрытия. Ответь на (45)
54 FREEEEs
 
30.10.11
09:45
И чем же это закрытие отличается от:

Приход = 0;
Расход = 0;  

Пока ЗаказыТМЦ.ПолучитьДвижение() = 1 Цикл
.......
 Если ТекущийДок.Вид() = "ЗаказПоставщику" Тогда
   Приход = Приход + ЗаказыТМЦ.КоличествоПриход;
 Иначе
   Расход = Расход + ЗаказыТМЦ.КоличествоПриход;
 КонецЕсли;
КонецЦикла;


НеВсе = ?(Приход > Расход, 1, 0);


Это аналог закрытия?

МимохожийОднако ммм... это был вопрос по теме? Несколько заказав и как я уберу датупоставки?
55 Мимохожий Однако
 
30.10.11
09:47
Может и не по теме. Тебе решать. Однако.. при наличии нескольких заказов на одну и ту же позицию и с разными датами поставки. Что будешь выводить в форму списка?
56 FREEEEs
 
30.10.11
09:48
Вот сейчас пробую. Потавил дату на компе 27 и щас сделаю 2 заказа, 5 минут
57 FREEEEs
 
30.10.11
09:51
Ну во первых, так было сделано до меня.

При создании двух заказов.
1) ЗаказПоставщику - 100 ед - 27.10.11
2) ЗаказПоставщику - 100 ед - 28.10.11

В таблице отображается дата 28.10.11 ! Хотя само собой должно быть 27, как я понял он просто тупо берёт последнее движение.
58 FREEEEs
 
30.10.11
09:53
Он получается обращается к последнему движению Регистра Заявки - Документу ЗаказПоставщику - к реквизиту ДатаОтгрузки
59 Мимохожий Однако
 
30.10.11
09:57
Вот оно и всплыло. Уточни у клиента, что он хочет. Может быть, удалить недостоверную информацию.Иногда не показывать правильнее и достаточно  научиться пользоваться "неправильным" отчетов Заказы поставщикам.
60 FREEEEs
 
30.10.11
09:57
Эхх..

Можно сделть так.

Получить список движений товара прихода Заявки.
Получить список движений товара расхода ПоступлениеТМЦ.

Выгрузить в таблицы, по циклу искать пары по номенклатуре, кол...

Но тут много теледвижений, лишнии циклы
61 FREEEEs
 
30.10.11
10:01
А как лучше из списка Дат выбрать одну меньшую ?
62 Мимохожий Однако
 
30.10.11
10:04
А я бы начал с допроса пользователей. Кто и что хочет видеть. Потом ткнуть носом в отчет. Для случая (60) для начала надо вводить Поступление на основании Заказа поставщика. Но это не спасет. Дело в изначальной постановке задачи.  В данной ситуации можно добавить в справочник Номенклатуры периодический реквизит Заказано и хранить дату планируемой поставки при проведении документа Заказ поставщику. При выводе списка бежать от Текущей даты до ближайшей в реквизите. И не надо регистры дергать :-)
63 aka AMIGO
 
30.10.11
10:10
(61) Дата= Мин(Дата, ОчереднаяДата);
++ если хочешь - выложи модуль Списка Номенклатуры в какой-нибудь файлообменник.. ifolder.ru, что-ли.. хочется посмотреть, что у тебя там
64 FREEEEs
 
30.10.11
10:16
Эммм модуль списка номенклатуры, или Обработки.ПоказатьОстаткиТМЦ <= Колонка  ДатаПоступления ?

Модуль номенклатуры как бы не участвует в данной теме =)
65 aka AMIGO
 
30.10.11
10:28
(64) понятно.. тогда обработку, сохрани как внешний отчет :)
66 FREEEEs
 
30.10.11
10:36
Вот http://ifolder.ru/26643405

Лучше начинать с процедуры ЗаполнитьПоСкладамИфирмам().
67 aka AMIGO
 
30.10.11
10:45
(66) ладушки, я понял.. только придется отложить до вечера, буду занят..
68 FREEEEs
 
30.10.11
12:11
Ну вот всё =)

Думаю идеальный вариант, может кому пригодится:
   ....
   ЗаказыТМЦ     = СоздатьОбъект("Регистр.Заказы");
   ЗаказыТМЦ.УстановитьЗначениеФильтра("Номенклатура", ОбъектАнализа, 1);
   ....
   ДатаТА    = ПолучитьДатуТА();    
   
   ДатаЗапроса        = ТекущаяДата();
   Если ДатаЗапроса > ДатаТА Тогда
       ДатаЗапроса    = ДатаТА;
   КонецЕсли;
   ГлубинаЗапроса    = ДобавитьМесяц(ДатаЗапроса,-2);

   ЗаказыТМЦ.ВыбратьДвижения(ГлубинаЗапроса,ДатаЗапроса);
   ...

   ТаблИтоги = СоздатьОбъект("ТаблицаЗначений");
   ЗаказыТМЦ.ВыгрузитьИтоги(ТаблИтоги, 1, 1);
   ТаблИтоги.ВыбратьСтроки();
   НоваяДатаПоставки = "";

   Пока ТаблИтоги.ПолучитьСтроку() = 1 Цикл  
       
       ДатаЗаказа = ТаблИтоги.ЗаказПоставщику.ДатаОтгрузки;
               
       Если ДатаЗаказа < ДатаЗапроса Тогда
           Продолжить;
       ИначеЕсли ДатаЗаказа = ДатаЗапроса Тогда
           НоваяДатаПоставки = ДатаЗапроса;
           Продолжить;
       ИначеЕсли ПустоеЗначение(НоваяДатаПоставки) = 1 Тогда
           НоваяДатаПоставки = ДатаЗаказа;
       Иначе    
           НоваяДатаПоставки = Мин(ДатаЗаказа, НоваяДатаПоставки);
       КонецЕсли;
       
   КонецЦикла;
69 FREEEEs
 
30.10.11
12:16
Лан распишу пошагово:

Создали ссылку на регистр.
Установили фильтр по отдельному товару (который мы выбрали в табл. части).
Получили актуальную дату, текущую.
Получили глубину запроса на два месяца назад.
Выбрали движения.
Выгрузили Итоги - те заявки, которые до сих пор висят не выполненные.
По циклу обходим эти заявки.

Если дата Заявки старая, лесом.
Если нашли док с текущей датой, выходим мы сделали своё дело.
Если дата Заявки не старая и не текущая, начинаем сравнивать со всеми такими датами и находим наименьшую.

Ну и всё, дальше выводим НоваяДатаПоставки.
70 Мимохожий Однако
 
30.10.11
12:19
Код придумал. Молодец. Однако дай поподробнее ответ на вопрос: Как эту информацию используют пользователи при подборе товара?
71 FREEEEs
 
30.10.11
12:27
Ну она(заказчица) сказала так.

Продавец на терминале заходит в Справочник Номенклатура, там список товаров и под списком товаров, внизу находится табличная часть Обработки.ПоказатьОстаткиТМЦ.

Вот и всё и если нет товара, продавец видит когда придёт товар (ДатПоступления), или его ещё не заказали.

По крайне мере, этот заказчик привык работать так, и учить их использовать отчёт "Заказы поставщикам" нет смысла.
72 aka AMIGO
 
30.10.11
12:28
(69) и я поздравляю! когда въедешь в проблему - всё просто! :)
73 FREEEEs
 
30.10.11
12:30
aka AMIGO
Просто люди бывают разные, да согласен кода не много, но как по мне идеально.

Кто-то стремится к простате (сделал за 5 минут и отдал как попало), кто-то стремится к идеалу (чтоб работало отлично, предусмотреть все возможные проблемы вперёд).

В любом случаи спасибо за ответы, помощь и т.д. Тема получилась обширная, надеюсь кому-то помимо меня она пригодится!
74 Мимохожий Однако
 
30.10.11
12:33
Если программиста не остановить, то он будет улучшать до бесконечности. Например, для твоего случая можно добавить количество, которое заказано на эту дату. :-) Если есть еще заказы в будущем будет меньше путаницы. Можно добавить расшифровку в виде отчета "Заказы поставщиков№ по кнопочке "Расшифровать". Вдруг клиенту надо больше, чем заказано в ближайшей поставке.
75 FREEEEs
 
30.10.11
12:35
Нееее, я решал конкретную задачу, ошибку, проблему. Что дата висела вечно, не убиралась, не обновлялась. Трабла решена. Выходные потратил на это, но опыт дороже =)
76 FREEEEs
 
30.10.11
12:37
Только я привык по договорам работать, а тут почасовая, вообще фиг знает сколько потом ставить к оплате....

(это конечно не единственная задача)
77 Мимохожий Однако
 
30.10.11
12:40
Если работаешь по договорам, то забрось им возможность расширения функционала по этой фишке. Например, видеть в окошке не только дату, а список пар (дата, количество) будущих поставок. Клиента можно крутить не только по конкретной задаче, а по следующим. Главное, чтобы у него денег хватило.
78 FREEEEs
 
30.10.11
14:37
Просто... мне очень тяжело говорить с ними про деньги.... типа они спрашивают, а за сколько то и сё? И всё начинаю думать.. вставать в ступор.

Как ты например рассчитываешь?
79 Злопчинский
 
30.10.11
17:18
(34) я понимаю что пи..ть - не мешки ворочать, а подумать - времени нет.
в (34) так и не написано какую задачу надо решить, а написана полная хня - то что было сделано раньше, что криво и прочая ХНЯ. - это видно потому, что как сказано - 5 человек...
.
и что ДЕЙСТВИТЕЛЬНО НУЖНО человеку - остается только телепатировать...
.
предложить могу кучу вариантов...
.
из того что я понял - заказывается товар у поставщика - в это время в карточку товара прописывается ожидаемая ДАтаПоступления.. (каковы остатки товара на данный момент - хз). есои предположить что одновременно на товар может быть несколько заказов поставщику - что там будет написано и что НАДО - так и непонятно...
.
если исходить из самого простого вариант - ЕСЛИ ЕСТЬ ТЕКУЩИЙ ОСТАТОК ТМЦ - то просто НЕ ПОКАЗЫВАТЬ дату ожидаемого поступления.
.
а так, без описания ЧТО ХОТЕЛИ РЕШИТЬ (внедряя такую хню) - разговор бесполезен, до (34) топика ТС - "невменяем"... будет шестым... будет делать очередную хню..
80 Злопчинский
 
30.10.11
17:33
(54) правда вот здесь
ДвижениеЗаказов()
.
(71) ну слава богу, к третьей рюмке окле мались..
на форму Остатков ТМЦ положи дополниельную маленькую ТЗ.
юзверь двигаясб по форме номенклатуры - внизу на форме остатков видит текущие остатки ТМЦ и рядом  простой перечень ожидаемых поставок по этой номенклатуре с ожидаемым количеством...
.
заодно meltn видно - если висят заказы поставщику с просроченными датами поступления ( меньше  текущейДаты ) - то в учете бардак и кони...
.
конечно же, если делать по уму (а автор возможно и не допетрит), то по грамотному в таблице ожидаемых поставок следует отдельно выделить товар, который будет зарезервирован под уже существующие заявки покупателей (регистр.ЗаказыЗаявки) - но возможно по таколй схеме у автора не работают...
.
и не надо никаких доп.сущностей типа ожидаемых дат поставок в карточке номенклатуры, ввода на оснвоании и прочей Не относящейся к делу схем, которые напридумывали неграмотные "внедренцы"... или не ннаучили не рассказали что и как и как использовать для каких целей.
.
также, если по уму (а автор стопудово не допетрит) - то рядом с табличкой ожидаемых поступлений (на форме остатков) - положить кнопочку, которая вкл/выкл "показ" таких данных - дабы беготня по справочнику (при наборе например по первым буквам) не притормаживала тогда когда н е надо..
.
работы - на 30-40 минут, чтобы сделать красиво и удобно для юзверей.. ну и плюс часа два чтобы нахрен убрать всю фигню которую там наколупали навводили...
.
Короче, привет от критика поп дивам нашей 1Сной эстрады...
AdBlock убивает бесплатный контент. 1Сергей