Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Заказ покупателя - статус
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
bereznoy
Задачу поставили мне сложную на мой взгляд, сделать статус заказа. Имеется журнал с заказами покупателей, пользуются анализом заказов, этого мало по словам юзеров, да и на мой взгляд анализ развернутая форма этого журнала, вообщем нужен фильтр в котором будет будет три статуса заказа:

1.Все (видит все заказы независимо от взаиморасчетов и отгрузки)
2.Выполнен (отгружен и оплачем полностью)
3.В работе (отгружен частично, оплачен частично, не отгружен, не оплачен)


не хочется делать через реквизиты документов, думаю может справочник создать и как то его в отбор закинуть и при выборе определенных справочников что бы выполнялось тоже самое что в анализе или может вообще это бред и можно сделать проще, подскажите как?
Vond
тема оформлена на 2 - читайте правила и улучшите "запрос", так сказать
И попробуйте покурить "менеджер контактов" - там видно статус заказов
bereznoy
Цитата(Vond @ 06.11.11, 20:39) необходимо зарегистрироваться для просмотра ссылки
тема оформлена на 2 - читайте правила и улучшите "запрос", так сказать
И попробуйте покурить "менеджер контактов" - там видно статус заказов


Конфиг - УТП
За критику всегда спасибо, оценку 2 как то погоречились, если дали ответ про "менеджер контактов", тогда "запрос" сработал.
Задача именно в форме списка "Заказы покупателя" сделать такой фильтр, просто большинство пользователей знают где кнопка ВКЛ. - ВЫКЛ. и пасьян, им рассказывать что есть "менеджер контактов" как правильно пользоваться "Анализом заказов" очень сложно в усваивании, а если они будут знать что заказы в списке это в работе заказы, то будет намного проще им, мне и всему человечеству.

А вариант такой что при открытии будет выполнять процедуру которая будет как в анализе отбирать по параметрам не вариант? Вот только как сделать что бы в списке они ставили "статус" и к чему его привязать.
Я не претендую на 1с-программиста, просто хочу улучшить рабочий процесс в 1с, помогите плз
mister-x
якщо ви постійно копаєтесь в УТП - чому би вам це не вказати у вашому підписі (платформа (реліз) + УТП (реліз)), так як рекомендовано у правилах п.10
Vond
Цитата(bereznoy @ 06.11.11, 21:16) необходимо зарегистрироваться для просмотра ссылки
если дали ответ про "менеджер контактов", тогда "запрос" сработал.

Запрос мог и не сработать, помогла только моя лояльность. Но лояльность бывает не хватает на множество таких "мутных запросов"

Цитата(bereznoy @ 06.11.11, 21:16) необходимо зарегистрироваться для просмотра ссылки
Задача именно в форме списка "Заказы покупателя" сделать такой фильтр, просто большинство пользователей знают где кнопка ВКЛ. - ВЫКЛ. и пасьян, им рассказывать что есть "менеджер контактов" как правильно пользоваться "Анализом заказов" очень сложно в усваивании, а если они будут знать что заказы в списке это в работе заказы, то будет намного проще им, мне и всему человечеству.

А вариант такой что при открытии будет выполнять процедуру которая будет как в анализе отбирать по параметрам не вариант? Вот только как сделать что бы в списке они ставили "статус" и к чему его привязать.
Я не претендую на 1с-программиста, просто хочу улучшить рабочий процесс в 1с, помогите плз


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

А кто в вашем случае будет ставить галочки по статусу заказа? Задача не продумана до конца. Если, так сказать, описать модель работы своих менеджеров, то сразу поймете что оно вам не надо из-за трудоемкости. Обучить сотрудников это страх больше Ваш чем пользователей. Дерзайте, потом будет и благодарность и плоды.
Zaval
1. Инфы для определения статуса заказа в системе более чем достаточно: резерв, размещение, наличие оплат, отгрузок и возвратов.
2. Далеко не факт, что установленная в документе галка будет соответствовать фактической ситуации - а временной лаг в изменении статуса будет обязательно(понимаете, почему?).
3. Для изменения "ручного" статуса Заказ придется как минимум перезаписывать задним числом.
4. О чем таком сокровенном поведает такой "статус" - вернее его текущее значение, неизвестно кем и с какого измененное?
5. Какой смысл возиться с "восьмеркой", если не использовать ее возможности: РС, подписки на события?

Ваша первая ошибка, порождающая гемор: требуйте от юзеров постановки задачи на уровне "Мне по бизнес-процессу нужно видеть..."
Не позволяйте им соваться в реализацию задачи - это Ваша песочница, пусть лучше задачу сформулируют с учетом всех "а если...".
А что это будет - строка на форме, перечисление, справочник...- вот чем больше позволяете сюда соваться юзерам, тем скорее Вас "уйдут" пинками.

Не хотят учиться? По...изм легко лечится взысканиями(лучше материальными) за косяки в работе.
Давно замечено - если инструмент способен, нпр, быстренько оттяпать неумехе пару пальцев, желание учиться до небес взлетает)))
хакерок
Цитата(bereznoy @ 06.11.11, 20:24) необходимо зарегистрироваться для просмотра ссылки
Задачу поставили мне сложную на мой взгляд, сделать статус заказа. Имеется журнал с заказами покупателей, пользуются анализом заказов, этого мало по словам юзеров, да и на мой взгляд анализ развернутая форма этого журнала, вообщем нужен фильтр в котором будет будет три статуса заказа:

1.Все (видит все заказы независимо от взаиморасчетов и отгрузки)
2.Выполнен (отгружен и оплачем полностью)
3.В работе (отгружен частично, оплачен частично, не отгружен, не оплачен)


не хочется делать через реквизиты документов, думаю может справочник создать и как то его в отбор закинуть и при выборе определенных справочников что бы выполнялось тоже самое что в анализе или может вообще это бред и можно сделать проще, подскажите как?


У меня есть опыт создания кнфигураций по обслуживанию системы заказов получение заказов от клиентов отправке поставщику обработке и т.д.

Я сделал справочник СтатусЗаказа и в нём определил предопределённые элемены ... к сожалению в УТП для таких задач как у Вас удобств особых нет
Vofka
Цитата
У меня есть опыт создания кнфигураций по обслуживанию системы заказов получение заказов от клиентов отправке поставщику обработке и т.д.

У разработчиков типовых решений опыт гораздо больше нежели у вас.

Цитата
Я сделал справочник СтатусЗаказа и в нём определил предопределённые элемены ...

Лично я бы, раз уж на то пошло, для этих целей делал перечисление.
Ardi
Цитата(Vofka @ 07.11.11, 17:38) необходимо зарегистрироваться для просмотра ссылки
Лично я бы, раз уж на то пошло, для этих целей делал перечисление.

в справочник можно добавить поля R G B и сделать чтобы пользователь мог назначать цвета для статусов. И раскрашивать этими цветами строки.
Vofka
Цитата
в справочник можно добавить поля R G B и сделать чтобы пользователь мог назначать цвета для статусов. И раскрашивать этими цветами строки.

Ага, Зине нравится желтенький цвет, а Вале красненький, а Пете зелёный на один и тот же статус. Красота. Но раз уж такая кухня пошла, то я бы вынес это где-то в настройки пользователя и кому каким цветом нравится - пусть раскрашивает. Но не об этом ведь речь. Но возможность выбирать САМИМ цвета я бы не делал.
Zaval
Цитата(Vofka @ 07.11.11, 16:38) необходимо зарегистрироваться для просмотра ссылки
Лично я бы, раз уж на то пошло, для этих целей делал перечисление.


Поддерживаю. Нечего там справочнику делать.
Хотя, гораздо важнее - не тулить этот статус в реквизит Заказа)

А многоцветие - это зло, ни за какие коврижки.

Подойти к юзеру что-либо глянуть/подсказать лично или по тимВьюеру... и каждый раз "въезжать" в его цветопристастия, которые он еще и поменять может?
bereznoy
Вообщем статус заказа сделал, сделал справочникперечисление, все работает, в форме документа можно выбирать статус, но это пока ручная работа, хочу из формы вообще убрать статус, что бы толкьо в списке был статус виден причем заполнялся при открытии, например если оплачен полностью и отгружен, то "выполнен", не оплачен или не отгружен "в работе", естессно отбор по списку при открытии только "в работе", но задача теперь в том как обратиться к самому реквизиту документа при открытии списка, что бы прописать условие как в анализе заказа, подскаджи те плиз, какой запрос, хотя бы примерно,но лучше максимально точно 64000000.gif
MATEVI
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого Строка Из ОформленияСтрок Цикл
МойРеквизит = Строка.ДанныеСтроки.Ссылка.МойРеквизит;
КонецЦикла
hamerok2
bereznoy @ 06.11.11, 15:54 необходимо зарегистрироваться для просмотра ссылки,
РЕализовать можно через перечисления( Перечисления.СтатусЗаказаПокупателя.Значения:Новый, ВРаботе, ЧастичноВРаботе, Изготовлено, и т.д. ) Вынести процедуру с запросом по остаткам в общий модуль и вызывать ее в документе.
Для отображения статуса на форме списка документа в табличное поле добавить "Статус".
Код в общем модуле примерно такой :

необходимо зарегистрироваться для просмотра ссылки
Процедура УстановитьСтатусЗаказаПокупателя(ЗаказСсылка) Экспорт 
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    СУММА(ЕСТЬNULL(ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход, 0)) КАК Запланировано,
        |    СУММА(ЕСТЬNULL(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток, 0)) КАК ОсталосьОтгрузить,
        |    СУММА(ЕСТЬNULL(РезервыКомпании.КоличествоОстаток, 0)) КАК Резерв,
        |    СУММА(ЕСТЬNULL(РазмещениеЗаказовПокупателей.КоличествоОстаток, 0)) КАК Заказано,
        |    СУММА(ВЫБОР
        |            КОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток - (ЕСТЬNULL(РезервыКомпании.КоличествоОстаток, 0) + ЕСТЬNULL(РазмещениеЗаказовПокупателей.КоличествоОстаток, 0)) >= 0
        |                ТОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток - (ЕСТЬNULL(РезервыКомпании.КоличествоОстаток, 0) + ЕСТЬNULL(РазмещениеЗаказовПокупателей.КоличествоОстаток, 0))
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК ОсталосьОбеспечить,
        |    СУММА(ЕСТЬNULL(ОстаткиТоваровКомпании.КоличествоОстаток, 0) + ЕСТЬNULL(ОстаткиТоваровКомпанииВРознице.КоличествоОстаток, 0) - ЕСТЬNULL(РезервыТоваровКомпании.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыКПередачеКомпании.КоличествоОстаток, 0)) КАК Свободно
        |ИЗ
        |    РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, &ДатаАнализа, , , ЗаказПокупателя = &Заказ) КАК ЗаказыПокупателейОстаткиИОбороты
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаАнализа, ДокументРезерва = &Заказ) КАК РезервыКомпании
        |        ПО ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РезервыКомпании.ХарактеристикаНоменклатуры
        |            И ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РезервыКомпании.Номенклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаАнализа, ЗаказПокупателя = &Заказ) КАК РазмещениеЗаказовПокупателей
        |        ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РазмещениеЗаказовПокупателей.Номенклатура
        |            И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателей.ХарактеристикаНоменклатуры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАнализа, ) КАК ОстаткиТоваровКомпании
        |        ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ОстаткиТоваровКомпании.Номенклатура
        |            И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = ОстаткиТоваровКомпании.ХарактеристикаНоменклатуры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРознице.Остатки(&ДатаАнализа, ) КАК ОстаткиТоваровКомпанииВРознице
        |        ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ОстаткиТоваровКомпанииВРознице.Номенклатура
        |            И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = ОстаткиТоваровКомпанииВРознице.ХарактеристикаНоменклатуры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаАнализа, ) КАК РезервыТоваровКомпании
        |        ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РезервыТоваровКомпании.Номенклатура
        |            И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РезервыТоваровКомпании.ХарактеристикаНоменклатуры
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ДатаАнализа, ) КАК ТоварыКПередачеКомпании
        |        ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ТоварыКПередачеКомпании.Номенклатура
        |            И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = ТоварыКПередачеКомпании.ХарактеристикаНоменклатуры
        |            И ЗаказыПокупателейОстаткиИОбороты.СтатусПартии = ТоварыКПередачеКомпании.СтатусПартии";

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



 ! 

необходимо зарегистрироваться для просмотра ссылки: 9
 
podcast
Цитата(hamerok2 @ 09.08.16, 17:09) необходимо зарегистрироваться для просмотра ссылки
к = 1;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        Если к <> ВыборкаДетальныеЗаписи.Количество() Тогда
            Продолжить;
        КонецЕсли;

Подскажите зачем это условие?
sava1
Ищем последнее значение выборки. (КРИВО !!!)
andr_andrey
"Опытные" создатели типовых конфигураций по части интерфейсов рабочего места менеджера иногда делают "на отвяжись - у тебя будет отчёт", и вечная тема молодых 1Сников - удобные "рабочие места менеджера" с светофорной индикацией и кнопками быстрой фильтрации.
podcast
Подскажите пожалуйста, сделал реквизит в документе СтатусЗаказа, теперь хочу программно вывести его в Форму Списка, колонку добавил
ЭлементСписок = ЭлементыФормы.Список.Колонки.Добавить("СтатусЗаказа","Статус Заказа").Видимость = Истина;

Но вот как этим ячейкам присвоить параметр СтатусЗаказа не пойму.
logist
Если сделали реквизит, то выведите его стандартными средствами, зачем вставлять костыли.
podcast
logist @ Сегодня, 9:53 необходимо зарегистрироваться для просмотра ссылки ,
Дабы не менять типовую форму документа. Пытаюсь программно его вывести.
logist
Цитата(podcast @ 16.09.16, 11:48) необходимо зарегистрироваться для просмотра ссылки
Дабы не менять типовую форму документа. Пытаюсь программно его вывести.

Причем тут форма документа к форме списка, и что значит не менять типовую? Вы же всё равно меняете ее, вставляя код в событие, то почему просто не поставить один флажок в свойствах списка?
podcast
logist @ Сегодня, 10:50 необходимо зарегистрироваться для просмотра ссылки ,

Код события я не изменяю, изменяю только код Формы Списка, саму форму списка не хочется менять, колонку я добавил программно, а вот как этой колонки присвоить реквизит не могу понять, в Справочнике написано
ЭлементыФормы.Список.Колонки.Вставить(1,"Код").Значение = "Код";
, но у меня нету параметры Значение.
logist
Если не хотите менять форму (хотя в упор не понимаю в чем проблема), то код формы должен быть таким (не дословно)
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    ЭлементыФормы.ДокументСписок.Колонки.Добавить("СтатусЗаказа");
КонецПроцедуры


Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.СтатусЗаказа.Текст = Строка(ДанныеСтроки.Ссылка.СтатусЗаказа);
    ОформлениеСтроки.Ячейки.СтатусЗаказа.ОтображатьТекст  = Истина;
КонецПроцедуры


p.s. колонку Вставить/Добавить сами разберетесь что надо,

upd; хотя правильнее наверное как-то так:
ЭлементыФормы.ДокументСписок.Колонки.Добавить("СтатусЗаказа");
ЭлементыФормы.ДокументСписок.Колонки.СтатусЗаказа.Данные = "СтатусЗаказа";
podcast
logist @ Сегодня, 13:11 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(logist @ 16.09.16, 13:11) необходимо зарегистрироваться для просмотра ссылки
upd; хотя правильнее наверное как-то так:
ЭлементыФормы.ДокументСписок.Колонки.Добавить("СтатусЗаказа");
ЭлементыФормы.ДокументСписок.Колонки.СтатусЗаказа.Данные = "СтатусЗаказа";

Спасибо огромное, был почти рядом, так получилось.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.