Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 15:13

Помогите создать конфигурацию!!!

Автор tana888, 21 мар 2015, 20:14

0 Пользователей и 1 гость просматривают эту тему.

tana888

Большая самостоятельная работа
Автоматизируемая нами фирма занимается закупками у своих поставщиков и продажей своим покупателям различных товаров. В качестве дополнительной услуги существует бесплатная доставка купленных товаров в случае, если общая сумма заказа превышает 1000 рублей.
Необходимо в рамках нашей конфигурации создать отдельную ветвь учета использования транспорта организации. Должен быть реализован следующий функционал:
Должен вестись перечень транспортных средств организации.
В начале дня на каждую бригаду (а бригада состоит из водителя и двух грузчиков) оформляется документ. Этот документ определяет состав бригады (он может меняться произвольным образом) и производит допуск к работе (в документе должны быть отметки о допуске водителя врачом к рейсам и отметка о прохождении инструктажа по технике безопасности). Этим же документом бригада «прикрепляется» к определенной автомашине, при этом указывается начальное значение счетчика спидометра.
Далее, при оформлении документа «ПродажаТоваров», в случае, если сумма покупки превышает 1000 рублей, должно выдаваться сообщение о возможности предоставления бесплатной доставки, и только в этом случае менеджер может выписать на основании расходного документа документ «Заявка на транспорт». В данном документе указывается покупатель, контактное лицо (в диалоге должен быть виден телефон), дата и время доставки (оно может быть любым, но не раньше текущей даты). Документ не имеет табличной части, но хранит ссылку на документ основание.
Сотрудник транспортного отдела рассматривает документ заявку, выбирает машину. Если на эту машину не определена бригада, выдается предупреждение и производится сброс выбранного значения. В противном случае автоматически в документ записывается водитель и грузчики. Далее заявка печатается. В печатной форме документа должна присутствовать информация об адресе доставки (данные четко привязаны к контактному лицу), перечне доставляемых товаров.
Кроме всего в документе «Заявка на транспорт» проставляется текущее состояние заказа («не выехали», «в дороге к клиенту», «у клиента», «в дороге обратно» и «отработан») и километраж (расстояние в километрах «туда и обратно»).
На основании всей этой информации необходимо видеть: какая машина, где находится; на какой машине, какие бригады за выбранный период работали; какой водитель в скольких доставках, с каким общим километражем участвовал.
Кроме этого необходимо за период получать контрольный отчет по машине: состояние счетчика на начало каждого дня, все поездки (километраж), расчетное состояние счетчика.

Приступайте   
В качестве подсказки можно предложить один из вариантов организации структуры базы данных:
1.Необходимо создать справочники «ТранспортныеСредства», «Водители» (хранит ссылку на справочник «ФизическиеЛица»), «Грузчики» (хранит ссылку на справочник «ФизическиеЛица»).
2.Необходимо модифицировать документ «ПродажаТоваров» (при превышении суммы закупки 1000 рублей должно выводиться сообщение)
3.Создайте документ «Формирование бригады», «Заявка», настройте их. Документ «Заявка» должен заводиться на основании документа «ПродажаТоваров».
4.Для хранения состава бригады, назначенной машины, начального значения счетчика можно использовать регистр сведений. Другой регистр сведений можно использовать для отслеживания «состояния» бригад.
5.Для накопления данных о количестве выездов, километраже можно использовать регистр накопления


Сейчас интересуют такие вопросы:
1) Сотрудник транспортного отдела рассматривает документ заявку, выбирает машину. Если на эту машину не определена бригада, выдается предупреждение и производится сброс выбранного значения. В противном случае автоматически в документ записывается водитель и грузчики. Далее заявка печатается. В печатной форме документа должна присутствовать информация об адресе доставки (данные четко привязаны к контактному лицу), перечне доставляемых товаров.
Есть документы:Заявка и ФормированиеБригады. Как сделать так, чтоб машина выбиралась из ФормированиеБригады, а водитель и два грузчика записывались автоматом в заявку.??? как их связать?

2) Как сделать кнопку "Заявка на основании" на форме ПродажаТоваров недоступной,если сумма документа меньше 1000.

cska-fanat-kz

1) машина не должна выбираться из ФормированиеБригады (хотя никто не запрещает это сделать ;) ), вам просто нужно в МашинаПриИзменении() запросом проверить наличие по машине документа ФормированиеБригады и если отсутствует - очистить поле.

2) если у вас между Продажей и Заявкой настроен стандартный механизм ввода на основании, то сумма>1000 надо проверять в ОбработкаЗаполнения() Заявки или в ПриОткрытии() с помощью Параметры.ПараметрОснование (последнее лучше тем что на клиенте, можно соответствующе ругнуться). Ну либо просто на форме Продажи кидаете кнопку "Создать заявку на транспорт" и по условию регулируете ее доступность...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tana888

Цитата: cska-fanat-kz от 22 мар 2015, 02:15
1) машина не должна выбираться из ФормированиеБригады (хотя никто не запрещает это сделать ;) ), вам просто нужно в МашинаПриИзменении() запросом проверить наличие по машине документа ФормированиеБригады и если отсутствует - очистить поле.

2) если у вас между Продажей и Заявкой настроен стандартный механизм ввода на основании, то сумма>1000 надо проверять в ОбработкаЗаполнения() Заявки или в ПриОткрытии() с помощью Параметры.ПараметрОснование (последнее лучше тем что на клиенте, можно соответствующе ругнуться). Ну либо просто на форме Продажи кидаете кнопку "Создать заявку на транспорт" и по условию регулируете ее доступность...

Спасибо за такой быстрый ответ!!!
1) А чуть-чуть поподробнее могли бы написать?
2) Никак не получается у меня. Сделала кнопку на форме Продажи, пишу в модуле ФормаПродажи:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
   Если
  Этаформа.Элементы.СуммаДокумента.ТекстРедактирования>1000
   тогда
   ЭтаФорма.Элементы.КнопкаЗаявка.Доступность=истина;
   конецесли;
   
КонецПроцедуры

И возникает ошибка, что операция сравнения (<>) доступны только для чисел,строк,дат. У меня СуммаДокумента-число. Почему такая ошибка...

Golickoff

Цитата: tana888 от 22 мар 2015, 09:33
Почему такая ошибка...
Потому что вы сравниваете ссылку с числом. Присвойте значение сравниваемого элемента какой-нибудь переменной, а затем сравнивайте значение переменной с числом, либо используйте Этаформа.Элементы.СуммаДокумента.ТекстРедактирования.ТекущиеДанные
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

сейчас умную мысль скажу, только вы не обижайтесь...

мысль №1: это задача если я правильно помню итоговая к курсу по программированию? вы практикумы до этого выполняли? нет, спрошу по другому: вы практикумы до этого САМИ выполняли? алгоритм вполне себе простейший: в обработчике события ПриИзменении() вставить запрос, по результату которого проверите, сформированы у вас бригады или нет. как еще подробнее?

мысль №2: ну ладно tana888, но вы то Golickoff блин даете... кто так обращается к значению реквизита документа?!! Надо всего лишь "Объект.СуммаДокумента". ВСЕ!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Цитата: Golickoff от 23 мар 2015, 03:16Потому что вы сравниваете ссылку с числом.

Расширение поля формы для поля ввода (Form field extension for a text box)
ТекстРедактирования (EditText)
Использование:

Только чтение.
Описание:

Тип: Строка.
Содержит текущий текст редактирования в поле ввода.
При размещении поля в таблице, если редактор не активен, содержит пустую строку.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

Где тут ссылка??
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tana888

Цитата: cska-fanat-kz от 23 мар 2015, 05:06
сейчас умную мысль скажу, только вы не обижайтесь...

мысль №1: это задача если я правильно помню итоговая к курсу по программированию? вы практикумы до этого выполняли? нет, спрошу по другому: вы практикумы до этого САМИ выполняли? алгоритм вполне себе простейший: в обработчике события ПриИзменении() вставить запрос, по результату которого проверите, сформированы у вас бригады или нет. как еще подробнее?

мысль №2: ну ладно tana888, но вы то Golickoff блин даете... кто так обращается к значению реквизита документа?!! Надо всего лишь "Объект.СуммаДокумента". ВСЕ!

Добрый день. Я не обижаюсь.
Ответ на мысль 1:Задача не итоговая, это лабораторная работа по КИС. Я никогда не выполняла задания по 1С. Это мое первое знакомство)))
Ответ на мысль 2:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
   Если Объект.СуммаДокумента>1000
   тогда
   ЭтаФорма.Элементы.КнопкаЗаявка.Доступность=истина;
   конецесли;
   
КонецПроцедуры
Не работает(((

cska-fanat-kz

1) просто сам решал эту же задачу по окончании курса "Введение в программирование 1С". Предугадывая следующий вопрос )) Решения не сохранилось ))

2) я бы это условие поместил в какое нибудь событие табличной части (что то типа ПриОкончанииРедактирования())
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tana888

Цитата: cska-fanat-kz от 23 мар 2015, 14:38
1) просто сам решал эту же задачу по окончании курса "Введение в программирование 1С". Предугадывая следующий вопрос )) Решения не сохранилось ))

2) я бы это условие поместил в какое нибудь событие табличной части (что то типа ПриОкончанииРедактирования())

ВСЕ получилось))))

&НаКлиенте
Процедура СуммаДокументаПриИзменении(Элемент)
   Если Объект.СуммаДокумента > 1000 тогда
      элементы.КнопкаЗаявка.Видимость=Истина;
   Иначе
      элементы.КнопкаЗаявка.Видимость=Ложь;
КонецЕсли
КонецПроцедуры


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
      //Объект.СуммаДокумента = Объект.Товары.Итог("Сумма");
   Если Объект.СуммаДокумента > 1000 Тогда
      Сообщить("Сумма покупки превышает 1000 руб,возможна бесплатная доставка");
   КонецЕсли;
   Если Объект.СуммаДокумента > 1000 тогда
      Элементы.КнопкаЗаявка.Доступность=Истина;
   Иначе
      Элементы.КнопкаЗаявка.Доступность=Ложь;
     КонецЕсли

КонецПроцедуры


&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Если Объект.СуммаДокумента > 1000 тогда
      Элементы.КнопкаЗаявка.Доступность=Истина;
   Иначе
      Элементы.КнопкаЗаявка.Доступность=Ложь;
    КонецЕсли
КонецПроцедуры

Добавлено: 23 мар 2015, 16:42


Теперь вот следующий вопрос)))

Почему может не отображаться табличная часть документа ПродажаТоваров (таблица Товары). На форме в конструкторе есть, но при запуске на форме не появляется. Поэтому не могу в нее добавлять данные и соответсвенно не могу дальше выполнять решение...Причем есть еще таблица Услуги,она работает.

cska-fanat-kz

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

ПередЗаписью() - с некоторым скрипом имеет место быть такой вариант, но ИМХО удобнее когда юзверь вводит данные в тч, редактирует строку и при окончании редактирования строки, во первых вычисляется сумма документа, а во вторых проверяется возможность доставки. хотя не настаиваю )))

вопрос 2. да кто ж вас знает, надо в вашу конфигу лезть...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск