//////////////////////////////
Возможно ли добавлять товар в документ в из табличной части справочника
В справочники "ВИДЫ СКИДОК" в табличной части содержатся товары на которые распространяется скидка
////////////////////
в документе запись на занятия необходимо при выборе услуги указывать (помещать в реквизит Объект.КоличествоЕдиниц) ее стоимость
Функция РозничнаяЦенаЕдиницы(АктуальнаяДата, ЭлементТовары) Экспорт
Отбор = Новый Структура("ТоварИУслуга", ЭлементТовары);
ЗначенияРесурсов=РегистрыСведений.ЦеныТоваровИУслуг.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.КоличествоЕдиниц;
КонецФункции
/////////////////
необходимо в справочник клиенты в поле сумма покупки поместить сумму всех покупок клиента
&НаСервере
Функция ПолучитьСуммуПокупок () Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(ПродажиКлиентам.Сумма, 0) КАК Сумма
|ИЗ
| РегистрНакопления.ПродажиКлиентам КАК ПродажиКлиентам
|ГДЕ
| ПродажиКлиентам.Клиент = &Клиент";
Запрос.УстановитьПараметр("Клиент", Объект.Наименование);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СуммаП=0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СуммаП=СуммаП+ВыборкаДетальныеЗаписи.Сумма;
Сообщить(""+ СуммаП +"");
КонецЦикла;
Возврат СуммаП;
КонецФункции
Показать
и при каждой новой покупке ее перерасчитывать автоматически
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
СуммаПокупок=ПолучитьСуммуПокупок ();
Если СуммаПокупок < 10000 Тогда
Объект.СкидкаКлиента=0;
ИначеЕсли СуммаПокупок<10000 Тогда
Объект.СкидкаКлиента=5;
КонецЕсли;
КонецПроцедуры
А что можно сделать чтобы только при создании нового объекта процедура запускалась? И к тому же у меня ошибок не выдает конфигурация но и имя сотрудника не подставляет.
Процедура РозничнаяЦенаЕдиницы(АктуальнаяДата, ЭлементТовары) Экспорт
Отбор = Новый Структура("ТоварИУслуга", ЭлементТовары);
ЗначенияРесурсов=РегистрыСведений.ЦеныТоваровИУслуг.ПолучитьПоследнее(АктуальнаяДата, Отбор);
ЭлементТовары.КоличествоЕдиниц = ЗначенияРесурсов.КоличествоЕдиниц;
КонецПроцедуры
//Примечание: Применимо только для периодических регистров сведений. РегистрыСведений.ЦеныТоваровИУслуг должен содержать измерение ТоварИУслуга тип Ссылка на услугу
(6) seermak, а почему вы здесь написали ЭлементТовары.КоличествоЕдиниц?
по отладчику элемент товары это (ЭлементТовары Вакуумный тренажер 15 СправочникСсылка.ТоварыИУслуги)
если так то откуда мне брать количество единиц
{ОбщийМодуль.ЦеныТоваровИУслуг.Модуль(21)}: Поле объекта не обнаружено (КоличествоЕдиниц)
ЭлементТовары.КоличествоЕдиниц = ЗначенияРесурсов.КоличествоЕдиниц;
а ЭлементТовары.КоличествоЕдиниц что значит эта строка, после равно я поняла, а вот до.
значит в РегистрыСведений.ЦеныТоваровИУслуг нет ресурса КоличествоЕдиниц.... (может проще самому все ТЗ выполнить, чем открывать начальные курсы по 1С))))))
Значит ЭлементТовары не содержит поле(реквизит) КоличествоЕдиниц
поставьте точку останова на строке ЭлементТовары.КоличествоЕдиниц = ЗначенияРесурсов.КоличествоЕдиниц; и тестируйте - увидите чего не хватает
Функция РозничнаяЦенаЕдиницы(АктуальнаяДата, ЭлементТовары) Экспорт
Отбор = Новый Структура("ТоварИУслуга", ЭлементТовары);
ЗначенияРесурсов=РегистрыСведений.ЦеныТоваровИУслуг.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.КоличествоЕдиниц;
КонецФункции
почему тоже самое но в реквизит перестает работать?
(28) Emiliya_Emili, ну вот вам и ответ. Т.е. ПолучитьПоследнее не возвращает записи регистра. Почему? Ищите ответ в значениях "АктуальнаяДата" и структуре "Отбор".
Они дают исходные данные, по которым нечего отбирать.
"Сумма покупок" - это сумма по документу. А вам надо "частота продажи". Тогда проверяйте, все ли записи выбираются из регистра, и если не все - то почему не все.
(36) AlexO, в отчете он выводит список документов вместе с суммой по ним, а когда я пытаюсь сделать подсчет суммы по всем документам клиента он этого не делает, проблема в том чтобы заставить программу посчитать значения в колонке сумма (на картинке)
(38) Emiliya_Emili, а какое отношение запрос из 35) имеет к отчету в 38)?
Если это СКД - то прямо в ресурсах и ставьте СУММА(Сумма).
Если обработка - считайте Итог по ТЗ.Сумма.
(39) AlexO, я в отчет вставила сам запрос чтобы убедится что он рабочий, а так все процессы у меня происходят в справочнике,
итог я не могу использовать по той причине что мне надо будет рассчитать скидку клиента, а она полностью зависит от суммы покупки
(40) Emiliya_Emili, непонятно, что вы выводите в форму. Если это отчет СКД - воспользуйтесь итогами СКД по ресурсам. Если просто ТЗ - воспользуйтесь Итог по ТЗ...
В общем, у вас итог не рассчитан, вы пока просто получили итоговую сумму, но не указали программе, куда её вставить.
у меня в строке ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
появляется ошибка
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); {(1,52)}: Ошибка в выражении
(43) AlexO, сумма вывелась, спасибо, а что делать со скидкой?
какое свойство выбрать чтобы скидка постоянно обновлялась, ведь не открывать же клиента чтобы скидку обновить
пока при открытии а как лучше?
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СуммаПокупок=ПолучитьСуммуПокупок ();
Если СуммаПокупок < 10000 Тогда
Объект.СкидкаКлиента=0;
ИначеЕсли СуммаПокупок<10000 Тогда
Объект.СкидкаКлиента=5;
КонецЕсли;
КонецПроцедуры
(45) AlexO, сумма и нужна была для скидки, от ее значения будет зависеть скидка
мне нужно чтобы после каждой покупки клиента, данные о нем обновлялись, но я при этом не должна ничего лишнего нажимать или заходить куда-либо
я провела документ, а в программе (в справочнике клиенты) все пересчиталось
сумма и нужна была для скидки, от ее значения будет зависеть скидка
А с какой частотой хотели менять/проверять скидку? Какие условия?
мне нужно чтобы после каждой покупки клиента
тогда это нужно ПередЗаписью РТиУ проверять (хотите - в подписке, хотите - в событии ПередЗаписью объекта), писать реквизит Скидка, и делать проведение.
ПередЗаписью.
Можете подпиской, можете - прямо в событие объекта.
а перед записью много писать?
Это уже вам решать ))
Пишите все, чтобы искалась сумма, и сохранялся результат в реквизит скидка.
Главное - это ДО записи/проведения, иначе получите цикл.
А почему Передзаписью, а не, например, ПриОткрытии - событие ПередЗаписью является "закрывающим" клиентские изменения (получены все клиентские изменения документа), и предваряющее дальнейшую обработку объекта платформой.
Если у вас УФ - вам придется разруливать еще и вызов клиент-сервер для поиска суммы и скидки.
(53) Emiliya_Emili, представьте, что Вы разговариваете с компьютером. Вот что у Вас получается:
&НаКлиенте //будем выполнять это на клиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) //используем предопределенную процедуру
СуммаПокупок=ПолучитьСуммуПокупок (); //в результате этой функции получим чего-то, хорошо если знаем что...
СкидкаКлиента=Справочники.Клиенты.Выбрать(); //хочу ссылки на все элементы справочника "Клиенты". (Правда это не работает на клиенте)
Если СуммаПокупок < 3500 Тогда //если чего-то меньше 3500 тогда
СкидкаКлиента=0; // массиву не полученных ссылок на все элементы справочника "Клиенты" присвоим 0.
ИначеЕсли СуммаПокупок>3500 Тогда // и т.д.
СкидкаКлиента=5;
КонецЕсли;
КонецПроцедуры
Показать
Попробуйте обычным языком написать, что Вы хотите получить и сделать.
(64) spacecraft, может, она хочет найти в справочнике "Клиенты" контрагента, найти его скидку, и поменять реквизит "СкидкаКлиента" в Клиенты на новый, если по текущему документу выполняются вышеприведенные условия?
(64) spacecraft, вообще, я все это напоминает фильм "Лабиринт", и вот в Лабиринт забрела девочка, которая "ищет брата", но не знает, куда попала, что делать, и куда идти ))
А вам-то он пошто сдался? ))
Что с его помощью хотите сделать? И я не работал с этим планировщиком, он мне не нужен )).
А понадобится - я найду возможность изучить его. Найду обсуждения.
Вот, если хотите ознакомится - вот статья:
Работа с Планировщиком 8.3.6
это я уже читала только нужных ответов так и не нашла
Не удивительно. тут вообще мало исчерпывающих статей ))
Тогда открывайте 1С, создавайте Планировщик, и с помощью справки попробуйте его "оживить". Только помните, что в 8.3.х немерянно глюков, для баловства - подходит, для серьезной работы - нет ))
(69) Emiliya_Emili, Вообще, это неуклюжая попытка 1С разработать еще один из элементов управления по типу "библиотек элементов" того же Дельфи. А т.к. нет ОПП, и не предвидится, все так и останется на уровне "поиграек" и недоделанного ЭУ.
а потом уже буду изучать как строить расписание вручную
Ну если так хочется - создавайте объект, и пробуйте с ним работать. Больше вариантов нет.
Зато сразу поймете, на каком уровне 1С разрабатывает свои продукты ))