Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
В документе Операция сторно нужно вместо одного документа автоматически выбрать несколько (они копятся на опредеелнном счете) и их автоматически сторникровать. Конфа доработана, много субконто добавлены в счете и не программно тоже.
Выбор, заполнение - всё сдлелано. ЧТобы было видно все субконта использую типовую процедуру СформироватьДвиженияСторноНаСервере, но в табличную часть выводятся только проводки последнего документа.
Очистку я убрала.
Затык в этой процедуре, как я понимаю, ПрочитатьДвиженияДокумента.
Выбор, заполнение - всё сдлелано. ЧТобы было видно все субконта использую типовую процедуру СформироватьДвиженияСторноНаСервере, но в табличную часть выводятся только проводки последнего документа.
Очистку я убрала.
Затык в этой процедуре, как я понимаю, ПрочитатьДвиженияДокумента.
АктивностьДвижений = Истина;
Для каждого СтрокаРегистра Из Регистры Цикл
Если ЗначениеЗаполнено(ДокументДвижений)
И ДокументДвижений <> Объект.Ссылка Тогда
Если НЕ СтрокаРегистра.ПравоНаИзменение Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если СтрокаРегистра.Отображение Тогда
ИмяРеквизита = СтрокаРегистра.Имя + "НаборЗаписей";
НаборЗаписей = РеквизитФормыВЗначение(ИмяРеквизита);
НаборЗаписей.Отбор.Регистратор.Установить(ДокументДвижений);
НаборЗаписей.Прочитать();
ЗначениеВРеквизитФормы(НаборЗаписей, ИмяРеквизита);
Если ДокументДвижений = Объект.Ссылка Тогда
СтрокаРегистра.Записывать = ЭтотОбъект[ИмяРеквизита].Количество() > 0;
Если СтрокаРегистра.Записывать Тогда
АктивностьДвижений = АктивностьДвижений И ЭтотОбъект[ИмяРеквизита][0].Активность;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Как-то можно сделать, чтобы движения не удалялись, а добавлялись?
Вот процедура
Процедура СформироватьДвиженияСторноНаСервере1(СторДок, Объект)
Если НЕ ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
//ОчиститьДвижения();
//Объект.ТаблицаРегистровНакопления.Очистить();
//Объект.ТаблицаРегистровСведений.Очистить();
РегистрыИсключения = Новый Структура;
Для каждого Регистр Из Метаданные.РегистрыСведений Цикл
РегистрыИсключения.Вставить(Регистр.Имя); // Регистры сведений не сторнируются
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
РегистрыСДвижениями = ПроведениеСервер.ПолучитьМассивИспользуемыхРегистров(
СторДок, СторДок.Метаданные().Движения, РегистрыИсключения);
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтображениеВТаблицеРегистров(РегистрыСДвижениями);
СоздатьРеквизитыФормы();
ПрочитатьДвиженияДокумента(СторДок);
СторнироватьДвижения();
СоздатьЭлементыФормы();
ПересчитатьСуммуОперации(ЭтотОбъект);
Попытка
Объект.Содержание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Сторно документа ""%1""'; en = '""%1"" Document Reversing Entry'"),
Строка(СторДок));
Исключение
КонецПопытки;
ЗаполнитьДобавленныеКолонкиТаблиц();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Шаблон типовой операции - сторно счета с отбором по субконто
- Сторно бухгалтерских проводок в 1С: ERP (тонкости в регистрах)
- Панель #Расширение объекта: Редактор, Права, Поиск, Сторно, Обмен
- Групповое создание сторно документов Бухгалтерская операция. БП 3.0
- При выполнении операции закрытия месяца "Распределение затрат и расчет себестоимости" произошла ошибка: Переполнение стека встроенного языка на сервере
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Я поняла, что этот код надо переделать. Не могу найти как можно заменить ЗначениеВРеквизитФормы(). Пробовала всё выгрузить в таблицу. В таблицу выгружается, но не понятно, что дальше с этим делать.
Мне надо, чтобы всё, что я получаю десь обработалось в следующей процедуре:
Мне надо, чтобы всё, что я получаю десь обработалось в следующей процедуре:
Процедура СторнироватьДвижения()
Для каждого СтрокаРегистра Из Регистры Цикл
Если НЕ СтрокаРегистра.ЕстьРеквизит Тогда
Продолжить;
КонецЕсли;
ИмяРеквизита = СтрокаРегистра.Имя + "НаборЗаписей";
МетаданныеРегистра = РеквизитФормыВЗначение(ИмяРеквизита).Метаданные();
Для каждого Движение Из ЭтотОбъект[ИмяРеквизита] Цикл
Если СтрокаРегистра.ТипРегистра = "РегистрБухгалтерии" Тогда
Для каждого Ресурс Из МетаданныеРегистра.Ресурсы Цикл
Если Ресурс.ПризнакУчета = Неопределено Тогда
Движение[Ресурс.Имя] = - Движение[Ресурс.Имя];
Иначе
Если ЗначениеЗаполнено(Движение[Ресурс.Имя + "Дт"]) Тогда
Движение[Ресурс.Имя + "Дт"] = - Движение[Ресурс.Имя + "Дт"];
КонецЕсли;
Если ЗначениеЗаполнено(Движение[Ресурс.Имя + "Кт"]) Тогда
Движение[Ресурс.Имя + "Кт"] = - Движение[Ресурс.Имя + "Кт"];
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Для каждого Ресурс Из МетаданныеРегистра.Ресурсы Цикл
Движение[Ресурс.Имя] = - Движение[Ресурс.Имя];
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать
(4)т.е. для каждого регистратора в цикле надо создать набор вот так?
Разве он не будет перезаписываться?
Или я не права?
Для каждого ... Цикл
ИмяРеквизита = СтрокаРегистра.Имя + "НаборЗаписей";
НаборЗаписей = РеквизитФормыВЗначение(ИмяРеквизита);
НаборЗаписей.Отбор.Регистратор.Установить(ДокументДвижений);
НаборЗаписей.Прочитать();
Конецикла
Разве он не будет перезаписываться?
Или я не права?
(7) Если есть сомнения можно проверить в синтакс-помошнике.
РегистрНакопленияНаборЗаписей.<Имя регистра накопления> (AccumulationRegisterRecordSet.<Accumulation register name>)
Добавить (Add)
Синтаксис:
Добавить()
Возвращаемое значение:
Тип: РегистрНакопленияЗапись.<Имя регистра накопления>.
Описание:
Добавляет новую запись в набор.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.0.
Добавить (Add)
Синтаксис:
Добавить()
Возвращаемое значение:
Тип: РегистрНакопленияЗапись.<Имя регистра накопления>.
Описание:
Добавляет новую запись в набор.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.0.
(10) Почему? Я читала
Добавить (Add)
Синтаксис:
Добавить()
Возвращаемое значение:
Тип: РегистрБухгалтерииЗапись.<Имя регистра бухгалтерии>.
Описание:
Добавляет новую запись регистра в набор.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Но в итоге пишет, что такой метод не найден.
РегистрыБухгалтерии.Хозрасчетный.Добавить()
А, поняла, попробую переделать.
Добавить (Add)
Синтаксис:
Добавить()
Возвращаемое значение:
Тип: РегистрБухгалтерииЗапись.<Имя регистра бухгалтерии>.
Описание:
Добавляет новую запись регистра в набор.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Но в итоге пишет, что такой метод не найден.
РегистрыБухгалтерии.Хозрасчетный.Добавить()
А, поняла, попробую переделать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот