![]() |
![]() |
![]() |
|
v7: Установка периодического реквизита | ☑ | ||
---|---|---|---|---|
0
Масянька
07.11.11
✎
15:47
|
День добрый!
Хочу сделать документ "Установка цен номенклатуры" (ТиС, 932). Функция ПроверкаСправочникаЦен() СпрЦены = СоздатьОбъект("Справочник.Цены"); СпрЦены.ИспользоватьВладельца(Номенклатура); СпрЦены.ВыбратьЭлементы(); Пока СпрЦены.ПолучитьЭлемент() = 1 Цикл Если СпрЦены.ТипЦен <> ТипЦен Тогда Продолжить; КонецЕсли; Если Выбран() = 0 Тогда Возврат 0; Иначе Если (Цена <> СпрЦены.Цена) И (Валюта <> СпрЦены.Валюта) И (Единица <> СпрЦены.Единица) Тогда Возврат 0; КонецЕсли; КонецЕсли; КонецЦикла; Возврат 1; // цены уже есть в справочнике КонецФункции // ПроверкаСправочника Процедура ЗаписатьЦены() СпрЦены = СоздатьОбъект("Справочник.Цены"); СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); СпрНоменклатура.НайтиПоКоду(Номенклатура.Код); мНоменклатура = СпрНоменклатура.ТекущийЭлемент(); СпрЦены.Новый(); СпрЦены.Владелец = мНоменклатура; СпрЦены.Валюта = Валюта; СпрЦены.ТипЦен = ТипЦен; СпрЦены.Записать(); УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(), "Единица", Единица, ДатаДок); УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(), "Цена", Цена, ДатаДок); СпрЦены.Записать(); КонецПроцедуры // ЗаписатьЦены //************* обработка проведения ******************************************** Процедура ОбработкаПроведения() ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл ЕстьТакаяЦена = ПроверкаСправочникаЦен(); Если ЕстьТакаяЦена = 1 Тогда // новая цена ЗаписатьЦены(); КонецЕсли; КонецЦикла; КонецПроцедуры // ОбработкаПроведения Первый раз - проводится, в справочник садятся цены. Во второй раз - проводится, но в справочнике слетает дата. Где косяк-то? Спасибо. PS Ногами не бить!!!! |
|||
1
Wobland
07.11.11
✎
15:49
|
(0) простите нас, добрая Масянька
|
|||
2
1Сергей
07.11.11
✎
15:52
|
не правильная проверка
|
|||
3
Конфигуратор1с
07.11.11
✎
15:55
|
СпрНоменклатура.НайтиПоКоду(Номенклатура.Код); замените на НайтиЭлемент
|
|||
4
andrewks
07.11.11
✎
15:55
|
на, дарю:
//////////////////////////////////////////////////////////////////////////////// // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ // //****************************************************************************** // Предопределенная процедура. // Процедура ОбработкаПроведения(ВидыДвижений) Перем ЦенаЦены,ЕдЦены,ВалЦены,СпрЦена,ЭлЦены; // Проверка заполненности обязательных реквизитов. Если глВсеРеквизитыДокументаЗаполнены(Контекст,"Валюта,ТипЦен")=0 Тогда Возврат; КонецЕсли; Если Склад.Выбран()=1 Тогда Если Склад.РозничныйСклад=1 Тогда глНеПроводить(Контекст,"Выбранный склад не является оптовым! |Переоценка на таком складе производится документом 'Переоценка (розница)'!"); Возврат; КонецЕсли; КонецЕсли; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если Единица.Выбран()=0 Тогда глНеПроводить(Контекст,"В строке "+СокрЛП(НомерСтроки)+" не выбрана единица!"); Возврат; КонецЕсли; //Если ЦенаНовая=0 Тогда // глНеПроводить(Контекст,"В строке "+СокрЛП(НомерСтроки)+" не выбрана новая цена!"); // Возврат; //КонецЕсли; Если ЦенаНовая=0 Тогда глСообщениеПроведения("В строке "+СокрЛП(НомерСтроки)+" не выбрана новая цена!", ТекущийДокумент(),,,1); КонецЕсли; КонецЦикла; // Удаление движений по регистрам. Для Номер = 1 По Метаданные.Справочник() Цикл ОчиститьДвижения("Справочник."+Метаданные.Справочник(Номер).Идентификатор); КонецЦикла; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если глВернутьЦену(Номенклатура,ТипЦен,ДатаДок,ЦенаЦены,ЕдЦены,ВалЦены,,ЭлЦены)=1 Тогда Цена2=глПересчет(ЦенаНовая,Валюта,Курс,ВалЦены,ДатаДок,Кратность); УстановитьРеквизитСправочника(ЭлЦены,"Цена",Цена2,ДатаДок); УстановитьРеквизитСправочника(ЭлЦены,"Единица",Единица,ДатаДок); Иначе СпрЦена=СоздатьОбъект("Справочник.Цены"); СпрЦена.Новый(); СпрЦена.Владелец=Номенклатура; СпрЦена.ИспользоватьДату(Дата("01.01.1980"),1); СпрЦена.ТипЦен=ТипЦен; СпрЦена.Валюта=Валюта; СпрЦена.Записать(); УстановитьРеквизитСправочника(СпрЦена.ТекущийЭлемент(),"Цена",ЦенаНовая,ДатаДок); УстановитьРеквизитСправочника(СпрЦена.ТекущийЭлемент(),"Единица",Единица,ДатаДок); КонецЕсли; КонецЦикла; глПриПроведении(Контекст, ВидыДвижений); КонецПроцедуры //ОбработкаПроведения() //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ |
|||
5
Масянька
07.11.11
✎
15:57
|
Спасибо, добрые дядьки!
Пошла пробовать. |
|||
6
1Сергей
07.11.11
✎
16:10
|
Может быть несколько цен с разными валютами или единицами?
|
|||
7
Масянька
07.11.11
✎
16:35
|
(6) Валюта, единица - нет (одинаковы).
|
|||
8
1Сергей
07.11.11
✎
16:46
|
(7) не понял твоего ответа
|
|||
9
Масянька
07.11.11
✎
16:57
|
Валюта - одна, единица - тоже, как правило, одна.
|
|||
10
Cthulhu
07.11.11
✎
17:45
|
что такое "слетает дата"?
вообще - всё не так. (у документа галка "автоматическая очистка движений" стоит?) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |