Есть документ ВводОстатковВзаиморасчетов. При проведении надо чтоб долг контрагента обнулялся на дату проведения, а новое значение записывалось как долг. Подскажите, как обнулить... вот процедура
Корректировка долга хороший документ, но надо вручную выщитывать разницу между фактическим долгом и долгом по базе и добавлять в поле уменьшение или увеличение долга... у нас очень много контрагентов и реально очень много времени на это потратится((
по поводу получения данных и записания их с обратным знаком :
В движениях так, но получение данных скорее всего нужно бы выполнить запросом, а потом просто выгрузить в таблицу движений, чтобы учесть правильно остатки по всем измерениям регистра
В движениях так, но получение данных скорее всего нужно бы выполнить запросом, а потом просто выгрузить в таблицу движений, чтобы учесть правильно остатки по всем измерениям регистра
Почти ветеран
Группа: Местный
Сообщений: 522
Спасибо сказали: 70 раз
Рейтинг: 0
Цитата(Ученик_Покачто @ 11.01.11, 13:05)
Корректировка долга хороший документ, но надо вручную выщитывать разницу между фактическим долгом и долгом по базе и добавлять в поле уменьшение или увеличение долга... у нас очень много контрагентов и реально очень много времени на это потратится((
При проведении документа создать документ корректировка передать в него контрагентов и договора. В самом документе корректировка есть кнопка мол заполнить по остаткам - выполнить тот код и провести документ.
Да на здоровье ... только не используется полностью запрос, проанализируйте измерения в регистре Взаиморасчеты вашей конфигурации.. я вот только заметила , что ВидДеятельности - это добавленное мною измерение, в типовой его нет... в вашей конфе могут быть другие различия
Да на здоровье ... только не используется полностью запрос, проанализируйте измерения в регистре Взаиморасчеты вашей конфигурации.. я вот только заметила , что ВидДеятельности - это добавленное мною измерение, в типовой его нет... в вашей конфе могут быть другие различия
Вставил запрос - все равно не обнуляет (( переделал под всои измерения... щас буду пробовать что-нить изменить((
Словно с кассовым аппаратом работаете ... Движение с минусом делает документ? Просмотрите по отчету по взаиморасчетам почему вылазят остатки, может не все измерения учли, с датой(временем) что-то не так
Словно с кассовым аппаратом работаете ... Движение с минусом делает документ? Просмотрите по отчету по взаиморасчетам почему вылазят остатки, может не все измерения учли, с датой(временем) что-то не так
в том то и дело, что не делает(( уже и с конструктором запросов делал запрос, все равно ничего((( продолжаю експеременты))
в том то и дело, что не делает(( уже и с конструктором запросов делал запрос, все равно ничего((( продолжаю експеременты))
Сам по себе запрос движений и не должен делать . Он после оператора Запрос.Выполнить().Выгрузить(); должен дать Вам таблицу по остаткам, если они есть. Проверьте этот момент в отладчике. А движения делает оператор Движения.ВзаиморасчетыСКонтрагентами.Записать();
Сейчас привожу полную конструкцию.
НаборДвижений = Движения.ВзаиморасчетыСКонтрагентами;
ТаблицаДвижений = НаборДвижений.Выгрузить();
ТаблицаДвижений.Очистить();
Запрос.Текст = "ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
| ВзаиморасчетыСКонтрагентамиОстатки.Сделка,
| ВзаиморасчетыСКонтрагентамиОстатки.Организация,
| ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
| -ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
| -ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток КАК СуммаУпр
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаКон, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОстатки";
ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаОстатков, ТаблицаДвижений);
//сюда нужно добавить строку в таблицу движений с новыми значениями регистра
НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;
Движения.ВзаиморасчетыСКонтрагентами.ВыполнитьПриход();
Движения.ВзаиморасчетыСКонтрагентами.Записать();
До этого, я выкладывала только кусок, который формирует остатки таблицей и заносит ее в таблицу движений, но не записывает сами движения. Я предполагала, что запись движений Вы уже сделаете самостоятельно, после того, как добавите в таблицу движений ещё и движения по новым значения регистра. Если причина всё же не в этом, то приведите здесь свой кусок кода полностью. Так ведь долго можно гадать, что же там не так ...
Сам по себе запрос движений и не должен делать . Он после оператора Запрос.Выполнить().Выгрузить(); должен дать Вам таблицу по остаткам, если они есть. Проверьте этот момент в отладчике. А движения делает оператор Движения.ВзаиморасчетыСКонтрагентами.Записать();
Сейчас привожу полную конструкцию.
НаборДвижений = Движения.ВзаиморасчетыСКонтрагентами;
ТаблицаДвижений = НаборДвижений.Выгрузить();
ТаблицаДвижений.Очистить();
Запрос.Текст = "ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
| ВзаиморасчетыСКонтрагентамиОстатки.Сделка,
| ВзаиморасчетыСКонтрагентамиОстатки.Организация,
| ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
| -ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
| -ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток КАК СуммаУпр
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаКон, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОстатки";
ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаОстатков, ТаблицаДвижений);
//сюда нужно добавить строку в таблицу движений с новыми значениями регистра
НаборДвижений.мПериод = Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;
Движения.ВзаиморасчетыСКонтрагентами.ВыполнитьПриход();
Движения.ВзаиморасчетыСКонтрагентами.Записать();
До этого, я выкладывала только кусок, который формирует остатки таблицей и заносит ее в таблицу движений, но не записывает сами движения. Я предполагала, что запись движений Вы уже сделаете самостоятельно, после того, как добавите в таблицу движений ещё и движения по новым значения регистра. Если причина всё же не в этом, то приведите здесь свой кусок кода полностью. Так ведь долго можно гадать, что же там не так ...
Написал следующее:
НаборДвижений = Движения.ВзаиморасчетыСКонтрагентами;
ТаблицаДвижений = НаборДвижений.Выгрузить();
ТаблицаДвижений.Очистить();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток КАК СуммаУпр
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Дата,
| ДоговорКонтрагента = &ДоговорКонтрагента) КАК ВзаиморасчетыСКонтрагентамиОстатки";
Запрос.УстановитьПараметр("Дата", Новый Граница(Дата, ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Движение = Движения.ВзаиморасчетыСКонтрагентами.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.ДоговорКонтрагента = ДоговорКонтрагента;
Движение.СуммаВзаиморасчетов = Выборка.СуммаВзаиморасчетов;
Движение.СуммаУпр = Выборка.СуммаУпр;
КонецЕсли;
// Приход
Движение = Движения.ВзаиморасчетыСКонтрагентами.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.ДоговорКонтрагента = ДоговорКонтрагента;
Движение.СуммаВзаиморасчетов = Долг;
Движение.СуммаУпр = Долг;
Думаю, что Вы всё равно придете к варианту с выгрузкой в таблицу. У Контрагента может быть несколько догооров и также ещё разрезы Сделка, Организация, которые вы не учитываете. Обнуляется сумма в целом, но не закрываются измерения, что приведет в дальнейшем к неверным взаиморасчетам по этим разрезам..
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!