|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
|
Запрос к регистру накопления при проведении документа08.07.2010, 16:50. Показов 50967. Ответов 21
Метки нет (Все метки)
Подскажите, плиз, как при проведении документа "Реализация товаров и услуг" определить сколько осталось отгрузить уже с учетом проводок этого документа?
Я написала запрос в ОбработкеПроведения, но по текущему документу еще нет в этот момент информации в регистрах. Есть в модуле документа что-то типа "ПослеПроведения"? =) Мой запрос: Код ( (Unknown Language)): Процедура ОбработкаПроведения(Отказ, РежимПроведения) ... // USR-Modification on 09 July 2010 by Mariya - Begin ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя.Ссылка КАК ЗаказПокупателя, | ЗаказыПокупателейОстаткиИОбороты.Номенкл атура КАК Номенклатура, | ЗаказыПокупателейОстаткиИОбороты.Количес твоКонечныйОстаток КАК ОсталосьОтгрузить |ИЗ | РегистрНакопления.ЗаказыПокупателей.Оста ткиИОбороты() КАК ЗаказыПокупателейОстаткиИОбороты |ГДЕ | ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя = &ЗаказПокупателя |{УПОРЯДОЧИТЬ ПО | Номенклатура.*} |ИТОГИ | СУММА(ОсталосьОтгрузить) |ПО | ОБЩИЕ, | ЗаказПокупателя, | Номенклатура |{ИТОГИ ПО | Номенклатура.*}"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ЗаказПокупате ля",Сделка); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Если Выборка.ОсталосьОтгрузить = 0 Тогда НачислитьБонус = Истина; Иначе НачислитьБонус = Ложь; КонецЕсли; КонецЕсли; ... // USR-Modification on 09 July 2010 by Mariya - End КонецПроцедуры // ОбработкаПроведения()
0
|
|
| 08.07.2010, 16:50 | |
|
Ответы с готовыми решениями:
21
Запрос к регистру накопления с расчетом итогов 1с 8.2 Запрос к движению ингредиентов при проведении документа "Выпуск" (изделий) Запрос к регистру накопления и регистру сведенй |
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
| 08.07.2010, 17:22 | |
|
Достаточно дубовый вариант - перебрать строки документа (если номенклатура в них живет, конечно). При переборе вызывать запрос (только ещё добавить в него фильтр по номенклатуре) и сравнивать количество в запросе и количество в строке документа. Если не совпадают - значит НачислитьБонус = ложь.
Другой вариант - это использование РегистрНакопленияМенеджер.Остатки() с фильтрованием (проверка та-же) А вот дальше вопрос - в семерке была штука под названием Актуальность(), а вот в восьмерке я её не наблюдаю. С ней все фактические изменения при проведении документа тут-же отражались на итогах. Может в восьмерке это ПересчитатьТекущиеИтоги? Кстати - если набор движений создается после запроса- то и информация о движениях будет пустой- её таки реально нет на момент выполнения запроса.
0
|
|
|
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 38
|
|
| 09.07.2010, 07:16 | |
|
По идее после записи движений в регистр, можно уже получать остатки с учетом текущего документа
0
|
|
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
||
| 11.07.2010, 13:02 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
||
| 11.07.2010, 14:10 | ||
"По идее" я тоже так думала, а на практике вышло совсем иначе...
0
|
||
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
| 11.07.2010, 15:57 | |
|
Запись происходит в момент НаборДвижений.Записать();
Может ему РАЗРЕШЕННЫЕ мешает? Хотя это вроде на права доступа чтоб не ругалось... А как выглядит проведение по регистрам в виде кода?
0
|
|
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
|
| 11.07.2010, 16:05 | |
|
Чтоб узнать хватит ли остатков на складе, используйте параметры виртуальной таблицы оборотов, четвертый параметр кажется. "Метод дополнения - движения и граница периода" и как параметр в запрос массив номенклатуры документа.
0
|
|
|
0 / 0 / 0
Регистрация: 02.03.2007
Сообщений: 272
|
|
| 11.07.2010, 16:25 | |
|
Чтото я Вас не понимаю. Зачем вам именно при "проведении" документа чтото вычислять, что потом еще должно попасть в форму ( так мне показалось)?Просто ПриЗаписи() этого делать нельзя? Например при условии, что документ проведен. Если проведен и остаток по запросу = 0 тогда и начисляйте свой бонус.
Как мне кажется, смысл процедуры ОбработкаПРоведения не в том, чтобы производить какието расчеты уже после записи, а в том, чтобы "положить" данные в нужные регистры.
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
||
| 12.07.2010, 10:11 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
||
| 12.07.2010, 11:20 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
||
| 12.07.2010, 11:47 | ||
Там много вложенных процедур... <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">ОбработкаПроведения</div></div><div class="sp-body"><div class="sp-content"> Код ( (Unknown Language)): Процедура ОбработкаПроведения(Отказ, РежимПроведения) (...) // Движения по документу Если Не Отказ Тогда // Подготовим таблицу скидок для проведения. ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТовара м, ТаблицаПоУслугам, СтруктураШапкиДокумента); ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок); КонецЕсли; // USR-Modification on 09 July 2010 by Mariya - Begin //Если заказ оплачен и реализован, тогда - НачислитьБонус НачислитьБонус = Ложь; (...) ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя.Ссылка КАК ЗаказПокупателя, | ЗаказыПокупателейОстаткиИОбороты.Номенкл атура КАК Номенклатура, | ЗаказыПокупателейОстаткиИОбороты.Количес твоКонечныйОстаток КАК ОсталосьОтгрузить |ИЗ | РегистрНакопления.ЗаказыПокупателей.Оста ткиИОбороты() КАК ЗаказыПокупателейОстаткиИОбороты |ГДЕ | ЗаказыПокупателейОстаткиИОбороты.ЗаказПо купателя = &ЗаказПокупателя |{УПОРЯДОЧИТЬ ПО | Номенклатура.*} |ИТОГИ | СУММА(ОсталосьОтгрузить) |ПО | ОБЩИЕ, | ЗаказПокупателя, | Номенклатура |{ИТОГИ ПО | Номенклатура.*}"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ЗаказПокупате ля",Сделка); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Если Выборка.ОсталосьОтгрузить = 0 Тогда НачислитьБонус = Истина; Иначе НачислитьБонус = Ложь; КонецЕсли; КонецЕсли; Если НачислитьБонус и Сделка.НачислитьБонус Тогда (...) СделкаОбъект.Записать(); КонецЕсли; КонецЕсли; // USR-Modification on 09 July 2010 by Mariya - End КонецПроцедуры // ОбработкаПроведения() <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">ДвиженияПоРегистрам</div></div><div class="sp-body"><div class="sp-content"> Код ( (Unknown Language)): Процедура ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок) ТаблицаПоКомплектам = УправлениеЗапасами.СформироватьТаблицуКо мплектующих(ТаблицаПоТоварам, ЭтотОбъект); ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоКомплектам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок); ДвиженияПоРегиструТоварыОрганизаций(Режи мПроведения, СтруктураШапкиДокумента, ТаблицаПоКомплектам, ТаблицаПоТаре, ТаблицаПоУслугам, Отказ, Заголовок); Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Покупателем Тогда ДвиженияПоРегистрамОперативныхВзаиморасч етов(РежимПроведения, ТаблицаПоВзаиморасчетам, Отказ, Заголовок, СтруктураШапкиДокумента); КонецЕсли; ДвиженияПоРегиструСписанныеТовары(Структ ураШапкиДокумента, ТаблицаПоКомплектам, ТаблицаПоТаре, Отказ, Заголовок); Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Покупателем Тогда СтруктураТаблицыВыручки = Новый структура("НомерСтроки, Номенклатура, ВидЦенности, Ценность, Партия, Услуга |,СтавкаНДС, Сумма, СуммаВал, НДС, НДСВал, СуммаБезНДС, СуммаБезНДСВал |,Комиссионный,Комитент,ДоговорКомиссии, ВалютаРасчетовСКомитентом |,СуммаСписания, Количество"); //Формируем таблицу выручки с нужной структурой и заполняем по таблице услуг ТаблицаВыручки = ОбщегоНазначения.СформироватьТаблицуЗнач ений(ТаблицаПоУслугам,СтруктураТаблицыВы ручки,,Истина); ВыручкаПоТоварам = ОбщегоНазначения.СформироватьТаблицуЗнач ений(ТаблицаПоТоварам,СтруктураТаблицыВы ручки,,Истина); ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ВыручкаПоТоварам,ТаблицаВыручки ); ТаблицаВыручки.ЗаполнитьЗначения(Ложь, "Комиссионный"); ТаблицаВыручки.ЗаполнитьЗначения(0, "Количество"); ТаблицаАвансов = Новый ТаблицаЗначений; ТаблицаАвансов.Колонки.Добавить("Докумен тОплаты"); ДвиженияРегистровПодсистемыНДС(Структура ШапкиДокумента, ТаблицаПоУслугам, ТаблицаВыручки, ТаблицаАвансов, Отказ, Заголовок); КонецЕсли; Если ТаблицаПоКомплектам.Количество() + ТаблицаПоТаре.Количество() >0 тогда // Зарегистрируем в последовательности УУ Если ОтражатьВУправленческомУчете Тогда ЗаписьРегистрации = ПринадлежностьПоследовательностям.Партио нныйУчет.Добавить(); ЗаписьРегистрации.Период = Дата; КонецЕсли; КонецЕсли; // Проводить по партиям сразу нужно если установлен параметр // учетной политики СписыватьПартииПриПроведенииДокументов ПроводитьПоПартиям = РегистрыСведений.УчетнаяПолитика.Получит ьПоследнее(Дата).СписыватьПартииПриПрове денииДокументов; Если ПроводитьПоПартиям Тогда УправлениеЗапасамиПартионныйУчет.Движени еПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить()); Иначе // В неоперативном режиме границы последовательностей сдвигаются назад, если они позже документа. Если РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда УправлениеЗапасамиПартионныйУчет.СдвигГр аницыПоследовательностиПартионногоУ четаНазад(Дата, Ссылка, Организация); КонецЕсли; КонецЕсли; КонецПроцедуры <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">ДвиженияПоРегистрамУпр</div></div><div class="sp-body"><div class="sp-content"> Код ( (Unknown Language)): Процедура ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоКомплектам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок) Если ОтражатьВУправленческомУчете Тогда УправлениеВзаиморасчетами.ВыполнитьДвиже нияПоРегистрамУпрВзаиморасчетов(ЭтотОбъе кт, СтруктураШапкиДокумента, мСтруктураПараметровВзаиморасчетов, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, ВидДвиженияНакопления.Приход, Отказ, Заголовок); Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Покупателем Тогда Если СуммаДокумента <> 0 Тогда // По регистру ПродажиПоДисконтнымКартам. Если ЗначениеЗаполнено(СтруктураШапкиДокумент а.ДисконтнаяКарта) Тогда НаборДвижений = Движения.ПродажиПоДисконтнымКартам; // Получим таблицу значений, совпадающую со структурой набора записей регистра. ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); // Заполним таблицу движений. СтрокаДвижений = ТаблицаДвижений.Добавить(); СтрокаДвижений.ДисконтнаяКарта = СтруктураШапкиДокумента.ДисконтнаяКарта; СтрокаДвижений.ВладелецДисконтнойКарты = СтруктураШапкиДокумента.Контрагент; СтрокаДвижений.Сумма = МодульВалютногоУчета.ПересчитатьИзВалюты ВВалюту(СуммаДокумента, ВалютаДокумента, СтруктураШапкиДокумента.ВалютаУправленче скогоУчета, СтруктураШапкиДокумента.КурсДокумента, СтруктураШапкиДокумента.КурсВалютыУправл енческогоУчета, СтруктураШапкиДокумента.КратностьДокумен та, СтруктураШапкиДокумента.КратностьВалютыУ правленческогоУчета); НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; Если Не Отказ Тогда НаборДвижений.ВыполнитьДвижения(); КонецЕсли; КонецЕсли; КонецЕсли; // ТОВАРЫ ПО РЕГИСТРУ Продажи. НаборДвижений = Движения.Продажи; ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); ТаблицаПоТоварам.Колонки.НДС.Имя = "НДСВрем"; ТаблицаПоТоварам.Колонки.НДСУпр.Имя = "НДС"; // Заполним таблицу движений. Если СтруктураШапкиДокумента.ВедениеУчетаПоПр оектам Тогда УправлениеПроектами.ОтразитьДвиженияПоПр оектам(ТаблицаПоТоварам,ТаблицаДвижений, Проект, Дата, "Продажи"); Иначе ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоТоварам, ТаблицаДвижений); КонецЕсли; ТаблицаДвижений.ЗаполнитьЗначения(Догово рКонтрагента,"ДоговорКонтрагента"); ТаблицаДвижений.ЗаполнитьЗначения(Контра гент , "Контрагент"); ТаблицаДвижений.ЗаполнитьЗначения(Органи зация, "Организация"); ТаблицаДвижений.ЗаполнитьЗначения(Ссылка ,"ДокументПродажи"); ТаблицаДвижений.ЗаполнитьЗначения(Подраз деление,"Подразделение"); // Когда взаиморасчеты ведутся по счетам, поле заказ покупателя в таб.части будет пустое (нет типа Документ.СчетНаОплату) Если СтруктураШапкиДокумента.ВедениеВзаиморас четов = Перечисления.ВедениеВзаиморасчетовПоДого ворам.ПоСчетам Тогда ТаблицаДвижений.ЗаполнитьЗначения(Структ ураШапкиДокумента.Сделка, "ЗаказПокупателя"); КонецЕсли; НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; Если Не Отказ Тогда Движения.Продажи.ВыполнитьДвижения(); КонецЕсли; // УСЛУГИ ПО РЕГИСТРУ Продажи. НаборДвижений = Движения.Продажи; ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); ТаблицаПоУслугам.Колонки.НДС.Имя = "НДСВрем"; ТаблицаПоУслугам.Колонки.НДСУпр.Имя = "НДС"; // Заполним таблицу движений. Если СтруктураШапкиДокумента.ВедениеУчетаПоПр оектам Тогда УправлениеПроектами.ОтразитьДвиженияПоПр оектам(ТаблицаПоУслугам,ТаблицаДвижений, Проект, Дата, "Продажи"); Иначе ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоУслугам, ТаблицаДвижений); КонецЕсли; ТаблицаДвижений.ЗаполнитьЗначения(Догово рКонтрагента,"ДоговорКонтрагента"); ТаблицаДвижений.ЗаполнитьЗначения(Контра гент , "Контрагент"); ТаблицаДвижений.ЗаполнитьЗначения(Органи зация, "Организация"); ТаблицаДвижений.ЗаполнитьЗначения(Ссылка ,"ДокументПродажи"); ТаблицаДвижений.ЗаполнитьЗначения(Подраз деление,"Подразделение"); // Когда взаиморасчеты ведутся по счетам, поле заказ покупателя в таб.части будет пустое (нет типа Документ.СчетНаОплату) Если СтруктураШапкиДокумента.ВедениеВзаиморас четов = Перечисления.ВедениеВзаиморасчетовПоДого ворам.ПоСчетам Тогда ТаблицаДвижений.ЗаполнитьЗначения(Структ ураШапкиДокумента.Сделка, "ЗаказПокупателя"); КонецЕсли; НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; Если Не Отказ Тогда Движения.Продажи.ВыполнитьДвижения(); КонецЕсли; // ПО РЕГИСТРУ ПредоставленныеСкидки. НаборДвижений = Движения.ПредоставленныеСкидки; ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); // Заполним таблицу движений. ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоСкидкам, ТаблицаДвижений); ТаблицаДвижений.ЗаполнитьЗначения(Ссылка ,"ДокументСкидки"); ТаблицаДвижений.ЗаполнитьЗначения(Догово рКонтрагента,"ПолучательСкидки"); НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; Если Не Отказ Тогда Движения.ПредоставленныеСкидки.Выполнить Движения(); КонецЕсли; ТаблицаПоТоварам.Колонки.НДС.Имя = "НДСУпр"; ТаблицаПоТоварам.Колонки.НДСВрем.Имя = "НДС"; ТаблицаПоУслугам.Колонки.НДС.Имя = "НДСУпр"; ТаблицаПоУслугам.Колонки.НДСВрем.Имя = "НДС"; КонецЕсли; Если ВидПередачи = Перечисления.ВидыПередачиТоваров.СоСклад а Тогда // ТОВАРЫ ПО РЕГИСТРУ ТоварыНаСкладах. ВидСкладаОпт = Новый Структура("ВидСклада", Перечисления.ВидыСкладов.Оптовый); РезультатЗапросаКомплектыОпт = ОбщегоНазначения.ОтобратьСтрокиПоКритери ям(ТаблицаПоКомплектам, ВидСкладаОпт); РезультатЗапросаТараОпт = ОбщегоНазначения.ОтобратьСтрокиПоКритери ям(ТаблицаПоТаре, ВидСкладаОпт); Если Не РезультатЗапросаКомплектыОпт.Пустой() ИЛИ НЕ РезультатЗапросаТараОпт.Пустой() Тогда // Проверка остатков при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда Движения.ТоварыНаСкладах.КонтрольОстатко в(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок); Движения.ТоварыНаСкладах.КонтрольОстатко в(ЭтотОбъект, "ВозвратнаяТара", СтруктураШапкиДокумента, Отказ, Заголовок); КонецЕсли; Если НЕ Отказ Тогда СтруктТаблицДокумента = Новый Структура; СтруктТаблицДокумента.Вставить("Комплект ыОпт", РезультатЗапросаКомплектыОпт.Выгрузить() ); СтруктТаблицДокумента.Вставить("ТараОпт" , РезультатЗапросаТараОпт .Выгрузить()); ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыНаСкладах, СтруктТаблицДокумента); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Качество", Справочники.Качество.Новый, "ТараОпт"); ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыНаСкладах, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, Дата); КонецЕсли; КонецЕсли; ВидСкладаРозн = Новый Структура("ВидСклада", Перечисления.ВидыСкладов.Розничный); РезультатЗапросаКомплектыРозн = ОбщегоНазначения.ОтобратьСтрокиПоКритери ям(ТаблицаПоКомплектам, ВидСкладаРозн); РезультатЗапросаТараРозн = ОбщегоНазначения.ОтобратьСтрокиПоКритери ям(ТаблицаПоТаре, ВидСкладаРозн); Если Не РезультатЗапросаКомплектыРозн.Пустой() ИЛИ НЕ РезультатЗапросаТараРозн.Пустой() Тогда // Проверка остатков при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда Движения.ТоварыВРознице.КонтрольОстатков (ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок); Движения.ТоварыВРознице.КонтрольОстатков (ЭтотОбъект, "ВозвратнаяТара", СтруктураШапкиДокумента, Отказ, Заголовок); КонецЕсли; Если Не Отказ Тогда ТаблицаКомплектыРозн = РезультатЗапросаКомплектыРозн.Выгрузить( ); ТаблицаТараРозн = РезультатЗапросаТараРозн.Выгрузить(); ТаблицаКомплектыРозн.Колонки.Добавить("С уммаПродажная", ОбщегоНазначения.ПолучитьОписаниеТиповЧи сла(15, 2)); Если ТаблицаКомплектыРозн.Количество() <> 0 Тогда ТаблицаПоЦенам = УправлениеРозничнойТорговлей.Сформироват ьЗапросПоПродажнымЦенам(Дата, ТаблицаКомплектыРозн.ВыгрузитьКолонку("С клад"), ТаблицаКомплектыРозн.ВыгрузитьКолонку("Н оменклатура")).Выгрузить(); УправлениеРозничнойТорговлей.ЗаполнитьКо лонкуСуммаПродажная(ТаблицаКомплектыРозн , ТаблицаПоЦенам, "ВидСклада"); КонецЕсли; ТаблицаТараРозн.Колонки.Добавить("СуммаП родажная", ОбщегоНазначения.ПолучитьОписаниеТиповЧи сла(15, 2)); Если ТаблицаТараРозн.Количество() <> 0 Тогда ТаблицаПоЦенам = УправлениеРозничнойТорговлей.Сформироват ьЗапросПоПродажнымЦенам(Дата, ТаблицаТараРозн.ВыгрузитьКолонку("Склад" ), ТаблицаТараРозн.ВыгрузитьКолонку("Номенк латура")).Выгрузить(); УправлениеРозничнойТорговлей.ЗаполнитьКо лонкуСуммаПродажная(ТаблицаТараРозн, ТаблицаПоЦенам, "ВидСклада"); КонецЕсли; СтруктТаблицДокумента = Новый Структура; СтруктТаблицДокумента.Вставить("Комплект ыРозн", ТаблицаКомплектыРозн); СтруктТаблицДокумента.Вставить("ТараРозн " , ТаблицаТараРозн); ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыВРознице, СтруктТаблицДокумента); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Качество", Справочники.Качество.Новый, "ТараРозн"); ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыВРознице, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, Дата); КонецЕсли; КонецЕсли; Иначе // отпуск по ордеру // Проверка остатков при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда Движения.ТоварыКПередачеСоСкладов.Контро льОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок); Движения.ТоварыКПередачеСоСкладов.Контро льОстатков(ЭтотОбъект, "ВозвратнаяТара", СтруктураШапкиДокумента, Отказ, Заголовок); КонецЕсли; // ТОВАРЫ И ТАРА ПО РЕГИСТРУ ТоварыКПередачеСоСкладов. Если Не Отказ Тогда СтруктТаблицДокумента = Новый Структура; СтруктТаблицДокумента.Вставить("ТаблицаТ овары", ТаблицаПоКомплектам); СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", ТаблицаПоТаре); ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыКПередачеСоС кладов, СтруктТаблицДокумента); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "ДокументПередачи", Ссылка); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Куплен ный, "ТаблицаТовары"); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Возвра тнаяТара, "ТаблицаПоТаре"); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Качество", Справочники.Качество.Новый, "ТаблицаПоТаре"); ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыКПередачеСоСкла дов, ВидДвиженияНакопления.Приход, ТаблицыДанныхДокумента, Дата); КонецЕсли; КонецЕсли; // Проверка остатков лимитов возвратной тары при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный И ТаблицаПоТаре.Количество()<>0 Тогда Движения.ТоварыПереданные.КонтрольЛимито вВозвратнойТары(ЭтотОбъект, СтруктураШапкиДокумента, Отказ, Заголовок); КонецЕсли; // ТАРА ПО РЕГИСТРУ ТоварыПереданные Если Не Отказ Тогда СтруктТаблицДокумента = Новый Структура; СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", ТаблицаПоТаре); КопияТаблицаПоТаре = ТаблицаПоТаре.Скопировать(); КопияТаблицаПоТаре.Колонки.ЗаказПокупате ля.Имя = "Сделка"; СтруктТаблицДокумента = Новый Структура; СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", КопияТаблицаПоТаре); Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Комиссионером Тогда КопияТовары = ТаблицаПоТоварам.Скопировать(); КопияТовары.Колонки.ЗаказПокупателя.Имя = "Сделка"; СтруктТаблицДокумента.Вставить("ТаблицаТ овары", КопияТовары); КонецЕсли; ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ТоварыПереданные, СтруктТаблицДокумента); Если СтруктураШапкиДокумента.ВедениеВзаиморас четов = Перечисления.ВедениеВзаиморасчетовПоДого ворам.ПоСчетам Тогда Для Каждого ТаблицаДанных Из ТаблицыДанныхДокумента Цикл ТаблицаДанных.Значение.ЗаполнитьЗначения (Сделка, "Сделка"); КонецЦикла; КонецЕсли; ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "ДоговорКонтрагента", ДоговорКонтрагента); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Контрагент", Контрагент); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "Организация", Организация); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПередачи", Перечисления.СтатусыПолученияПередачиТов аров.ВозвратнаяТара, "ТаблицаПоТаре"); Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.С Комиссионером Тогда ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПередачи", Перечисления.СтатусыПолученияПередачиТов аров.НаКомиссию, "ТаблицаТовары"); КонецЕсли; ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ТоварыПереданные, ВидДвиженияНакопления.Приход, ТаблицыДанныхДокумента, Дата); КонецЕсли; // ТОВАР, ТАРА И УСЛУГИ ПО РЕГИСТРУ ЗаказыПокупателей. // Проверка остатков при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда Движения.ЗаказыПокупателей.КонтрольПревы шенияОбъемаЗаказа(ЭтотОбъект, СтруктураШапкиДокумента, "Товары", Отказ, Заголовок); Движения.ЗаказыПокупателей.КонтрольПревы шенияОбъемаЗаказа(ЭтотОбъект, СтруктураШапкиДокумента, "ВозвратнаяТара", Отказ, Заголовок); Движения.ЗаказыПокупателей.КонтрольПревы шенияОбъемаЗаказа(ЭтотОбъект, СтруктураШапкиДокумента, "Услуги", Отказ, Заголовок); КонецЕсли; Если Не Отказ Тогда СтруктТаблицДокумента = Новый Структура; СтруктТаблицДокумента.Вставить("ТаблицаП оТоварам", ТаблицаПоТоварам); СтруктТаблицДокумента.Вставить("ТаблицаП оТаре", ТаблицаПоТаре); СтруктТаблицДокумента.Вставить("ТаблицаП оУслугам", ТаблицаПоУслугам); ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокумен таВСтруктуру(Движения.ЗаказыПокупателей, СтруктТаблицДокумента); ОбщегоНазначения.УдалитьСтрокиИзТаблицДо кумента(ТаблицыДанныхДокумента, "ЗаказПокупателя"); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "ДоговорКонтрагента", ДоговорКонтрагента); ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Куплен ный, "ТаблицаПоТоварам,ТаблицаПоУслугам") ; ОбщегоНазначения.УстановитьЗначениеВТабл ицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Возвра тнаяТара, "ТаблицаПоТаре"); ОбщегоНазначения.ЗаписатьТаблицыДокумент аВРегистр(Движения.ЗаказыПокупателей, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, Дата); КонецЕсли; // Если есть списание из резерва, то надо списать резерв ТаблицаПоТоварамИзРезерва = ТаблицаПоТоварам.Скопировать(); Сч = 0; Пока Сч < ТаблицаПоТоварамИзРезерва.Количество() Цикл СтрокаТаблицы = ТаблицаПоТоварамИзРезерва.Получить(Сч); Если СтрокаТаблицы.СпособСписанияОстаткаТовар ов <> Перечисления.СпособыСписанияОстаткаТовар ов.ИзРезерва ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицы.ЗаказПок упателя) Тогда ТаблицаПоТоварамИзРезерва.Удалить(Строка Таблицы); Иначе Сч = Сч + 1; КонецЕсли; КонецЦикла; Если ТаблицаПоТоварамИзРезерва.Количество() > 0 Тогда НаборДвижений = Движения.ТоварыВРезервеНаСкладах; // Получим таблицу значений, совпадающую со структурой набора записей регистра. ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); // Заполним таблицу движений. ТаблицаПоТоварамИзРезерва.Колонки.ЗаказП окупателя.Имя = "ДокументРезерва"; ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоТоварамИзРезерва, ТаблицаДвижений); НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; // Проверка остатков при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда НаборДвижений.КонтрольОстатков(ЭтотОбъек т, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок); КонецЕсли; Если Не Отказ Тогда Движения.ТоварыВРезервеНаСкладах.Выполни тьРасход(); КонецЕсли; КонецЕсли; ТаблицаПоТареИзРезерва = ТаблицаПоТаре.Скопировать(); Сч = 0; Пока Сч < ТаблицаПоТареИзРезерва.Количество() Цикл СтрокаТаблицы = ТаблицаПоТареИзРезерва.Получить(Сч); Если СтрокаТаблицы.СпособСписанияОстаткаТовар ов <> Перечисления.СпособыСписанияОстаткаТовар ов.ИзРезерва ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицы.ЗаказПок упателя) Тогда ТаблицаПоТареИзРезерва.Удалить(СтрокаТаб лицы); Иначе Сч = Сч + 1; КонецЕсли; КонецЦикла; Если ТаблицаПоТареИзРезерва.Количество() > 0 Тогда НаборДвижений = Движения.ТоварыВРезервеНаСкладах; // Получим таблицу значений, совпадающую со структурой набора записей регистра. ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); // Заполним таблицу движений. ТаблицаПоТареИзРезерва.Колонки.ЗаказПоку пателя.Имя = "ДокументРезерва"; ОбщегоНазначения.ЗагрузитьВТаблицуЗначен ий(ТаблицаПоТареИзРезерва, ТаблицаДвижений); НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; // Проверка остатков при оперативном проведении. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда НаборДвижений.КонтрольОстатков(ЭтотОбъек т, "ВозвратнаяТара", СтруктураШапкиДокумента, Отказ, Заголовок); КонецЕсли; Если Не Отказ Тогда Движения.ТоварыВРезервеНаСкладах.Выполни тьРасход(); КонецЕсли; КонецЕсли; КонецЕсли; // Если ОтражатьВУправленческомУчете КонецПроцедуры // ДвиженияПоРегистрамУпр()
0
|
||
|
0 / 0 / 0
Регистрация: 02.03.2007
Сообщений: 272
|
|
| 12.07.2010, 16:39 | |
|
Если уж Вам так надо, чтобы все выводилось "автоматом" то я бы действовал так:перед записью (ну или если оооочень уж хочется - то при проведении) документа получал остатки без учета текущих ( или будущих) движений, из них - вычитал нужные суммы по документу, формировал нужный Вам бонус, а только потом делал бы движения.
0
|
|
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
| 12.07.2010, 20:36 | |
|
Мне кажется движения можно принудительно записать до окончания проведения, и тогда движения попадут в остатки.
0
|
|
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
|||
| 13.07.2010, 11:25 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
||
| 13.07.2010, 11:48 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
||
| 13.07.2010, 13:08 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
||
| 13.07.2010, 13:52 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 20
|
||
| 13.07.2010, 17:35 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
||
| 13.07.2010, 17:40 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
| 14.07.2010, 15:48 | |
|
Код ( (Unknown Language)):
Процедура ОбработкаПроведения(Отказ, Режим) НаборДвижений = Движения.РеализацияУслуг; Движение = НаборДвижений.Добавить(); Движение.Период = Дата; Движение.Организация = Организация; Движение.Сумма = 1000; НаборДвижений.Записать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияУслуг.Организация |ИЗ | РегистрНакопления.РеализацияУслуг КАК РеализацияУслуг |ГДЕ | РеализацияУслуг.Регистратор = &Регистратор"; Запрос.УстановитьПараметр("Регистратор", Ссылка ); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(ВЫборка.Организация); КонецЦикла; Отказ = Истина; Возврат; КонецПроцедуры Пишет "операция не выполнена", движений не создается.
0
|
|
| 14.07.2010, 15:48 | |
|
Помогаю со студенческими работами здесь
20
Заполнение реквизита документа программно из результата запроса к регистру накопления Запрос к регистру накопления
Как получить актуальные остатки по регистру накопления в обработке провед документа с учетом его движений 1с УТ 10.3. Создание документа на основании при проведении другого документа. Реализация механизма перепроведения. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|