Приветствую! Я сейчас подготавливаюсь к экзамену 1С специалист решаю задачи по бухучёту для экзамена по 1С. Мне нужно через обработку создать документ "Операция" и проставить проводки в табличной части.
Создание документа и запись проходят успешно, а вот с заполнением таблицы – затык. Когда пытаюсь добавить строку через:
НоваяСтрока = Таблица.Добавить();
метод возвращает Ложь, и строка не добавляется.
Вопрос: С чем это может быть связано?.
Вот код -
Создание документа и запись проходят успешно, а вот с заполнением таблицы – затык. Когда пытаюсь добавить строку через:
НоваяСтрока = Таблица.Добавить();
метод возвращает Ложь, и строка не добавляется.
Вопрос: С чем это может быть связано?.
Вот код -
Процедура Перерасчет(Дата)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УправленческийОстатки.Субконто1 КАК Контрагент,
| УправленческийОстатки.Субконто2 КАК Договор,
| ЕСТЬNULL(УправленческийОстатки.СуммаВалОстаток, 0) * ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 0) КАК СуммаНовая,
| ЕСТЬNULL(УправленческийОстатки.СуммаОстаток, 0) КАК СуммаСтарая
|ИЗ
| РегистрБухгалтерии.Управленческий.Остатки(&МоментВремени, Счет = &Счет, &МассивСубконто, ) КАК УправленческийОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&МоментВремени, ) КАК КурсыВалютСрезПоследних
| ПО УправленческийОстатки.Субконто2.Валюта = КурсыВалютСрезПоследних.Валюта
|ГДЕ
| УправленческийОстатки.Субконто2.Валюта <> &Рубль
|
|УПОРЯДОЧИТЬ ПО
| Контрагент";
Запрос.УстановитьПараметр("МоментВремени", Дата );
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Управленческий.Покупатели);
Запрос.УстановитьПараметр("Рубль", Справочники.Валюты.НайтиПоКоду(810));
МассивСубконто = Новый Массив(2);
МассивСубконто[0] = ПланыВидовХарактеристик.ВидыСубконто.Контрагент;
МассивСубконто[1] = ПланыВидовХарактеристик.ВидыСубконто.Договор;
Запрос.УстановитьПараметр("МассивСубконто", МассивСубконто);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Операция = Документы.Операция.СоздатьДокумент();
Операция.Дата = КонецДня(ТекущаяДата());
Таблица = Операция.Движения.Управленческий;
Провести = Ложь;
Пока Выборка.Следующий() Цикл
Если Выборка.СуммаСтарая > Выборка.СуммаНовая Тогда
НоваяСтрока = Таблица.Добавить();
Если НоваяСтрока = Ложь Тогда
Сообщить("Ошибка");
КонецЕсли;
НоваяСтрока.Период = ТекущаяДата();
НоваяСтрока.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
НоваяСтрока.СчетКт = ПланыСчетов.Управленческий.Покупатели;
НоваяСтрока.СубконтоКт.Контрагент = Выборка.Контрагент;
НоваяСтрока.СубконтоКт.Договор = Выборка.Договор;
НоваяСтрока.Сумма = Выборка.СуммаСтарая - Выборка.СуммаНовая;
Провести = Истина;
ИначеЕсли Выборка.СуммаСтарая < Выборка.СуммаНовая Тогда
НоваяСтрока = Таблица.Добавить();
Если НоваяСтрока = Ложь Тогда
Сообщить("Ошибка");
КонецЕсли;
НоваяСтрока.Период = ТекущаяДата();
НоваяСтрока.СчетДт = ПланыСчетов.Управленческий.Покупатели;
НоваяСтрока.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
НоваяСтрока.СубконтоДт.Контрагент = Выборка.Контрагент;
НоваяСтрока.СубконтоДт.Договор = Выборка.Договор;
НоваяСтрока.Сумма = Выборка.СуммаНовая - Выборка.СуммаСтарая;
Провести = Истина;
КонецЕсли;
КонецЦикла;
Если Провести Тогда
Операция.Записать();
КонецЕсли;
ПоказатьПо теме из базы знаний
- Лучшие методы сравнения таблиц значений
- Интеллектуальная загрузка в 1С счетов, накладных из файлов электронных таблиц (типа XLS), не требующая настроек, с указанием номеров строк и колонок. Для примера обработка загрузки в документ "Поступление товаров и услуг" для "Управление Торговлей 10.3"
- УПП, формирование записей книги продаж: ускоряем заполнение при большом объеме реализаций
- Устройство хранения данных в MS SQL Server
- Временные таблицы и SELECT FASTTRUNCATE
Найденные решения
(3) правильной дорогой идешь, товарищ! Только учти, что ручная операция это регистратор движений Регистра бухгалтерии Хозрасчетный, и в ней по сути ничего заполнять не нужно, а нужно заполнить движения в регистре и привязать его к регистратору. У меня есть обработка, в ней в модуле формы так написано:
ну и по смыслу:
ДокОбъект = Операция.ПолучитьОбъект();
НЗ = ДокОбъект.Движения.Хозрасчетный;
ну и по смыслу:
НоваяЗапись = НЗ.Добавить();
НоваяЗапись.Период = ДокОбъект.Дата;
НоваяЗапись.Регистратор = ДокОбъект;
НоваяЗапись.Организация = ДокОбъект.Организация;
НоваяЗапись.СчетДт = Счет10;
НоваяЗапись.СчетКт = Счет000;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) правильной дорогой идешь, товарищ! Только учти, что ручная операция это регистратор движений Регистра бухгалтерии Хозрасчетный, и в ней по сути ничего заполнять не нужно, а нужно заполнить движения в регистре и привязать его к регистратору. У меня есть обработка, в ней в модуле формы так написано:
ну и по смыслу:
ДокОбъект = Операция.ПолучитьОбъект();
НЗ = ДокОбъект.Движения.Хозрасчетный;
ну и по смыслу:
НоваяЗапись = НЗ.Добавить();
НоваяЗапись.Период = ДокОбъект.Дата;
НоваяЗапись.Регистратор = ДокОбъект;
НоваяЗапись.Организация = ДокОбъект.Организация;
НоваяЗапись.СчетДт = Счет10;
НоваяЗапись.СчетКт = Счет000;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот