|
Помагите поставить запрет на перепроведение проведеных документов | ☑ | ||
---|---|---|---|---|
0
Geenij
04.07.14
✎
12:31
|
// Вставить содержимое обработчика.
лНомерЗаявки=""; лЗаказКлиента=Неопределено; ФормаПоступления =Неопределено; Для каждого лСтрока из СписокЗаявок Цикл СледующийДень = ДатаДок + 60 * 60 * 24; Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода", ?(СледующийДень = Дата(1, 1, 1),'19800101' , НачалоДня(СледующийДень))); Запрос.УстановитьПараметр("КонПериода",?(ДобавитьМесяц(ТекущаяДата(), 24) = Дата(1, 1, 1),'20200101' , КонецДня(ДобавитьМесяц(ТекущаяДата(), 24)))); Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.Ссылка КАК Док, | ЗаказПокупателя.ORDERID КАК ORDERID |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Проведен = ЛОЖЬ | И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода |УПОРЯДОЧИТЬ ПО | ЗаказПокупателя.Дата"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // выборка по списку Если выборка.ORDERID= лСтрока.ORDERID Тогда Сообщить("Найдены пов документы за буд период"); Сообщить(выборка.Док); Сообщить("пропуск создания"); иначе Сообщить("Создание и добавление товара"); Если лНомерЗаявки=лСтрока.ORDERID Тогда иначе Сообщить("Новый заказ клиента"); Сообщить(лСтрока.ORDERID); // Документ уже сгенерирован, записываем его Если ФормаПоступления<>Неопределено Тогда СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС", лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС); Для Каждого лСтрокаПересчет из ФормаПоступления.Товары Цикл ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента); ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); Если лСтрокаПересчет.Цена = 0 Тогда Сообщить("Не удалось найти цену поставщика для номенклатуры="+лСтрокаПересчет.Номенклатура); КонецЕсли; КонецЦикла; КонецЕсли; // Теперь пробуем записать документ Попытка Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода", ?(ДатаДок = Дата(1, 1, 1),'19800101' , НачалоДня(ДатаДок))); Запрос.УстановитьПараметр("КонПериода",?(ДатаДок = Дата(1, 1, 1),'20200101' , КонецДня(ДатаДок+7))); Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.Ссылка КАК Док, | ЗаказПокупателя.ORDERID КАК ORDERID |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Проведен = ИСТИНА | И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода |УПОРЯДОЧИТЬ ПО | ЗаказПокупателя.Дата"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // выборка по списку Если выборка.ORDERID= лСтрока.ORDERID Тогда A=1; КонецЕсли; КонецЦикла; СледующийДень = ТекущаяДата() + 60 * 60 * 24; Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода", ?(СледующийДень = Дата(1, 1, 1),'19800101' , НачалоДня(СледующийДень))); Запрос.УстановитьПараметр("КонПериода",?(ДобавитьМесяц(ТекущаяДата(), 12) = Дата(1, 1, 1),'20200101' , КонецДня(ДобавитьМесяц(ТекущаяДата(), 12)))); Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.Ссылка КАК Док, | ЗаказПокупателя.ORDERID КАК ORDERID |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Проведен = ЛОЖЬ | И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода |УПОРЯДОЧИТЬ ПО | ЗаказПокупателя.Дата"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // выборка по списку Если выборка.ORDERID= лСтрока.ORDERID Тогда АБ=1; КонецЕсли; КонецЦикла; Если A=1 Тогда иначе ФормаПоступления.ЗаписатьВФорме(РежимЗаписиДокумента.Запись); ФормаПоступления=Неопределено; лЗаказКлиента=Неопределено; КонецЕсли; Исключение ФормаПоступления=Неопределено; КонецПопытки; КонецЕсли; Если лЗаказКлиента=Неопределено Тогда лДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("CLIENTID",лСтрока.CLIENTID); Если лДоговорКонтрагента=Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда Сообщить("Не найден магазин с кодом="+лСтрока.CLIENTID); Прервать; КонецЕсли; // и ДокОбъект<>лДоговорКонтрагента лЗаказКлиента=НайтиЗаявкуПоID(ДатаДок,лСтрока.ORDERID); Если лЗаказКлиента=Неопределено Тогда лЗаказКлиента = Документы.ЗаказПокупателя.СоздатьДокумент(); лЗаказКлиента.Дата = ДатаДок; лЗаказКлиента.ДатаОтгрузки = ПолучитьДатуИзСтроки(лСтрока.DELIVERY_DATE); лЗаказКлиента.Организация = Организация; лЗаказКлиента.Контрагент = лДоговорКонтрагента.Владелец; лЗаказКлиента.Грузополучатель= лДоговорКонтрагента.Владелец; лЗаказКлиента.ДоговорКонтрагента = лДоговорКонтрагента; лЗаказКлиента.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов; лЗаказКлиента.ТипЦен = лДоговорКонтрагента.ТипЦен; лЗаказКлиента.УчитыватьНДС = Истина; лЗаказКлиента.СуммаВключаетНДС = Истина; Курс = МодульВалютногоУчета.ПолучитьКурсВалюты(лЗаказКлиента.ВалютаДокумента, ДатаДок); лЗаказКлиента.КурсВзаиморасчетов = Курс.Курс; лЗаказКлиента.КратностьВзаиморасчетов = Курс.Кратность; //лЗаказ.ОтражатьВУправленческомУчете = Истина; //лЗаказ.ОтражатьВБухгалтерскомУчете = Истина; //лЗаказ.ОтражатьВНалоговомУчете = Истина; лЗаказКлиента.СкладГруппа = Склад; лЗаказКлиента.ORDERID =лСтрока.ORDERID; лЗаказКлиента.Записать(); ФормаПоступления = лЗаказКлиента.ПолучитьФорму(); Иначе ФормаПоступления = лЗаказКлиента.ПолучитьФорму(); ФормаПоступления.Контрагент = лДоговорКонтрагента.Владелец; ФормаПоступления.ДоговорКонтрагента = лДоговорКонтрагента; ФормаПоступления.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов; ФормаПоступления.ТипЦен = лДоговорКонтрагента.ТипЦен; ФормаПоступления.СкладГруппа = Склад; ///////////////////////////////организацция ФормаПоступления.Организация = Организация; ////////////////////ммгрузополучатель ФормаПоступления.Грузополучатель = лДоговорКонтрагента.Владелец; ////////////////////// ////////////////////подразделение Выбока = Справочники.Подразделения.НайтиПоКоду("000000007"); ФормаПоступления.Подразделение = Выбока; ////////////////маршрут ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Маршрут"); Объект = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(лДоговорКонтрагента); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект | И ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос.УстановитьПараметр("Объект", Объект); Запрос.УстановитьПараметр("Свойство", ПВХ); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // Сообщить("SV: "+Выборка.Значение); Выбока = Справочники.Маршруты.НайтиПоНаименованию( Выборка.Значение); ФормаПоступления.Маршрут = Выбока; КонецЦикла; //маршрут /////////////////////////////////Коментарии ТекДата = ТекущаяДата(); ФормаПоступления.Комментарий = "№ " +лЗаказКлиента.ORDERID+" "+"Дата Заяв: "+Формат(ТекДата,"ДЛФ=DD")+" Отв:"+лСтрока.SALES_REPID; //////////////////////////Коментарии ФормаПоступления.Товары.Очистить(); КонецЕсли; ~М2: лСтрока.ЗаказКлиента =лЗаказКлиента.Ссылка; КонецЕсли; лНомерЗаявки=лСтрока.ORDERID; лСтрокаТовары = ФормаПоступления.Товары.Добавить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&КокаКола)"; ГруппаСправочника = Справочники.Номенклатура.НайтиПоРеквизиту("ЮнимилкКод",лСтрока.PRODUCT_CODE); Запрос.УстановитьПараметр("КокаКола",ГруппаСправочника ); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл лСпрНом=Справочники.Номенклатура.НайтиПоРеквизиту("ЮнимилкКод",лСтрока.PRODUCT_CODE); КонецЦикла; Если лСпрНом=Справочники.Номенклатура.ПустаяСсылка() Тогда Сообщить("Не найдена номенклатура с кодом="+лСтрока.PRODUCT_CODE); Прервать; КонецЕсли; лСтрокаТовары.Номенклатура=лСпрНом; лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков; лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент; //лСтрокаТовары.Количество = лКолВоМест*Фасовка+лКолВоШт; Если лСтрока.QTY_BOTTLES ="0" Тогда лСтрокаТовары.ПроцентСкидкиНаценки=100; лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент; Иначе лСтрокаТовары.Количество=лСтрока.QTY_BOTTLES; конецесли; ФлагУчитыватьНДС= Истина; Если ФлагУчитыватьНДС Тогда лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС; КонецЕсли; Если лСтрока.FREE_CASE <>"0" и лСтрока.QTY_CASES <>"0" Тогда лСтрокаТовары = ФормаПоступления.Товары.Добавить(); лСтрокаТовары.Номенклатура=лСпрНом; лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков; лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент; лСтрокаТовары.ПроцентСкидкиНаценки=100; лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент; Если ФлагУчитыватьНДС Тогда лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Если ФормаПоступления<>Неопределено Тогда СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС", лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС); Для Каждого лСтрокаПересчет из ФормаПоступления.Товары Цикл ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента); ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); КонецЦикла; // Теперь пробуем записать документ Попытка A=0; Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода", ?(ДатаДок = Дата(1, 1, 1),'19800101' , НачалоДня(ДатаДок))); Запрос.УстановитьПараметр("КонПериода",?(ДатаДок = Дата(1, 1, 1),'20200101' , КонецДня(ДатаДок+7))); Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.Ссылка КАК Док, | ЗаказПокупателя.ORDERID КАК ORDERID |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Проведен = ИСТИНА | И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода |УПОРЯДОЧИТЬ ПО | ЗаказПокупателя.Дата"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // выборка по списку Если выборка.ORDERID= лСтрока.ORDERID Тогда A=1; КонецЕсли; КонецЦикла; Если A=1 Тогда &nb |
|||
1
Господин ПЖ
04.07.14
✎
12:35
|
Сообщить("Найдены пов документы за буд период");
шедевр |
|||
2
Heckfy
04.07.14
✎
12:39
|
Молодчина. Прочитал.
|
|||
3
Geenij
04.07.14
✎
12:39
|
Оснавная мысль сделать :
Если перемешение на завтро и далее чтобы не формировались больше 1 раза И проведенные документы не перепроводились |
|||
4
Geenij
04.07.14
✎
12:41
|
Ребят помагите на вас одна надежда!
|
|||
5
13_Mult
04.07.14
✎
12:42
|
Подписка на событие тебе в помощь
|
|||
6
Maxus43
04.07.14
✎
12:43
|
такую портянку никто читать не будет.
А запрет перепроведения примерно так: Если Объект.Проведен И Ссылка.Проведен Тогда //это перепроведение |
|||
7
Kalambur
04.07.14
✎
12:47
|
еще один гений растет
|
|||
8
Geenij
04.07.14
✎
12:49
|
От старого програмисста бред остался ваше не пойму! Меток повставлял в модуле! Короче разбираюсь 2 часа ваше не пойму как это работает!
|
|||
9
Maxus43
04.07.14
✎
12:53
|
(8) предлагаю всё удалить и переписать.
А старому программисту выслать по почте небольшую порцию фекалий, с открыткой - это ваш код |
|||
10
Geenij
04.07.14
✎
12:54
|
улыбнуло!
|
|||
11
Geenij
04.07.14
✎
12:54
|
чуток поправил лишнее
Процедура КнопкаСгенерироватьЗаявкиНажатие(Элемент) // Вставить содержимое обработчика. лНомерЗаявки=""; лЗаказКлиента=Неопределено; лЗаказКлиента1=Неопределено; ФормаПоступления =Неопределено; Для каждого лСтрока из СписокЗаявок Цикл Если лНомерЗаявки<>лСтрока.ORDERID Тогда Сообщить("Новый заказ клиента"); Сообщить(лСтрока.ORDERID); // Документ уже сгенерирован, записываем его Если ФормаПоступления<>Неопределено Тогда СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС", лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС); Для Каждого лСтрокаПересчет из ФормаПоступления.Товары Цикл ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента); ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); Если лСтрокаПересчет.Цена = 0 Тогда Сообщить("Не удалось найти цену поставщика для номенклатуры="+лСтрокаПересчет.Номенклатура); КонецЕсли; КонецЦикла; // Теперь пробуем записать документ Попытка ФормаПоступления.ЗаписатьВФорме(РежимЗаписиДокумента.Запись); ФормаПоступления=Неопределено; лЗаказКлиента=Неопределено; Исключение Сообщить(ОписаниеОшибки()); ФормаПоступления=Неопределено; КонецПопытки; КонецЕсли; Если лЗаказКлиента=Неопределено Тогда лДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("CLIENTID",лСтрока.CLIENTID); Если лДоговорКонтрагента=Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда Сообщить("Не найден магазин с кодом="+лСтрока.CLIENTID); Прервать; КонецЕсли; лЗаказКлиента=НайтиЗаявкуПоID(ДатаДок,лСтрока.ORDERID); Если лЗаказКлиента=Неопределено Тогда лЗаказКлиента = Документы.ЗаказПокупателя.СоздатьДокумент(); лЗаказКлиента.Дата = ДатаДок; лЗаказКлиента.ДатаОтгрузки = ПолучитьДатуИзСтроки(лСтрока.DELIVERY_DATE); лЗаказКлиента.Организация = Организация; лЗаказКлиента.Контрагент = лДоговорКонтрагента.Владелец; лЗаказКлиента.ДоговорКонтрагента = лДоговорКонтрагента; лЗаказКлиента.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов; лЗаказКлиента.ТипЦен = лДоговорКонтрагента.ТипЦен; лЗаказКлиента.УчитыватьНДС = Истина; лЗаказКлиента.СуммаВключаетНДС = Истина; Курс = МодульВалютногоУчета.ПолучитьКурсВалюты(лЗаказКлиента.ВалютаДокумента, ДатаДок); лЗаказКлиента.КурсВзаиморасчетов = Курс.Курс; лЗаказКлиента.КратностьВзаиморасчетов = Курс.Кратность; //лЗаказ.ОтражатьВУправленческомУчете = Истина; //лЗаказ.ОтражатьВБухгалтерскомУчете = Истина; //лЗаказ.ОтражатьВНалоговомУчете = Истина; лЗаказКлиента.СкладГруппа = Склад; лЗаказКлиента.ORDERID =лСтрока.ORDERID; лЗаказКлиента.Записать(); ФормаПоступления = лЗаказКлиента.ПолучитьФорму(); Иначе //лЗаказКлиента1 = Документы.ЗаказПокупателя.ПолучитьОбъект(); //Если лЗаказКлиента.Проведен = 1 Тогда // Перейти ~М2; //КонецЕсли; ФормаПоступления = лЗаказКлиента.ПолучитьФорму(); ФормаПоступления.Контрагент = лДоговорКонтрагента.Владелец; ФормаПоступления.ДоговорКонтрагента = лДоговорКонтрагента; ФормаПоступления.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов; ФормаПоступления.ТипЦен = лДоговорКонтрагента.ТипЦен; ФормаПоступления.СкладГруппа = Склад; ФормаПоступления.Организация = Организация; ФормаПоступления.Товары.Очистить(); КонецЕсли; ~М2: лСтрока.ЗаказКлиента =лЗаказКлиента.Ссылка; КонецЕсли; лНомерЗаявки=лСтрока.ORDERID; КонецЕсли; // Добавляем строки в заказ клиента //Если лЗаказКлиента.Проведен <> 1 Тогда лСтрокаТовары = ФормаПоступления.Товары.Добавить(); лСпрНом=Справочники.Номенклатура.НайтиПоРеквизиту("ЮнимилкКод",лСтрока.PRODUCT_CODE); Если лСпрНом=Справочники.Номенклатура.ПустаяСсылка() Тогда Сообщить("Не найдена номенклатура с кодом="+лСтрока.PRODUCT_CODE); Прервать; КонецЕсли; лСтрокаТовары.Номенклатура=лСпрНом; лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков; лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент; //лСтрокаТовары.Количество = лКолВоМест*Фасовка+лКолВоШт; Если лСтрока.QTY_BOTTLES ="0" Тогда лСтрокаТовары.ПроцентСкидкиНаценки=100; лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент; Иначе лСтрокаТовары.Количество=лСтрока.QTY_BOTTLES; конецесли; ФлагУчитыватьНДС= Истина; Если ФлагУчитыватьНДС Тогда лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС; КонецЕсли; Если лСтрока.FREE_CASE <>"0" и лСтрока.QTY_CASES <>"0" Тогда лСтрокаТовары = ФормаПоступления.Товары.Добавить(); лСтрокаТовары.Номенклатура=лСпрНом; лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков; лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент; лСтрокаТовары.ПроцентСкидкиНаценки=100; лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент; Если ФлагУчитыватьНДС Тогда лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС; КонецЕсли; КонецЕсли; //КонецЕсли; КонецЦикла; // Записываем последнюю заявку // Теперь пробуем записать документ // Документ уже сгенерирован, записываем его Если ФормаПоступления<>Неопределено Тогда СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС", лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС); Для Каждого лСтрокаПересчет из ФормаПоступления.Товары Цикл ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента); ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма); Если лСтрокаПересчет.Цена = 0 Тогда Сообщить("Не удалось найти цену поставщика для номенклатуры="+лСтрокаПересчет.Номенклатура); КонецЕсли; КонецЦикла; // Теперь пробуем записать документ Попытка ФормаПоступления.ЗаписатьВФорме(РежимЗаписиДокумента.Запись); ФормаПоступления=Неопределено; лЗаказКлиента=Неопределено; Исключение Сообщить(ОписаниеОшибки()); ФормаПоступления=Неопределено; КонецПопытки; КонецЕсли; КонецПроцедуры |
|||
12
Geenij
04.07.14
✎
12:57
|
Maxus43, пе охото велосипед изабретать так как он работает!
|
|||
13
anatoly
04.07.14
✎
13:00
|
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Проведен Тогда Отказ = Истина; Возврат; КонецеЕсли; ... это самый тупо элементарный вариант. ну можно сообщить еще что то... |
|||
14
Maxus43
04.07.14
✎
13:02
|
(13) Если Проведен И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
|
|||
15
Maxus43
04.07.14
✎
13:03
|
(12) тут уж сам сомтрить, ещё раз: в такую портянку прекрасного кода вглядываться будут только заключенные тюрьмы для 1сников, ибо занятий у них не много...
Про варианты запрета перепроведения уже сказали, подойдёт или нет - сам пробуй |
|||
16
Geenij
04.07.14
✎
13:22
|
Спасиб сделал вроде работает!
|
|||
17
Geenij
04.07.14
✎
13:25
|
Подписка на событие раскажите интересно стала как работает! ИЛИ ссылку скиньте на пример! Заранее благодарен!
|
|||
18
anatoly
04.07.14
✎
13:33
|
(17) кури ЖКК
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |