Как изменять записи регистра накопления? Основной шаблон такой:
Код 1C v 8.х Набор = РегистрыНакопления.ВашРегистр.СоздатьНаборЗаписей();
Набор.Отбор.<НазваниеОтбора>.Установить(<ЗначениеОтбора>);
Набор.Прочитать();
Для Каждого ТекДвижение Из Набор Цикл
//Делаете с записями регистра то - что вам хочется
КонецЦикла;
Набор.Записать();
Реальный пример:
Код 1C v 8.х Процедура МодификацияЗаписейРегистраНакопления()
ВыбДок = Документы.ПоступлениеТоваровУслуг.Выбрать();
Если ВыбДок.Следующий() Тогда
Набор = РегистрыНакопления.НДСПредъявленный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ВыбДок.Ссылка);
Набор.Прочитать();
// Изменение существующих записей
Для Каждого Движение Из Набор Цикл
Движение.НДС = 0;
КонецЦикла;
// Добавление новых записей, если вдруг необходимо
Движение = Набор.ДобавитьРасход();
Движение.Сумма = 100;
Движение.Период = ТекущаяДата();
Движение = Набор.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Сумма = 300;
Движение.Период = ТекущаяДата();
// удаление существующих записей если надо
Набор.Удалить(0);
Набор.Записать(Истина);
КонецЕсли;
КонецПроцедуры
Категория:
Регистры накопления Как программно открыть и выбрать документ, выбор документа из списка? Открыть список документов для выбора документа:
Код 1C v 8.х ФормаСписка = Документы.НачислениеЗарплатыРаботникамОрганизаций.ПолучитьФормуСписка();
ФормаСписка.Открыть();
Открыть список документов для выбора документа и установить отбор:
Код 1C v 8.х ФормаВыбора = Документы.НачислениеЗарплатыРаботникамОрганизаций.ПолучитьФормуВыбора();
//Это комментим, т.к. в данном случае будем отбирать по интервалу
//ФормаВыбора.ДокументСписок.Отбор.Дата.ВидСравнения=ВидСравнения.Равно;
//ФормаВыбора.ДокументСписок.Отбор.Дата.Значение=Дата;
ФормаВыбора.ДокументСписок.Отбор.Дата.ВидСравнения=ВидСравнения.ИнтервалВключаяОкончание;
ФормаВыбора.ДокументСписок.Отбор.Дата.ЗначениеС = НачалоМесяца(Дата);
ФормаВыбора.ДокументСписок.Отбор.Дата.ЗначениеПо = КонецМесяца(Дата);
ФормаВыбора.ДокументСписок.Отбор.Дата.установить();
ФормаВыбора.Заголовок = "Выберите документ";
ВыбДокНачисл = ФормаВыбора.ОткрытьМодально();
Категория:
Документы Корректировка регистров накопления через документ Часто возникает ситуация, когда программно нужно внести какие либо корректировки в регистры накопления и чтобы потом эти корректировки можно было легко поменять!
В типовых конфигурациях присутсвует документ "Корректировка Записей Регистров Накопления", который предназначен для ручной корректировки записей регистров накопления и для ввода остатков.
С помощью ниже следующего кода можно программно создать и заполнить движениями этот документ:
Код 1C v 8.х
// ТЗрез - это Таблица значений содержащая столбец "FizL" - ФизЛицо и "RUB" Сумма корректировки
НовДок = Документы.КорректировкаЗаписейРегистровНакопления.ПолучитьФормуНовогоДокумента();
НовДок.Дата=ТекущаяДата();
НовДок.Комментарий="Корректировка регистра ВзаиморасчетыСРаботникамиОрганизаций";
// Создадим табличную часть движений регистра
НоваяСтрока = НовДок.ТаблицаРегистровНакопления.Добавить();
НоваяСтрока.Имя = Метаданные.регистрынакопления.ВзаиморасчетыСРаботникамиОрганизаций.имя;
НоваяСтрока.Представление = Метаданные.регистрынакопления.ВзаиморасчетыСРаботникамиОрганизаций.синоним;
// Создадим движения
Для Каждого СтрДвиж из ТЗрез Цикл
НовДвиж = НовДок.Движения.ВзаиморасчетыСРаботникамиОрганизаций.ДобавитьПриход();
НовДвиж.ФизЛицо=СтрДвиж.FizL;
НовДвиж.Организация=Организация;
НовДвиж.ПериодВзаиморасчетов=ВыбДокНачисл.ПериодРегистрации;
НовДвиж.СуммаВзаиморасчетов = СтрДвиж.RUB;
КонецЦикла;
//НовДок.Записать(); //Пока не записываем
НовДок.Открыть(); //Покажем документ пользователю
Категория:
Регистры накопления Выбрать Итоги, остатки регистра Код 1C v 7.x
// Пример 1
РегТовары = СоздатьОбъект("Регистр.Товары");
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
Сообщить("Товар " + Строка(РегТовары.Товар) +
" на складе " + Строка(РегТовары.Склад) +
" кол-во: " + Строка(РегТовары.Количество) +
" стоимость: " + Строка(РегТовары.Стоимость) +
КонецЦикла;
// Пример 2
Процедура ВыбратьКредит()
Список = СоздатьОбъект("СписокЗначений");
Рег = СоздатьОбъект("Регистр.ТоварныйКредит");
Рег.УстановитьФильтр(Клиент, );
Рег.ВыбратьИтоги();
Ном = 0;
Пока Рег.ПолучитьИтог() = 1 Цикл
Док = Рег.Документ;
Список.ДобавитьЗначение(Док, "" + Док + " — Остаток = " + Рег.Долг);
Если Ном = 0 Тогда
ВыбДок = Док;
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
Если Ном > 0 Тогда
Если Список.ВыбратьЗначение(ВыбДок, "Выберите кредит") = 1 Тогда
ДокКредита = ВыбДок;
КонецЕсли;
КонецЕсли;
Возврат;
КонецПроцедуры
Категория:
Регистры Прочитать, просмотреть, выбрать записи регистра расчета Код 1C v 8.х
// Просуммируем записи удержаний неявок по физлицу
НаборЗаписей = РегистрыРасчета.УдержанияРаботниковОрганизаций.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = ВыбДокНачисл;
НаборЗаписей.Отбор.физлицо.Установить(Физлицо);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.ВидРасчета=ПланыВидовРасчета.УдержанияОрганизаций.Неявка тогда
СумУдерж=СумУдерж+Запись.Результат;
КонецЕсли;
КонецЦикла;
Категория:
Регистры расчета Ввести число, ввод числа Код 1C v 8.х
КолВо = 1;
Если ВвестиЧисло(КолВо, "Введите количество", 10, 2) Tогда
// обработка введенного количество
КонецЕсли;
Код 1C v 7.x
Если ВвестиЧисло(Ном, "Введите номер приказа", 5, 0, 10) = 1 Тогда
ВыбДок = СоздатьОбъект("Документ.Приказ");
ВыбДок.НайтиПоНомеру(Строка(Ном), Дата(0));
Если ВыбДок.Выбран() = 1 Тогда
// код
ИначеЕсли;
// код
КонецЕсли;
КонецЕсли;
Категория:
Работа с Числами Ввести значение, ввод значения Код 1C v 8.х
//Пример универсального ввода значения
Перем ВыбЗнач;
Массив = Новый Массив;
Массив.Добавить(Тип("Число"));
Массив.Добавить(Тип("Строка"));
Массив.Добавить(Тип("Дата"));
КЧ = Новый КвалификаторыЧисла(12,2);
КС = Новый КвалификаторыСтроки(20);
КД = Новый КвалификаторыДаты(ЧастиДаты.Дата);
ОписаниеТипов = Новый ОписаниеТипов(Массив, КЧ, КС, КД);
Если ВвестиЗначение(ВыбЗнач, "Введите значение", ОписаниеТипов) Тогда
// обработка введенного значения
Сообщить("Введенное значение: "+ВыбЗнач);
КонецЕсли;
Код 1C v 7.x
Если ВвестиЗначение(Ном, "Введите номер приказа", "Число", 5, 0) = 1 Тогда
ВыбДок = СоздатьОбъект("Документ.Приказ");
ВыбДок.НайтиПоНомеру(Строка(Ном), Дата(0));
Если ВыбДок.Выбран() = 1 Тогда
// код
ИначеЕсли;
// код
КонецЕсли;
КонецЕсли;
Категория:
Встроенные Функции